Tema: Tablas de Verdad
Materiales:
DE0-NANO.
4 Display Siete Segmentos.
8 Resistencias de 1KOhm.
Quartus II.
Modo de trabajo en parejas: Lo que significa que mientras uno realiza una cosa, el otro debe realizar otra. En este caso aconsejo que el montaje que se va hacer sobre la protoboard lo empiece a realizar una persona mientras que la otra hace los calculos correspondientes y describe hardware.
Laboratorio: Creando circuitos digitales con tablas de verdad.
En este laboratorio usted implementara la teoria vista en clase para diseñar su primeros chips digitales haciendo agrupación por minterm o maxterm.
Usted ya se familiarizo con el uso de la herramienta Quartus II y sus extras como modelsim en el laboratorio 1, por lo tanto si usted no hizo a consciencia ese laboratorio, a lo mejor este no se mas facil y se le dificulte de gran manera. Aunque, trataremos de que no sea asi.
Lo primero que debe hacer es ir a la pagina de Terasic corp, y usted se registrara. Una vez registrado, busque en los productos que ofrece la pagina, la referencia de la DE0-NANO, luego entre a Resources y descargue la ultima version de "DE0-NANO CDROM".
Ahora dentro de este archivo que descargo, existira una carpeta con el nombre "xxx_tools", extraiga su contenido a una carpeta llamada C:\ece31235upb\tools. Ahora ejecute el programa llamado "System Builder" y debera aparecer algo similar a lo que se muestra a continuación:
Modifique la interfaz para que quede de la siguiente manera:
Ahora oprima "Generate" y guarde lo que se esta generando en C:\ece31235upb\Lab2.... OJO, no pueden existir rutas con espacios.
Ahora cierre la aplicación system builder y vaya a la carpeta donde genero el archivo. Abra el archivo que se llama Lab2_ece31235upb.
Ahora usted se preguntara....¿por qué hizo eso?, la respuesta es para crear una plantilla que tiene todas las herramientas necesarias para este laboratorio, en este caso usted utilizara los LEDs, los SW, los GPIO y el reloj de 50Mhz de la board DE0-NANO. Este proceso le ahorra tiempo, y no tiene que asignar los pines uno a uno como lo hizo en el lab1 usando el pinplanner, por lo tanto, esta herramienta siempre la usara al inicio del los laboratorios y usted seleccionara los elementos que se le pidan para el mismo.
Antes de iniciar cualquier laboratorio se le dara un diseño el cual se le explicara de manera de que entienda el objetivo principal y pueda desarrollar este laboratorio sin duda alguna, en la siguiente imagen usted puede observar el esquema de bloques del diseño q usted esta a punto de empezar hacer.
Como usted puede ver, hay una caja que se llama "Black_box", ese es un chip el cual tiene una entrada que sera el reloj de 50MHz "CLOCK_50" de la board DE0-NANO, usted no tendra que diseñar este chip, lo unico que usted tiene que hacer es decargar el siguiente archivo y guardarlo en la carpeta C:\ece31235upb\Lab2\modules\.
En el diseño, usted puede ver 4 bloques largos que dicen "your design", de los cuales usted tiene que diseñar solamente 1, ya que todos tienen la misma funcion y despues de que usted diseñe un chip de estos puede replicarlo(esto se le enseñara hacer mas adelante). La funcion de este bloque que usted llamara "Seven_segment_display_decoder" es tomar una señal de 4 bits y decodificarla en 7 bits que se conectaran a un display 7 segmentos.
El otro bloque que usted puede observar es llamado "decoder_ece31235upb", este esta encargado de tomar los 4 bits de la señal C, proveniente del "black_box", para decodificarla en 8 bits que iran conectados a los LED.
Antes de iniciar a diseñar tablas de verdad y a ver como se conecta todo este esquema al mundo real, vamos a proceder hacer lo siguiente.
Usted tiene abierto su plantilla en quartus, la cual se genero con el System Builder, oprima en File->New.... luego seleccione la opcion "Verilog HDL File", haga este proceso dos veces.
Ahora tendra dos sub ventanas llamadas "Verilog1.v" y "Verilog2.v"
En la ventana de "Verilog1.v" escribira lo que aparece a continuación:
Guarde ese archivo con el nombre de "seven_segment_display_decoder" en la carpeta C:\ece31235upb\Lab2\modules\
En la ventana de "Verilog2.v" escribira lo siguiente:
Guarde ese archivo con el nombre de "decoder_ece31235upb" en la carpeta C:\ece31235upb\Lab2\modules\
Cada vez que se diseña un chip, el nombre del module debe ser el mismo del nombre del archivo.
Ahora de doble click en la ventana de navegacion donde dice "Lab2_ece31235upb", el cual es el chip principal del laboratorio y que contendra los pequeños chips que se acabaron de "diseñar".
Vamos ahora a instanciar cada chip en el chip principal para que este diseño se parezca mas a lo que se quiere lograr.
Una vez escrito lo anterior, usted debera a ir a la ventana de "task" y dar doble click en "Analysis & Synthesis", si escribio todo correctamente, no existiran errores hasta ahora y se completara ese proceso.
Ahora expanda "Analysis & Synthesis" y encuentre "Netlist Viewers->RTL Viewer", doble click, y le debera aparecer algo como esto.
Para probar este circuito que aun no esta listo, pero tiene algunas cosas que pueden verificar que estan buen camino, vaya al la ventana Task, y busque "Assembler" y oprima doble click, espere a que termine el proceso y luego busque la que dice "Program Device", doble click y aparecera la siguiente ventana y oprimira "Start" para programar el hw sobre la FPGA:
Como vera los LEDs que estan conectados al chip "decoder_ece31235upb" esta haciendo un conteo en los LED[3:0] y los valores de LED[7:4] se mantienen fijos en 4'b1010.
Abra otra vez la descripción de hardware del chip "decoder_ece31235upb" y analice si lo que pasa es logico, con respecto a lo que esta descrito dentro de este chip y lo que pasa en los LEDs.
El proceso anterior es algo constante que usted hara para probar su diseño a medida de que vaya haciendo cambios sobre cada chip(Recuerde que en el informe usted debe poner simulaciones y pruebas reales).
Ahora usted se dio cuenta que el esquema del laboratorio se parece al del diseño en papel y ahora es cuando empieza lo divertido, los calculos y armar el circuito.
Para armar el circuito que usted tendra que conectar a la DE0-NANO, usted requiere de las resistencias y de los siete segmentos, lo que usted armara fuera de la DE0-NANO sera esto:
Este circuito es para los que tienen siete segmentos de catodo comun, para saber cual es el que tiene, aproximece el profesor.
Si arma el circuito, pero aun no ha realizado los calculos, puede descargar la solución que es el archivo .sof, y lo puede programar con el Quartus Programmer en la DE0-NANO. De forma de que vea la solución, y pruebe su circuito.
Solución para Catodo Comun.
Solución para Anodo Comun.
Empezaremos por los siete segmentos, como usted puede ver en la figura siguiente, un siete segmentos tiene 8 lineas o LEDs, cada uno de ellos se representa con una letra de la A a la G, Lo que se quiere es que por medio del chip "seven_segment_display_decoder" se transforme el numero de 4 bits en un numero visible y entendible para un humano corriente. Por esta razon, el chip "seven_segment_display_decoder" tiene una salida de 7 bits... cada una controlara cada LED del siete segmentos o en otras palabras cada segmento. Donde OUT[6] sera la letra A, y OUT[0] sera la letra G. En el caso de el chip llamado "seven_segment1" su salida OUT esta conectada directamente a los pines de salida de la board DE0-NANO, en este caso a GPIO[6:0], lo que quiere decir que internamente la salida de este chip OUT[0] corresponde a GPIO[0] y que OUT[1] a GPIO[1], y asi sucesivamente hasta OUT[6] a GPIO[6]. Lo que significa que la persona encargada de armar el circuito en la protoboard y unirlo a la DE0-NANO debe armar el circuito anterior y conectarlo a la FPGA mientras que su compañero hacer los calculos y descripción de hardware".
Para llenar la tabla usted debe tener en cuenta, que si su siete segmentos es catodo comun, los LEDs del siete segmentos se encienden con 1. Si es Anodo comun se encienden con 0.
Una vez terminados los calculos, usted debera modificar el modulo "seven_segment_display_decoder" y describir por medio de Verilog el chip calculado(Recuerde q lo que hay dentro del chip por ahora es una descripción pasajera que usted pretende cambiar por logica), si tiene dudas de como realizar alguna descripción de hardware puede ver el libro guia en las paginas de la 168 a la 174.
Ahora falta diseñar el chip restante que es mas sencillo que el anterior, de acuerdo a la siguiente tabla(Lo chevere de esta parte es que los LEDs ya estan en la board y no hay que hacer mas conexiones externas), haga los calculos y modifique el chip en verilog "decoder_ece31235upb". Pruebe que todo funciona correctamente.
Felicitaciones!!, usted ha completado el laboratorio 2.