Академический Документы
Профессиональный Документы
Культура Документы
(v. 5.0)
1. Introduccin y objetivos
Uno de los objetivos generales de la asignatura Estructura de Computadores es llegar a conocer la
metodologa de diseo de sistemas digitales a nivel de transferencia entre registros. Para ello en las
clases de teora y prcticas, que se desarrollan en clases de aula, se introduce dicha metodologa y se
aplica a un amplio nmero de casos de diseo de sistemas digitales. Para completar la formacin en este
tema es importante no quedarnos exclusivamente en la parte ms terica sino que es necesario
complementarla con un conocimiento de implementacin real de dichos sistemas digitales.
Desarrollar el proceso de diseo y simulacin. Para ello se han elegido dos circuitos muy simples,
uno combinacional y otro secuencial. Concretamente un decodificador 4 a 16 y un contador.
2. Estudio previo
Para realizar la sesin de laboratorio es necesario estudiar previamente el diseo de una serie de
mdulos Verilog que a continuacin se detallan:
Nombre del
Contenido Descripcin
fichero
Testbench para el
decodificador_tb.v Debe estudiarlo antes de asistir al laboratorio.
decodificador 4 a 16
A3 A2 A1 A0 W15W14W13W12W11W10W9W8W7W6W5W4W3W2W1W0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Para disear el cdigo Verilog se ha usado una descripcin procedimental, que es la que se muestra
en el fragmento de cdigo 1 (fichero decodificador.v). Estudie dicha descripcin hasta que tenga claro su
funcionamiento.
module dec4a16(
input [3:0] a,
output reg [15:0] w
);
always @ (a)
begin
w = 0;
w[a] = 1;
end
endmodule
El contador debe cumplir la tabla comportamiento de la figura 1b y, el cdigo Verilog propuesto para
describirlo es el fragmento de cdigo 2 (fichero contador.v). Debe estudiarlo hasta entender su
funcionamiento.
Estructura de Computadores 4
CY = Si se cumple que...
(a) (b)
Figura 1. Descripcin del contador mdulo 16: (a) Descripcin estructural, (b) Descripcin funcional.
module contador_mod_16(
input clk, up, reset,
output reg [3:0] q,
output cy
);
assign cy = &q;
endmodule
3. Estudio experimental
En esta sesin de laboratorio se va a realizar la simulacin del sistema digital diseado con el
paquete de herramientas de Xilinx ISE. Se utilizarn unos ficheros con mdulos verilog tanto de
circuitos como de testbench previamente preparados. Los pasos a seguir son los siguientes:
1. Siga los pasos del Tutorial de uso de Xilinx ISE (incluido en la siguiente seccin de este
documento), para crear un nuevo proyecto de nombre PracticaEdC1 (por ejemplo),
incluyendo todos los ficheros Verilog de la tabla 1.
3. Realice ahora la simulacin del contador de 4 bits (contador.v), con ayuda del testbench
facilitado (fichero contador_tb.v). Compruebe si el contador funciona correctamente.
4. Fjese que al simular el contador no aparecen todos los estados ni la activacin de la seal
de Carry. Haga los cambios oportunos en el testbench del contador para poder visualizar al
Estructura de Computadores 5
5. Aada una descripcin estructural en Verilog que interconecte ambos bloques: contador y
decodificador, de forma que ambos aparezcan incluidos por este nuevo fichero. Utilice como
plantilla el fragmento de cdigo 3 (fichero lab1.v).
6. Realice por ltimo la simulacin de este nuevo mdulo (fichero lab1.v), con ayuda del
testbench facilitado (fichero lab1_tb.v). Compruebe si el sistema completo funciona
correctamente.
module lab1(
input clk, up, reset,
output [15:0] z,
output cy);
// Rellene los huecos para conectar correctamente las entradas del contador
// a las entradas del modulo lab1 y las salidas del contador a las entradas
// del decodificador o a las salidas del lab1, segn corresponda.
contador_mod_16 instancia_contador(
.clk( ),
.up( ),
.reset( ),
.q( ),
.cy( )
);
endmodule
Tras escribir el nombre se activa el botn Next y aparece el cuadro de dilogo mostrado en la figura
3, donde hay que establecer todas las opciones indicadas en la figura. Concretamente hay que
asegurarse de establecer las siguientes opciones a su valor correcto:
Family: Spartan 3E
Device: XC3S100E
Package: CP132
El resto de opciones deberan estar por defecto a los mismos valores que los mostrados en la figura 3.
Tras establecer las opciones correctas, utilizando el botn Next aparece una ltima ventana con
informacin y un botn Finish que se pulsa para crear el proyecto. La figura 4 muestra el proyecto
recin creado, slo se muestra el nombre del proyecto y el tipo de FPGA xc3s100e-4cp132.
Figura 2. Ventana de creacin del proyecto. Figura 3. Ventana de propiedades del proyecto.
Estructura de Computadores 7
Ntese que encima del nombre del proyecto aparecen dos iconos Implementation y Simulation, (ver
figura 4) cada uno con distintas vistas del mismo proyecto. Es muy importante que estemos siempre en
la vista de simulacin si lo que queremos hacer son simulaciones de los mdulos del proyecto. Tambin
se recomienda utilizar la entrada de men Layout Load Default Layout en caso de no ver
correctamente las ventanas o los controles del ISE Project Navigator (o del entorno de Simulacin Isim
que usar ms adelante).
Add Copy of Source crea un nuevo fichero dentro del proyecto que inicialmente ser una copia del
fichero fuente seleccionado. As las modificaciones sern propias a este proyecto y el fichero
fuente original no se modificar. La copia residir dentro de la carpeta del proyecto.
Add Source no crea un nuevo fichero dentro del proyecto, utiliza el propio fichero fuente
seleccionado sin crear ninguna copia. As las modificaciones afectarn al fichero fuente en su
ubicacin original, es decir, el fichero residir en la misma carpeta dnde est almacenado
previamente.
Otra posible opcin sera New Source crendose un nuevo fichero fuente vaco donde habra que
escribir el cdigo.
Estructura de Computadores 8
La mejor opcin es Add Source seleccionando uno o ms ficheros a aadir al proyecto. Hay que
confirmar los ficheros que son para implementacin y cuales son exclusivamente para simulacin (cmo
los ficheros de testbench suministrados). En la figura 5 se muestran los ficheros a aadir y la asociacin
realizada en cada uno de ellos para que la simulacin opere correctamente (elija All y Simulation segn
se indica).
Una vez aadidos los ficheros, stos son mostrados en la vista del proyecto de forma jerrquica y,
componiendo el rbol de mdulos del proyecto en funcin de que un mdulo incluya en su interior
instancias de otro mdulo. Esto se puede visualizar en la figura 5. El mdulo que incluye a los dems
ser el primer mdulo del rbol de proyecto.
Para editar o ver cualquiera de los ficheros del proyecto, slo hay que seleccionarlo con el ratn en el
rbol de proyecto y pulsar el botn izquierdo del ratn dos veces.
As, para simular el funcionamiento de un mdulo de testbench debemos resaltar el nombre del
mdulo de testbench y debajo en la caja titulada Processes desplegar la entrada ISim Simulator para
ejecutar la orden Simulate Behavioral Model pulsando el ratn dos veces, como muestra la figura 7.
Estructura de Computadores 10
Si no hay errores en el diseo, se abrir una nueva ventana con el simulador ISim y ejecutar una
simulacin durante un corto periodo de tiempo (habitualmente 1s), detenindose la simulacin en ese
punto, salvo que el testbench detenga la simulacin con antelacin (con la orden $finish).
Si no hay errores en el cdigo se abrir el simulador ISim donde, para ver las formas de onda, hay
que utilizar la pestaa Default.wcfg. Es aconsejable utilizar en este momento el icono (Zoom to Full
View) para tener una vista completa de toda la simulacin.
En esta vista, mostrada en la figura 8, se dispone de una ventana con las formas de onda a la derecha
en fondo negro y varias seales representadas con sus valores simulados, que deben ser las entradas y
salidas de nuestra unidad (al menos aquellas que aparecen en el testbench). Si pulsamos con el ratn
sobre el grfico de formas de ondas, se sita un cursor amarillo indicando datos exactos en ese instante
de tiempo (ntese como cambian los valores de las seales al situarse en distintos instantes). Para las
seales de varios bits podemos cambiar la codificacin pulsando el botn derecho del ratn sobre el
nombre de la seal y, accediendo en el men flotante a la opcin Radix (binario, hexadecimal, decimal,
etc.).
Otros controles importantes de ISim se encuentran en dos bloques situados a la izquierda con los que
se puede navegar por todas las unidades que componen el diseo. Por ejemplo, utilizando el panel
Instances and Processes se pueden buscar seales y componentes internos de cualquier mdulo y
arrastrarlos a la ventana de las formas de onda para aadirlas a ella y poder ver sus valores a lo largo
Estructura de Computadores 11
de la simulacin. Si bien, para ello habra que reiniciar la simulacin despus de haberlas aadido a la
ventana de las formas de onda.
Por ltimo, en la barra de iconos superior hay varios iconos que permiten hacer ampliaciones y
reducciones de escala en la imagen. Adems de estos iconos, varios iconos verdes que hay a
continuacin sirven para navegar por la forma de onda y, los iconos azules, controlan la simulacin
utilizndose para continuar o detener el proceso.
Los iconos verdes se deben usar para buscar o centrarse en una parte concreta de las formas de
onda, por ejemplo, Previous Transition y Next Transition nos permiten ir al anterior/siguiente
flanco de una seal seleccionada previamente en la ventana de formas de onda.
Los iconos azules controlan el flujo de ejecucin de la simulacin permitiendo: borrar la simulacin
actual volviendo al instante cero ( Restart), continuar la simulacin indefinidamente hasta encontrar
un $finish ( Run All), continuar un tiempo de simulacin por un tiempo determinado (habitualmente
1s) y luego detenerse ( Run), ejecutar la simulacin lnea a lnea de Verilog ( Step) y, por ltimo,
detener una simulacin en ejecucin ( Break).