Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tutorial Maxplus
Tutorial Maxplus
Sadot Alexandres F.
1.- INTRODUCCIN.
Los entornos EDA (Electronic Design Automation) son las herramientas de trabajo ms comnmente empleadas en el diseo e implantacin de circuitos lgicos. Permiten una gran versatilidad a la hora de simular cualquier posible situacin en el funcionamiento de los diseos efectuados por el profesional que emplea esta herramienta, adems son sencillos de manejar gracias a las interfaces grficas que incorporan las plataformas de diseo como: ALTERA, OrCAD, XILINX, que permiten la instrumentacin de dichos diseos y su implantacin en los PLDs 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 tcnicas de diseo con una formacin integral en todas ellas. Para ello, a lo largo de los diferentes captulos del tutorial y de las prcticas que en este libro se proponen, el alumno adquirir los conocimientos que le permitirn manejar los dispositivos fabricados por ALTERA , junto con el soporte de software Max+plus II como principal herramienta de diseo, verificacin y simulacin de prcticas y proyectos en el Laboratorio de Sistemas Digitales y posteriormente en su vida profesional. Para la implantacin de los diseos que se efectuarn durante el curso, dispondremos de un FPGA situado en una tarjeta de desarrollo que permitir una fcil simulacin de los circuitos y prcticas propuestos, mediante una serie de visualizadores, pulsadores, microinterruptores y otros elementos, tiles para realizar simulaciones fsicas en la tarjeta de desarrollo de los diseos realizados .
En la parte superior de la misma nos encontramos con los mens tpicos de las aplicaciones bajo Windows. Adems, por debajo est una lnea de iconos que nos dan acceso a las diferentes partes del programa. A continuacin detallaremos el significado de cada uno de estos iconos y la funcin que realizan:
Visualizador de jerarquas.
Compilador.
Analizador de tiempos.
Programador.
Si durante la ejecucin del programa surge alguna duda, en cualquier momento, situando el cursor del ratn sobre el icono correspondiente, aparece en la parte inferior de la pantalla una descripcin de su funcin.
1.2.1.- PLDS
La tarjeta dispone de cierta flexibilidad respecto al tipo de PLD que puede llevar instalada. En concreto, puede ser cualquiera de las siguientes: EPM7064S. EPM7096S. EPM7128S. EPM7160S.
La tarjeta requiere que el integrado de la PLD's tenga un encapsulado PLCC de 84 pines para poder ser colocados en el zcalo disponible en la tarjeta y funcione correctamente con el Software.
1.2.2.- OSCILADOR
El mdulo oscilador genera una seal de frecuencia de 18432 MHz, que puede ser usada como seal de reloj cuando sea preciso, dividindola si fuera necesario para alimentar de forma sncrona a dispositivos de distinta frecuencia que empleemos en nuestros desarrollos. El oscilador est conectado al pin 83 del PLD, que se corresponde con una de las entradas dedicadas del mismo. Las entradas dedicadas de las EPLD's de ALTERA tienen caractersticas especiales que las hacen apropiadas para su conexin a seales que precisen de un alto FAN-OUT y un bajo skew, tales como las de inicializacin (reset) o reloj.
1.2.3.- PULSADORES.
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). Los cuatro pulsadores se identifican como S1 a S4. Los tres ltimos ( S2, S3 y S4 ) se encuentran conectados a entradas dedicadas y S1 se encuentra conectado a un pin de entrada/salida. La interconexin 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.P.G.A. 39 2 1 84
1.2.4.- MICROINTERRUPTORES.
La tarjeta dispone de diecisis microinterruptores distribuidos en dos mdulos de ocho que se encuentran en la parte izquierda. La forma con que se han identificado para su empleo en los diseos es el siguiente: 1.- Todos los nombres comienzan por SW. 2.- A continuacin viene un 1 un 2 para identificar el mdulo al que pertenecen. 3.- Finalmente viene el nmero que ocupa dentro del mdulo de microinterruptores, precedido por el smbolo _ . Cada uno de los microinterruptores se encuentra conectado a un terminal de la PLD y pone un nivel bajo TTL (GND) en la posicin ON mostrada en la serigrafa de los mismos y un nivel alto (+5V) en la posicin opuesta. La interconexin de los microinterruptores y los terminal se muestra a continuacin:
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.P.G.A. 12 15 16 17 18 20 21 22 24 25 27 28 29 30 31 33
1.2.5.-DISPOSITIVOS LUMINOSOS.
La tarjeta dispone de tres indicadores luminosos de siete segmentos (con punto decimal) y de una matriz que tiene diez LEDs. Para polarizar tanto los segmentos de los indicadores como los LEDs hay que poner un nivel bajo 0 en el terminal al que estn conectados, ya que son de nodo comn.
Estos tres dispositivos estn multiplexados entre s junto con ocho de los LEDs de la matriz, por lo que se emplea cuatro terminales de la FPGA para generar las seales de control adecuadas para que se puedan emplear todos ellos de forma simultnea en los diseos que realice el alumno. Cada seal de multiplexacin habilita, con un nivel alto (+5V), el funcionamiento del indicador o del grupo de LEDs individuales de la matriz con el que est asociado. En adelante se har referencia a los indicadores de siete segmentos de acuerdo con la siguiente notacin:
DISPLAY1 identificado por la etiqueta U6. DISPLAY2 identificado por la etiqueta U7. DISPLAY3 identificado por la etiqueta U8.
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
Los ocho LEDs que estn multiplexados con los indicadores, de los diez que forman la matriz, son los que van del nmero 1 al 8, empezando por arriba. Los LED 9 y 10 situados en la parte inferior se encuentran asignados a terminales independientes de la F.P.G.A. y no requieren multiplexacin para su funcionamiento, es decir, se pueden asignar mediante un terminal de entrada/salida de forma directa. Las seales de multiplexacin se denominan MUX_0, MUX_1, MUX_2 y MUX_3. Estn asociadas a los displays y al grupo de Leds tal y como se muestra en la siguiente tabla:
SEAL DE MULTIPLEXACIN DISPOSITIVO ASOCIADO
Los terminales de la PLD conectados a las seales de multiplexacin empleadas en el control son los indicados en la siguiente tabla:
8
SEAL DE MULTIPLEXACIN
TERMINAL F.P.G.A. 77 76 75 74
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 Leds multiplexados de la matriz son los que aparecen en la siguiente tabla:
SEGMENTOS DEL INDICADOR LEDS DE LA MATRIZ TERMINAL F.P.G.A.
9 8 4 81 80 10 11 5
Los dos Leds restantes son denominados como LED_1 y LED_2. Los terminales de la PLD a los que est asignada su conexin son:
TERMINAL F.P.G.A. 70 73
Las seales de interconexin entre la memoria y la PLD son las siguientes: 1.- El bus de direcciones: formado por quince lneas A0 A14.
2.- El bus de datos : formado por 8 lneas identificadas como DATA0 DATA7 . 3.- Seales de control: Chip Select, Output Enable y Write Enable, que son tres lneas identificadas como CS, OE y WE, que realizan el control de acceso a la memoria y la realizacin de lectura y escritura en la misma.
La interconexin entre estas seales 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.P.G.A.
51 49 45 54 56 58 61 64 63 60 44 57 67 65 69 52 50 48 34 36 35
10
DATA6 DATA7 CS OE WE
37 40 41 55 68
TERMINAL F.P.G.A.
46 79 6
1 2 3
La zona de wrapping permite aadir hardware adicional para aplicaciones en que los recursos de la placa sean insuficientes. 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, la conexin 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 aplicacin, pueden ser desalojados de la tarjeta y permitir la instalacin de otros recursos que resulten necesarios en cada caso .
La asignacin de los terminales de los recursos de la tarjeta a los conectores se detalla en la siguiente tabla:
12
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
13
introduccin, comentaremos algunos aspectos de la jerarqua de los proyectos en el entorno MAX+PLUS II. Un proyecto est formado por una serie de ficheros, que pueden ser clasificados bsicamente de dos formas: Ficheros auxiliares Ficheros de diseo. FICHEROS DE DISEO: Puede ser de diversos tipos: Grfico, de texto o de formas de onda. Contienen la informacin que ms tarde ser procesada por un compilador que preparar el NETLIST para ser volcado junto con otras informaciones sobre la tarjeta de prototipos. A continuacin se realiza una descripcin de todos estos tipos de ficheros que podemos encontrarnos: 1. Ficheros de texto HDL: Pueden estar en lenguaje AHDL con extensin (.tdf) bien en VHDL (.vhd). 2. Ficheros grficos: Si son generados por la captura de esquemas de nuestro propio entorno de ALTERA, stos tendrn la extensin ( .gdf). En el caso de que usemos OrCAD Capture, compatible con las libreras de ALTERA, entonces la extensin ser (.sch). 3. Ficheros NETLISTS: stos son formados al importar de otros entornos de trabajo distintos a MAX+PLUS II y pueden estar en los formatos: EDIF (.edf), XNF (.xnf). Cualquier otro formato de Netlist empleado no ser reconocido por el software del compilador. 4. 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. La extensin de estos ficheros es (.wdf). 5. Archivos de diseo de ALTERA. (.adf) 6. Archivos de mquinas de estado. (.smf)
FICHEROS AUXILIARES: Son los asociados al proyecto en el que nos encontramos trabajando y los crea el programa de ALTERA. Algunos de ellos se generan automticamente por la aplicacin que estemos ejecutando y otros los crea el usuario al definir smbolos, situaciones especiales en el programa, etc. Algunos de los ms comunes que nos podemos encontrar son: Ficheros de programacin del dispositivo PLD. (.sof , .pof , .hex ) Ficheros de simulacin. (.scf .snf ) Informes de compilacin. (.rpt)
14
En la imagen mostrada anteriormente podemos ver como est compuesta la jerarqua de archivos de un determinado diseo del cual parten otros diseos complementarios con la informacin sobre los componentes y las simulaciones efectuadas en el transcurso del proyecto. Las diversas ramificaciones del rbol nos llevan a los archivos de menor nivel en la jerarqua. El punto de partida de estos va siendo otro archivo de mayor nivel, hasta llegar a la parte superior del rbol (TOP LEVEL) en donde se encuentra el principal archivo del diseo que sirve de punto de partida.
El proceso que se va a seguir para estudiar los ejemplos, as como todos los diseos que se realicen, se muestra a continuacin: Crear el proyecto y capturar el esquema del ejemplo. 1. Verificar las reglas de diseo. 2. Compilar. 3. Corregir posibles fallos. 4. Programar la tarjeta de desarrollo con el ejemplo. 5. Verificacin del funcionamiento.
16
Para cualquiera de ellos emplearemos la opcin del men FILE mediante la opcin OPEN o la opcin PROJECT dependiendo de la localizacin del archivo.
Si el archivo que vamos a emplear est en otro proyecto, lo podemos seleccionar a travs de la pantalla anterior, indicando el proyecto en el que se encuentra y seleccionando el visualizador de jerarquas. Posteriormente seleccionamos el elemento que queremos dentro del rbol de seleccin y realizamos doble click sobre l para que se abra el editor grfico del programa, con el archivo especificado.
17
En caso de que se trate de un archivo que no se encuentre en nuestro proyecto de trabajo, emplearemos la opcin de apertura de ficheros e indicaremos en la misma el formato de fichero que queremos abrir, la ruta de acceso a dicho fichero y el nombre del mismo en la pantalla que se muestra a continuacin:
18
A partir de ah, dibujaremos el esquema del contador, segn se indic en apartados anteriores y siguiendo el modelo que podemos encontrar en el anexo a este documento.
19
2. Mediante el botn derecho del ratn, se tiene que seleccionar la opcin ASSIGN, PIN/LOCATION/CHIP...
En esta pantalla asociamos una conexin o referencia del esquema a un terminal de la FPGA, de forma que cuando se programe el circuito, la referencia del esquema ser conectada internamente con el terminal elegido del integrado.
20
Que mostrar tambin los errores y advertencias que hayan podido surgir en el proceso de verificacin. Lo ideal es que aparezca de la siguiente manera:
21
Pero puede que al principio surjan errores que se puedan arreglar sin ninguna dificultad para el alumno. Con respecto a las advertencias (Warnings), son cosas que no influyen directamente en el correcto funcionamiento del diseo, pero es conveniente que sean revisadas por el alumno antes de continuar con el proceso siguiente. Pero, Cmo solucionar los errores que tenga el diseo? Para esta operacin, el programa dispone de una ventana de avisos sobre errores o advertencias en la cual nos indica cul han sido estos y en que lugar del esquema se encuentran. Para acceder a ellas, tras pulsar la aceptacin en la ventana final que vimos antes, aparece otra ventana junto a la del compilador donde se procesan los mensajes de error.
Seleccionamos uno de ellos con el cursor del ratn y se pulsa sobre el botn Locate de esa ventana. Con ello se activa una bsqueda automtica en el esquema en donde nos localizar el error. Una vez localizado el error por el alumno, se procede a su correccin y se vuelve a iniciar este apartado para verificar que todo est correcto.
22
Como podemos observar en la figura, se han creado varios archivos asociados a la compilacin, completado rellenado y ensamblaje del proyecto en curso. Estos archivos aparecern posteriormente en el visualizador de jerarquas como auxiliares que nos indican que el proyecto fue compilado con el programa. Al igual que en la verificacin de las reglas de diseo, al concluir el proceso aparecer una ventana que nos indica los errores cometidos y las advertencias.
Como en el verificador de diseo, si se produce algn error en el proceso de compilado, quedara reflejado en la pantalla anterior y se podra seguir un proceso anlogo en la verificacin de los errores mediante la pantalla de avisos:
23
Se corrigen los errores que se hayan podido cometer en el proceso y se vuelve a realizar la compilacin del proyecto segn se mostr al comienzo de este apartado. Si alguno de los errores mostrados anteriormente persiste una vez realizada la verificacin y correccin 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, accediendo a ella mediante el botn: HELP ON MESSAGE situado en la parte inferior derecha de la pantalla anterior.
24
25
26
En primer lugar inserte los componentes haciendo doble click con el cursor del ratn en la ventana de dibujo. Aparecer la siguiente pantalla de seleccin de componentes en la que existen varias libreras:
Se realiza la seleccin del componente and2 que corresponde, como su nombre indica, a una puerta and de dos entradas. Con este mismo procedimiento se van ubicando todas y cada una de las puertas lgicas del circuito mostrado en el enunciado y una vez emplazadas se procede a la insercin de los terminales de entrada y de salida. Estos componentes reciben el nombre de output e input y se pueden obtener de la misma forma que las puertas lgicas que ya tenemos en nuestro esquema. Para editar las propiedades de alguno de estos componentes, y en especial los nombres de los terminales de entrada y salida, colocamos el ratn sobre el tem a modificar y hacemos click sobre l. Automticamente el componente seleccionado es recuadrado en rojo, tal y como se muestra en la figura: Entonces se puede seleccionar el texto y editarlo, o bien pulsar con el botn derecho del ratn y acceder a otras propiedades:
27
Para trazar el cableado entre los diferentes componentes, site 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. Repita esta operacin hasta completar el esquema propuesto. A continuacin, siga los pasos descritos anteriormente en este tutorial para salvar el diseo con el nombre: hex7seg.gdf y a continuacin realice una comprobacin y la correspondiente simulacin hasta que no existan errores en el circuito.
28
En la parte que concierne al software, el programador de ALTERA realiza la funcin de transferir el diseo efectuado a la tarjeta. Primeramente se tiene que especificar al programa qu tipo de tarjeta, de entre las posibles alternativas posibles, se va a emplear. Es conveniente realizar esta operacin antes de asignar las patillas en el circuito esquemtico y de compilar el diseo. Esta operacin se realizar en el men ASSIGN en la opcin DEVICE , mediante la pantalla siguiente:
29
La Familia de FPGA EPLD seleccionada es la MAX7000S, y el dispositivo que tiene la tarjeta de desarrollo del laboratorio es la EPM7128SLC84-7 (-15). Este elemento puede ser detectado de forma automtica por el software en el caso de no conocer exactamente el modelo que estamos empleando, en el caso de trabajar con dispositivos diferentes al del Laboratorio. Una vez realizada la seleccin, aceptamos los valores fijados y el sistema queda listo para realizar la simulacin con la tarjeta del laboratorio. Para ello, y continuando con el ejemplo propuesto, vamos a activar la opcin del programador. Como en ocasiones anteriores, se activar automticamente una pantalla en donde se proceder a la programacin de nuestro diseo en la memoria interna de la tarjeta para que podamos simular el circuito.
Para comenzar el proceso seleccionamos el botn PROGRAM . La pantalla del programador tiene este aspecto:
Si todo ha transcurrido con normalidad, en ella se crearn los ltimos archivos auxiliares en donde se guarda la informacin necesaria para ejecutar la aplicacin en la tarjeta. Desde aqu tambin podemos seleccionar el dispositivo de hardware que vayamos a emplear y verificar si ste est correctamente conectado a nuestro PC y se encuentra alimentado. En caso contrario aparecer el siguiente mensaje de error y tendremos que comprobar la alimentacin y las conexiones del aparato.
30
En este proceso, se definen fsicamente las conexiones entre los terminales del integrado y el dispositivo lgico que ha sido programado. Para visualizar cmo ha quedado distribuidas estas conexiones empleamos el FLOORPLAN EDITOR, que es una herramienta de visualizacin con una pantalla como la que se muestra a continuacin:
Situando el cursor del ratn sobre la cabecera de los bloques representados en la figura, el programa nos dar informacin acerca de ese contacto, su procedencia y la patilla de la FPGA a la que corresponde la conexin (si es entrada salida) el integrado al que pertenecen de los empleados en el diseo. Adems disponemos de un estudio estadstico de la congestin y el nivel de aprovechamiento que tenemos de los recursos del sistema. Para acceder a ella, hacemos Doble click sobre la cabecera del integrado del cual queramos saber sus parmetros y encontraremos la siguiente pantalla:
31
Con este proceso se puede analizar cualquier nodo del circuito y plantear posibles alternativas para mejorar los recursos de que se dispone. Esta informacin no ser relevante en el ejemplo propuesto en este manual pero, sin duda, puede ser muy til cuando el diseo que se desee realizar tenga mayores perspectivas y se encuentre prximo a superar las capacidades de la FPGA, teniendo en cuenta que el integrado que empleamos es uno de los Hermanos menores de la familia de EPLD que hay en el mercado.
32
Tambin hay que vigilar que la conexin de la tarjeta con el ordenador est correcta y asegurada, 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.
33
34
A continuacin seleccionamos en el men principal la opcin FILE, NEW y una vez all la opcin de WAVEFORM EDITOR FILE, tal y como se muestra en la figura:
Al aceptar esta opcin nos encontraremos con una pantalla como esta:
El siguiente paso ser definir en qu terminales vamos a introducir seales de simulacin. Para ello , en el men principal activamos la opcin NODE , ENTER NODES FROM SNF y aparecer la siguiente pantalla:
35
Arriba a la derecha pulsamos el botn LIST y nos aparecern todos los terminales que hayan sido declarados en el diseo del circuito (GDF). En la siguiente figura vemos el ejemplo del decodificador BCD a 7 segmentos que diseamos anteriormente mediante circuitos combinacionales y que posteriormente se integr en un bloque.
Podemos observar que el programa nos muestra directamente la seales de entrada y de salida claramente identificadas para que nosotros a continuacin slo tengamos que asignar una de ellas a cada canal de simulacin:
36
Los nodos terminales que llevan consigo la letra (I) son de entrada y los que tienen la (O) son de salida. Seleccionamos, por ejemplo, el nodo d(I) de la lista que nos ofrecen y pulsamos el botn => del centro de la pantalla para confirmar su seleccin. A continuacin ste nodo se activar en la lista de nodos seleccionados. Repetimos estos pasos para todas las entradas del decodificador. Tras realizar esta operacin pulsamos el botn OK y los nodos estarn entonces representados en la pantalla principal en forma de ejes de abcisas en los que podremos componer las seales mediante el simulador grfico, emplazando las seales por cada canal de simulacin como si se tratase de un osciloscopio digital en el que se introducen las entradas procedentes de un emulador digital. Estas referencias de diseo abarcan todos y cada uno de las entradas o salidas seleccionadas anteriormente, tal y como se muestra en la figura de la pgina siguiente. Existe tambin la posibilidad de emular los Bits o palabras (Bytes) del contenido que se situara en una memoria del tipo RAM ROM de las que se incluyen en la librera, de forma que se podra 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.
37
Escribimos el valor del tiempo de ejecucin del sistema en la simulacin, dependiendo de cada diseo en particular. Para el ejemplo que estamos ilustrando en este manual de trabajo, seleccionamos el tiempo de 10 s y pulsamos el botn OK.
38
A continuacin adaptamos la rejilla y los valores de sta. En el men OPTIONS tenemos que tener activado el SNAP TO GIRD y especificaremos el ancho de rejilla mediante la opcin GIRD SIZE... de ese mismo men. 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, sino equilibrada con respecto al tiempo lmite de simulacin que especificamos anteriormente. Para otro tipo de simulacin realizada por el alumno, los tiempos totales y las divisiones del mismo sern fijadas en cada caso, dependiendo de la aplicacin a simular y a las condiciones de diseo y funcionamiento de la misma.
Estos son los valores que aparecen por defecto y que tienen que ver con los parmetros de la rejilla que definimos anteriormente. Si queremos que la frecuencia vare slo tenemos que modificar el valor de multiplicacin que est a mano derecha.
39
Con ello formaremos las seales de diferente periodo, tal y como se indica en la figura:
Realizamos este proceso multiplicando las seales de entrada por 2, 4, y 8 respectivamente, de forma que tengamos un cdigo binario natural aplicado a las entradas del decodificador, 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 ...... ...... 14 1110 15 1111
40
En el caso de que la seal a crear sea para un BUS, los pasos sern muy similares al de una seal sencilla, salvo que para asignar el valor a la misma, emplearemos el comando EDIT, OVERWRITE, COUNT VALUE.... Y la pantalla que aparecer ser la siguiente:
41
Finalmente aadiremos los valores que vayamos a emplear y aceptaremos el cambio en las opciones. Existen otros tipos de ficheros de estmulos basados en programas de texto muy similares a los descritos en el apartado VHDL, pero no van a ser objeto de estudio en este manual.
IMPORTANTE: La opcin USE DEVICE no debe estar seleccionada para realizar la simulacin . En caso contrario aparecer el siguiente mensaje de error:
42
Una vez tenido en cuenta este importante detalle, el siguiente paso a dar es iniciar la simulacin pulsando el botn START de la pantalla del simulador. Arranca en ese momento el compilador del sistema de simulacin y al finalizar sta podemos encontrar dos posibilidades. Una de ellas es que todo el proceso se haya desarrollado satisfactoriamente y aparezca la siguiente pantalla:
La segunda posibilidad es que exista algn error en la simulacin, en cuyo caso aparecer esta misma pantalla, pero se indicarn en ella los errores o advertencias que se detectaron en el proceso de simulacin. Si acudimos a la ayuda existente en dicha ventana localizamos el error y lo solucionamos. Una vez repasados los errores comprobamos el funcionamiento en la pantalla del simulador de seales:
43
VHDL.- Es un lenguaje empleado en los entornos EDA que tiene un propsito general y
mantiene una alta compatibilidad con los diseos realizados sobre distintas plataformas ya que sus ficheros son identificados y aceptados por cualquier programa de diseo. Esto se debe a que este lenguaje ha sido normalizado por la IEEE.
AHDL.- Este otro lenguaje es ms particular del entorno EDA de ALTERA y slo vale
para ste. Plantea una ventaja frente al VHDL, que por su parte es muy verstil, pero muy complicado de manejar y dominar. El AHDL resulta ms sencillo de aprender por el alumno y ste puede emplearlo como base para estudiar otros lenguajes de este tipo de mayor nivel de dificultad. El nico inconveniente que plantea es que no es compatible con ninguna otra plataforma de diseo que no sea ALTERA.
44
Siguiendo estos cinco sencillos pasos, el alumno ser capaz de crear un fichero en alguno de los lenguajes HDL y hacer una descripcin de hardware en dicho cdigo y comprobar su funcionamiento por distintos mtodos, entre ellos la simulacin lgica, vista en el captulo anterior y de una gran utilidad tanto para el estudiante como para los diseadores profesionales.
Una vez aceptada la pantalla anterior, nos encontramos con una ventana de edicin de texto como la mostrada en la siguiente figura:
45
Ahora para convertir este fichero de texto a otro de la forma VHD, tenemos que guardar el fichero mediante el men FILE, SAVE AS, teniendo en cuenta que la extensin tiene que ser para un archivo de la forma VHDL, como se muestra a continuacin:
Ya que el propio programa tendera a salvarlo por defecto con la extensin tdf que como vimos al principio de este documento, se corresponda con los archivos de AHDL. La pantalla empleada para esta funcin es la siguiente:
46
ENTITY PORT (
[Lista de puertos de entrada] [Lista de puertos de bidireccionales ] [Lista de puertos de salida] [Lista de puertos de salida] END (Nombre de dispositivo)
Las normas principales que tenemos que observar a la hora de realizar nuestro diseo son: El nombre asignado al campo ENTITY debe coincidir con el fichero empleado para la edicin que hemos asignado en los pasos anteriores, en caso contrario no podr compilar el archivo. Para los nombres de los puertos definiremos etiquetas alfanumricas que no coincidan con los elementos de sintaxis definidos por el programa para operaciones. Una vez que terminemos el diseo, estos nombres sern asignados a cada uno de los terminales del circuito y podrn dar lugar a conflicto con el programador a la hora de volcar los datos a la tarjeta de la FPGA. El flujo de entrada o salida que tienen cada uno de los terminales que hemos asignado puede ser unidireccional (Entrada salida) o bidireccional. La descripcin de cada una de las funciones de los puertos ser efectuada posteriormente. Los datos que van a recibir o enviar estos puertos deben ser definidos en tres grandes grupos: Variables, constantes y seales. Este tratamiento especfico nos permitir asignar operadores aritmtico-matemticos, lgicos (binarios o en matriz) o de conversin a cada terminal, dependiendo de su funcionalidad. Para el caso de que los datos a manejar sean seales, el lenguaje VHDL nos permite clasificarlos de otras dos formas: BIT y BIT_VECTOR, dependiendo del tamao del array o bus que se asigna a dicho elemento de entrada /salida / bidireccional, ya que si ste puede ser de un solo bit o de 4, 8, etc.
47
Dentro de las ayudas que facilita el programa se encuentran una serie de plantillas de las estructuras ms comnmente empleados en la programacin con VHDL. Para activarla seleccionamos en el men TEMPLATES la opcin que afecta al lenguaje de programacin que estemos empleando, tal y como se puede ver en la figura, pero seleccionando VHDL.
Posteriormente, el volver a esa misma opcin del men principal, lo que nos encontremos ser la siguiente ventana, en donde encontraremos una plantilla para cada uno de los siguiente casos posibles:
Por ejemplo, seleccione de la opcin Library Clause, posteriormente acepte. Repita los pasos anteriores para los casos: Use clause y Entity declaration.
48
Al realizar esta operacin aparecer en el editor de texto el cuadro de opciones que estbamos describiendo en las pginas anteriores, en donde podemos rellenar los datos que nos hagan falta sustituyendo las condiciones adecuadas para el ejemplo que se esta siguiendo, tal y como se muestra en las dos siguientes figuras:
Completando la plantilla descrita con los datos de programacin del decodificador, tal y como se muestra en la siguiente figura:
49
Se emplearn las letras maysculas para los comandos de funcin y las minsculas para los nombres de archivos y dispositivos auxiliares. Adems, para estos ltimos se emplea un color negro, y para los primeros el color azul que identifica automticamente nombre. Una vez definido el comienzo del programa, procederemos a definir las especificaciones de funcionamiento a travs de una serie de cuerpos de arquitectura . Podemos encontrar varios de stos dentro de un mismo componente ya que pueden existir pequeas modificaciones en el funcionamiento o diferencias de comportamiento por distintos por tener diferentes arquitecturas para simulacin y para sntesis. Para estas descripciones emplearemos los PROCESOS que utilizan los algoritmos o funciones que nos permiten determinar el valor de las salidas en funcin del valor que tomen las variables de entrada al circuito o las de control si es que se han especificado estas ltimas. Al igual que en el paso anterior, existe una plantilla que nos va a permitir facilitar la tarea de asignar la sintaxis adecuada al proceso de programacin:
ARCHITECTURE [nombre de arquitectura] OF [nombre de entidad] IS SIGNAL __signal_name : STD_LOGIC; SIGNAL __signal_name : STD_LOGIC; BEGIN -- Process Statement -- Concurrent Procedure Call -- Concurrent Signal Assignment -- Conditional Signal Assignment -- Selected Signal Assignment -- Component Instantiation Statement -- Generate Statement END [nombre de arquitectura]; Zona de descripcin
Zona de declaracin
El nombre que empleamos para la arquitectura hace referencia a la estructura o funcionamiento de la misma.
50
En la zona de declaracin, que se encuentra debajo del nombre de la arquitectura, se emplea para realizar las declaraciones de la unidad, especificando las seales, tipos de datos, subprogramas y componentes que vayan a ser empleados posteriormente en la descripcin que empieza despus del comando BEGIN y donde escribiremos el cdigo que describa el funcionamiento del circuito especificado. Para describir la funcionalidad del circuito combinacional que estamos empleando, elaboraremos el PROCESO que ser sensible a todas las seales de entrada y salida y nos asignar a las salidas la combinacin, adecuada en cada caso, de las seales de entrada al circuito. El proceso tiene esta estructura:
__process_label: PROCESS (__signal_name, __signal_name, __signal_name) VARIABLE __variable_name : STD_LOGIC; VARIABLE __variable_name : STD_LOGIC; BEGIN -- Signal Assignment Statement -- Variable Assignment Statement -- Procedure Call Statement Zona de descripcin -- If Statement -- Case Statement -- Loop Statement END PROCESS __process_label;
Zona de declaracin
Ahora que ya se conoce la estructura sintctica de alguno de los componentes bsicos de un archivo VHDL, completaremos los datos correspondientes al diseo del alumno de un decodificador BCD a 7 segmentos, tal y como se detalla a continuacin. En el archivo de texto que se haba abierto con el nombre decobcd7seg tras la declaracin de entidad vista anteriormente se sita la cabecera de arquitectura, completndola como se indica en el ejemplo.
51
Se aade a continuacin el proceso que tenga todas las seales de entrada y describa el algoritmo de funcionamiento o tabla de verdad del decodificador buscado, empleando una sentencia adecuada como es CASE, conocida en varios lenguajes de programacin.
ARCHITECTURE funcional OF decobcd7seg IS BEGIN PROCESS (a,b,c,d) VARIABLE index : STD_LOGIC_VECTOR (3 DOWNTO 0); BEGIN index := d & c & b & a ; CASE index IS WHEN 0000 => S <= 1111110; WHEN 0001 => S <= 1101101; WHEN 0010 => S <= 1111101; WHEN 0011 => S <= 1111001; WHEN 0100 => S <= 0110011; WHEN 0101 => S <= 1011011; WHEN 0110 => S <= 1011111; WHEN 0111 => S <= 1100000; WHEN 1000 => S <= 1111111; WHEN 1001 => S <= 1110011; WHEN OTHERS => S <= 0000000; END CASE; END PROCESS;
END funcional;
Ahora se comprueba que ha sido introducido el cdigo de programa satisfactoriamente mediante la comprobacin del compilador. Para ello se presiona las teclas CTRL + K y ste arrancar.
52
Si se produce algn error en el proceso nos lo comunicar y lo solucionaremos. En caso de que se haya completado con xito la compilacin, cerramos la ventana del compilador. En este momento el programa habr creado un smbolo para este nuevo mdulo. Este lo podremos encontrar abriendo el fichero decobcd7seg.sym mediante el men principal de archivos.
53
Una vez que hemos visto el smbolo creado mediante el programa, comprobamos si las especificaciones iniciales que tenamos de dicho componente se asocian con la realidad que estamos visualizando. En caso contrario, realizaremos las modificaciones del smbolo del mdulo VHDL mediante la edicin del archivo de texto decobcd7seg.vhd. Vamos a convertir el vector de salidas en elementos individuales, asignando cada uno de los segmentos de visualizador a uno de los terminales de salidas del decodificador creado. Modificamos y aadimos la siguiente secuencia de cdigo al programa: LIBRARY ieee; USE ieee.std_logic_1164.ALL, ieee.std_logic_arith.ALL;
ENTITY decobcd7seg IS PORT( a,b,c,d : IN STD_LOGIC; sa,sb,sc,sd,se,sf,sg : OUT STD_LOGIC; ); END decobcd7seg;
ARCHITECTURE funcional OF decobcd7seg IS BEGIN PROCESS (a,b,c,d) VARIABLE index : STD_LOGIC_VECTOR (3 DOWNTO 0); VARIABLE S: STD_LOGIC_VECTOR (6 DOWNTO 0); BEGIN index := d & c & b & a ; CASE index IS WHEN "0000" => S := "1111110"; WHEN "0001" => S := "1101101"; WHEN "0010" => S := "1111101"; WHEN "0011" => S := "1111001"; WHEN "0100" => S := "0110011"; WHEN "0101" => S := "1011011"; WHEN "0110" => S := "1011111"; WHEN "0111" => S := "1100000";
54
WHEN "1000" => S := "1111111"; WHEN "1001" => S := "1110011"; WHEN OTHERS => S := "0000000"; END CASE; sa <= S(6); sb <= S(5); sc <= S(4); sd <= S(3); se <= S(2); sf <= S(1); sg <= S(0); END PROCESS; END funcional; Al compilar el archivo de texto mediante la orden CTRL + K y verificar que no han existido errores, se procede a actualizar los puertos, abriendo el fichero que corresponde al smbolo creado. Al realizar esta operacin nos damos cuenta de que no han sido actualizados los puertos del mismo y continan siendo los del caso anterior. Para solucionar este problema se activa la opcin del men FILE; CREATE DEFAULT SYMBOL y en ella se confirma la actualizacin de dicho puerto. Para ello aparecer la siguiente pantalla que debemos aceptar en caso de que sea correcta la actualizacin que vamos a emplear:
Esta opcin modifica el smbolo anterior y lo convierte al nuevo. Y tras aceptar esta opcin el programa genera el smbolo:
Al abrir el archivo decobcd7seg.sym podemos ver que los cambios han sido efectuados, tal y como se puede ver en la siguiente imagen:
55
Estos pasos debern efectuarse tantas veces como sea necesario para que quede cambiado el smbolo con las distintas modificaciones que realicemos sobre l.
56
Escribimos en las casillas correspondientes al nombre de la librera y al directorio que la contiene y pulsamos el botn ADD, con lo que la librera quedar aadida al proyecto actual y ser posible acceder a ella en el transcurso del diseo. Si hace falta alguna librera ms, el alumno podr repetir estos pasos y aadir las libreras necesarias, bien las existentes en el entorno MAX+PLUS II o las creadas por l mismo.
57