DISEÑO DIGITAL CON LOGICA PROGRAMABLE MANUAL MAX+PLUS II

Sadot Alexandres F.

DISEÑO DE SISTEMAS DIGITALES

INDICE: 1.- INTRODUCCIÓN. ......................................................................................... 2
1.1.- ENTORNO MAX+PLUS II. ........................................................................................................3 1.2.- TARJETA PARA EL DESARROLLO DE PROTOTIPOS........................................................................4 1.2.1.- PLD’S .....................................................................................................................................5 1.2.2.- OSCILADOR.............................................................................................................................5 1.2.3.- PULSADORES ...........................................................................................................................5 1.2.4.- MICROINTERRUPTORES ...........................................................................................................6 1.2.5.- DISPOSITIVOS LUMINOSOS. .....................................................................................................7 1.2.6.- MEMORIA RAM......................................................................................................................9 1.2.7.- CONECTOR DE ACCESO A TERMINALES DE USUARIO..............................................................11 1.2.8.- ZONA DE WRAPPING..............................................................................................................12 1.2.9.- ACCESO A LOS TERMINALES DE LA TARJETA ......................................................................12

2.- DEFINICIÓN DE UN PROYECTO. ............................................................ 13
2.1.- JERARQUÍA DE UN PROYECTO...................................................................................................15

3.- EJEMPLO BÁSICO DE OPERACIÓN. ...................................................... 15
3.1.- CREACIÓN DEL PROYECTO......................................................................................................16 3.1.1.- CAPTURA DE ESQUEMAS......................................................................................................16 3.1.1.1.- CAPTURA POR OR CAD. ...................................................................................................18 3.1.1.2.- CAPTURA DE ESQUEMAS EN EL ENTORNO ALTERA . .....................................................19 3.1.1.4.- ASIGNACIÓN DEL PATILLAJE DE LA FPGA .....................................................................19 3.2.- VERIFICAR LAS REGLAS DE DISEÑO.............................................................................................21 3.3.- COMPILAR, COMPLETAR Y ENSAMBLAR. .............................................................................23 3.4.- PROGRAMAR LA TARJETA DE DESARROLLO CON EL EJEMPLO. ...................................28 3.6.- VERIFICACIÓN DEL FUNCIONAMIENTO. ...........................................................................32

4.- SIMULACIÓN LOGICA.............................................................................. 33
4.1.- SIMULACIÓN LÓGICA CON HERRAMIENTAS DE ALTERA...............................................33 4.2.- FICHEROS GRÁFICOS PARA SIMULACIÓN. .................................................................................34 4.3.- DEFINICIÓN DE ESTÍMULOS .......................................................................................................38 4.3.1.- DEFINICIÓN DE SEÑALES ....................................................................................................39 4.4.- PUESTA EN MARCHA DE LA SIMULACIÓN ........................................................................42

5.- LENGUAJES HDL. ...................................................................................... 44
5.1.- REALIZACIÓN PRÁCTICA DE CIRCUITOS MEDIANTE EL LENGUAJE HDL. ........................44 5.1.2.- CREAR UN FICHERO DE DISEÑO..........................................................................................46 5.1.2.1.- INTERFACE DEL DISPOSITIVO Y DECLARACIÓN DE ENTIDAD. .......................................47 5.2.- LIBRERIAS VHDL DE USUARIO...........................................................................................56 5.3.- INTEGRACIÓN DE MÓDULOS VHDL EN ESQUEMAS.........................................................57

1

DISEÑO DE SISTEMAS DIGITALES

