Buscar

Experimento Verilog 03

Prévia do material em texto

Universidade Federal de Campina Grande - UFCG
Centro de Engenharia Elétrica e Informática - CEEI
Departamento de Engenharia Elétrica - DEE
Nome:Pedro Henrique Alcantara Araújo
Email: pedro.henrique.araujo@ee.ufcg.edu.br
Disciplina: Laboratório de Circuitos Lógicos
Professores: Fernanda Cecília Correia Lima Loureiro e Adolfo Hebster
Exp. 3 Verilog: Multiplexadores e Demultiplexadores
MUX 4:1 VERILOG:
wire A, B, I0, I1, I2, I3;
wire S;
assign S = (~A&~B~I0) | (~A&B&I1) | (A&~B&I2) | (A&B&I3);
assign LEDG[0] = S;
assign SW[17] = A;
assign SW[16] = B;
assign SW[0] = I0;
assign SW[1] = I1;
assign SW[2] = I2;
assign SW[3] = I3;
DEMUX 1:4 VERILOG:
wire A, B, I;
wire S0, S1, S2, S3;
assign S0 = (~A&~B~I);
assign S1 = (~A&B&I);
assign S2 = (A&~B&I);
assign S3 = (A&B&I);
assign LEDG[0] = S3;
assign LEDG[1] = S2;
assign LEDG[2] = S1;
assign LEDG[3] = S0;
assign SW[17] = A;
assign SW[16] = B;
assign SW[15] = I;
SISTEMA MATRÍCULA:
decodifica dec(.X2(r2), .X1(r1), .X0(r0), .Z7(I7), .Z6(I6), .Z5(I5), .Z4(I4), .Z3(I3),
.Z2(I2), .Z1(I1), .Z0(I0));
wire r2 = SW[10]; //chave das entradas do decodificador
wire r1 = SW[9]; //chave das entradas do decodificador
wire r0 = SW[8]; //chave das entradas do decodificador
//MUX 8:1
wire A, B, C; //entradas comuns dos MUX 8:1
wire I0, I1, I2, I3, I4, I5, I6, I7;//entradas de habilitacao dos mux 8:1
assign I0 = Z0; // atribuir a saida do decodificador na entrada de habilitação do mux
assign I1 = Z1; // atribuir a saida do decodificador na entrada de habilitação do mux
assign I2 = Z2; // atribuir a saida do decodificador na entrada de habilitação do mux
assign I3 = Z3; // atribuir a saida do decodificador na entrada de habilitação do mux
assign I4 = Z4; // atribuir a saida do decodificador na entrada de habilitação do mux
assign I5 = Z5; // atribuir a saida do decodificador na entrada de habilitação do mux
assign I6 = Z6; // atribuir a saida do decodificador na entrada de habilitação do mux
assign I7 = Z7; // atribuir a saida do decodificador na entrada de habilitação do mux
wire S0, S1, S2, S3, S4, S5, S6, S7; //expressao das saidas PRIMEIRO mux
wire S8, S9, S10, S11, S12, S13, S14, S15; ////expressao das saidas SEGUNDO mux
wire S16, S17, S18, S19, S20, S21, S22, S23; //expressao das saidas TERCEIRO mux
wire S24, S25, S26, S27, S28, S29, S30, S31; ////expressao das saidas QUARTO mux
wire S32, S33, S34, S35, S36, S37, S38, S39; //expressao das saidas QUINTO mux
wire S40, S41, S42, S43, S44, S45, S46, S47; ////expressao das saidas SEXTO mux 8:1
wire S48, S49, S50, S51, S52, S53, S54, S55; //expressao das saidas SETIMO mux 8:1
wire S56, S57, S58, S59, S60, S61, S62, S63; ////expressao das saidas OITAVO mux
assign A = SW[17]; //chave das entradas do muxs
assign B = SW[16]; //chave das entradas do muxs
assign C = SW[15]; //chave das entradas do muxs
//aluno 1
assign S0 = (~A&~B&~C&1);
assign S1 = (~A&~B&C&1);
assign S2 = (~A&B&~C&1);
assign S3 = (~A&B&C&0);
assign S4 = (A&~B&~C&0);
assign S5 = (A&~B&C&0);
assign S6 = (A&B&~C&0);
assign S7 = (A&B&C&0);
//aluno 2
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&0);
assign S13 = (A&~B&C&0);
assign S14 = (A&B&~C&1);
assign S15 = (A&B&C&1);
//aluno 3
assign S16 = (~A&~B&~C&1);
assign S17 = (~A&~B&C&1);
assign S18 = (~A&B&~C&0);
assign S19 = (~A&B&C&0);
assign S20 = (A&~B&~C&0);
assign S21 = (A&~B&C&0);
assign S22 = (A&B&~C&0);
assign S23 = (A&B&C&0);
//aluno 4
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&0);
assign S29 = (A&~B&C&0);
assign S30 = (A&B&~C&0);
assign S31 = (A&B&C&1);
//aluno 5
assign S32 = (~A&~B&~C&1);
assign S33 = (~A&~B&C&0);
assign S34 = (~A&B&~C&0);
assign S35 = (~A&B&C&0);
assign S36 = (A&~B&~C&0);
assign S37 = (A&~B&C&0);
assign S38 = (A&B&~C&0);
assign S39 = (A&B&C&0);
//aluno 6
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&0);
assign S45 = (A&~B&C&1);
assign S46 = (A&B&~C&0);
assign S47 = (A&B&C&1);
//aluno 7
assign S48 = (~A&~B&~C&0);
assign S49 = (~A&~B&C&1);
assign S50 = (~A&B&~C&1);
assign S51 = (~A&B&C&0);
assign S52 = (A&~B&~C&0);
assign S53 = (A&~B&C&0);
assign S54 = (A&B&~C&0);
assign S55 = (A&B&C&0);
//aluno 8
assign S56 = (~A&~B&~C&0);
assign S57 = (~A&~B&C&0);
assign S58 = (~A&B&~C&0);
assign S59 = (~A&B&C&0);
assign S60 = (A&~B&~C&0);
assign S61 = (A&~B&C&1);
assign S62 = (A&B&~C&1);
assign S63 = (A&B&C&1);
wire saidaFinal;
assign saidaFinal = (S0 | S1 | S2 | S3 | S4 | S5 | S6 | S7) & I0
| (S8 | S9 | S10 | S11 | S12 | S13 | S14 | S15) & I1
| (S16 | S17 | S18 | S19 | S20 | S21 | S22 | S23) & I2
| (S24 | S25 | S26 | S27 | S28 | S29 | S30 | S31) & I3
| (S32 | S33 | S34 | S35 | S36 | S37 | S38 | S39) & I4
| (S40 | S41 | S42 | S43 | S44 | S45 | S46 | S47) & I5
| (S48 | S49 | S50 | S51 | S52 | S53 | S54 | S55) & I6
| (S56 | S57 | S58 | S59 | S60 | S61 | S62 | S63) & I7; //expressao saida final
assign LEDG[1] = saidaFinal; //matriculado
assign LEDR[0] = ~saidaFinal; //nao matriculado
endmodule // fim do modulo
module decodifica(input X2, X1, X0, output Z7, Z6, Z5, Z4, Z3, Z2, Z1, Z0);
assign Z7 = X2&X1&X0;
assign Z6 = X2&X1&(~X0);
assign Z5 = X2&(~X1)&X0;
assign Z4 = X2&(~X1)&(~X0);
assign Z3 = (~X2)&X1&X0;
assign Z2 = (~X2)&X1&(~X0);
assign Z1 = (~X2)&(~X1)&X0;
assign Z0 = (~X2)&(~X1)&(~X0);
endmodule

Continue navegando