S1 = (E1 & E2) ^ E3 S2 = E1 | E2 | E3
2 Circuitos Combinacionales Body: En el modelo en Verilog de un circuito combinacional se identifican claramente las entradas y salidas.
Para modelar se utilizan asignaciones (assign) y procesos (always)
3 Declaración de operaciones con asignaciones Body: Utilizar asignaciones para modelar circuitos combinacionales es sumamente fácil: module COMPUERTA(E1, E2, S1);
input E1, E2; output S1;
assign S1 = E1 & E2;
endmodule
4 Declaración de operaciones con asignaciones Body: Como ejemplo, se muestra el modelo en Verilog del siguiente circuito combinacional (se usa paréntesis para separar niveles):
5 Declaración de operaciones con asignaciones Body: module COMPUERTA(E1, E2, E3, S1, S2);
input E1, E2, E3; output S1, S2;
assign S1 = (E1 & E2) ^ E3; assign S2 = E1 | E2 | E3;
endmodule
Otra forma, declarando una señal intermedia:
module COMPUERTA(E1, E2, E3, S1, S2);
input E1, E2, E3; output S1, S2: wire TEMP;
assign TEMP = E1 & E2; assign S1 = TEMP ^ E3; assign S2 = E1 | E2 | E3;
endmodule
6 Declaración de operaciones con asignaciones Body: El assign se puede utilizar para realizar operaciones condicionales de la siguiente forma:
assign VARIABLE = (CONDICION)? OPCION1: OPCION2;
Si CONDICION ES ‘1’, VARIABLE = OPCION1 Si CONDICION ES ‘0’, VARIABLE = OPCION2
Se puede anidar esta estructura de selección, ejemplo:
assign VARIABLE = (COND0)? ((COND1)? OP0: OP1): ((COND1)? OP2: OP3);
7 Declaración de operaciones con asignaciones Body: Como ejemplo, se muestra el modelo para un multiplexor de 2 a 1, de 1 bit:
module MUX(E1, E2, SEL, S);
input E1, E2, SEL; output S;
assign S = (SEL)? E2: E1;
endmodule
8 Declaración de buffers de alta impedancia Body: Los buffers de alta impedancia se modelan de una forma muy sencilla, se utilizan assign condicionales.
Ejemplo: Buffer Hi-Z de 8 bits. module BUFER(E, EN, S);
input [7:0] E; input EN; output [7:0] S;
assign S = (EN)? E: 8'bz;
endmodule
9 Ejemplo: buffer 16 bits a partir de 2 de 8 bits Body: module BUFER_16(E, EN, S);
input [15:0] E; input EN; output [15:0] S;
BUFER BUFER_0(E[7:0], EN, S[7:0])
BUFER BUFER_1(E[15:8], EN, S[15:8])
endmodule
10 Ejercicio: Mux 4 a 1 Body: Implementar un Mux de 4 a 1 (4 bits) a partir de Muxes de 2 a 1 (4 bits).
Página siguiente |