Professional Documents
Culture Documents
1. Introduccin y objetivos
Uno de los objetivos generales de la asignatura es llegar a conocer la metodologa 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. Los objetivos de esta prctica son: Familiarizarse con el lenguaje Verilog-HDL Conocer el entorno de diseo sobre FPGA, en concreto el entorno de diseo de XILINX 1. Conocer las herramientas de verificacin del diseo desarrollado. Desarrollar el proceso de diseo y simulacin. Para ello se han elegido dos circuitos muy simples, uno combinacional y otro secuencial. Concretamente un convertidor de cdigo y un contador.
Sistemas Digitales Avanzados Nombre del fichero convertidor.v convertidor_tb.v contador.v contador_tb.v lab2.v lab2_tb.v
Contenido Mdulo con el cdigo del convertidor 7 segmentos Testbench para el convertidor 7 segmentos Mdulo con el contador modulo 16 Testbench para el contador mdulo 16 Descripcin estructural con la unin de los 2 mdulos Testbench del sistema completo
Descripcin Debe completarlo Se debe utilizar sin modificar para realizar la simulacin Debe completarlo Se debe utilizar sin modificar para realizar la simulacin Debe completarlo Se debe utilizar sin modificar para realizar la simulacin
A continuacin se detalla cada uno de los circuitos que se deben desarrollar en Verilog.
Como primer paso para el diseo de este convertidor se presenta la tabla de verdad del circuito combinacional que hay que disear (tabla 2). Los nombres de los segmentos en la tabla 2 corresponden a los nombres asignados en la figura 1. La activacin de los segmentos es en nivel bajo, es decir, para que un segmento se ilumine el valor de la seal debe colocarse a cero. En la tabla se representan los dgitos del 0 al 9 a partir de su valor en binario de 4 bits; tambin aparecen algunos nmeros mayores de 9 para lo cual se iluminan ciertos segmentos de forma que aparezcan los dgitos hexadecimales.
Para disear el cdigo Verilog se propone utilizar la estructura case de Verilog y usar como plantilla el siguiente fragmento de cdigo (fichero convertidor.v):
module convertidor_bin7seg( input [3:0] bin_in, // entrada binaria 4 bits output reg a,b,c,d,e,f,g); // salida 7-segmentos // Escriba aqui el cdigo // Se recomienda utilizar un proceso always con // una sentencia case ... endmodule
(a)
(b)
Figura 2. Descripcin del contador mdulo 16: (a) Descripcin estructural, (b) Descripcin funcional.
module contador_mod16( input clk,up,reset, output reg [3:0] q, output cy); // Escriba su cdigo aqui // Cuidado con la seal cy, tiene que // activarse durante el ultimo estado de cuenta ... endmodule
Cdigo 2. Fichero contador.v, plantilla de cdigo Verilog para el contador mdulo 16.
Aada una descripcin estructural en Verilog que interconecte ambos bloques: convertidor y contador, de forma que ambos aparezcan incluidos por este nuevo fichero. Utilice la plantilla de cdigo (vase Cdigo 3) suministrada (fichero lab2.v).
7.
Realice por ltimo la simulacin de este nuevo bloque, con ayuda del testbench facilitado (fichero lab2_tb.v). Compruebe si el sistema completo funciona correctamente.
module lab2( input clk, up, reset, output [0:6] seg, output cy); // Declare un cable para // interconectar la salida del contador // con la entrada del convertidor ... // Instancie el contador modulo 16 // y realice las conexiones correctamente ... // Instancie el convertidor binario a 7 segmentos // y realice las conexiones correctamente con el // modulo anterior ... endmodule // lab2
Cdigo 3. Fichero lab2.v, plantilla de cdigo Verilog para el contador mdulo 16.
Para realizar los pasos indicados siga el tutorial de Xilinx de la siguiente seccin.
informacin y un botn Finish que se pulsa para crear el proyecto. La figura 5 muestra el proyecto recin creado, slo se muestra el nombre del proyecto y el tipo de FPGA xc3s100e-cp132.
Ntese que encima del nombre del proyecto aparecen dos iconos Implementation y Simulation, (ver figura 5) cada uno con distintas vistas del mismo proyecto. Debemos procurar estar siempre en modo de simulacin para evitar problemas con el entorno ISE. Tambin se recomienda utilizar la entrada de men Layout Restore Default Layout en caso de no ver correctamente las ventanas o los controles de ISE Project Navigator (o del entorno de Simulacin Isim que usar ms adelante).
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. 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 6 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 proyecto de ficheros en funcin de que un fichero necesite de otro fichero, esto se puede visualizar en la figura 6. El fichero que incluye a los dems ser el primer fichero 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 una unidad debemos resaltar el nombre de la unidad/fichero de testbench a simular y abajo 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 8. 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 FULL VIEW) para tener una vista completa de toda la simulacin. En esta vista, mostrada en la figura 9, 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 hacemos pulsamos 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.). (ZOOM TO
10
Otros controles importantes de ISim se encuentra en dos bloques situados a la izquierda con los que se puede navegar por todas las unidades que componen el diseo. Utilizando estos dos bloques se pueden buscar seales y componentes internos de cualquier mdulo para poder mostrar sus formas de ondas, pero, para ello habra que reiniciar la simulacin tras aadirlas a la vista de simulacin. 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, 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 los iconos azules, controlan la simulacin
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 ( Run All),
continuar un tiempo de simulacin determinado detenindose automticamente ( simulacin lnea a lnea de Verilog ( Break).
Run), ejecutar la
11
4. Implementacin en FPGA
Finalmente se implementar el sistema digital realizado en un dispositivo programable tipo FPGA incluida en la placa de desarrollo Basys2.
Leds
clk
En la implementacin se conectarn las seales de control del contador a los botones de la placa de desarrollo. Tambin, las salidas del convertidor de 7 segmentos se cotectarn al display. Aunque las placas disponen de un reloj interno, para esta primera prueba se utilizar como seal de reloj uno de los botones (ver figura 10. Para implementar un sistema completo es necesario utilizar otro fichero donde se indican las conexiones entre los Pads del chip FPGA y los componentes de la placa. Este fichero se llama basys2.ucf y ya contiene la asignacin de las conexiones del sistema a los componentes de la placa. Los pasos a seguir son los siguientes: 1. Cambiar el proyecto ISE del modo simulacin al modo
2.1. Fichero sistema_completo.v como implementacin. Este fichero aparecer ahora como raz del proyecto. 2.2. Fichero basys2.ucf. Debe comprobar que tambin aparece en el rbol de proyecto. 3. La implementacin se realiza seleccionado el mdulo sistema_completo en el rbol de proyecto. Entonces debe seleccionar la opcin Generate Programming File (figura 11) y seguir los siguientes
12
3.1. Pulsando el botn derecho del ratn sobre la opcin Generate Programming File aparecer un men flotante como el mostrado en la figura 12a, seleccionando la opcin de men de Process Poperties aparecer el dilogo mostrado en la figura 12b. 3.2. En el dilogo hay que elegir la categora Startup Options y cambiar el valor del primer campo FPGA Start-Up Clock de CCLK a Jtag-Clock. Tras aceptar los cambios con el botn OK se volver a la ventana principal de ISE. 3.3. Pulsando dos veces botn izquierdo el ratn sobre Generate Programming File se ejecuta el proceso completo y se genera el fichero de programacin. Tal y como se muestra en la figura 11, si el proceso ha terminado con xito aparecer un indicador verde, en caso contrario un aspa rojo indica que hay errores que habra que corregir y repetir el proceso.
Opciones de programacin
(a)
(b) Figura 12. Opciones de generacin del fichero de programacin: (a) men desplegable, (b) dilogo con opciones
4. El ltimo paso consiste en programar la placa de desarrollo con un fichero que se ha generado tras el proceso del paso anterior. Concretamente, el fichero debera llamarse laboratorio2.bit y hay que transferirlo por la conexin USB a la FPGA. Para ello siga los siguientes pasos: 4.1. Conecte el puerto USB de la placa de desarrollo y conmute la alimentacin de la placa. Por defecto debe cargarse un programa de test de la propia placa que cuenta dgitos BCD en el Display. Adems, puede comprobar el correcto funcionamiento de los conmutadores y los botones antes de proceder con la programacin. 4.2. Inicie el programa Adept desde el men de inicio (men Digilent Adept, icono ) y
aparecer el programa mostrado en la figura 13. Con este programa se puede transferir el fichero de programacin (bitstream) a la FPGA. El programa Adept permite programar los componentes de la placa Basys2, estos son, una FPGA y una PROM. Se programar la FPGA, por tanto, se debe utilizar el botn Browse indicado en la figura y seleccionar el fichero .bit. Hay buscar la carpeta del proyecto ISE en el que est trabajando, all encontrar el resultado de la sntesis en un fichero .bit, concretamente, laboratorio2.bit. Una vez seleccionado este fichero se activar el botn Program y bastar con pulsarlo para la placa se programe.
13
Seleccin de fichero
5. Utilice los botones para conseguir que el contador avance: 5.1. Mantenga pulsado el botn UP y genere un pulsos de reloj 5.2. Mantenga pulsado el botn RESET y genere pulsos de reloj 5.3. Compruebe lo que sucede en el fin de cuenta del contador.