Você está na página 1de 6

Universidade Federal de Campina Grande

- UFCGCentro de Engenharia Elétrica e


Informática - CEEIDepartamento de
Engenharia Elétrica - DEE

Nome: Fábio Augusto Almeida Marçal // Gabriel Nazario Gonçalves


Email: fabio.marcal@ee.ufcg.edu.br // gabriel.goncalves@ee.ufcg.edu.br

Disciplina: Laboratório de Circuitos Lógicos


Professores: Fernanda Cecília Correia Lima Loureiro e Adolfo Hebster

Experimento Verilog 3 –
Multiplexadores,
Demultiplexadores

Objetivo geral
O presente experimento visa utilizar a linguagem HDL, Verilog, para implementar e
contextualizaros circuitos combinacionais multiplexadores, demultiplexadores e outros
circuitos combinacionais como decodificadores e funções lógicas (or, xnor, and e not)

1. Sistema de multiplexação
Multiplexador é um circuito utilizado para selecionar uma informação, entre um certo
número de informaçõesfornecidas por vários canais, a um só canal de saída. Assim há
os canais de informação de entrada e a entrada de seleção, que tem como função
escolher qual dos canais de informação vaiser ligado à saída.

Atividade

mux41 M1(.A(SW[6]), .B(SW[5]), .D0(SW[0]), .D1(SW[1]), .D2(SW[2]), .D3(SW[3]),


.S(LEDR[0]));

module mux41 (input A, B, D0, D1, D2, D3, output S);

assign S = (~A&~B&D0)|(~A&B&D1)|(A&~B&D2)|(A&B&D3);

endmodule

Diagrama lógico:
Figura 1 – Bloco de mux 4:1

2. Sistema de demultiplexação
Demultiplexador é um circuito que efetua a função inversa ao multiplexador. Assim,
seu objetivo é enviar a informação contida, em um canal de entrada, a um entre os
vários canais de saída, que for selecionado. Assim, há a entrada de informação e há
as entrada de seleção, que têm como função escolher, a qual dos canais de saída,
deve ser ligada a entrada.

