Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivos
Introducción
Los paquetes WebPack 4.2 y ModelSim XE/Starter 5.5e_p1 de Model Technology son
herramientas de Diseño Digitales que nos ayudan a optimizar a los Lenguajes de
Descripción de Hardware dentro de un nivel de compuerta interno equivalente y la
compilación de esta representación produce diseños optimizados de nivel de compuerta
para la tecnología de las FPGAs.
1
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
Un circuito de descripción con Verilog puede ser de dos tipos: estructural o funcional.
2
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
Variables de entrada a, b y Cin. Ecuaciones booleanas para las salidas Cout y Sum:
Una vez que tenemos las ecuaciones de salida para la suma y el acarreo de salida, abrimos
nuestro software WebPACK Project Navigator 4.2WP3.x.lnk , y procedemos a crear un nuevo proyecto
en File New Project..., aparece una ventana (Figura 1, Pág. 4) en la cual introducimos la
ruta donde deseamos almacenar el proyecto, el nombre del proyecto, se selecciona la
familia y el número de dispositivo que vamos a utilizar; el tipo de diseño que utilizaremos
es XST Verilog.
3
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
Una vez creado el nuevo proyecto, la ventana principal del Project Navigator queda de la
siguiente manera.
4
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
5
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
6
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
7
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
8
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
Ahora aparece una nueva ventana (Figura 11), la cual se utiliza para ajustar los tiempos
del reloj (para circuitos secuénciales) en caso de que exista alguno en nuestro diseño, aquí
aparece deshabilitado porque nuestro diseño es un circuito combinatorio y no necesitamos
de un reloj.
9
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
la Figura 13 cuantos ciclos de reloj deseamos ejecutar después de que se asigna la última
señal de entrada, podemos ignorar o aceptar (automáticamente ejecutará un ciclo de reloj
después de introducir la última señal de entrada).
Salimos del archivo banco de pruebas y regresamos al Project Navigator del WebPACK.
10
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
11
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
De la pantalla anterior, se crea un nuevo archivo que servirá para simular, como se
aprecia a continuación
12
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
13
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
Se guarda el archivo, se selecciona del menú Compile Compile All, Si todo está
bien, aparecerán dos palomas de color verde como estado de los archivos de verilog;
también, en la parte inferior aparecerá el mensaje: 2 compiles, 0 failed with no errors.
14
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
VSIM > vsim work.t, comienza a cargar variables para simulación (parte de en medio azul)
VSIM > view wave, se visualiza diagramas de tiempo de las señales (parte negra a la derecha)
VSIM > add wave sim:/t/*, se cargan las variables en la ventana de señales (señales en la parte
gris en la ventana de señales)
15
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
Una vez que analizamos la simulación y obtenemos los resultados deseados el siguiente
paso es bajar nuestro diseño al dispositivo FPGA ó CPLD según sea la tarjeta de
programación con la que contemos.
En la Figura 16 se muestra como seleccionar el dispositivo a programar; seleccionamos
del menú Source Properties..., aparece una ventana con la información del dispositivo a
programar (Figura 17).
16
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
Contamos con una tarjeta programadora que contiene un CPLD CoolRunner XPLA3
CPL (XCR3256XL TQ144), en este caso no realizamos modificaciones y procedemos a
configurar los pines de entrada/salida de nuestro diseño con los pines físicos del CPLD.
17
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
En la ventana del Xilinx ChipViewer hay una ventana que contiene las señales de
entrada y salida, seleccionamos cualquiera de las entradas o salidas y las arrastramos hasta
la posición que mejor convenga de acuerdo a la distribución física mostrada en la ventana
de la derecha, en la Figura 19 ya se hicieron tres asignaciones, el pin 99 del CPLD es por
donde entrará la señal de acarreo de entrada Cin, el pin 100 es la entrada de datos “a”, el
pin 101 será el dato de entrada “b”, el pin 102 será el dato de salida Sum y el pin 103
contendrá el acarreo de salida Cout, guardamos el archivo (*.ngd) y salimos.
Al regresar al Project Navigator posiblemente aparecerá una ventana que dice que
debemos resetear el proyecto para que el nuevo archivo *.ucf actualice el diseño y se debe
volver a correr la implementación del diseño desde la venta Processes for Current Source
Implement Design, para verificar que efectivamente se hicieron las asignaciones de los
pines de entrada/salida a los pines físicos del CPLD, abrimos el Fitter Report, que se
encuentra en la misma ventana Processes for Current Source Implement Design.
Mostrando algo como en la Figura 20.
18
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
Para poder bajar el programa al dispositivo físico, desde la ventana Processes for
Current Source Generate Programming File hacemos doble click en Configure
Device (iMPACT), se ejecuta el programa iMPACT y lo podemos ver en la Figura 21.
19
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
Para crear otro diseño de Verilog en el mismo proyecto, desde Project New
Source..., seleccionamos Verilog Module, asignamos un nombre al nuevo diseño e
introducimos las entradas y salidas adecuadas.
Para verificar sintaxis, crear el banco de pruebas, simular, asignar pines y bajar el
programa al CPLD se hace de la misma manera que en el diseño anterior.
A continuación se presentan otras formas de representar el mismo Sumador completo de
1 bit.
and inst1(aux1,a,b);
xor inst2(aux2,a,b);
and inst3(aux3,Cin,aux2);
or inst4(Cout,aux1,aux3);
xor inst5(Sum,Cin,aux2);
20
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
input Cin, a, b;
output Cout, Sum;
endmodule
input Cin, a, b;
output Cout, Sum;
endmodule
Sumador de 32 bits.
input Cin;
input [31:0] a, b;
output Cout;
output [31:0] Sum;
endmodule
21
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
Multiplexor
Un multiplexor es un dispositivo lógico que recibe información por sus dos o más
entradas (de uno o mas bits de ancho) y mediante una señal de control decidimos cual de la
entradas aparece reflejada en la salida; esto es, un convertidor de paralelo a serie. Si tienen
una señal de habilitación "enable" hace que el multiplexor esté o no habilitado en su salida.
Todas las entradas de información están ordenadas desde la 0 hasta la 2 n-1, dando todas
las combinaciones que se podrían dar entre las variables de control. El número de entradas
de control le da nombre a los distintos multiplexores, un MUX-3 tiene tres entradas de
control.
always @ (Select)
begin
case (Select)
3'h0: Out = Busin[0];
3'h1: Out = Busin[1];
3'h2: Out = Busin[2];
3'h3: Out = Busin[3];
3'h4: Out = Busin[4];
3'h5: Out = Busin[5];
3'h6: Out = Busin[6];
3'h7: Out = Busin[7];
endcase
end // Fin del always
22
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
endmodule
Decodificador
Un decodificador es un circuito combinacional cuya característica fundamental es que,
para cada combinación de las entradas, sólo una de las salidas tiene un nivel lógico
diferente a las demás.
always @ (Select)
begin
case (Select)
3'h0: Busout = 8'd1; // 8'h01 8'b00000001
3'h1: Busout = 8'd2; // 8'h02 8'b00000010
3'h2: Busout = 8'd4; // 8'h04 8'b00000100
3'h3: Busout = 8'd8; // 8'h08 8'b00001000
3'h4: Busout = 8'd16; // 8'h10 8'b00010000
3'h5: Busout = 8'd32; // 8'h20 8'b00100000
3'h6: Busout = 8'd64; // 8'h40 8'b01000000
3'h7: Busout = 8'd128; // 8'h80 8'b10000000
endcase
end // Fin del always
23
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
endmodule
24
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
Registro D_Latch
Un registro de n bits es un dispositivo de estado que tiene capacidad de almacenar n bits.
Internamente están formados por biestables, tantos como bits sea capaz de almacenar el
registro. Normalmente estos dispositivos son síncronos siendo los biestables D los más
usados para la implementación interna.
Los registros se usan para almacenar una serie de bits relacionados, como un byte
(8 bits) de una computadora. En la figura 26 se muestra un registro de 3 bits.
La palabra A[0-2] solo aparece en la salida Q[0-2], si se produce el cambio de nivel del
biestable, mediante el cambio de nivel en el reloj CLK:
En cuanto a las operaciones básicas que se realizan sobre los registros destacamos
fundamentalmente dos: escritura (W) y lectura (R), aunque habitualmente se pueden
encontrar registros que incorporan operaciones como Set (q=1) y Reset (q=0).
always @ (clk)
begin
if (reset)
q=0;
else
if (set)
q=1;
else
q=d;
end
25
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
endmodule
26
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
27
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
28
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
29
Escuela Superior de Ingeniería Mecánica y Eléctrica-SEPI-UPA-IPN
(Lenguaje de Descripción de Hardware “Verilog”)
Bibliografía
o
http://www.xilinx.com
Digital design
Mano, M. Morris
Englewood Cliffs, N.J. : Prentice Hall.
30