Beruflich Dokumente
Kultur Dokumente
Es un lenguaje que describe circuitos digitales muy grandes (hardware digital) de manera rpida y
clara. Adems se utiliza en el anlisis, la sntesis, el modelamiento y la simulacin de circuitos
digitales.
6.1 El mdulo:
La base de la descripcin de cualquier circuito en VERILOG es el mdulo. Un mdulo es una caja
negra donde se conectan las entradas y salidas del circuito que se quiere describir. Las palabras claves
(minsculas) empleadas para crear y declarar un mdulo en el lenguaje VERILOG son: module
(declaracin del mdulo), output (salida), input (entrada), inout (entrada-salida: circuitos con
realimentacin) y endmodule (fin del mdulo). En la figura 98 se muestra un mdulo creado para el
circuito cuyo nombre es and1.
input A,B,C;
output D;
wire F,E;
assign E= A & B;
assign F= C & B;
assign D= E & F;
endmodule
6.4. arreglos y vectores:
Este tipo de declaraciones en VERILOG se utilizan para agrupar varios elementos del mismo tipo.
Ejemplos de vectores y arreglos se muestran a continuacin:
6 5 4 3 2 1 0
x[2] 1 0 1 0 1 1 0
x[1] 0 0 0 1 1 1 0
x[0] 1 1 1 1 0 0 0
0 1 2 3 4 5 6
x[0] 1 0 1 0 1 1 0
x[1] 0 0 0 1 1 1 0
x[2] 1 1 1 1 0 0 0
wire x[6:0] [2:0]; 1 matriz de wire cada posicin tiene 1 bit de ancho.
6 5 4 3 2 1 0
2 1 0 1 0 1 0 1
1 0 1 1 0 1 0 1
0 1 0 0 0 1 1 0
wire x[0:6] [0:2]; 1 matriz de wire cada posicin tiene 1 bit de ancho.
0 1 2 3 4 5 6
0 1 0 1 0 1 0 1
1 0 1 1 0 1 0 1
2 1 0 0 0 1 1 0
Ejemplo 65. Dadas las declaraciones siguientes diga si las instrucciones son correctas o no.
//declaraciones
wire [7:0] mema[0:255];
wire arrayb[7:0][0:255];
OPERADOR FUNCIN
& AND
| OR
^ XOR
~ NOT
~^ XNOR
~| NOR
~& NAND
Ejemplo. Utilice los operadores binarios de la instruccin assign y los cables vectorizados para
describir el circuito que se muestra a continuacin:
Se mostrarn dos soluciones posibles. La primera describe cada compuerta; la segunda utiliza la lgica
de vectores.
module S1(
input [3:0]X,
input [3:0]Y,
output [3:0]Z
);
assign Z[0]=X[0]&Y[0];
assign Z[1]=X[1]&Y[1];
assign Z[2]=X[2]&Y[2];
assign Z[3]=X[3]&Y[3];
endmodule
module S2(
input [3:0]X,
input [3:0]Y,
output [3:0]Z
);
assign Z=X&Y;
endmodule
endmodule
Solucin 2. Utilizando concatenacin.
module S1(
input [3:0]X,
input [3:0]Y,
output [1:0]Z
);
wire [3:0]A;
assign A=X ^ Y;
assign Z={A[2] ~& A[3] , A[0] ~& A[1]};
endmodule
Ejemplo. Utilice la concatenacin y la particin vectorial para describir el circuito que se muestra a
continuacin:
module S1(
input [3:0]X,
input [3:0]Y,
output [3:0]Z
);
endmodule
6.9.5. Replicas con la instruccin assign.
Este operador sirve para repetir N veces una red dentro de una concatenacin. En la figura 123 se
muestra un ejemplo con replicas de un vector.
Ejemplo 69. Disear un multiplexor de 2 canales de entrada y una salida utilizando para ello la
instruccin assign condicional.
endmodule
En este caso la salida OUT es igual a CH0 cuando si el selector es igual a 0; si no lo es, entonces la
salida ser igual a CH1. En la figura 125 se muestra el funcionamiento de la instruccin assign
condicional.
Figura 125. Funcionamiento de la instruccin assign condicional.
Ejemplo. Describir en verilog un multiplexor de 4 entradas y una salida con dos selectores.
module mux41(
input [3:0]CH,
input [1:0]S,
output O
);
assign O = (S==0)?CH[0]:
(S==1)?CH[1]:
(S==2)?CH[2]:
CH[3];
endmodule