Atividade
demux14 dm(.entrada (SW[2:0]), .saida (LEDR[3:0]);

demux14 M1(.entrada (SW[2:0]), .saida (LEDR[3:0]));

module demux14(input [2:0] entrada, output reg [3:0] saida);


always @(*) begin
case(entrada)
3'b 000 : saida = 4'b 0000;
3'b 001 : saida = 4'b 0001;
3'b 011 : saida = 4'b 0010;
3'b 101 : saida = 4'b 0100;
3'b 111 : saida = 4'b 1000;
default : saida = 4'b 0000;
endcase
end
endmodule

Diagrama lógico:
Figura 2 – Bloco lógico Demux 1:4

3. Sistema de matrícula
Usar 8 multiplexadores e um decodificador para implementar um sistema de matricula
para 8 alunos. Cada aluno tem uma matrícula de 6 bits, os 3 primeiros determinam o
aluno e os 3 ultimos a disciplina. O decodificador define qual dos 8 alunos é
selecionado, e cada mux representa as disciplinas dos alunos. Caso o aluno não
atenda aos pré-requisitos da disciplina, um LED é ligado para representar que sua
matricula não foi confirmada, caso contrário, um outro LED é aceso para confirmar sua
matrícula.

Atividade
decodificador d1(.entradaM (SW[5:3]), .A(SW[2]), .B(SW[1]), .C(SW[2]),
.saidaFinal_S(LEDR[1]), .saidaFinal_N(LEDR[0]));

module decodificador (input [2:0] entradaM, A, B, C, output saidaFinal_S,


saidaFinal_N);

reg [7:0] X;

always @(*) begin


case(entradaM)
3'b 000 : X = 8'b 00000001;
3'b 001 : X = 8'b 00000010;
3'b 010 : X = 8'b 00000100;
3'b 011 : X = 8'b 00001000;
3'b 100 : X = 8'b 00010000;
3'b 101 : X = 8'b 00100000;
3'b 110 : X = 8'b 01000000;
3'b 111 : X = 8'b 10000000;
endcase
end

//saidas aluno1
wire S0, S1, S2, S3, S4, S5, S6, S7;

//saidas aluno2
wire S8, S9, S10, S11, S12, S13, S14, S15;

//saidas aluno3
wire S16, S17, S18, S19, S20, S21, S22, S23;

//saidas aluno4
wire S24, S25, S26, S27, S28, S29, S30, S31;

//saidas aluno5
wire S32, S33, S34, S35, S36, S37, S38, S39;

//saidas aluno6
wire S40, S41, S42, S43, S44, S45, S46, S47;

//saidas aluno7
wire S48, S49, S50, S51, S52, S53, S54, S55;

//saidas aluno8
wire S56, S57, S58, S59, S60, S61, S62, S63;

//aluno1
assign S0 = (~A&~B&~C&1);
assign S1 = (~A&~B&C&1);
assign S2 = (~A&B&~C&1);
assign S3 = (~A&B&C&1);
assign S4 = (A&~B&~C&0);
assign S5 = (A&~B&C&0);
assign S6 = (A&B&~C&0);
assign S7 = (A&B&C&0);

//aluno2
assign S8 = (~A&~B&~C&0);
assign S9 = (~A&~B&C&0);
assign S10 = (~A&B&~C&0);
assign S11 = (~A&B&C&0);
assign S12 = (A&~B&~C&1);
assign S13 = (A&~B&C&1);
assign S14 = (A&B&~C&1);
assign S15 = (A&B&C&1);

//aluno3
assign S16 = (~A&~B&~C&1);
assign S17 = (~A&~B&C&1);
assign S18 = (~A&B&~C&1);
assign S19 = (~A&B&C&1);
assign S20 = (A&~B&~C&1);
assign S21 = (A&~B&C&0);
assign S22 = (A&B&~C&0);
assign S23 = (A&B&C&0);

//aluno4
assign S24 = (~A&~B&~C&0);
assign S25 = (~A&~B&C&0);
assign S26 = (~A&B&~C&0);
assign S27 = (~A&B&C&0);
assign S28 = (A&~B&~C&1);
assign S29 = (A&~B&C&1);
assign S30 = (A&B&~C&1);
assign S31 = (A&B&C&1);

//aluno5
assign S32 = (~A&~B&~C&1);
assign S33 = (~A&~B&C&1);
assign S34 = (~A&B&~C&1);
assign S35 = (~A&B&C&1);
assign S36 = (A&~B&~C&0);
assign S37 = (A&~B&C&0);
assign S38 = (A&B&~C&0);
assign S39 = (A&B&C&0);

//aluno6
assign S40 = (~A&~B&~C&0);
assign S41 = (~A&~B&C&0);
assign S42 = (~A&B&~C&0);
assign S43 = (~A&B&C&0);
assign S44 = (A&~B&~C&1);
assign S45 = (A&~B&C&1);
assign S46 = (A&B&~C&1);
assign S47 = (A&B&C&1);

//aluno7
assign S48 = (~A&~B&~C&1);
assign S49 = (~A&~B&C&1);
assign S50 = (~A&B&~C&1);
assign S51 = (~A&B&C&1);
assign S52 = (A&~B&~C&0);
assign S53 = (A&~B&C&0);
assign S54 = (A&B&~C&0);
assign S55 = (A&B&C&0);

//aluno8
assign S56 = (~A&~B&~C&0);
assign S57 = (~A&~B&C&0);
assign S58 = (~A&B&~C&1);
assign S59 = (~A&B&C&1);
assign S60 = (A&~B&~C&1);
assign S61 = (A&~B&C&1);
assign S62 = (A&B&~C&1);
assign S63 = (A&B&C&1);

assign saidaFinal_S = (S0 | S1 | S2 | S3 | S4 | S5 | S6 | S7) & X[0] | (S8 | S9 | S10 |


S11 | S12 | S13 | S14 | S15) & X[1] | (S16 | S17 | S18 | S19 | S20 | S21 | S22 | S23) &
X[2] | (S24 | S25 | S26 | S27 | S28 | S29 | S30 | S31) & X[3] | (S32 | S33 | S34 | S35 |
S36 | S37 | S38 | S39) & X[4] | (S40 | S41 | S42 | S43 | S44 | S45 | S46 | S47) & X[5] |
(S48 | S49 | S50 | S51 | S52 | S53 | S54 | S55) & X[6] | (S56 | S57 | S58 | S59 | S60 |
S61 | S62 | S63) & X[7];
assign saidaFinal_N = ~saidaFinal_S;
endmodule

Diagrama lógico:
Figura 3 – Sistema de matrícula

Você também pode gostar