1.- INTRODUCCIÓN.
Los entornos EDA (Electronic Design Automation) son las herramientas de trabajo más comúnmente empleadas en el diseño e implantación de circuitos lógicos. Permiten una gran versatilidad a la hora de simular cualquier posible situación en el funcionamiento de los diseños efectuados por el profesional que emplea esta herramienta, además son sencillos de manejar gracias a las interfaces gráficas que incorporan las plataformas de diseño como: ALTERA, OrCAD, XILINX, que permiten la instrumentación de dichos diseños y su implantación en los PLD’s y FPGA`s. Dichas herramientas de trabajo son puestas al alcance del alumno en esta obra con el fin de dar a conocer las últimas técnicas de diseño con una formación integral en todas ellas. Para ello, a lo largo de los diferentes capítulos del tutorial y de las prácticas que en este libro se proponen, el alumno adquirirá los conocimientos que le permitirán manejar los dispositivos fabricados por ALTERA , junto con el soporte de software Max+plus II como principal herramienta de diseño, verificación y simulación de prácticas y proyectos en el Laboratorio de Sistemas Digitales y posteriormente en su vida profesional. Para la implantación de los diseños que se efectuarán durante el curso, dispondremos de un FPGA situado en una tarjeta de desarrollo que permitirá una fácil simulación de los circuitos y prácticas propuestos, mediante una serie de visualizadores, pulsadores, microinterruptores y otros elementos, útiles para realizar simulaciones físicas en la tarjeta de desarrollo de los diseños realizados .

2

DISEÑO DE SISTEMAS DIGITALES

1.1.- ENTORNO MAX+PLUS II.
Primeramente nos familiarizaremos con el entorno de trabajo. El software que vamos a emplear es una versión de ALTERA que se ofrece para estudiantes y Universidades. Al iniciar el programa encontramos la siguiente pantalla:

En la parte superior de la misma nos encontramos con los menús típicos de las aplicaciones bajo Windows. Además, por debajo está una línea de iconos que nos dan acceso a las diferentes partes del programa. A continuación detallaremos el significado de cada uno de estos iconos y la función que realizan:

Visualizador de jerarquías.

Editor de Patillajes y asignaciones. (Floorplan)

Compilador.

Ventana del simulador.

3

DISEÑO DE SISTEMAS DIGITALES

Analizador de tiempos.

Programador.

Especifica el nombre del proyecto.

Cambia el nombre del proyecto al del archivo que se está empleando.

Maneja el archivo de diseño de nivel superior.

Opciones para guardar (Archivos, simulador y compilador).

Si durante la ejecución del programa surge alguna duda, en cualquier momento, situando el cursor del ratón sobre el icono correspondiente, aparece en la parte inferior de la pantalla una descripción de su función.

1.2.- TARJETA PARA EL DESARROLLO DE PROTOTIPOS
En esta parte del documento se describe la tarjeta para el desarrollo de prototipos SEC-7000. Esta tarjeta será empleada por el alumno para la implementación física de los diseños realizados en el entorno MAX+plus II. Los elementos de que disponemos en nuestra tarjeta de prototipos son: 1.- Una PLD de la familia MAX7000S de ALTERA. 2.- Un oscilador de cuarzo de 1.8432 MHz... 3.- 4 Pulsadores situados en la tarjeta. 4.- 16 Microinterruptores. 5.- 3 Indicadores de siete segmentos. 6.- 10 LED’s . 7.- Una memoria RAM (con posibilidad de ampliación). 8.- Zona de inserción de componentes complementarios al diseño. 9.- Conector de acceso a los terminales accesibles de la FPGA.

4

A. EPM7096S. puede ser cualquiera de las siguientes: • • • • EPM7064S.2.OSCILADOR El módulo oscilador genera una señal de frecuencia de 1’8432 MHz. tales como las de inicialización (reset) o reloj.2.G. Cada pulsador de la tarjeta dispone de un circuito “anti-rebote” de forma que pone un nivel alto TTL (+5V) en un pin de la FPGA mientras se mantiene pulsado y en caso contrario se asigna de forma permanente un nivel bajo (GND).. dividiéndola si fuera necesario para alimentar de forma síncrona a dispositivos de distinta frecuencia que empleemos en nuestros desarrollos.DISEÑO DE SISTEMAS DIGITALES 1. 1. La interconexión entre los pulsadores y los terminales de la PLD empleada en esta tarjeta de circuito impreso se detalla en la siguiente tabla: PULSADOR S1 S2 S3 S4 PIN F. EPM7128S.2. Las entradas dedicadas de las EPLD's de ALTERA tienen características especiales que las hacen apropiadas para su conexión a señales que precisen de un alto FAN-OUT y un bajo skew..PULSADORES.2. Los tres últimos ( S2. La tarjeta requiere que el integrado de la PLD's tenga un encapsulado PLCC de 84 pines para poder ser colocados en el zócalo disponible en la tarjeta y funcione correctamente con el Software. En concreto. S3 y S4 ) se encuentran conectados a entradas dedicadas y S1 se encuentra conectado a un pin de entrada/salida. 1. EPM7160S. El oscilador está conectado al pin 83 del PLD. que se corresponde con una de las entradas dedicadas del mismo.1.PLD’S La tarjeta dispone de cierta flexibilidad respecto al tipo de PLD que puede llevar instalada.P. Los cuatro pulsadores se identifican como S1 a S4.. que puede ser usada como señal de reloj cuando sea preciso. 39 2 1 84 5 .3.

G. 2..MICROINTERRUPTORES. La forma con que se han identificado para su empleo en los diseños es el siguiente: 1.DISEÑO DE SISTEMAS DIGITALES 1.P. 12 15 16 17 18 20 21 22 24 25 27 28 29 30 31 33 6 . La interconexión de los microinterruptores y los terminal se muestra a continuación: MICROINTERRUPTOR SW1_1 SW1_2 SW1_3 SW1_4 SW1_5 SW1_6 SW1_7 SW1_8 SW2_1 SW2_2 W2_3 SW2_4 SW2_5 SW2_6 SW2_7 SW2_8 TERMINAL F.Finalmente viene el número que ocupa dentro del módulo de microinterruptores. 3.2..4.A. La tarjeta dispone de dieciséis microinterruptores distribuidos en dos módulos de ocho que se encuentran en la parte izquierda. Cada uno de los microinterruptores se encuentra conectado a un terminal de la PLD y pone un nivel bajo TTL (GND) en la posición “ON” mostrada en la serigrafía de los mismos y un nivel alto (+5V) en la posición opuesta...Todos los nombres comienzan por SW. precedido por el símbolo “_” .A continuación viene un 1 ó un 2 para identificar el módulo al que pertenecen.

Para polarizar tanto los segmentos de los indicadores como los LED’s hay que poner un nivel bajo “0” en el terminal al que están conectados. Estos tres dispositivos están multiplexados entre sí junto con ocho de los LED’s de la matriz.5. DISPLAY3 identificado por la etiqueta U8. Cada señal de multiplexación habilita. por lo que se emplea cuatro terminales de la FPGA para generar las señales de control adecuadas para que se puedan emplear todos ellos de forma simultánea en los diseños que realice el alumno. con un nivel alto (+5V). el funcionamiento del indicador o del grupo de LED’s individuales de la matriz con el que está asociado. 7 .DISEÑO DE SISTEMAS DIGITALES 1. DISPLAY2 identificado por la etiqueta U7. En adelante se hará referencia a los indicadores de siete segmentos de acuerdo con la siguiente notación: • • • DISPLAY1 identificado por la etiqueta U6. ya que son de ánodo común. La tarjeta dispone de tres indicadores luminosos de siete segmentos (con punto decimal) y de una matriz que tiene diez LED’s.-DISPOSITIVOS LUMINOSOS.2.

se pueden asignar mediante un terminal de entrada/salida de forma directa. de los diez que forman la matriz. Están asociadas a los displays y al grupo de Led’s tal y como se muestra en la siguiente tabla: SEÑAL DE MULTIPLEXACIÓN DISPOSITIVO ASOCIADO MUX_0 MUX_1 MUX_2 MUX_3 DISPLAY1 DISPLAY2 DISPLAY3 LED'S Los terminales de la PLD conectados a las señales de multiplexación empleadas en el control son los indicados en la siguiente tabla: 8 .G. y no requieren multiplexación para su funcionamiento. empezando por arriba. son los que van del número 1 al 8.DISEÑO DE SISTEMAS DIGITALES SW5 ON 1 a b c d e f g punto mux0 mux1 mux2 mux3 led9 led10 U6 a f e d g b c U7 a f e d g b c U8 a f e d g b c U9 SW6 ON 1 ALTERA MAX EPM7128SLC84 S1 S2 S3 S4 PULSADORES BUS DE DATOS 10 9 8 7 6 5 4 3 25 24 21 23 2 26 27 20 22 1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 CE OE VPP MEMORIA RAM U16 O0 O1 O2 O3 O4 O5 O6 O7 11 12 13 15 16 17 18 19 BUS DE DIRECCIONES 27256 OSCILADOR 1. MUX_1. Los ocho LED’s que están multiplexados con los indicadores.8 MHz.A.P. MUX_2 y MUX_3. Los LED 9 y 10 situados en la parte inferior se encuentran asignados a terminales independientes de la F. Las señales de multiplexación se denominan MUX_0. es decir.

G.G.P.A. 77 76 75 74 MUX_0 MUX_1 MUX_2 MUX_3 De la misma forma. los terminales que han sido conectados a los segmentos y al punto decimal de los tres indicadores y a los ocho Led’s multiplexados de la matriz son los que aparecen en la siguiente tabla: SEGMENTOS DEL INDICADOR LED’S DE LA MATRIZ TERMINAL F. Las señales de interconexión entre la memoria y la PLD son las siguientes: 1.P.P. Los terminales de la PLD a los que está asignada su conexión son: TERMINAL F. SEG A SEG B SEG C SEG D SEG E SEG F SEG G PUNTO DECIMAL LED1 LED2 LED3 LED4 LED5 LED6 LED7 LED8 9 8 4 81 80 10 11 5 Los dos Led’s restantes son denominados como LED_1 y LED_2..MEMORIA RAM.6.G. La memoria RAM de la tarjeta es un circuito integrado con una capacidad de 32K x 8 bits que puede ser reemplazado por otro dispositivo de mayor capacidad con acuerdo al patillaje de la tarjeta de circuito impreso que dispone de 28 terminales en el zócalo dispuesto para tal efecto.El bus de direcciones: formado por quince líneas A0 ÷ A14. 9 . 70 73 LED´S LED_1 LED_2 1. Dicha sustitución del integrado de la memoria dará lugar a un nuevo replanteo de los terminales de entrada y de salida con respecto a los terminales de la FPGA.A.DISEÑO DE SISTEMAS DIGITALES SEÑAL DE MULTIPLEXACIÓN TERMINAL F.2.A..

. La interconexión entre estas señales y los terminales de la FPGA se indica en la siguiente tabla: TERMINAL DE LA MEMORIA A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 DATA0 DATA1 DATA2 DATA3 DATA4 DATA5 TERMINAL F..El bus de datos: formado por 8 líneas identificadas como DATA0 ÷ DATA7.G. 3. 51 49 45 54 56 58 61 64 63 60 44 57 67 65 69 52 50 48 34 36 35 10 . que son tres líneas identificadas como CS. Output Enable y Write Enable. que realizan el control de acceso a la memoria y la realización de lectura y escritura en la misma.DISEÑO DE SISTEMAS DIGITALES 2.P.A.Señales de control: Chip Select. OE y WE.

7. Los terminales libres de la PLD son 3. PATILLA DEL CONECTOR 11 .DISEÑO DE SISTEMAS DIGITALES DATA6 DATA7 CS OE WE 37 40 41 55 68 El diagrama de bloques interno de la memoria RAM es el siguiente: 1. la asignación entre etiquetas de las patillas del conector y los terminales de la EPLD se muestra en la siguiente figura. NOMBRE DEL TERMINAL TERMINAL F.G.CONECTOR DE ACCESO A TERMINALES DE USUARIO. y se identifican como CUS_1 a CUS_3. situado junto a la memoria.P.2. Numerando los pines del conector JP11 a partir del número 1 serigrafiado en la tarjeta.A. Los terminales de la EPLD que no están conectados a ninguno de los recursos anteriormente descritos y que no están dedicados a la programación del dispositivo.. son accesibles por medio de un conector.

La zona de wrapping permite añadir hardware adicional para aplicaciones en que los recursos de la placa sean insuficientes.9. la conexión se realizará por medio de los terminales de entrada/salida que no se hayan empleado en otras funciones o cometidos. En el caso de que no sean necesarios estos elementos de hardware adicionales para otra aplicación.2. pueden ser desalojados de la tarjeta y permitir la instalación de otros recursos que resulten necesarios en cada caso . o que se puedan utilizar como pines de usuario..2.. El hardware de esta zona puede conectarse con la EPLD por medio de los terminales de usuario que se encuentren libres de otras conexiones y si estos son insuficientes.8. Los terminales asignados a recursos de la tarjeta están unidos a los ocho conectores que rodean la EPLD. en el caso de que se desmonten recursos de la placa o se amplíen los mismos para aplicaciones personalizadas del prototipo de desarrollo.DISEÑO DE SISTEMAS DIGITALES CUS2_1 CUS2_2 CUS2_3 46 79 6 1 2 3 1. 1.ACCESO A LOS TERMINALES DE LA TARJETA. La asignación de los terminales de los recursos de la tarjeta a los conectores se detalla en la siguiente tabla: 12 .ZONA DE WRAPPING. con el fin de permitir su monitorización con un analizador lógico o un osciloscopio.

DEFINICIÓN DE UN PROYECTO. Más adelante encontraremos todos los pasos necesarios para poder realizarlo. pero a modo de 13 .DISEÑO DE SISTEMAS DIGITALES CONECTOR P1 NC 12 53 34 74 73 10 75 P2 15 14 51 36 GND 71 8 77 P3 17 16 49 NC 70 69 6 79 P4 NC 18 GND 40 68 67 4 81 P5 21 20 45 NC VCC 65 2 83 P6 23 22 NC 44 64 63 84 1 P7 25 24 41 46 62 61 NC VCC P8 27 VCC 39 48 60 NC 80 5 P9 29 28 37 50 58 57 NC GND P10 31 30 35 52 56 55 76 9 P11 33 GND NC NC 54 NC NC 11 JP1 JP2 JP3 JP4 JP5 JP6 JP7 JP8 2. El primer paso que se debe dar al comenzar cualquier diseño es definir el proyecto..

wdf). Ficheros de texto HDL: Pueden estar en lenguaje AHDL con extensión (. compatible con las librerías de ALTERA. Ficheros gráficos: Si son generados por la captura de esquemas de nuestro propio entorno de ALTERA. 5.DISEÑO DE SISTEMAS DIGITALES introducción. OrCAD Capture. . comentaremos algunos aspectos de la jerarquía de los proyectos en el entorno MAX+PLUS II.rpt) 14 .adf) 6. La extensión de estos ficheros es (.scf ó . éstos tendrán la extensión (gdf). Algunos de los más comunes que nos podemos encontrar son: Ficheros de programación del dispositivo PLD. Ficheros de formas de onda: Son generados por el editor de formas de ondas del programa y especifican el tipo de onda empleado en simulaciones. En el caso de que usemos . (. ó XNF (. (.vhd). A continuación se realiza una descripción de todos estos tipos de ficheros que podemos encontrarnos: 1.tdf) ó bien en VHDL (. que pueden ser clasificados básicamente de dos formas: Ficheros auxiliares ó Ficheros de diseño.xnf). (. etc.snf ) Informes de compilación. de texto o de formas de onda. Archivos de diseño de ALTERA. 3.sof .pof . Un proyecto está formado por una serie de ficheros. Algunos de ellos se generan automáticamente por la aplicación que estemos ejecutando y otros los crea el usuario al definir símbolos. 2.sch). (.edf). Ficheros NETLISTS: Éstos son formados al importar de otros entornos de trabajo distintos a MAX+PLUS II y pueden estar en los formatos: EDIF (. Archivos de máquinas de estado.smf) FICHEROS AUXILIARES: Son los asociados al proyecto en el que nos encontramos trabajando y los crea el programa de ALTERA. Contienen la información que más tarde será procesada por un compilador que preparará el NETLIST para ser volcado junto con otras informaciones sobre la tarjeta de prototipos. . FICHEROS DE DISEÑO: Puede ser de diversos tipos: Gráfico. situaciones especiales en el programa. entonces la extensión será (. (. 4.hex ) Ficheros de simulación. Cualquier otro formato de Netlist empleado no será reconocido por el software del compilador.

hasta llegar a la parte superior del árbol (TOP LEVEL) en donde se encuentra el principal archivo del diseño que sirve de punto de partida.1. formando un árbol: En la imagen mostrada anteriormente podemos ver como está compuesta la jerarquía de archivos de un determinado diseño del cual parten otros diseños complementarios con la información sobre los componentes y las simulaciones efectuadas en el transcurso del proyecto. (. Todo proyecto desarrollado en un capturador dispone de una jerarquía de archivos que son los componentes del proyecto. 3. Para seguir con mejor precisión este manual. Las diversas ramificaciones del árbol nos llevan a los archivos de menor nivel en la jerarquía. El punto de partida de estos va siendo otro archivo de mayor nivel.JERARQUÍA DE UN PROYECTO.sym) 2.DISEÑO DE SISTEMAS DIGITALES - Ficheros de configuración. Estos archivos se presentan de la siguiente manera...acf) Símbolos (. basados en el diseño de circuitos combinacionales y secuenciales a los que alimentaremos con el reloj de la tarjeta mediante unos divisores de frecuencia. 15 .EJEMPLO BÁSICO DE OPERACIÓN. emplearemos unos sencillos proyectos.

4.1. por tanto en la captura del ejemplo del contador y a partir de ahí se establecerá el proyecto de trabajo.sch) (. Compilar.1..sch) (. Corregir posibles fallos. las más corrientes son: OrCAD ALTERA EWB PROTEL (. 2. El primer paso consistirá. así como todos los diseños que se realicen.. Verificar las reglas de diseño. Para ello debemos crear o importar el archivo que va a ser el nivel superior de la jerarquía e identificar el directorio en el que se encuentra. 3. Existen varios procedimientos para realizar la captura de un esquema bajo diversas plataformas.CAPTURA DE ESQUEMAS. Verificación del funcionamiento.gdf) (. 3. se muestra a continuación: Crear el proyecto y capturar el esquema del ejemplo.sch) 16 . Primeramente se va a comentar los pasos a seguir para crear un nuevo proyecto.DISEÑO DE SISTEMAS DIGITALES El proceso que se va a seguir para estudiar los ejemplos.CREACIÓN DEL PROYECTO. 1.1. 3. 5. Programar la tarjeta de desarrollo con el ejemplo.

DISEÑO DE SISTEMAS DIGITALES Para cualquiera de ellos emplearemos la opción del menú “FILE” mediante la opción “OPEN” o la opción “PROJECT” dependiendo de la localización del archivo. Si el archivo que vamos a emplear está en otro proyecto. 17 . lo podemos seleccionar a través de la pantalla anterior. indicando el proyecto en el que se encuentra y seleccionando el visualizador de jerarquías. Posteriormente seleccionamos el elemento que queremos dentro del árbol de selección y realizamos “doble click” sobre él para que se abra el editor gráfico del programa. con el archivo especificado.

CAPTURA POR ORCAD. El único problema que puede surgir en estos casos es la compatibilidad entre librerías específicas de un determinado entorno que no sean compatibles con nuestro software de ALTERA.1. Esta primera opción es la más adecuada para aquellas personas que tengan experiencia en el manejo este tipo de software o estén familiarizados con el entorno OrCAD y sus funciones. 18 . Los archivos resultantes de dicha captura son los que tienen la extensión (*..sch). la ruta de acceso a dicho fichero y el nombre del mismo en la pantalla que se muestra a continuación: 3. emplearemos la opción de apertura de ficheros e indicaremos en la misma el formato de fichero que queremos abrir.1.DISEÑO DE SISTEMAS DIGITALES En caso de que se trate de un archivo que no se encuentre en nuestro proyecto de trabajo. En cualquiera de estos casos. habrá que consultar al profesor para buscar la mejor solución. Los archivos que proceden de OrCAD tienen la extensión “sch” por lo que será necesario indicarlo en la selección: “Graphic Editor files” del menú “ OPEN ”.1.

Esta pantalla es la siguiente: A partir de ahí.DISEÑO DE SISTEMAS DIGITALES 3. seleccionamos la opción “NEW” y nos encontraremos con una pantalla en la que marcamos las opciones indicadas. dibujaremos el esquema del contador.ASIGNACIÓN DEL PATILLAJE DE LA FPGA.1. La asignación de cada una de las salidas de la FPGA a dichos periféricos se debe realizar en el esquema principal de la siguiente manera: 1. 19 . según se indicó en apartados anteriores y siguiendo el modelo que podemos encontrar en el anexo a este documento.1. Esto lo haremos mediante las librerías de componentes y accesorios que tiene el programa.1. Identificar en las tablas del apartado 1.4. en el menú archivo.. Para crear un esquema nuevo seguiremos los siguientes pasos.1. la FPGA que estamos empleando se encuentra dentro de una tarjeta de circuito impreso junto con otros componentes accesorios. En primer lugar. La otra posibilidad para manejar un esquema es crearlo nosotros mismos dentro del propio capturador que el programa de ALTERA nos proporciona..2 los terminales que vamos a necesitar en nuestra simulación.CAPTURA DE ESQUEMAS EN EL ENTORNO ALTERA. Como se indicó en el apartado de la tarjeta de desarrollo. 3.2.

20 ..” Y la pantalla que nos encontraremos será la siguiente: En esta pantalla asociamos una conexión o referencia del esquema a un terminal de la FPGA. la referencia del esquema será conectada internamente con el terminal elegido del integrado. Mediante el botón derecho del ratón. se tiene que seleccionar la opción “ASSIGN”. “PIN/LOCATION/CHIP. de forma que cuando se programe el circuito.DISEÑO DE SISTEMAS DIGITALES 2..

seleccionamos la opción “PROJECT”. seleccionamos “SAVE&CHECK” entre las opciones.Una vez allí. . al realizarse una orden conjunta de verificación y salvado del diseño con el que estemos trabajando. Puesto que trabajamos con software o herramientas de diseño.. y comenzará a ejecutarse el verificador que al finalizar se quedará con la siguiente pantalla: Que mostrará también los errores y advertencias que hayan podido surgir en el proceso de verificación. cortocircuitos de la alimentación. se han definido una serie de reglas de diseño mediante las cuales evitamos que el ensamblador del programa cometa error al realizar los pasos finales (por ejemplo. cumplir estas reglas es indispensable para realizar un diseño seguro. Las órdenes para hacerlo son: .VERIFICAR LAS REGLAS DE DISEÑO. evitando así muchos de los fallos más comunes como dejar componentes sin conectar. y otros. La operación que tenemos que realizar para comprobar el circuito implica que lo guardemos. si el compilador tiene un bucle). Lo ideal es que aparezca de la siguiente manera: 21 .2.En el menú “FILE”.DISEÑO DE SISTEMAS DIGITALES 3. Además.

el programa dispone de una ventana de avisos sobre errores o advertencias en la cual nos indica cuál han sido estos y en que lugar del esquema se encuentran. tras pulsar la aceptación en la ventana final que vimos antes. Para acceder a ellas. aparece otra ventana junto a la del compilador donde se procesan los mensajes de error. Una vez localizado el error por el alumno. Con respecto a las advertencias (Warnings). Pero.DISEÑO DE SISTEMAS DIGITALES Pero puede que al principio surjan errores que se puedan arreglar sin ninguna dificultad para el alumno. se procede a su corrección y se vuelve a iniciar este apartado para verificar que todo está correcto. Con ello se activa una búsqueda automática en el esquema en donde nos localizará el error. Seleccionamos uno de ellos con el cursor del ratón y se pulsa sobre el botón “Locate” de esa ventana. ¿Cómo solucionar los errores que tenga el diseño? Para esta operación. 22 . pero es conveniente que sean revisadas por el alumno antes de continuar con el proceso siguiente. son cosas que no influyen directamente en el correcto funcionamiento del diseño.

mediante las instrucciones: FILE. quedaría reflejado en la pantalla anterior y se podría seguir un proceso análogo en la verificación de los errores mediante la pantalla de avisos: 23 . Para ello empleamos el compilador.COMPILAR.DISEÑO DE SISTEMAS DIGITALES 3.3. Como en el verificador de diseño. COMPLETAR Y ENSAMBLAR. al concluir el proceso aparecerá una ventana que nos indica los errores cometidos y las advertencias. se han creado varios archivos asociados a la compilación. PROJECT. completado ó rellenado y ensamblaje del proyecto en curso. Al igual que en la verificación de las reglas de diseño. si se produce algún error en el proceso de compilado. en un archivo que el ordenador sea capaz de reconocer. Estos archivos aparecerán posteriormente en el visualizador de jerarquías como auxiliares que nos indican que el proyecto fue compilado con el programa. SAVE&COMPILE. simular y analizar.. Automáticamente se guardará el archivo del proyecto y comenzará a ejecutarse el compilador en una ventana como la siguiente: Como podemos observar en la figura. El siguiente paso que tenemos que dar es convertir el esquema del editor gráfico que acabamos de comprobar.

accediendo a ella mediante el botón: “HELP ON MESSAGE” situado en la parte inferior derecha de la pantalla anterior.DISEÑO DE SISTEMAS DIGITALES Se corrigen los errores que se hayan podido cometer en el proceso y se vuelve a realizar la compilación del proyecto según se mostró al comienzo de este apartado. 24 . Si alguno de los errores mostrados anteriormente persiste una vez realizada la verificación y corrección por el alumno. será conveniente que éste repase paso por paso con el profesor el proceso seguido en busca del posible fallo. ó que emplee la ayuda disponible en el programa.

DISEÑO DE SISTEMAS DIGITALES EJEMPLO 1: Circuito Lógico 1. 25 . Decodificador Hexadecimal a 7 segmentos. El circuito corresponde a un decodificador de 4 bits en hexadecimal a un visualizador de 7 segmentos que corresponden a la figura siguiente según los 4 bits de entrada. Realice el esquema lógico de la siguiente página en el editor gráfico de ALTERA.

DISEÑO DE SISTEMAS DIGITALES 26 .

Para editar las propiedades de alguno de estos componentes. Estos componentes reciben el nombre de “output” e “input” y se pueden obtener de la misma forma que las puertas lógicas que ya tenemos en nuestro esquema. Aparecerá la siguiente pantalla de selección de componentes en la que existen varias librerías: Se realiza la selección del componente “and2” que corresponde. y en especial los nombres de los terminales de entrada y salida. como su nombre indica. Automáticamente el componente seleccionado es recuadrado en rojo. o bien pulsar con el botón derecho del ratón y acceder a otras propiedades: 27 . Con este mismo procedimiento se van ubicando todas y cada una de las puertas lógicas del circuito mostrado en el enunciado y una vez emplazadas se procede a la inserción de los terminales de entrada y de salida. tal y como se muestra en la figura: Entonces se puede seleccionar el texto y editarlo.DISEÑO DE SISTEMAS DIGITALES En primer lugar inserte los componentes haciendo doble click con el cursor del ratón en la ventana de dibujo. colocamos el ratón sobre el ítem a modificar y hacemos click sobre él. a una puerta and de dos entradas.

Como ya se explicó en los primeros apartados relacionados con la tarjeta de desarrollo de prototipos. los datos del ordenador son “volcados” a la tarjeta a través del puerto paralelo del ordenador y un medio de transmisión físico con el dispositivo que es el cable de conexión.PROGRAMAR LA TARJETA DE DESARROLLO CON EL EJEMPLO. 3.. según se muestra en la siguiente figura: 28 .DISEÑO DE SISTEMAS DIGITALES Para trazar el cableado entre los diferentes componentes. A continuación. Repita esta operación hasta completar el esquema propuesto.gdf ” y a continuación realice una comprobación y la correspondiente simulación hasta que no existan errores en el circuito. siga los pasos descritos anteriormente en este tutorial para salvar el diseño con el nombre: “hex7seg. sitúe el cursor sobre uno de los extremos del terminal origen y deslice éste sobre el tablero de dibujo hasta conseguir la forma del cable que se adapte a las necesidades del circuito.4. Nos encontramos en la parte final del proceso en donde ejecutamos una parte del programa en la cual se produce la programación en la FPGA del diseño realizado por el alumno.

de entre las posibles alternativas posibles. mediante la pantalla siguiente: 29 . se va a emplear. Esta operación se realizará en el menú “ASSIGN” en la opción “DEVICE”. Es conveniente realizar esta operación antes de asignar las patillas en el circuito esquemático y de compilar el diseño.DISEÑO DE SISTEMAS DIGITALES La asignación de los contactos de dicho conector se muestra en la siguiente tabla: En la parte que concierne al software. Primeramente se tiene que especificar al programa qué tipo de tarjeta. el programador de ALTERA realiza la función de transferir el diseño efectuado a la tarjeta.

Para ello. Una vez realizada la selección. se activará automáticamente una pantalla en donde se procederá a la programación de nuestro diseño en la memoria interna de la tarjeta para que podamos simular el circuito. aceptamos los valores fijados y el sistema queda listo para realizar la simulación con la tarjeta del laboratorio. Como en ocasiones anteriores. en el caso de trabajar con dispositivos diferentes al del Laboratorio. La pantalla del programador tiene este aspecto: Si todo ha transcurrido con normalidad.DISEÑO DE SISTEMAS DIGITALES La Familia de FPGA ó EPLD seleccionada es la MAX7000S. en ella se crearán los últimos archivos auxiliares en donde se guarda la información necesaria para ejecutar la aplicación en la tarjeta. Este elemento puede ser detectado de forma automática por el software en el caso de no conocer exactamente el modelo que estamos empleando. y el dispositivo que tiene la tarjeta de desarrollo del laboratorio es la EPM7128SLC84-7 (-15). Desde aquí también podemos seleccionar el dispositivo de hardware que vayamos a emplear y verificar si éste está correctamente conectado a nuestro PC y se encuentra alimentado. 30 . y continuando con el ejemplo propuesto. Para comenzar el proceso seleccionamos el botón “PROGRAM”. vamos a activar la opción del programador. En caso contrario aparecerá el siguiente mensaje de error y tendremos que comprobar la alimentación y las conexiones del aparato.

Para acceder a ella. se definen físicamente las conexiones entre los terminales del integrado y el dispositivo lógico que ha sido programado. el programa nos dará información acerca de ese contacto. hacemos “Doble click” sobre la cabecera del integrado del cual queramos saber sus parámetros y encontraremos la siguiente pantalla: 31 .DISEÑO DE SISTEMAS DIGITALES En este proceso. que es una herramienta de visualización con una pantalla como la que se muestra a continuación: Situando el cursor del ratón sobre la cabecera de los bloques representados en la figura. Además disponemos de un estudio estadístico de la congestión y el nivel de aprovechamiento que tenemos de los recursos del sistema. su procedencia y la patilla de la FPGA a la que corresponde la conexión (si es entrada ó salida) ó el integrado al que pertenecen de los empleados en el diseño. Para visualizar cómo ha quedado distribuidas estas conexiones empleamos el “FLOORPLAN EDITOR”.

sin duda.VERIFICACIÓN DEL FUNCIONAMIENTO. teniendo en cuenta que el integrado que empleamos es uno de los “Hermanos menores” de la familia de EPLD que hay en el mercado.DISEÑO DE SISTEMAS DIGITALES Con este proceso se puede analizar cualquier nodo del circuito y plantear posibles alternativas para mejorar los recursos de que se dispone. Las tarjetas están dotadas de una protección contra sobretensiones. 3. pero no es recomendable superar el valor antes mencionado al aplicar tensión en las bornas de alimentación. Esta información no será relevante en el ejemplo propuesto en este manual pero. Ya hemos realizado todos los pasos para convertir un proyecto “sobre el papel” en un modelo ejecutable por el alumno en una tarjeta de circuito impreso diseñada para tal efecto. 32 . puede ser muy útil cuando el diseño que se desee realizar tenga mayores perspectivas y se encuentre próximo a superar las capacidades de la FPGA.6. Hay que tener muy en cuenta que la alimentación de dicha tarjeta ha de ser de +5V y que no se debe superar ésta o se provocará una avería.. Ahora lo que resta es que éste compruebe que las condiciones de funcionamiento que había especificado en su diseño se ajusten a las que está observando en la tarjeta.

La complejidad de la simulación depende proporcionalmente del circuito que tratemos de verificar.1. 4. En la barra de menú principal encontramos un menú desplegable con el nombre de “PROCESSING”. En cualquier caso.DISEÑO DE SISTEMAS DIGITALES También hay que vigilar que la conexión de la tarjeta con el ordenador esté correcta y asegurada. ya que se trata de un paso muy importante en la simulación lógica que resulta ser la base de la comprobación del circuito. muy extendidos en la Industria. tal y como se muestra en la figura: 33 .SIMULACIÓN LÓGICA CON HERRAMIENTAS DE ALTERA. Como ejemplo de la simulación lógica con MAX+PLUS II emplearemos el diseño del decodificador BCD a 7 segmentos que realizamos unos capítulos atrás. ya que a mayor nivel de circuito. ya que si se desprende el conector puede dar lugar a un mal funcionamiento del proceso de “volcado de datos” que es realizado al programar la tarjeta. La creación de estas señales de entrada ó vectores de test debe ser realizada con toda precaución. como por ejemplo VHDL o VERILOG. Los primeros pasos a dar para realizar la simulación lógica pasan por la creación de un modelo de simulación a partir de los ficheros que se han empleado para hacer el diseño y lo enfocaremos a un tipo de simulación funcional o con retardos. 4.SIMULACIÓN LOGICA. para todas la aplicaciones que se verán en este curso. Ahora decidiremos el tipo de simulación que se va a realizar.. activamos la opción “FUNCIONAL SNF EXTRACTOR” . ya sea funcional o simulación con retardos de propagación en los componentes lógicos empleados en la sintaxis del diseño. Al abrirlo encontramos las posibles opciones de compilación. Para una simulación funcional . Esta operación puede ser efectuada mediante dos métodos: uno gráfico y otro mediante un lenguaje de texto. más dificultad a resolver por la máquina. la simulación lógica no tomará más de unos minutos de trabajo por parte del software de aplicación. Definiremos también una serie de “Vectores de test” que son un conjunto de estímulos o señales que aplicamos a los elementos de entrada de nuestro circuito para verificar su funcionamiento bajo una serie de características definidas en los mismos.. Primero abriremos el archivo que lo contiene y posteriormente activaremos el compilador.

DISEÑO DE SISTEMAS DIGITALES Y el compilador queda con la siguiente apariencia: 4. Para crear un fichero gráfico que contenga los estímulos de entrada salida. en el directorio en curso. 34 .2. con el diseño a comprobar. Los ficheros gráficos de simulación son los más fáciles de estudiar ya que estamos más acostumbrados a este tipo de señales (ORCAD) que las generadas por un archivo de texto..FICHEROS GRÁFICOS PARA SIMULACIÓN. establecemos el proyecto de trabajo. Vamos a partir de un proyecto que ya haya sido compilado con éxito para proceder posteriormente a la creación de un fichero de estímulos y asociar estos a las correspondientes entradas o salidas de nuestro diseño.

en el menú principal activamos la opción “NODE” . Para ello . “ENTER NODES FROM SNF” y aparecerá la siguiente pantalla: 35 . “NEW” y una vez allí la opción de “WAVEFORM EDITOR FILE”. tal y como se muestra en la figura: Al aceptar esta opción nos encontraremos con una pantalla como esta: El siguiente paso será definir en qué terminales vamos a introducir señales de simulación.DISEÑO DE SISTEMAS DIGITALES A continuación seleccionamos en el menú principal la opción “FILE”.

DISEÑO DE SISTEMAS DIGITALES Arriba a la derecha pulsamos el botón “LIST” y nos aparecerán todos los terminales que hayan sido declarados en el diseño del circuito (GDF). En la siguiente figura vemos el ejemplo del decodificador BCD a 7 segmentos que diseñamos anteriormente mediante circuitos combinacionales y que posteriormente se integró en un bloque. Podemos observar que el programa nos muestra directamente la señales de entrada y de salida claramente identificadas para que nosotros a continuación sólo tengamos que asignar una de ellas a cada canal de simulación: 36 .

emplazando las señales por cada canal de simulación como si se tratase de un osciloscopio digital en el que se introducen las entradas procedentes de un emulador digital. el nodo d(I) de la lista que nos ofrecen y pulsamos el botón “ => ” del centro de la pantalla para confirmar su selección. Repetimos estos pasos para todas las entradas del decodificador. A continuación éste nodo se activará en la lista de nodos seleccionados. por ejemplo. Existe también la posibilidad de emular los Bits o palabras (Bytes) del contenido que se situaría en una memoria del tipo RAM ó ROM de las que se incluyen en la librería. Tras realizar esta operación pulsamos el botón “OK” y los nodos estarán entonces representados en la pantalla principal en forma de ejes de abcisas en los que podremos componer las señales mediante el simulador gráfico. Seleccionamos. 37 . de forma que se podría simular la entrada o salida de datos a uno de estos elementos con las dos opciones situadas en la parte derecha del tipo de nodo.DISEÑO DE SISTEMAS DIGITALES Los nodos ó terminales que llevan consigo la letra (I) son de entrada y los que tienen la (O) son de salida. Estas referencias de diseño abarcan todos y cada uno de las entradas o salidas seleccionadas anteriormente. tal y como se muestra en la figura de la página siguiente.

38 . Para el ejemplo que estamos ilustrando en este manual de trabajo. seleccionamos el tiempo de 10µs y pulsamos el botón “OK”. Seleccionamos en el menú “FILE” la opción “END TIME” y nos aparecerá por defecto el tiempo de 1 microsegundo en la siguiente pantalla: Escribimos el valor del tiempo de ejecución del sistema en la simulación. dependiendo de cada diseño en particular.DEFINICIÓN DE ESTÍMULOS La primera operación a efectuar es delimitar el tiempo total de simulación.3..DISEÑO DE SISTEMAS DIGITALES 4.

los tiempos totales y las divisiones del mismo serán fijadas en cada caso. En este apartado vamos a realizar las simulación de señales cuadradas de factor de servicio del 50%. sino equilibrada con respecto al tiempo límite de simulación que especificamos anteriormente.3. Aparecerá entonces la siguiente pantalla en donde actualizaremos el valor que queramos para la rejilla: En principio podemos dejar este valor que aparece en la pantalla ya que no provocará que sea demasiado densa ni muy extendida. seleccionamos sobre el campo “VALUE” de la señal de entrada “d” del decodificador y a continuación pulsamos el icono situado en la barra de herramientas de la izquierda que tiene la siguiente forma física: Con ello se activará la pantalla siguiente : Estos son los valores que aparecen por defecto y que tienen que ver con los parámetros de la rejilla que definimos anteriormente. En el menú “OPTIONS” tenemos que tener activado el “SNAP TO GIRD” y especificaremos el ancho de rejilla mediante la opción “GIRD SIZE.1.DEFINICIÓN DE SEÑALES. 4.. Si queremos que la frecuencia varíe sólo tenemos que modificar el valor de multiplicación que está a mano derecha. Para otro tipo de simulación realizada por el alumno.. óptimas para el ejemplo del decodificador y punto de partida para que ele alumno pueda desarrollar el resto de señales que sean útiles para su propio modelo de simulación. 39 . Partiendo de la pantalla principal del simulador lógico.” de ese mismo menú. dependiendo de la aplicación a simular y a las condiciones de diseño y funcionamiento de la misma.DISEÑO DE SISTEMAS DIGITALES A continuación adaptamos la rejilla y los valores de ésta..

. y 8 respectivamente.. tal y como se indica en la figura: Realizamos este proceso multiplicando las señales de entrada por 2......DISEÑO DE SISTEMAS DIGITALES Con ello formaremos las señales de diferente periodo. .... 4. tal y como se indica en la siguiente tabla: NUMERO CODIFICACION REPRESENTADO BINARIA 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 . de forma que tengamos un código binario natural aplicado a las entradas del decodificador. 14 1110 15 1111 40 .

DISEÑO DE SISTEMAS DIGITALES La señal generada queda así: En el caso de que la señal a crear sea para un BUS. “OVERWRITE”. los pasos serán muy similares al de una señal sencilla. “COUNT VALUE. salvo que para asignar el valor a la misma... emplearemos el comando “EDIT”.”. Y la pantalla que aparecerá será la siguiente: 41 .

pero no van a ser objeto de estudio en este manual. Bien desde los iconos de la barra de herramientas superior o desde el menú desplegable de Max+plus II situado a la izquierda.PUESTA EN MARCHA DE LA SIMULACIÓN.4. De lo contrario no será capaz de encontrarlo al realizar la simulación y dará un mensaje de error.DISEÑO DE SISTEMAS DIGITALES Finalmente añadiremos los valores que vayamos a emplear y aceptaremos el cambio en las opciones. Para realizar esta operación correctamente. que corresponde a un fichero gráfico de estímulos o señales (Waveform editor file). En caso contrario aparecerá el siguiente mensaje de error: 42 . activamos en el menú principal la siguiente secuencia de operaciones: “FILE. SAVE AS” y después seleccionamos el mismo nombre que el fichero del proyecto y la extensión SNF de entre las opciones disponibles. En cualquiera de los dos casos aparecerá la siguiente pantalla: IMPORTANTE: La opción “USE DEVICE” no debe estar seleccionada para realizar la simulación . arriba. El siguiente paso será activar el simulador. hay que guardar éste con el mismo nombre que tenga el proyecto en curso . 4. Existen otros tipos de ficheros de estímulos basados en programas de texto muy similares a los descritos en el apartado VHDL. Tras definir el archivo que contiene las señales que serán simuladas posteriormente..

Una de ellas es que todo el proceso se haya desarrollado satisfactoriamente y aparezca la siguiente pantalla: La segunda posibilidad es que exista algún error en la simulación. Si acudimos a la ayuda existente en dicha ventana localizamos el error y lo solucionamos.DISEÑO DE SISTEMAS DIGITALES Una vez tenido en cuenta este importante detalle. Arranca en ese momento el compilador del sistema de simulación y al finalizar ésta podemos encontrar dos posibilidades. Una vez repasados los errores comprobamos el funcionamiento en la pantalla del simulador de señales: 43 . el siguiente paso a dar es iniciar la simulación pulsando el botón “ START ” de la pantalla del simulador. pero se indicarán en ella los errores o advertencias que se detectaron en el proceso de simulación. en cuyo caso aparecerá esta misma pantalla.

Esto se debe a que este lenguaje ha sido normalizado por la IEEE. Existen dos variantes de este lenguaje que son empleadas por el software de ALTERA y que van a ser descritas a continuación: • VHDL.. Continuando con el ejemplo que vimos en los capítulos anteriores o comenzando otro proyecto de diseño diferente. Las siglas HDL (Hardware Description Lenguages) nos definen un lenguaje de especificación de hardware que es empleado para el diseño.. Plantea una ventaja frente al VHDL. 44 ... los pasos que tenemos que dar para definir un fichero HDL en cualquiera de sus dos versiones (VHDL ó AHDL). que por su parte es muy versátil. de manera alternativa a lo visto en los capítulos anteriores..Este otro lenguaje es más particular del entorno EDA de ALTERA y sólo vale para éste.REALIZACIÓN PRÁCTICA DE CIRCUITOS MEDIANTE EL LENGUAJE HDL.Solucionar los posibles fallos encontrados y simular el diseño.. El único inconveniente que plantea es que no es compatible con ninguna otra plataforma de diseño que no sea ALTERA. 5º.Seleccionar un proyecto de trabajo en el que se desee crear el fichero. comprobación y simulación de forma homóloga a la captura o dibujo de esquemas de circuitos digitales.. 4º..Crear un fichero de diseño dentro de ese proyecto. 3º. son: 1º.. de forma que se realiza el proceso de diseño.DISEÑO DE SISTEMAS DIGITALES 5. El AHDL resulta más sencillo de aprender por el alumno y éste puede emplearlo como base para estudiar otros lenguajes de este tipo de mayor nivel de dificultad.LENGUAJES HDL. pero muy complicado de manejar y dominar.Comprobar el fichero de diseño que hemos creado. 5.Es un lenguaje empleado en los entornos EDA que tiene un propósito general y mantiene una alta compatibilidad con los diseños realizados sobre distintas plataformas ya que sus ficheros son identificados y aceptados por cualquier programa de diseño.Escribir el código de programa y la descripción del mismo. • AHDL.1. 2º.

hay que abrir un nuevo archivo de edición de texto para trabajar sobre él.DISEÑO DE SISTEMAS DIGITALES Siguiendo estos cinco sencillos pasos. 5.1. el alumno será capaz de crear un fichero en alguno de los lenguajes HDL y hacer una descripción de hardware en dicho código y comprobar su funcionamiento por distintos métodos. seleccionando las opciones que se han indicado en la siguiente imagen: Una vez aceptada la pantalla anterior.. nos encontramos con una ventana de edición de texto como la mostrada en la siguiente figura: 45 . entre ellos la simulación lógica. en la opción “NEW”. vista en el capítulo anterior y de una gran utilidad tanto para el estudiante como para los diseñadores profesionales.1. Se hará mediante el menú “FILE”. En primer lugar y siguiendo los pasos establecidos anteriormente.SELECCIÓN DEL PROYECTO DE TRABAJO Y CREACIÓN EL FICHERO HDL.

CREAR UN FICHERO DE DISEÑO.1. en el editor de texto que abrimos antes realizaremos el programa que definirá el decodificador en el lenguaje HDL. se correspondía con los archivos de AHDL. tenemos que guardar el fichero mediante el menú “FILE”. La pantalla empleada para esta función es la siguiente: 5. Durante todas las operaciones de esta creación del archivo. Como parte del ejercicio que estamos realizando. vhd Ya que el propio programa tendería a salvarlo por defecto con la extensión “ tdf ” que como vimos al principio de este documento.2.DISEÑO DE SISTEMAS DIGITALES Ahora para convertir este fichero de texto a otro de la forma VHD. y posteriormente. 46 . como se muestra a continuación: (Nombre del fichero ) . vamos a hacer el decodificador de BCD a 7 segmentos y lo incluiremos posteriormente en el diseño efectuado al principio. En primer lugar tenemos que realizar las descripciones que son posibles sintetizar en VHDL mediante el ejemplo descrito. “SAVE AS”. teniendo en cuenta que la extensión tiene que ser para un archivo de la forma VHDL. el alumno puede encontrar información complementaria en los archivos de ayuda de que dispone el programa de ALTERA en la carpeta de ayuda de VHDL que encontrará en el menú principal de Ayuda (HELP). Este fichero tendrá que conservar el nombre de la entidad de programación. en sustitución del integrado que fue empleado en capítulos anteriores y diseñado mediante un circuito combinacional.. si alguna de las terminologías empleadas o conceptos descritos no se ha desarrollado con la suficiente claridad.

Una vez que terminemos el diseño. [Tipo de dato] . dentro de este lenguaje. [Tipo de dato] . dependiendo del tamaño del array o bus que se asigna a dicho elemento de entrada /salida / bidireccional. en caso contrario no podrá compilar el archivo. etc..INTERFACE DEL DISPOSITIVO Y DECLARACIÓN DE ENTIDAD. dependiendo de su funcionalidad. el lenguaje VHDL nos permite clasificarlos de otras dos formas: BIT y BIT_VECTOR. [Tipo de dato] . • Para los nombres de los puertos definiremos etiquetas alfanuméricas que no coincidan con los elementos de sintaxis definidos por el programa para operaciones.1. ya que si éste puede ser de un solo bit o de 4.DISEÑO DE SISTEMAS DIGITALES 5.1. el nombre de los dispositivos con sus entradas y salidas. • Para el caso de que los datos a manejar sean señales. Este tratamiento específico nos permitirá asignar operadores aritmético-matemáticos. 47 . • El flujo de entrada o salida que tienen cada uno de los terminales que hemos asignado puede ser unidireccional (Entrada ó salida) o bidireccional. lógicos (binarios o en matriz) o de conversión a cada terminal. 8. La descripción de cada una de las funciones de los puertos será efectuada posteriormente. estos nombres serán asignados a cada uno de los terminales del circuito y podrán dar lugar a conflicto con el programador a la hora de “volcar” los datos a la tarjeta de la FPGA.2. • Los datos que van a recibir o enviar estos puertos deben ser definidos en tres grandes grupos: Variables. constantes y señales. Las normas principales que tenemos que observar a la hora de realizar nuestro diseño son: • El nombre asignado al campo ENTITY debe coincidir con el fichero empleado para la edición que hemos asignado en los pasos anteriores. A continuación se va a describir. puertos y declaración de entidades mediante la siguiente sintaxis: ENTITY PORT ( (Nombre del dispositivo) IS [Lista de puertos de entrada] [Lista de puertos de bidireccionales] [Lista de puertos de salida] [Lista de puertos de salida] END (Nombre de dispositivo) : IN : INOUT : OUT : BUFFER [Tipo de dato] .

Posteriormente. seleccione de la opción “Library Clause”. Para activarla seleccionamos en el menú “TEMPLATES” la opción que afecta al lenguaje de programación que estemos empleando.DISEÑO DE SISTEMAS DIGITALES Dentro de las ayudas que facilita el programa se encuentran una serie de plantillas de las estructuras más comúnmente empleados en la programación con VHDL. posteriormente acepte. pero seleccionando VHDL. lo que nos encontremos será la siguiente ventana. en donde encontraremos una plantilla para cada uno de los siguiente casos posibles: Por ejemplo. tal y como se puede ver en la figura. el volver a esa misma opción del menú principal. 48 . Repita los pasos anteriores para los casos: “Use clause” y “Entity declaration”.

DISEÑO DE SISTEMAS DIGITALES Al realizar esta operación aparecerá en el editor de texto el cuadro de opciones que estábamos describiendo en las páginas anteriores. tal y como se muestra en la siguiente figura: 49 . tal y como se muestra en las dos siguientes figuras: Completando la plantilla descrita con los datos de programación del decodificador. en donde podemos rellenar los datos que nos hagan falta sustituyendo las condiciones adecuadas para el ejemplo que se esta siguiendo.

Selected Signal Assignment -. 50 . para estos últimos se emplea un color negro. existe una plantilla que nos va a permitir facilitar la tarea de asignar la sintaxis adecuada al proceso de programación: ARCHITECTURE [nombre de arquitectura] OF [nombre de entidad] IS SIGNAL __signal_name : STD_LOGIC.Component Instantiation Statement -. y para los primeros el color azul que identifica automáticamente nombre. procederemos a definir las especificaciones de funcionamiento a través de una serie de “cuerpos de arquitectura ”. Para estas descripciones emplearemos los “PROCESOS” que utilizan los algoritmos o funciones que nos permiten determinar el valor de las salidas en función del valor que tomen las variables de entrada al circuito o las de control si es que se han especificado estas últimas.DISEÑO DE SISTEMAS DIGITALES Se emplearán las letras mayúsculas para los comandos de función y las minúsculas para los nombres de archivos y dispositivos auxiliares.Concurrent Procedure Call -. Una vez definido el comienzo del programa. BEGIN -.Process Statement -. Zona de descripción Zona de declaración El nombre que empleamos para la arquitectura hace referencia a la estructura o funcionamiento de la misma. Al igual que en el paso anterior. Además. Podemos encontrar varios de éstos dentro de un mismo componente ya que pueden existir pequeñas modificaciones en el funcionamiento o diferencias de comportamiento por distintos por tener diferentes arquitecturas para simulación y para síntesis.Generate Statement END [nombre de arquitectura]. SIGNAL __signal_name : STD_LOGIC.Conditional Signal Assignment -.Concurrent Signal Assignment -.

tal y como se detalla a continuación. Zona de declaración Ahora que ya se conoce la estructura sintáctica de alguno de los componentes básicos de un archivo VHDL.If Statement -. Para describir la funcionalidad del circuito combinacional que estamos empleando. En el archivo de texto que se había abierto con el nombre “decobcd7seg ” tras la declaración de entidad vista anteriormente se sitúa la cabecera de arquitectura.Variable Assignment Statement -. subprogramas y componentes que vayan a ser empleados posteriormente en la descripción que empieza después del comando “BEGIN” y donde escribiremos el código que describa el funcionamiento del circuito especificado. adecuada en cada caso.Loop Statement END PROCESS __process_label. completaremos los datos correspondientes al diseño del alumno de un decodificador BCD a 7 segmentos. que se encuentra debajo del nombre de la arquitectura. se emplea para realizar las declaraciones de la unidad. 51 . completándola como se indica en el ejemplo. __signal_name. especificando las señales. tipos de datos.Procedure Call Statement Zona de descripción -. elaboraremos el “PROCESO” que será sensible a todas las señales de entrada y salida y nos asignará a las salidas la combinación. __signal_name) VARIABLE __variable_name : STD_LOGIC. VARIABLE __variable_name : STD_LOGIC.Signal Assignment Statement -.DISEÑO DE SISTEMAS DIGITALES En la zona de declaración. BEGIN -.Case Statement -. de las señales de entrada al circuito. El proceso tiene esta estructura: __process_label: PROCESS (__signal_name.

WHEN “0001” => S <= “1101101”. WHEN “0101” => S <= “1011011”. WHEN “1001” => S <= “1110011”.c. WHEN “0011” => S <= “1111001”. CASE index IS WHEN “0000” => S <= “1111110”. Ahora se comprueba que ha sido introducido el código de programa satisfactoriamente mediante la comprobación del compilador. ARCHITECTURE funcional OF decobcd7seg IS BEGIN PROCESS (a. END CASE. conocida en varios lenguajes de programación. WHEN “0110” => S <= “1011111”.d) VARIABLE index : STD_LOGIC_VECTOR (3 DOWNTO 0). BEGIN index := d & c & b & a . empleando una sentencia adecuada como es “CASE”.b. WHEN “0010” => S <= “1111101”. WHEN “0100” => S <= “0110011”. WHEN “0111” => S <= “1100000”. 52 . WHEN “1000” => S <= “1111111”. END funcional. WHEN OTHERS => S <= “0000000”. Para ello se presiona las teclas CTRL + K y éste arrancará.DISEÑO DE SISTEMAS DIGITALES Se añade a continuación el proceso que tenga todas las señales de entrada y describa el algoritmo de funcionamiento o tabla de verdad del decodificador buscado. END PROCESS.

Y el símbolo que se ha creado es el mostrado en la figura: 53 . cerramos la ventana del compilador. En este momento el programa habrá creado un símbolo para este nuevo módulo.DISEÑO DE SISTEMAS DIGITALES Si se produce algún error en el proceso nos lo comunicará y lo solucionaremos. En caso de que se haya completado con éxito la compilación. Este lo podremos encontrar abriendo el fichero decobcd7seg.sym mediante el menú principal de archivos.

USE ieee. ENTITY decobcd7seg IS PORT( a.std_logic_1164. ARCHITECTURE funcional OF decobcd7seg IS BEGIN PROCESS (a. Modificamos y añadimos la siguiente secuencia de código al programa: LIBRARY ieee. Vamos a convertir el vector de salidas en elementos individuales.DISEÑO DE SISTEMAS DIGITALES Una vez que hemos visto el símbolo creado mediante el programa. CASE index IS WHEN "0000" => S := "1111110".ALL. WHEN "0001" => S := "1101101".d : IN STD_LOGIC. sa. VARIABLE S: STD_LOGIC_VECTOR (6 DOWNTO 0).d) VARIABLE index : STD_LOGIC_VECTOR (3 DOWNTO 0).sb.se. WHEN "0111" => S := "1100000".sc. 54 . END decobcd7seg. asignando cada uno de los segmentos de visualizador a uno de los terminales de salidas del decodificador creado.std_logic_arith.b. WHEN "0010" => S := "1111101". BEGIN index := d & c & b & a . WHEN "0101" => S := "1011011".ALL.sf. ). WHEN "0110" => S := "1011111".sd.b. WHEN "0100" => S := "0110011".c. comprobamos si las especificaciones iniciales que teníamos de dicho componente se asocian con la realidad que estamos visualizando.vhd”. ieee.c. En caso contrario. realizaremos las modificaciones del símbolo ó del módulo VHDL mediante la edición del archivo de texto “decobcd7seg. WHEN "0011" => S := "1111001".sg : OUT STD_LOGIC.

Para ello aparecerá la siguiente pantalla que debemos aceptar en caso de que sea correcta la actualización que vamos a emplear: Esta opción modifica el símbolo anterior y lo convierte al nuevo. Para solucionar este problema se activa la opción del menú “FILE”. se procede a actualizar los puertos. Y tras aceptar esta opción el programa genera el símbolo: Al abrir el archivo decobcd7seg. sa <= S(6). se <= S(2). abriendo el fichero que corresponde al símbolo creado. sc <= S(4). sd <= S(3). sb <= S(5). sf <= S(1). WHEN "1001" => S := "1110011". Al compilar el archivo de texto mediante la orden CTRL + K y verificar que no han existido errores.sym podemos ver que los cambios han sido efectuados. END CASE. tal y como se puede ver en la siguiente imagen: 55 . END PROCESS. WHEN OTHERS => S := "0000000". sg <= S(0). Al realizar esta operación nos damos cuenta de que no han sido actualizados los puertos del mismo y continúan siendo los del caso anterior. END funcional.DISEÑO DE SISTEMAS DIGITALES WHEN "1000" => S := "1111111". “CREATE DEFAULT SYMBOL” y en ella se confirma la actualización de dicho puerto.

para poder manejar una librería en el diseño en el que trabajemos. La primera condición que debemos cumplir para emplear las librerías VHDL es que éstas estén incluidas en el directorio del proyecto con el que estamos trabajando.. seleccionamos la opción “INTERFACES” de la barra de menú principal y posteriormente en el menú desplegable la opción “VHDL NETLIST READING SETTINGS... activamos el compilador.2.” con lo que aparecerá la siguiente ventana: 56 . 5.LIBRERIAS VHDL DE USUARIO. Una vez que se cumple esta primera condición.DISEÑO DE SISTEMAS DIGITALES Estos pasos deberán efectuarse tantas veces como sea necesario para que quede cambiado el símbolo con las distintas modificaciones que realicemos sobre él.

se inserta el módulo VHDL necesario y se emplean sus terminales de entrada/salida según los requerimientos de diseño. tal y como se definió en capítulos anteriores. Si hace falta alguna librería más.3. bien las existentes en el entorno MAX+PLUS II o las creadas por él mismo. para ello. con lo que la librería quedará añadida al proyecto actual y será posible acceder a ella en el transcurso del diseño. desde el directorio donde se encuentre asignado el proyecto en curso. 5. 57 . Estos módulos que han sido descritos en los apartados anteriores pueden insertarse en cualquier esquema que se realice. Posteriormente se guarda el esquema finalizado y se comprueba su funcionamiento mediante el compilador y el programador. el alumno podrá repetir estos pasos y añadir las librerías necesarias.INTEGRACIÓN DE MÓDULOS VHDL EN ESQUEMAS..DISEÑO DE SISTEMAS DIGITALES Escribimos en las casillas correspondientes al nombre de la librería y al directorio que la contiene y pulsamos el botón “ADD”.

Sign up to vote on this title
UsefulNot useful