91

Manual Del Participante FPGA[1]

Embed Size (px)

DESCRIPTION

vhdl

Citation preview

  • Diseo bsico en FPGA con VHDL

    1Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    ContenidoPRESENTACIN ................................................................................................................................... 4OBJETIVO DEL CURSO ......................................................................................................................... 51 INTRODUCCIN........................................................................................................................... 6

    1.1 Dispositivos lgicos programables (PLD) ............................................................................ 61.1.1 Estructura interna de un PLD .......................................................................................... 81.2 Arreglo Lgico Genrico (GAL) .......................................................................................... 101.2.1 Programacin de un arreglo GAL .................................................................................. 111.3 Macroceldas lgicas de salida........................................................................................... 121.4 Dispositivos lgicos programables complejos (CPLD)....................................................... 121.4.1 Arreglos de compuertas programables en campo (FPGA)............................................ 131.5 Metodologa de diseo con FPGA's .................................................................................. 151.6 Configuracin y uso del software y hardware FPGA......................................................... 161.7 Breve historia del lenguaje VHDL...................................................................................... 16

    2 TARJETA DE DESARROLLO NEXYS 2........................................................................................... 182.1 Caractersticas generales .................................................................................................. 182.2 Verificacin de funcionamiento........................................................................................ 20

    3 ORGANIZACIN DE VHDL.......................................................................................................... 223.1 Unidades bsicas de diseo .............................................................................................. 223.2 Entidad .............................................................................................................................. 223.2.1 Puertos de entrada y salida........................................................................................... 233.2.2 Modos ........................................................................................................................... 243.2.3 Tipos de datos ............................................................................................................... 243.2.4 Declaracin de entidades.............................................................................................. 253.2.5 Identificadores .............................................................................................................. 263.2.6 Diseo de entidades mediante vectores....................................................................... 263.2.7 Declaracin de entidades mediante libreras y paquetes............................................. 283.3 Paquetes............................................................................................................................ 283.4 Arquitecturas .................................................................................................................... 293.4.1 Descripcin funcional.................................................................................................... 29

  • Diseo bsico en FPGA con VHDL

    2Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    3.4.2 Descripcin por flujo de datos ...................................................................................... 314 AMBIENTE DE TRABAJO XILINX ISE DESIGN SUITE 12.1 ............................................................ 33

    4.1 Arranque del programa..................................................................................................... 334.2 Creacin de proyecto ........................................................................................................ 354.3 Creacin de un archivo fuente HDL .................................................................................. 384.4 Implementacin en la tarjeta Nexys2 ............................................................................... 44

    Ejercicio 4.1.- Creacin de un proyecto .................................................................................... 465. DISEO LGICO COMBINACIONAL EN VHDL............................................................................ 46

    5.1. Programacin de estructuras bsicas mediante declaraciones concurrentes ................. 465.1.1. Declaraciones condicionales asignadas a una seal (when-else) ................................. 47

    Ejercicio 5.1.-Primer ejercicio con declaracin When-Else....................................................... 48Ejercicio 5.2.-Segundo ejercicio con declaracin When-Else.................................................... 48

    5.1.2. Operadores lgicos ....................................................................................................... 485.1.3. Declaraciones concurrentes asignadas a seales ......................................................... 48

    Ejercicio 5.3.- Circuito lgico con compuertas.......................................................................... 49Ejercicio 5.4.- Segundo circuito lgico con compuertas ........................................................... 49

    5.1.4. Seleccin de una seal (with-select-when)................................................................... 50Ejercicio 5.5. - Declaracin With-Select-When ......................................................................... 50Ejercicio 5.6.- Implementacin de tabla de verdad .................................................................. 50

    5.2. Programacin de estructuras bsicas mediante declaraciones secuenciales .................. 515.2.1 Declaracin if-then-else (si-entonces-si no)..................................................................... 51Ejercicio 5.7.- Comparador de 2 bits......................................................................................... 535.2.2 Operadores relacionales .................................................................................................. 53

    5.3. Buffers triestado ............................................................................................................... 53Ejercicio 5.8.- Buffer triestado .................................................................................................. 54

    5.4. Multiplexores .................................................................................................................... 545.5. Sumadores ........................................................................................................................ 56

    Ejercicio 5.9.- Medio Sumador.................................................................................................. 575.5.1. Diseo de un sumador completo.................................................................................. 57

    Ejercicio 5.10.- Sumador completo ........................................................................................... 595.6. Decodificador de BCD a display de siete segmentos ........................................................ 59

    Ejercicio 5.11.- Decodificador BCD a siete segmentos.............................................................. 61

  • Diseo bsico en FPGA con VHDL

    3Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    6 DISEO LGICO SECUENCIAL EN VHDL .................................................................................... 626.1 Sistema secuencial ............................................................................................................ 626.2 Flip-flops............................................................................................................................ 63

    6.2.1 Flip-Flop D ........................................................................................................................ 636.3 Atributo event................................................................................................................... 65

    Ejercicio 6.1.- Implementacin del Flip-Flop D ......................................................................... 656.4 Flip-Flop SR.............................................................................................................................. 65

    Ejercicio 6.2.- Implementacin del Flip-Flop SR........................................................................ 666.5 Registros............................................................................................................................ 67

    Ejercicio 6.3.- Registro paralelo de 8 bits.................................................................................. 676.6 Contadores........................................................................................................................ 67

    Ejercicio 6.4.- Contador binario de 4 bits.................................................................................. 697. VHDL ESTRUCTURAL.................................................................................................................. 70

    7.1. Creacin de un diseo estructural .................................................................................... 70Ejercicio 7.1 Diseo estructural ................................................................................................ 73

    7.2. Divisor de frecuencia......................................................................................................... 73Ejercicio 7.2 Implementacin de un divisor de frecuencia ....................................................... 74Ejercicio 7.3 Contador de 4 bits con divisor de frecuencia ....................................................... 74

    8. Simulacin de diseos................................................................................................................... 758.1 Creacin de un archivo de prueba .......................................................................................... 758.2 Arranque de la aplicacin ModelSim XE ................................................................................. 798.3 Revisin de la simulacin ........................................................................................................ 81

    Ejercicio 8.1 Simulacin de un Flip-Flop D ................................................................................ 82Ejercicio 8.2 Simulacin de un divisor de frecuencia................................................................ 82Ejercicio 8.3 Simulacin de un contador de 4 bits con divisor de frecuencia........................... 82

    9. Mquina de estados en VHDL ....................................................................................................... 839.1 Definicin de mquina de estados.......................................................................................... 839.2 Diseo de una mquina de estados Moore ............................................................................ 85

    Ejercicio 9.1 Simulacin de una mquina de estados ............................................................... 89Ejercicio 9.2 Contador de 3 bits con mquina de estados ........................................................ 89

    BIBLIOGRAFIA.................................................................................................................................... 90

  • Diseo bsico en FPGA con VHDL

    4Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    PRESENTACINEl lenguaje de descripcin de hardware VHDL es considerado como una de las mximasherramienta de diseo por las industrias y universidades de todo el mundo, puesproporciona a los usuarios muchas ventajas de la planeacin y diseo de los sistemaselectrnicos digitales.

    Este curso abarca los conocimientos bsicos para comenzar a disear en VHDL haciendouso de la tarjeta de desarrollo Nexys 2, sin embargo, dichos conocimientos son aplicablestambin para cualquier otra tarjeta de desarrollo de la marca Digilent, Inc, tales como laBasys o la Basys 2 por mencionar solo algunas, ya que lo nico que cambia es la ubicacinde los pines de entrada y de salida del FPGA.

    En el primer captulo se muestra una introduccin a los diferentes dispositivos lgicosprogramables (PLDs), una breve introduccin al software utilizado para programar lasFPGAs Spartan 3 y Spartan 3E, as como una breve historia del lenguaje VHDL.

    En el segundo captulo se muestra las caractersticas generales de la tarjeta de desarrolloNexys 2.

    El tercer captulo trata acerca de las partes que conforman un diseo en VHDL, la entidad yla arquitectura, as como las libreras que se utilizan.

    En el cuarto captulo se introduce al ambiente de desarrollo del software XILINX ISEDESIGN SUITE 12.1, tambin se muestra como crear un proyecto y como implementarloen la tarjeta Nexys 2.En el quinto captulo se introduce al diseo lgico combinacional en VHDL, se muestranlos operadores lgicos, declaraciones concurrentes asignadas a seales y se realizan losdiseos de buffers, multiplexores, sumadores y un decodificador.

    El uso del reloj interno de la tarjeta para el diseo lgico secuencial se muestra en elcaptulo 6, en el cual se muestra el diseo de flip-flops, registros y contadores.

    Una introduccin a VHDL estructural se muestra en el captulo 7, en la cual se hace nfasisen la importancia de esta metodologa para reducir el tiempo de diseo de algn proyectoentre otras ventajas.El captulo ocho muestra la manera de simular nuestros diseos desarrollados haciendo usodel software ModelSIM.

    Por ltimo en el captulo nueve se muestra los elementos bsicos que conforman unamquina de estados en VHDL.

  • Diseo bsico en FPGA con VHDL

    5Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    OBJETIVO DEL CURSOEl participante comprender y aplicar los principios bsicos del lenguaje VHDL haciendouso de una tarjeta de desarrollo basada en un FPGA de manera adecuada.

  • Diseo bsico en FPGA con VHDL

    6Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    1 INTRODUCCINObjetivo de la unidadEl participante identificar las caractersticas principales de los dispositivos lgicosprogramables y del lenguaje VHDL mediante la presentacin de dichos temas de acuerdo alplan de sesin.

    En la actualidad el nivel de integracin alcanzado con el desarrollo de la microelectrnicaha hecho posible desarrollar sistemas completos dentro de un solo circuito integrado SOC(System On Chip), con lo cual se han mejorado de manera notoria caractersticas comovelocidad, confiabilidad, consumo de potencia y sobre todo el rea de diseo. Esta ltimacaracterstica nos ha permitido observar da a da cmo los sistemas de uso industrial,militar y de consumo han minimizado el tamao de sus desarrollos.

    El proceso de miniaturizacin de los sistemas electrnicos comenz con la interconexin deelementos discretos como resistencias, capacitores, resistores, bobinas, etc., todoscolocados en un chasis reducido y una escasa separacin entre ellos. Posteriormente sedisearon y construyeron los primeros circuitos impresos, que relacionan e interconectanlos elementos mencionados a travs de cintas delgadas de cobre adheridas a un soporteaislante (por lo general baquelita) que permite el montaje de estos elementos.

    Ms tarde, el desarrollo del transistor de difusin planar, construido durante 1947 y 1948,permiti en 1960 la fabricacin del primer circuito integrado monoltico. Este integracientos de transistores, resistencias, diodos y capacitores, todos fabricados sobre unapastilla de silicio. Como es del conocimiento general, el trmino monoltico se deriva de lasraces griegas "mono" y "lithos" que significan uno y piedra, respectivamente; por tanto,dentro de la tecnologa de los circuitos integrados un circuito monoltico est construidosobre una piedra nica o cristal de silicio que contiene tanto elementos activos (transistores,diodos), como elementos pasivos (resistencias, capacitores), y las conexiones entre ellos.

    1.1 Dispositivos lgicos programables (PLD)Los dispositivos lgicos programables (o PLD, por sus siglas en ingls) favorecen laintegracin de aplicaciones y desarrollos lgicos mediante el empaquetamiento desoluciones en un circuito integrado. El resultado es la reduccin de espacio fsico dentro dela aplicacin; es decir, se trata de dispositivos fabricados y revisados que se puedenpersonalizar desde el exterior mediante diversas tcnicas de programacin. El diseo sebasa en bibliotecas y mecanismos especficos de mapeado de funciones, mientras que su

  • Diseo bsico en FPGA con VHDL

    7Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    implementacin tan slo requiere una fase de programacin del dispositivo que el diseadorsuele realizar en unos segundos.

    En la actualidad, el diseo de ASIC (circuitos integrados desarrollados para aplicacionesespecficas) domina las tendencias en el desarrollo de aplicaciones a nivel demicroelectrnica. Este diseo presenta varias opciones de desarrollo, sin embargo, sudiseo ahora slo es adecuado en aplicaciones que requieren un alto volumen deproduccin; por ejemplo, sistemas de telefona celular, computadoras porttiles, cmaras devideo, etctera.

    Los FPGA (arreglos de compuertas programables en campo) y CPLD (dispositivos lgicosprogramables complejos) ofrecen las mismas ventajas de un ASIC, slo que a un menorcosto; es decir, el costo por desarrollar un ASIC es mucho ms alto que el que precisara unFPGA o un CPLD, con la ventaja de que ambos son circuitos reprogramables, en los cualeses posible modificar o borrar una funcin programada sin alterar el funcionamiento delcircuito.

    En la actualidad existe una gran variedad de dispositivos lgicos programables, los cualesse usan para reemplazar circuitos SSI (pequea escala de integracin), MSI (mediana escalade integracin) e incluso circuitos VLSI (muy alta escala de integracin), ya que ahorranespacio y reducen de manera significativa el nmero y el costo de los diseos. Estosdispositivos, llamados PLD (tabla 1.1), se clasifican por su arquitectura, es decir, la formafuncional en que se encuentran ordenados los elementos internos que proporcionan aldispositivo sus caractersticas.

    Tabla 1.1 Dispositivos lgicos programables

  • Diseo bsico en FPGA con VHDL

    8Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    1.1.1 Estructura interna de un PLDLos dispositivos PROM, PLA, PAL y GAL estn formados por arreglos o matrices quepueden ser fijos o programables, mientras que los CPLD y FPGA se encuentranestructurados mediante bloques lgicos configurables y celdas lgicas de alta densidad,respectivamente.

    La arquitectura bsica de un PLD est formada por un arreglo de compuertas AND y ORconectadas a las entradas y salidas del dispositivo. La finalidad de cada una de ellas sedescribe a continuacin.

    a) Arreglo AND. Est formado por varias compuertas AND interconectadas a travs dealambres, los cuales cuentan con un fusible en cada punto de interseccin (Figura 1.1a). Enesencia, la programacin del arreglo consiste en fundir o apagar los fusibles para eliminarlas variables que no sern utilizadas (Figura 1.1b). Obsrvese cmo en cada entrada a lascompuertas AND queda intacto el fusible que conecta la variable seleccionada con laentrada a la compuerta. En este caso, una vez que los fusibles se funden no pueden volver aprogramarse.

    Figura 1.1 Arreglos AND: a) no programado y b) programado

  • Diseo bsico en FPGA con VHDL

    9Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    b) Arreglo OR. Est formado por un conjunto de compuertas OR conectadas a un arregloprogramable, el cual contiene un fusible en cada punto de interseccin. Este tipo de arregloes similar al de compuertas AND explicado en el punto anterior, ya que de igual manera seprograma fundiendo los fusibles para eliminar las variables no utilizadas. En la figura 1.2 seobserva el arreglo OR programado y sin programar.

    Figura 1.2 Estructura bsica de PLD

    De acuerdo con lo anterior, observemos en la tabla 1.2 la estructura de los dispositivoslgicos programables bsicos.

  • Diseo bsico en FPGA con VHDL

    10Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Tabla 1.2Dispositivos lgicos programables

    La PROM no se utiliza como un dispositivo lgico, sino como una memoriadireccionable, debido a las limitaciones que presenta con las compuertas AND fijas.

    En esencia, el PLA se desarroll para superar las limitaciones de la memoria PROM. Estedispositivo se llama tambin FPLA (arreglo lgico programable en campo), ya que es elusuario y no el fabricante quien lo programa.

    El PAL se desarroll para superar algunas limitaciones del PLA, como retardosprovocados por la implementacin de fusibles adicionales, que resultan de la utilizacin dedos arreglos programables y de la complejidad del circuito. Un ejemplo tpico de estosdispositivos es la familia PAL16R8, la cual fue desarrollada por la compaa AMD(Advanced Micro Devices) e incluye los dispositivos PAL16R4, PAL16R6, PAL16L8,PAL16R8, dispositivos programables por el usuario para reemplazar circuitoscombinacionales y secuenciales SSI y MSI en un circuito.

    1.2 Arreglo Lgico Genrico (GAL)El arreglo lgico genrico (GAL) es similar al PAL, ya que se forma con arreglos ANDprogramable y OR fijo, con una salida lgica programable. Las dos principales diferenciasentre los dispositivos GAL y PAL radican en que el primero es reprogramable y contieneconfiguraciones de salida programables.

  • Diseo bsico en FPGA con VHDL

    11Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Los dispositivos GAL se pueden programar una y otra vez, ya que usan la tecnologa E2CMOS (Ellectrically Erasable CMOS: CMOS borrable elctricamente), en lugar detecnologa bipolar y fusibles (Fig. 1.3).

    Figura 1.3Diagrama de bloques del arreglo GAL

    1.2.1 Programacin de un arreglo GALA diferencia de un PAL, el GAL est formado por celdas programables, las cuales sepueden reprogramar las veces que sea necesario. Como se observa en la figura 1.4, cada filase conecta a una entrada de la compuerta AND y cada columna a una variable de entrada ysus complementos. Cuando se programa una celda, sta se activa mediante la aplicacin decualquier combinacin de las variables de entrada o sus complementos a la compuertaAND. Esto permite la implementacin de cualquier funcin (producto de trminos)requerida.

    Figura 1.4 Programacin del dispositivo GAL

  • Diseo bsico en FPGA con VHDL

    12Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    1.3 Macroceldas lgicas de salidaUna macrocelda lgica de salida (u OLMC, de output logic macrocell) est formada porcircuitos lgicos que se pueden programar como lgica combinacional o secuencial. Lasconfiguraciones combinacionales se implementan por medio de programacin, mientrasque en las secuenciales la salida resulta de un flip-flop. En la figura 1.5 se observa laarquitectura de una macrocelda del dispositivo GAL22V10, la cual de manera general estformada por un flip-flop y dos multiplexores.

    Figura 1.5Arquitectura de una macrocelda OLMC 22V1O

    Puede haber de ocho a diecisis entradas de las compuertas AND en la compuerta OR. Estoindica las operaciones producto que pueden efectuarse en cada macrocelda. El reapunteada est formada por dos multiplexores y un flip-flop; el multiplexor 1 de 4 conectauna de sus cuatro lneas de entrada al buffer triestado de salida, en funcin de las lneas deseleccin SO y SI.

    Por otro lado, el multiplexor de 1 de 2 conecta por medio del buffer la salida del flip-flop ola salida del buffer triestado al arreglo AND; esto se determina por medio de S1. Cada unade las lneas de seleccin se programa mediante un grupo de celdas especiales que seencuentran en el arreglo AND.

    1.4 Dispositivos lgicos programables complejos (CPLD)Un circuito CPLD consiste en un arreglo de mltiples PLD agrupados como bloques en unchip. En algunas ocasiones estos dispositivos tambin se conocen como EPLD (EnhancedPLD: PLD mejorado), Super PAL, Mega PAL, etc. Se califican como de alto nivel deintegracin, ya que tienen una gran capacidad equivalente a unos 50 PLD sencillos.

  • Diseo bsico en FPGA con VHDL

    13Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    En su estructura bsica, cada CPLD contiene mltiples bloques lgicos (similares alGAL22V10) conectados por medio de seales canalizadas desde la interconexinprogramable (PI). Esta unidad PI se encarga de interconectar los bloques lgicos y losbloques de entrada/salida del dispositivo sobre las redes apropiadas (Fig. 1.6).

    Figura 1.6Arquitectura bsica de un CPLD

    Los bloques lgicos, tambin conocidos como celdas generadoras de funciones, estnformados por un arreglo de productos de trminos que implementa los productos efectuadosen las compuertas AND, un esquema de distribucin de trminos que permite crear lassumas de los productos provenientes del arreglo AND y por macroceldas similares a lasincorporadas en la GAL22V10 Cabe mencionar que el tamao de los bloques lgicos esimportante, ya que determina cunta lgica se puede implementar dentro del CPLD; estoes, fija la capacidad del dispositivo.

    1.4.1 Arreglos de compuertas programables en campo (FPGA)Los dispositivos FPGA se basan en lo que se conoce como arreglos de compuertas, loscuales consisten en la parte de la arquitectura que contiene tres elementos configurables:bloques lgicos configurables (CLB), bloques de entrada y de salida (IOB) y canales decomunicacin. A diferencia de los CPLD, la densidad de los FPGA se establece encantidades equivalentes a cierto nmero de compuertas.

    Por adentro, un FPGA est formado por arreglos de bloques lgicos configurables (CLB),que se comunican entre ellos y con las terminales de entrada/ salida (E/S) por medio dealambrados llamados canales de comunicacin. Cada FPGA contiene una matriz de bloqueslgicos idnticos, por lo general de forma cuadrada, conectados por medio de lneasmetlicas que corren vertical y horizontalmente entre cada bloque (Fig. 1.7).

  • Diseo bsico en FPGA con VHDL

    14Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Figura 1.7 Arquitectura bsica de un FPGA

    En la figura 1.8 se puede observar una arquitectura FPGA de la familia XC4000 de lacompaa Xilinx. Este circuito muestra a detalle la configuracin interna de cada uno de loscomponentes principales que conforman este dispositivo.

    Figura 1.8 Arquitectura del FPGA XC4000 de Xilinx

    Los bloques lgicos (llamados tambin celdas generadoras de funciones) estnconfigurados para procesar cualquier aplicacin lgica. Estos bloques tienen lacaracterstica de ser funcionalmente completos; es decir, permiten la implementacin decualquier funcin booleana representada en la forma de suma de productos. El diseolgico se implementa mediante bloques conocidos como generadores de funciones o LUT(Look Up Table: tabla de bsqueda), los cuales permiten almacenar la lgica requerida, yaque cuentan con una pequea memoria interna, por lo general de 16 bits.

    Cuando se aplica alguna combinacin en las entradas de la LUT, el circuito la traduce enuna direccin de memoria y enva fuera del bloque el dato almacenado en esa direccin. En

  • Diseo bsico en FPGA con VHDL

    15Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    la figura 1.9 se observan los tres LUT que contiene esta arquitectura, los cuales seencuentran etiquetados con las letras G, F y H.

    Figura 1.9 Arquitectura de un bloque lgico configurable FPGA

    En un dispositivo FPGA, los CLB estn ordenados en arreglos de matrices programables(Programmable Switch Matrix o PSM), la matriz se encarga de dirigir las salidas de unbloque a otro. Las terminales de entrada y salida del FPGA pueden estar conectadasdirectamente al PSM o CLB, o se pueden conectar por medio de vas o canales decomunicacin.

    En algunas ocasiones se pueden confundir los dispositivos de FPGA y CPLD, ya queambos utilizan bloques lgicos en su fabricacin. La diferencia entre ellos radica en elnmero de flip-flops utilizados, mientras la arquitectura del FPGA es rica en registros.

    1.5 Metodologa de diseo con FPGA'sLa metodologa de diseo es similar a la cualquier sistema digital, salvo que al final seobtiene un archivo ejecutable que se descarga a la FPGA para que se reconfigure,implementando as el diseo esperado.

    Primero hay que tener una descripcin del circuito a realizar. Tradicionalmente en lasingenieras se realizan planos o esquemas para esta descripcin, de forma similar a comoun arquitecto disea un edificio. Sin embargo es posible realizar una descripcin delhardware utilizando algn lenguaje de descripcin de hardware, como VHDL o VerilogCon esta descripcin se pueden realizar simulaciones del circuito, para comprobar que lodiseado trabaja correctamente de lo contrario se volver a modificar la descripcin(esquemas programa) hasta que la simulacin sea satisfactoria. Hasta aqu slo se ha

  • Diseo bsico en FPGA con VHDL

    16Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    utilizado la computadora y no se tocado hardware. Sin embargo en el caso del software, lapropia simulacin es la ejecucin del programa. Se observa directamente el resultado delprograma y se modifican el cdigo fuente hasta que se eliminen los errores.

    En el caso del hardware hay que construir el circuito. Y aqu es donde vienen las FPGA'spara hacerlo. A partir de la especificacin hardware y utilizando un compilador especial,obtenemos un archivo binario, llamado bitstream que contiene toda la informacinnecesaria para configurar la FPGA. Este archivo, que es el equivalente a un programaejecutable en el caso del software, es el que hay que cargar en la FPGA. Se carga estearchivo en la FPGA y listo. Ya se tiene el hardware que queramos situado en el interior deun chip. No se ha tenido que soldar, ni comprar componentes, ni perder tiempo haciendo unprototipo. Ahora los cambios en el diseo se pueden hacer igual de rpidos que en el casode software. Slo hay que cambiar la especificacin del diseo, volver a compilar yreconfigurar la FPGA con el nuevo bitstream generado.

    La especificacin de un circuito se realizaba slo de una manera: utilizando esquemasgrficos, en los que cada smbolo representa un componente o elemento lgico:multiplexores, puertas lgicas, etc. Existe otra manera de describir un circuito: utilizandolos llamados lenguajes de descripcin hardware. Existen varios: VHDL, Verilog, HandleC, JBits. La ventaja de estos lenguajes es que adems de permitir describir el circuito,permiten definir bancos de pruebas (testbench), que son muy tiles para la simulacin y ladepuracin.

    1.6 Configuracin y uso del software y hardware FPGAEl software de diseo programacin y simulacin INTEGRATEDSOFTWAREENVIROMENT (ISE) 12.1es una herramienta til para estudiantes yprofesionales que desean acelerar y mejorar sus habilidades para el desarrollo deaplicaciones digitales empleando un entorno de programacin grfico o usando lenguajeVHDL y realizar la simulacin de su funcionamiento sin el riesgo de ocasionar daos a loscircuitos.

    1.7 Breve historia del lenguaje VHDLVHDL es el Lenguaje de Descripcin de Hardware, que se desarroll en los aos de1980scomo un proyecto de investigacin de circuito integrado de gran velocidad el cual fueconsolidado por el Departamento Americano de Defensa. Un equipo de ingenieros de trescompaas - IBM, Texas Instruments e Intermetrics fue contratado por el Departamento deDefensa para completar la especificacin y aplicacin de un nuevo idioma basado enmtodo de descripcin de diseos digitales ideado por ellos.

  • Diseo bsico en FPGA con VHDL

    17Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    La primera versin pblicamente disponible de VHDL, versin 7.2, se liber en 1985.En1986, el Instituto de Ingenieros Elctricos y Electrnicos (IEEE) se present con unapropuesta para estandarizar el idioma que hizo en 1987, despus de que las mejorassustanciales y modificaciones fueron hechas por un equipo de gobierno y representantesacadmicos. La norma resultante, IEEE 1076-1987, es la base virtual para cada simulaciny el producto de la sntesis vendido hoy. Una nueva versin mejor el lenguaje, la IEEE1076-1993, se lanz en 1994.

    Aunque IEEE Standard 1076 define el lenguaje de VHDL completo, hay aspectos dellenguaje que hacen difcil la descripcin completamente porttil del diseo (descripcionesque pueden simularse usando las herramientas de diferentes vendedores). El problemaproviene del hecho que VHDL soporta muchos tipos de datos abstractos, pero esto no sedirige al problema simple de caracterizar seales diferentes o las condiciones de lasimulacin normalmente usadas como los desconocidos y alta-impedancia.

    Poco despus IEEE 1076-1987 fue adoptada, las compaas de simuladores empezaronreforzando VHDL con los nuevos tipos no estandarizados y permitirles a sus clientessimular los circuitos electrnicos complejos con precisin. Esto caus problemas porque lasdescripciones de un diseo entraron en un simulador donde a menudo eran incompatiblescon otros ambientes de simulacin. VHDL estaba volvindose no estandarizablerpidamente creando un problema. Otra norma se desarroll por un comit de IEEE. Estanorma, numerada 1164, define un paquete estndar (un lenguaje VHDL que permitecoleccionar las declaraciones normalmente usadas en una biblioteca externa) conteniendolas definiciones para un tipo de los datos normalizados. Este tipo de datos normalizado sellama el std_logic, y el paquete1164 IEEE es frecuentemente llamado el paquete de laLgica estndar.

    Las normas IEEE 1076-1987 e IEEE 1164 completan el estndar VHDL siendo elmsusado hoy.

  • Diseo bsico en FPGA con VHDL

    18Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    2 TARJETA DE DESARROLLO NEXYS 2Objetivo de la unidadEl participante identificar las caractersticas generales de la tarjeta de desarrollo Nexys 2mediante la presentacin de dicho tema de acuerdo al plan de sesin.

    La tarjeta Nexys 2, es una plataforma de desarrollo completa y lista para usar basado en unFPGA Xilinx Spartan 3E. Consta de un puerto USB 2.0 de alta velocidad, 16 Mbytes dememoria RAM as como varios dispositivos y puertos de entrada/salida que la conviertenen una plataforma ideal para sistemas digitales de todo tipo, incluyendo sistemasembebidos basados en el microprocesador Xilinxs MicroBlaze.

    2.1 Caractersticas generalesLa Nexys2 contiene una FPGA de Xilinx modelo Spartan3E XC3S500E o XC3S1200E conencapsulado FG320 (figura 2.1). Estas FPGA tienen respectivamente 500 000 o 1 200 000puertas lgicas equivalentes.

    Figura 2.1 Tarjeta Nexys2

  • Diseo bsico en FPGA con VHDL

    19Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Sus caractersticas principales son:

    FPGA Xilinx Spartan-3E, 500K puertas. Puerto USB2 para alimentacin de la placa, configuracin del dispositivo y transferenciade datos a alta velocidad. Compatible con ISE/Webpack y EDK. Fast Micron PSDRAM de 16MB. Intel StrataFlash Flash de 16MB. Xilinx Platform Flash ROM.Fuentes de alimentacin conmutadas de alta eficiencia (adecuadas para aplicacionesalimentadas por batera). Oscilador de 50MHz, adems de un socket para la posible adicin de un segundooscilador. 75 entradas/salidas de la FPGA enrutadas hacia los conectores de expansin (un conectorde alta velocidad Hirose FX2 con 43 seales y cuatro conectores Pmod 26). Todas las seales de entrada/salida son ESD y protegidas por circuito, asegurando unalarga vida de operacin en cualquier tipo de ambiente de uso. Las entradas/salidas de la placa incluyen 8 LEDs, un display de cuatro dgitos de sietesegmentos, 4 pulsadores y 8 conmutadores.

    La figura 2.2 muestra el diagrama a bloques de la tarjeta Nexys 2.

    Figura 2.2 Diagrama a bloques tarjeta Nexys 2

    En la figura 2.3 se muestran las conexiones en la placa de los pulsadores, interruptoresyLEDS. Analizando la figura podemos observar que al pulsar o conectar un interruptorenviamos un 1 al pin de la FPGA, y de manera anloga, los LED se encienden al poner un1 en el pin de la FPGA correspondiente. Por lo tanto, en la tarjeta Nexys2 se trabaja conlgica directa con los pulsadores, interruptores y LED.

  • Diseo bsico en FPGA con VHDL

    20Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Como se puede apreciar, los pulsadores tampoco tienen circuitera de anulacin de rebotes.En la figura tambin se indican los pines de la FPGA que se conectan a stos.

    Figura 2.3Conexiones de los pulsadores, interruptores y LED de propsito general en la tarjeta Nexys2

    2.2 Verificacin de funcionamiento

    Para garantizar el funcionamiento de las tarjetas se establece el siguiente protocolo derevisin que permitir conocer el estado del dispositivo. Descargar de la siguiente pginaweb: http://www.digilentinc.com/Products/Detail.cfm?Prod=NEXYS2 el archivodemowithmemcfg.bit en la tarjeta. Una vez realizado esto la tarjeta debe encendermostrando el mensaje PASS/128 (figura 2.4)

  • Diseo bsico en FPGA con VHDL

    21Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Figura 2.3 Verificacin del correcto funcionamiento de la tarjeta Nexys 2

  • Diseo bsico en FPGA con VHDL

    22Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    3 ORGANIZACIN DE VHDLObjetivo de la unidadEl participante reconocer la organizacin bsica de VHDL identificando las partesprincipales de dicho lenguaje de acuerdo al plan de sesin.

    Tal como se haba indicado anteriormente, VHDL (Hardware Description Language) es unlenguaje orientado a la descripcin o modelado de sistemas digitales; es decir, se trata de unlenguaje mediante el cual se puede describir, analizar y evaluar el comportamiento de unsistema electrnico digital.

    3.1 Unidades bsicas de diseoLa estructura general de un programa en VHDL est formada por mdulos o unidades dediseo, cada uno de ellos compuesto por un conjunto de declaraciones e instrucciones quedefinen, describen, estructuran, analizan y evalan el comportamiento de un sistema digital.Existen cuatro tipos de unidades de diseo en VHDL: declaracin de entidad (entitydeclaration), arquitectura (architecture), declaracin del paquete (package declaration) ycuerpo del paquete (package body). En el desarrollo de programas en VHDL puedenutilizarse o no tres de los cinco mdulos, pero dos de ellos (entidad y arquitectura) sonindispensables en la estructuracin de un programa.

    3.2 Entidad

    Una entidad (entity) es el bloque elemental de diseo en VHDL, Las entidades son todoslos elementos electrnicos (sumadores, contadores, compuertas, flip-flops, memorias,multiplexores, etc.) que forman de manera individual o en conjunto un sistema digital. Laentidad puede representarse de muy diversas maneras; por ejemplo, la figura 3.1a) muestrala arquitectura de un sumador completo a nivel de compuertas; ahora bien, esta entidad sepuede representar a nivel de sistema indicando tan slo las entradas (Cin, A y B) y salidas(SUMA y Cout) del circuito: figura 3.1b). De igual forma, la integracin de variossubsistemas (medio sumador) puede representarse mediante una entidad [Fig. 3.1c)]. Lossubsistemas pueden conectarse internamente entre s; pero la entidad sigue identificandocon claridad sus entradas y salidas generales.

  • Diseo bsico en FPGA con VHDL

    23Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Figura 3.1 a) Descripcin a nivel de compuertas, b) Smbolo funcional de la entidad; c) Diagrama abloques representativo de la entidad.

    3.2.1 Puertos de entrada y salidaCada una de las seales de entrada y salida en una entidad son referidas como puerto, elcual es similar a una terminal (pin) de un smbolo esquemtico.Todos los puertos que son declarados deben tener un nombre, un modo y un tipo de dato. Elnombre se utiliza como una forma de llamar al puerto; el modo permite definir la direccinque tomar la informacin y el tipo define qu clase de informacin se transmitir por elpuerto. Por ejemplo, respecto a los puertos de la entidad que representan a un comparadorde igualdad (Figura 3.2), las variables a y b denotan los puertos de entrada y la variable c serefiere al puerto de salida.

    Figura 3.2 Comparador de igualdad

  • Diseo bsico en FPGA con VHDL

    24Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    3.2.2 ModosUn modo permite definir la direccin en la cual el dato es transferido a travs de un puerto.Puede tener uno de cuatro valores: in (entrada), out (salida), inout (entrada/salida) y buffer(Figura 3.3).

    Modo in. Se refiere a las seales de entrada a la entidad. Este slo es unidireccional ynada ms permite el flujo de datos hacia dentro de la entidad. Modo out. Indica las seales de salida de la entidad. Modo inout. Permite declarar a un puerto de forma bidireccional es decir, deentrada/salida; adems permite la retroalimentacin de seales dentro o fuera de laentidad. Modo buffer. Permite hacer retroalimentaciones internas dentro de la entidad, pero adiferencia del modo inout, el puerto declarado se comporta como una terminal de salida.

    Figura 3.3 Modos y el curso de sus seales

    3.2.3 Tipos de datosLos tipos son los valores (datos) que el diseador establece para los puertos de entrada ysalida dentro de una entidad; se asignan de acuerdo con las caractersticas de un diseo enparticular. Algunos de los tipos ms utilizados en VHDL son: Bit El cual tiene valores de 0 y 1 lgico. Boolean (Booleano) que define valores de verdadero o falso en una expresin Bit_vector (Vectores de bits) que representa un conjunto de bits para cada variable deentrada o salida. Integer (Entero) que representa un nmero entero. Std_logic Extensiones del tipo Bit, pueden tomar 9 valores diferentes:U --No inicializadoX --Forzando valor desconocido0 --Forzando un 01 --Forzando un 1

  • Diseo bsico en FPGA con VHDL

    25Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Z --Alta impedanciaL -- 0 DebilH -- 1 Debil- -- Sin importancia (dont care) Std_logic_vector Vectores del std_logic

    3.2.4 Declaracin de entidadesComo se mencion anteriormente, los mdulos elementales en el desarrollo de un programadentro del lenguaje de descripcin en hardware (VHDL) son la entidad y la arquitectura.

    La declaracin de una entidad consiste en la descripcin de las entradas y salidas de uncircuito de diseo identificado como entity (entidad); es decir, la declaracin seala lasterminales o pines de entrada y salida con que cuenta la entidad de diseo.

    Por ejemplo, la forma de declarar la entidad correspondiente al circuito sumador de lafigura 3.1 se muestra a continuacin:

    1 --Declaracin de la entidad de un circuito sumador2entity sumador is3port (A, B, Cin: in bit;4 SUMA, Cout: out bit);5end sumador;

    Listado 3.1 Declaracin de la entidad sumador de la figura 2.1b).

    Los nmeros de las lneas (1, 2, 3, 4, 5) no son parte del cdigo; se usan como referenciapara explicar alguna seccin en particular. Las palabras en negritas estn reservadas para ellenguaje de programacin VHDL; esto es, tienen un significado especial para el programa;el diseador asigna los otros trminos.

    Ahora comencemos a analizar el cdigo lnea por lnea. Observemos que la lnea 1 iniciacon dos guiones (--), los cuales indican que el texto que est a la derecha es un comentariocuyo objetivo es documentar el programa, ya que el compilador ignora todos loscomentarios. En la lnea 2 se inicia la declaracin de la entidad con la palabra reservadaentity, seguida del identificador o nombre de la entidad (sumador) y la palabra reservada is.Los puertos de entrada y salida (port) se declaran en las lneas 3 y 4, respectivamente eneste caso los puertos de entrada son A, B y Cin, mientras que SUMA y Cout representanlos puertos de salida. El tipo de dato que cada puerto maneja es del tipo bit, lo cual indica

  • Diseo bsico en FPGA con VHDL

    26Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    que slo pueden manejarse valores de '0' y '1' lgicos. Por ltimo, en la lnea 5 termina ladeclaracin de entidad con la palabra reservada end, seguida del nombre de la entidad(sumador).

    Debemos notar que como cualquier lenguaje de programacin, VHDL sigue una sintaxis yuna semntica dentro del cdigo, mismas que hay que respetar. En esta entidad convienehacer notar el uso de punto y coma (;) al finalizar una declaracin y de dos puntos (:) alasignar nombres a las entradas y salidas.

    3.2.5 IdentificadoresLos identificadores son simplemente los nombres o etiquetas que se usan para referirvariables, constantes, seales, procesos, etc. Pueden ser nmeros, letras del alfabeto yguiones bajos ( _ ) que separen caracteres y no tienen una restriccin en cuanto a sulongitud. Todos los identificadores deben seguir ciertas especificaciones o reglas para quese puedan compilar sin errores, mismas que aparecen en la tabla 3.1.

    Tabla 3.1 Especificaciones para la escritura de identificadores

    3.2.6 Diseo de entidades mediante vectoresLa entidad sumador realizada en el circuito del listado 3.1, usa bits individuales, los cualesslo pueden representar dos valores lgicos (0 o 1). De manera general, en la prctica seutilizan conjuntos (palabras) de varios bits; en VHDL las palabras binarias se conocencomo vectores de bits, los cuales se consideran un grupo y no como bits individuales.Como ejemplo considrense los vectores de 4 bits que se muestran a continuacin:

    vector_A = [A3, A2, Al, AO]vector_B = [B3, B2, Bl, BO]vector_SUMA = [S3, S2, SI, SO]

  • Diseo bsico en FPGA con VHDL

    27Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    En la figura 3.4 se observa la entidad del sumador analizado antes, slo que ahora lasentradas A, B y la salida SUMA incorporan vectores de 4 bits en sus puertos. Obsrvesecmo la entrada Cin y la salida Cout son de un bit.

    Figura 3.4 Entidad representada por vectores

    La manera de describir en VHDL una configuracin que utilice vectores consiste en lautilizacin de la sentencia bit_vector, mediante la cual se especifican los componentes decada uno de los vectores utilizados. La parte del cdigo que se usa para declarar un vectordentro de los puertos es el siguiente:

    port (vector_A, vector_B: in bit_vector (3 downto 0);vector_SUMA: out bit_vector (3 downto 0));

    Esta declaracin define los vectores (A, B y SUMA) con cuatro componentes distribuidosen orden descendente por medio del comando:3 downto 0 (3 hacia 0) los cuales se agruparan de la siguiente manera.vector_A(3) = A3 vector_B(3) = B3 vector_SUMA(3) = S3vector_A(2) = A2 vector_B(2) = B2 vector_SUMA(2) = S2vector_A(l) = Al vector_B(l) = B1 vector_SUMA(l) = SIvector A(0) = A0 vector_B(0) = B0 vector SUMA(0) = S0

    A continuacin se describe en VHDL la entidad del circuito sumador representado en lafigura 2.4. Observe cmo la entrada Cin (Carry in) y la salida Cout (Carry out) se expresande forma individual.

    entity sumador isport (A,B: in bit_vector (3 downto 0);Cin: in bit;Cout: out bit;SUMA: out bit_vector(3 downto 0));end sumador;

  • Diseo bsico en FPGA con VHDL

    28Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    3.2.7 Declaracin de entidades mediante libreras y paquetesUna parte importante en la programacin con VHDL radica en el uso de libreras ypaquetes que permiten declarar y almacenar estructuras lgicas, seccionadas o completasque facilitan el diseo.

    Una librera o biblioteca es un lugar al que se tiene acceso para utilizar las unidades dediseo predeterminadas por el fabricante de la herramienta (paquete) y su funcin esagilizar el diseo. En VHDL se encuentran definidas dos libreras llamadas ieee y work.

    Cuando en el diseo se utiliza algn paquete es necesario llamar a la librera que locontiene. Para esto se utiliza la siguiente declaracin:

    library ieee;

    Lo anterior permite el uso de todos los componentes incluidos en la librera ieee. En el casode la librera de trabajo (work), su uso no requiere la declaracin library, dado que lacarpeta work siempre est presente al desarrollar un diseo.

    3.3 PaquetesEl paquete std_logic_1164 (estndar lgico_1164) que se encuentra en la librera ieeecontiene todos los tipos de datos que suelen emplearse en VHDL (std_logic_vector,std_logic, entre otros).

    El acceso a la informacin contenida en un paquete es por medio de la sentencia use,seguida del nombre de la librera y del paquete, respectivamente:

    use nombre_librera.nombre_paquete.all;

    por ejemplo:

    use IEEE.STD_LOGIC_1164.ALL;

    El paquete use IEEE.STD_LOGIC_ARITH.ALL; define funciones y operadoresaritmticos, como igual (=), mayor que (>), menor que (

  • Diseo bsico en FPGA con VHDL

    29Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    3.4 ArquitecturasUna arquitectura (architecture) se define como la estructura que describe el funcionamientode una entidad, de tal forma que permita el desarrollo de los procedimientos que se llevarna cabo con el fin de que la entidad cumpla las condiciones de funcionamiento deseadas.

    La gran ventaja que presenta VHDL para definir una arquitectura radica en la manera enque pueden describirse los diseos; es decir, mediante el algoritmo de programacinempleado se puede describir desde el nivel de compuertas hasta sistemas complejos.

    3.4.1 Descripcin funcionalEn la figura 3.5 se describe funcionalmente el circuito comparador. Se trata de unadescripcin funcional porque expone la forma en que trabaja el sistema; es decir, lasdescripciones consideran la relacin que hay entre las entradas y las salidas del circuito, sinimportar cmo est organizado en su interior. Para este caso:

    Figura 3.5Descripcin funcional de un comparador de igualdad de dos bits

    El cdigo que representa el circuito de la figura 3.5 se muestra en el listado 3.2:

  • Diseo bsico en FPGA con VHDL

    30Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Listado 3.2 Arquitectura funcional de un comparador de igualdad de 2 bits

    Nte cmo la declaracin de la entidad (entity) se describe en las lneas de la 1 a la 7; elcdigo ocupa de la lnea 8 a la 18, donde se desarrolla el algoritmo (architecture) quedescribe el funcionamiento del comparador. Para iniciar la declaracin de la arquitectura(lnea 8), es necesario definir un nombre arbitrario con que se pueda identificar ennuestro caso el nombre asignado fue funcional adems de incluir la entidad con que serelaciona (comp). En la lnea 9 se puede observar el inicio (begin) de la seccin donde secomienzan a declarar los procesos que rigen el comportamiento del sistema.

    La declaracin del proceso (lnea 10) se utiliza para la definicin de algoritmos y comienzacon una etiqueta opcional (en este caso compara), seguida de dos puntos (:), la palabrareservada process y une la lista sensitiva (a y b), que hace referencia a las seales quedeterminan el funcionamiento del proceso. Al seguir el anlisis, puede notarse que de lalnea 12 a la 17 el proceso se ejecuta mediante declaraciones secuenciales del tipo if-then-else (si-entonces- si no). Esto se interpreta como sigue (lnea 12): si el valor de la seal a esigual al valor de la seal b, entonces '1' se asigna a c, si no (else)se asigna un '0' (elsmbolo < = se lee como "se asigna a"). Una vez que se ha definido el proceso, se terminacon la palabra reservada end process y de manera opcional el nombre del proceso(compara); de forma similar se aade la etiqueta (funcional) al terminar la arquitectura en lalnea 18.

  • Diseo bsico en FPGA con VHDL

    31Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    3.4.2 Descripcin por flujo de datosLa descripcin por flujo datos indica la forma en que los datos se pueden transferir de unaseal a otra sin necesidad de declaraciones secuenciales (if-then-else). Este tipo dedescripciones permite definir el flujo que tomarn los datos entre mdulos encargados derealizar operaciones. En este tipo de descripcin se pueden utilizar dos formatos: medianteinstrucciones when else (cuando-si no) o por medio de ecuaciones booleanas.

    a) Descripcin por flujo de datos mediante when-else

    A continuacin se muestra el cdigo del comparador de igualdad de dos bits descrito antes(figura 3.6) Ntese que la diferencia entre los listados 3.2 y 3.3 radica en la eliminacin delproceso y en la descripcin sin declaraciones secuenciales (if-then-else).

    Listado 3.3 Arquitectura por flujo de datos

    b) Descripcin por flujo de datos mediante ecuaciones booleanas

    Figura 3.6 a) Entidad del comparador de dos bits, b) Comparador de dos bits realizado concompuertas.

    Otra forma de describir el circuito comparador de dos bits es mediante la obtencin de susecuaciones booleanas. En el listado 3.4 se observa este desarrollo. El interior del circuito

  • Diseo bsico en FPGA con VHDL

    32Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    comparador de la figura 3.6a) puede representarse por medio de compuertas bsicas [Fig.3.7b)] y este circuito puede describirse mediante la obtencin de sus ecuaciones booleanas.

    Listado 3.4 Arquitectura de forma de flujo de datos construido por medio de ecuaciones booleanas.

    La forma de flujo de datos en cualquiera de sus representaciones describe el camino que losdatos siguen al ser transferidos de las operaciones efectuadas entre las entradas a y b a laseal de salida c.

  • Diseo bsico en FPGA con VHDL

    33Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    4 AMBIENTE DE TRABAJO XILINX ISE DESIGN SUITE 12.1Objetivo de la unidadEl participante identificar las caractersticas principales del ambiente de trabajo delsoftware Xilinx ISE mediante una prctica demostrativa de acuerdo al plan de sesin.

    En este captulo se describe la manera de utilizar el programa Xilinx ISE Design Suite,como se encuentra constituido as como la creacin de un nuevo proyecto y la creacin delarchivo bit para descargarlo a la tarjeta de desarrollo Nexys 2.

    4.1 Arranque del programaPara comenzar crearemos un proyecto nuevo, primero arrancamos el programa XilinxProject Navigator, que se encuentra en Inicio Todos los Programas Xilinx ISE12.1Project Navigator (figura 4.1).

    Figura 4.1. Pantalla inicial software Xilinx ISE

    En la pantalla inicial del programa se observan cuatro (4) ventanas como muestra la Figura4.2

  • Diseo bsico en FPGA con VHDL

    34Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Nos puede aparecer una ventana con el Tip of the day que son indicaciones que hace laherramientas cada vez que la arrancamos. Damos clic en OK, con lo que se cierra dichaventana.

    Figura 4.2. Descripcin pantalla inicial software ISE 8.2i

    La ventana 1 llamada Sources muestra los diferentes archivos fuente adicionados alproyecto.La ventana 2 llamada Processes muestra los diferentes procesos que se pueden realizar alarchivo fuente seleccionado en la ventana 1.La ventana 3 es el rea de trabajo para mostrar y/o editar los diferentes archivos fuenteseleccionados en la ventana 1.La ventana 4 llamada Transcript muestra mensajes de estado de los diferentes procesosejecutados durante el diseo, es as como aqu aparecen las advertencias, los erroresdetectados en la revisin de sintaxis, compilacin y simulacin de un diseo electrnico.

    La forma corta para iniciar el Integrated Software Enviroment (ISE) es dar doble clic en elicono del programa ISE mostrado en la Figura 4.3, el cual est ubicado en el escritorio.

  • Diseo bsico en FPGA con VHDL

    35Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Figura 4.3. cono del programa Xilinx ISE Design Suite 12.1

    4.2 Creacin de proyectoPara crear el nuevo proyecto procedemos de la siguiente manera:

    A.- Seleccione File >New Project. Como lo indica la Figura 4.4.

    Figura 4.4 Creacin de proyecto

    La pgina de creacin de nuevo proyecto aparece, aqu damos la informacin general delproyecto de la siguiente manera:

    Project Name: Especifique el nombre del proyecto.

    Project Location: Especifique la localizacin del proyecto. Por defecto el nombre de lacarpeta es el mismo dado en el campo de nombre del proyecto. Para cambiar la ruta deldirectorio haga clic en el botn ubicado al lado del campo Project Location y de la rutadeseada.

    NOTA: Cada proyecto debe tener su propia carpeta. Si mltiples proyectos quedan en lamisma carpeta pueden ocurrir conflictos.

    Description: Permite escribir una descripcin del proyecto.

  • Diseo bsico en FPGA con VHDL

    36Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Top-Level Source Type: Especifique el top-level source type. Seleccione HDL de la lista.

    La Figura 4.5 muestra la pantalla del nuevo proyecto.

    Figura 4.5 Pantalla del nuevo proyecto

    En la configuracin de los parmetros en un nuevo proyecto puede obtener ayuda para lasdiferentes ventanas dando clic en el botn de More Info.

    B.- Clic Next para moverse a la pgina de propiedades del dispositivo.

    Use esta pgina (figura 4.6) para seleccionar el dispositivo y otra informacin del diseo desu proyecto, seleccionar la herramienta de sntesis y lenguaje, y el simulador.

    Product Category: Especfica la categora del producto segn su aplicacin. Esta seleccinfiltra las familias de dispositivos y dispositivos disponibles en los dos siguientes campos,seleccionar All en este campo.

    Family: Especfica la familia de dispositivos, o arquitectura Xilinx, dentro del cual seimplementara su diseo, seleccionar Spartan 3E para la tarjeta Nexys 2.

  • Diseo bsico en FPGA con VHDL

    37Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Device: Especifique el dispositivo en el cual implementara su proyecto, escoja XC3S500Esi la tarjeta Nexys 2 es de 500K compuertas, si es de 1200K compuertas seleccionarXC3S1200E. Como pudo darse cuenta, los nmeros que se muestran despus de la Smuestran el nmero de compuertas del FPGA Spartan 3E.

    Package: Especfica la presentacin del dispositivo con respecto al nmero de entradas ysalidas. Escoja el FG320 para la tarjeta Nexys 2.

    Speed: Especifca la velocidad del dispositivo seleccionado. Para este caso escoja -4.

    Top-Level Source Type: Especifica el tipo de fuente para el nivel de diseo.

    Synthesis Tool: Especifca la herramienta de sntesis y lenguaje de sntesis usado para sudiseo en este caso Xilinx Synthesis Technology (XST) es suministrado con ISE. EscojaXST (VHDL/Verilog).

    Simulator Especifica la herramienta usada para simulacin.

    Figura 4.6 Pantalla del nuevo proyecto

    C. Haga clic en next nuevamente, as se muestra en pantalla el resumen de las propiedadesdel nuevo proyecto creado (figura 4.7).

  • Diseo bsico en FPGA con VHDL

    38Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Figura 4.7 Ventana resumen de las propiedades del proyecto

    Haga clic en finish, de esta manera el proyecto esta creado, En la ventana sources seobserva el icono del nuevo proyecto (figura 4.8).

    Figura 4.8 Nuevo icono del proyecto

    4.3 Creacin de un archivo fuente HDLEn esta seccin, se muestra la creacin del archivo fuente HDL para el diseo, para lo cualse procede como sigue:

  • Diseo bsico en FPGA con VHDL

    39Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    A. Clic en New Source de la pestaa Project como muestra laFigura 4.9.

    Figura 4.9 Crear nuevo archivo fuente del proyecto

    B Seleccione un tipo de archivo fuente de la lista dependiendo del dispositivo y diseoespecificado para su proyecto, para este caso seleccione VHDL Module como tipo defuente.

    C. Digite en el campo file name el nombre iniciando por una letra (A-Z, a-z) y debecontener solamente caracteres alfanumricos (A-Z, a-z, 0-9) y underscores (_).

    Location contiene la ruta del proyecto actual por defecto.

    Verifique que la casilla Add to project este seleccionada, para adicionar el archivo fuenteal proyecto como muestra la figura 4.10, para informacin y ayuda detallada dar clic enbotn More Info

    Figura 4.10 Seleccin tipo de fuente

  • Diseo bsico en FPGA con VHDL

    40Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    D. Clic en Next.

    E. Declare los puertos para el diseo de la compuerta con cuatro entradas y una salida, estase define seleccionando out, llenando la informacin como se muestra en la figura 4.11

    Figura 4.11 Declarar entradas y salidas del proyectoF. Clic Next.En la figura 4.12 se observa el cuadro resumen del nuevo archivo fuente del proyecto quese est realizando. Ahora damos clic en Finish

    Figura 4.12 Resumen del nuevo archivo fuente

  • Diseo bsico en FPGA con VHDL

    41Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    El archivo fuente contiene el par entidad / arquitectura visualizados en el espacio detrabajo, como se muestra en la figura 4.13

    Figura 4.13 Espacio de trabajo para editar archivo fuente

    Como se pudo apreciar en la figura 4.13, no slo se ha creado la entidad, sino que se hanincluido unas cabeceras, bibliotecas y la declaracin de la arquitectura.

    La cabecera es un apartado con comentarios para que lo rellenemos nosotros, para quetengamos un control del autor, la fecha y la descripcin del diseo, entre otra informacin.

    Recuerda que en VHDL los comentarios se identifican con dos guiones . Es interesanteque se rellene, especialmente si se trabaja en grupo. Pero incluso si se trabaja solo esconveniente rellenarlo porque es comn olvidarse de lo que se hace una vez que hatranscurrido cierto tiempo.

    Despus de la cabecera se incluyen las referencias a las bibliotecas del IEEE, que sonnecesarias para poder utilizar los tipos de datos que emplearemos.

    Para muchos casos basta con utilizar la biblioteca IEEE.STD_LOGIC_1164.En general, serecomienda utilizar la biblioteca NUMERIC_STD (figura 4.14 b) en vez de laSTD_LOGIC_ARITH (figura 4.14 a) para la realizacin de procesos matemticos.

  • Diseo bsico en FPGA con VHDL

    42Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    a) b)Figura 4.14 Bibliotecas ms usadas en VHDL

    Despus de las referencias a las bibliotecas hay unos comentarios que puedes quitar. Acontinuacin est la entidad. Para describir el funcionamiento o la estructura interna delcircuito se utiliza la arquitectura.

    En la parte de la arquitectura escriba lo siguiente para generar una compuerta and:

    Architecture Behavioral of New Source isCNew Source y se escoge Implementation Constraints File, se le da un nombre y se

  • Diseo bsico en FPGA con VHDL

    43Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    da clic en Next (Figura 4.16). Despus aparece una pantalla de confirmacin en la que sedebe dar clic en Finish.

    Figura 4.16 Creacin del archivo ucfUna vez realizado esto, se verifica en la ventana sources que el archivo ha sido creado y seda doble clic para abrir el archivo que contiene la localizacin de los pines del proyecto encuestin (Figura 4.17).

    Figura 4.17 Edicin del archivo ucf

    En un principio, el archivo UCF aparecer en blanco, por lo que se debe escribir queterminal del FPGA le corresponde a cada una de las entradas y salidas del proyecto en elque se est trabajando, como se puede observar en la figura 4.17, se est haciendo uso detres terminales en un proyecto, a la variable A le corresponde la terminal G18, a la B laterminal H18 y finalmente a la C le corresponde la J14, esa es la sintaxis que debe llevarpara una correcta configuracin con cada una de las variables del proyecto.

  • Diseo bsico en FPGA con VHDL

    44Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Recuerde que las terminales del FPGA se encuentran en la figura 2.3, impresos en la mismatarjeta Nexys 2 o en el manual de usuario de la misma.

    Ahora hacemos doble clic en Generate Programming File dentro de la ventana Processes,y esperamos a que termine el proceso de sntesis e implementacin, viendo si hay algnerror o advertencia de importancia (warning).

    4.4 Implementacin en la tarjeta Nexys2

    Aunque la tarjeta Nexys2 se puede programar con el conector JTAG, viene con un puertoUSB que permite programarla de manera ms cmoda. El nico inconveniente es que hayque instalar el programa gratuito Adept.

    Se debe asegurar que los jumpers de POWER SELECT (jumpers de seleccin alimentacin)se encuentren en la posicin USB.

    A continuacin se explica cmo se programa la tarjeta Nexys2 con la versin 2 del Adept.

    Ejecutar el programa Adept: Inicio Todos los Programas Digilent Adept. En lafigura 4.18se muestra la pantalla inicial cuando no hay ningn dispositivo conectado. Estose puede ver en la parte derecha de la ventana.

    Figura 4.18 Pantalla inicial del Adept sin dispositivos conectados

  • Diseo bsico en FPGA con VHDL

    45Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Posteriormente se conecta la tarjeta Nexys2 a la computadora mediante el cable USB yponemos el interruptor de alimentacin en la posicin ON. Transcurrido un tiempo, en laventana del Adept aparecer que se ha conectado una tarjeta, en la parte derecha pondrOnboard USB. Si no saliese nada, se debe hacer clic en el men que pone No DevicesConnected a ver si cambia. Si no cambiase, se debe probar cerrando el Adept y volvindoloa arrancar.

    La primera vez que conectemos la tarjeta puede ser que Windows haya detectado un nuevohardware y tengamos que dar permiso para la instalacin de los drivers que vienen con latarjeta (no tenemos que introducir un disco, la propia tarjeta le proporciona los drivers).

    Ahora se hace clic en Initialize Chain y, como se ve en la figura 4.19, aparecern doscomponentes: uno es la FPGA y otro la memoria (PROM). Indicar tambin el modelo deFPGA, que en este caso es la XC3S500E.

    Figura 4.19 Pantalla del Adept que ha detectado la cadena JTAG de dispositivos (FPGA y PROM)

    A continuacin se da clic en el botn browse correspondiente a la FPGA, y buscamos elfichero con extensin bit que hemos generado en nuestro proyecto. Aparecer unaadvertencia (warning) indicando el mensaje: Startup clock for this file is CCLK instead ofJTAG CLK. Problems will likely occur. Associate config file with device anyway? A estemensaje contestamos S.

  • Diseo bsico en FPGA con VHDL

    46Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Otra cosa es que salga un mensaje de error indicando: Unable to associate file with devicedue to IDCODE conflicto. Esto es un error que indica que la FPGA que hemos escogidono es la misma que la que est en la placa. En este caso, tendremos que verificar que elmodelo de FPGA sea el mismo.

    Si todo ha salido bien, slo tenemos que hacer clic en Program y se programar la FPGA.Ahora solo queda verificar el correcto funcionamiento de nuestro diseo en la tarjeta dedesarrollo.

    Ejercicio 4.1.- Creacin de un proyecto

    Crear e implementar en la tarjeta Nexys 2 el diseo explicado del subtema 4.1 al 4.4.

    5. DISEO LGICO COMBINACIONAL EN VHDLObjetivo de la unidadEl participante aplicar los principios del diseo combinacional en VHDL mediantediversos ejercicios prcticos utilizando la tarjeta de desarrollo Nexys 2 de maneraadecuada.

    En este captulo se disean los circuitos combinacionales ms utilizados en el diseo lgicoa travs del lenguaje de descripcin en hardware. Esto permite introducir nuevos conceptos,palabras reservadas, reglas, algoritmos, etc., que muestran la potencia y profundidad dellenguaje VHDL.

    5.1. Programacin de estructuras bsicas mediante declaracionesconcurrentes

    Las declaraciones concurrentes suelen usarse en las descripciones de flujo de datos. Esto sedebe a que en una declaracin concurrente no importa el orden en que se escriban lasseales, ya que el resultado para determinada funcin sera el mismo.

    En VHDL existen tres tipos de declaraciones concurrentes:

  • Diseo bsico en FPGA con VHDL

    47Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Declaraciones condicionales asignadas a una seal (when-else) Declaraciones concurrentes asignadas a seales Seleccin de una seal (with-select-when)

    5.1.1. Declaraciones condicionales asignadas a una seal (when-else)La declaracin when-else se utiliza para asignar valores a una seal, determinando as laejecucin de una condicin propia del diseo. Para ejemplificar, consideremos la entidadmostrada en la figura 5.1, cuyo funcionamiento se define en la tabla de verdad.

    Figura 5.1 Ejemplo para declaraciones when-else

    La entidad se puede programar mediante declaraciones condicionales (when-else), debidoa que este modelo permite definir paso a paso el comportamiento del sistema, segn semuestra a continuacin:1 -- Ejemplo combinacional bsico2 library ieee;3 use ieee.std_logic_1164.all ;4 entity tabla is port(5 a,b,c: in std_logic;6 f: out std_logic);7 end tabla;8 architecture Behavioral of tabla is9 begin10 f

  • Diseo bsico en FPGA con VHDL

    48Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Ntese que la funcin de salida f (lnea 10) depende directamente de las condiciones quepresentan las variables de entrada, adems y dado que la ejecucin inicial de una u otracondicin no afecta la lgica del programa, el resultado es el mismo; es decir, la condicinde entrada "111", visualizada en la tabla de verdad, puede ejecutarse antes que la condicin"000" sin alterar el resultado final.

    Ejercicio 5.1.-Primer ejercicio con declaracin When-Else.

    En base a lo visto en el captulo 4, introducir el diseo anterior en la tarjeta Nexys 2.Utilizar SW0 como la entrada a, SW1 como la entrada b y SW2 como la entrada c. Lasalida f estar dada por el led LD0. Verificar el correcto funcionamiento del diseorealizado.

    Ejercicio 5.2.-Segundo ejercicio con declaracin When-Else

    Realizar haciendo uso de la declaracin When-Else un diseo lgico de 4 entradas que vandesde 0000 hasta 1111 y que produzca una salida alta siempre que la entrada decimalequivalente sea mayor que 10. Verificar el correcto funcionamiento del diseo realizado.

    5.1.2. Operadores lgicosLos operadores lgicos ms utilizados en la descripcin de funciones booleanas, ydefinidos en los diferentes tipos de datos bit, son los operadores and, or, nand, xor, xnor ynot. Las operaciones que se efecten entre ellos (excepto not) deben realizarse con datosque tengan la misma longitud o palabra de bits.

    En el momento de ser compilados los operadores lgicos presentan el siguiente orden yprioridad:

    1) Expresiones entre parntesis2) Complementos3) Funcin AND4) Funcin ORLas operaciones xor y xnor son transparentes al compilador y las interpreta mediante lasuma de productos correspondiente a su funcin.

    5.1.3.Declaraciones concurrentes asignadas a sealesEn este tipo de declaracin encontraremos las funciones de salida mediante la ecuacinbooleana que describe el comportamiento de cada una de las compuertas. Obsrvese queahora el circuito de la figura 5.2 cuenta con tres salidas (xl, x2 y x3) en lugar de una.

  • Diseo bsico en FPGA con VHDL

    49Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Figura 5.2 Circuito lgico realizado con compuertas

    El programa correspondiente al circuito de la figura 5.2 se muestra en el listado siguiente:

    library ieee;use ieee.std_logic_1164.all;

    entity logic is port (a,b,c,d,e,f: in std_logic;xl,x2,x3: out std_logic) ;end logic;

    architecture behavioral of logic isbeginxl

  • Diseo bsico en FPGA con VHDL

    50Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    5.1.4.Seleccin de una seal (with-select-when)La declaracin with select - when se utiliza para asignar un valor a una seal con base enel valor de otra seal previamente seleccionada. Por ejemplo, en el listado correspondientea la figura 5.3 se muestra el cdigo que representa a este tipo de declaracin. Como puedeobservarse, el valor de la salida c depende de las seales de entrada seleccionadas a(0) ya(1), de acuerdo con la tabla de verdad correspondiente.

    Figura 5.3 Tabla de verdad.

    library ieee;use ieee.std_logic_l164.all;entity circuito is port(a: in std_logic_vector (1 downto 0) ;c: out std_logic);end circuito;architecture behavioral of circuito isbeginwith a selectc

  • Diseo bsico en FPGA con VHDL

    51Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    1. Implementar la tabla de verdad mediante la declaracin When-Else.2. Implementar la tabla de verdad haciendo uso de operadores lgicos (compuertas).3. Implementar la tabla de verdad mediante la seleccin de una seal (With-Select-

    When).

    ENTRADAS SALIDAA B C X0 0 0 10 0 1 00 1 0 10 1 1 01 0 0 11 0 1 01 1 0 11 1 1 1

    Tabla 5.1 Tabla de verdad del ejercicio 5.4

    5.2.Programacin de estructuras bsicas mediante declaracionessecuenciales

    Como ya se mencion, las declaraciones secuenciales son aquellas en las que el orden quellevan puede tener un efecto significativo en la lgica descrita. A diferencia de unadeclaracin concurrente, una secuencial debe ejecutarse en el orden en que aparece yformar parte de un proceso (process).

    5.2.1 Declaracin if-then-else (si-entonces-si no)

    Esta declaracin sirve para seleccionar una condicin o condiciones basadas en el resultadode evaluaciones lgicas (falso o verdadero). Por ejemplo, observemos que en la instruccin:

    if la condicin es cierta thenrealiza la operacin 1;elserealiza la operacin 2;end if;

  • Diseo bsico en FPGA con VHDL

    52Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Si (if) condicin se evala como verdadera, entonces (then) la instruccin indica que seejecutar la operacin 1. Por el contrario, si la condicin se evala como falsa (else) correrla operacin 2. La instruccin que indica el fin de la declaracin es end if (fin del si). Unejemplo que ilustra este tipo de declaracin se ilustra en la figura 5.4.

    Figura 5.4 Comparador de igualdad de dos bits

    El cdigo correspondiente a esta entidad de diseo se muestra en el listado siguiente:

    --Ejemplo de declaracin de la entidad comparadorentity comp isport (a,b: in bit_vector( 1 downto 0);

    c: out bit);end comp ;architecture behavioral of comp isbeginprocess (a,b)begin

    if a = b thenc

  • Diseo bsico en FPGA con VHDL

    53Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    La sintaxis anterior se interpreta como sigue: Si (if) la condicin 1 es verdadera, entonces(then) se ejecuta la operacin l, si no-si (elsif) se evala la condicin 2 y si es verdaderaentonces (then) se ejecuta la operacin 2, si no (else) se ejecuta la operacin 3.

    Ejercicio 5.7.- Comparador de 2 bits

    Introducir el diseo anterior del comparador en la tarjeta Nexys 2. Utilizar de SW0 a SW1como la entrada a y SW6 Y SW7 como entrada b. La salida estar dada por el led LD0.Verificar el correcto funcionamiento.

    5.2.2 Operadores relacionales

    Los operadores relacinales se usan para evaluar la igualdad, desigualdad o la magnitud enuna expresin. Los operadores de igualdad y desigualdad ( = y /= ) se definen en todos lostipos de datos. Los operadores de magnitud ( = ) lo estn slo dentro del tipoescalar. En ambos casos debe considerarse que el tamao de los vectores en que seaplicarn dichos operadores debe ser igual. En la tabla 5.1 se muestran estos operadores ysu significado.

    Tabla 5.1 Operadores relacinales

    5.3.Buffers triestadoLos registros de tres estados (buffers tri-estado) tienen diversas aplicaciones, ya sea comosalidas de sistemas (modo buffer) o como parte integral de un circuito. En VHDL estosdispositivos son definidos a travs de los valores que manejan (0,1 y alta impedancia 'Z').En la figura 5.5 se observa el diagrama correspondiente a este circuito, y en el listado elcdigo que describe su funcionamiento.

  • Diseo bsico en FPGA con VHDL

    54Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Figura 5.5 Buffer tri-estado

    library ieee;use ieee.std_logic_1164.all ;entity tri_est is port(enable, entrada: in std_logic;salida: out std_logic);end tri_est;architecture behavioral of tri_est isbeginprocess (enable, entrada) beginif enable = '0' thensalida

  • Diseo bsico en FPGA con VHDL

    55Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Los multiplexores se disean describiendo su comportamiento mediante la declaracinwith-select-when o ecuaciones booleanas.

    En la figura 5.6 a) se observa que el multiplexor dual tiene como entrada de datos lasvariables a, b, c y d, cada una de ellas representadas por dos bits (al, a0), (bl, b0), etc., laslneas de seleccin (s) de dos bits (s1 y s0) y la lnea de salida z (zl y z0).

    En la figura 5.6 b) se muestra un diagrama simplificado que resalta la representacinmediante vectores de bits.

    Figura 5.6 a) Multiplexor de 4 bits, b) Multiplexor con vectores

    En el listado siguiente se muestra la descripcin mediante with-select-when del multiplexordual de 2 x 4. En este caso la seal s determina cul de las cuatro seales se asigna a lasalida Z. Los valores de s estn dados como "00", "01" y "10"; el trmino others (otros)especifica cualquier combinacin adicional que pudiera presentarse (que incluye el "11"),ya que esta variable se encuentra definida dentro del tipo std_logic_vector, el cual contienenueve valores posibles que la herramienta de sntesis reconoce como tipos lgicosestndares.

    library ieee;use ieee.std_logic_1164.all ;entity mux is port(a,b,c,d: in std_logic_vector(1 downto 0);s: in std_logic_vector (1 downto 0) ;Z: out std_logic_vector (1 downto 0) ;end mux;architecture behavioral of mux isbeginwith s selectZ

  • Diseo bsico en FPGA con VHDL

    56Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    c when "10",d when others ;end behavioral;

    5.5.SumadoresPara describir el funcionamiento de los circuitos sumadores es importante recordar lasreglas bsicas de la adicin.

    En el caso de la suma 1 + 1 = 10, el resultado "0" representa el valor de la suma, mientrasque el "1" el valor del acarreo.

    Para observar en detalle el funcionamiento de un circuito medio sumador, considere lasuma de los nmeros A y B mostrados en la tabla 5.2.

    Tabla 5.2Tabla de verdad de un circuito sumador

    La ecuacin lgica que corresponde a la expresin es la funcin lgica or-exclusiva A B, mientras que la ecuacin lgica del acarreo de salida es Cout = AB quecorresponde a la compuerta lgica and.

    La realizacin fsica de estas ecuaciones se muestra en la figura 5.7a, en ella se presenta elbloque lgico del medio sumador (MS) y la figura 5.7b representa su implantacinmediante compuertas lgicas.

  • Diseo bsico en FPGA con VHDL

    57Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Figura 5.7 a) Diagrama a bloques de un medio sumador; b) Medio sumador lgico

    El programa en VHDL que representa este medio sumador se muestra en el listadosiguiente:

    library ieee;use ieee.std_logic_1164.all ;entity m_sum is port (A,B: in std_logic;SUMA, Cout: out std_logic) ;end m_sum;architecture behavioral of m_sum isbeginSUMA

  • Diseo bsico en FPGA con VHDL

    58Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Figura 5.8 a) Sumador completo; b) Tabla de verdad del medio sumador

    Las ecuaciones reducidas mediante un mapa de Karnaugh correspondientes a la salidaSuma y Cout se muestran a continuacin

    Si se manipulan las ecuaciones anteriores mediante lgebra booleana obtenemos que lafuncin de Suma y Cout puede expresarse como:

    La realizacin fsica del circuito se basa en la utilizacin de compuertas or-exclusiva comose muestra en la figura 5.9 a). Como puede observarse en la figura 5.9 b), dos circuitosmedio sumadores pueden implementar un sumador completo.

    a) Circuito sumador completo implementado por compuertas

  • Diseo bsico en FPGA con VHDL

    59Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    b) Circuito sumador completo implementado por medio sumadores

    Figura 5.9 Circuitos sumadores

    La programacin en VHDL del sumador completo se presenta en el listado:

    library ieee;use ieee.std_logic_1164.all;entity sum is port (A,B,Cin: in std_logic;Suma, Cout: out std_logic);end sum;architecture behavioral of sum isbeginSuma

  • Diseo bsico en FPGA con VHDL

    60Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Figura 3.13 a) Decodificador BCD a siete segmentos, b) Configuracin del display de siete segmentos.

    Como se puede apreciar, la entidad del decodificador cuenta con una entrada llamada A,formada por cuatro bits (AO, Al, A2, A3), y siete salidas (a, b, c, d, e, f, g) activas en nivelbajo, las cuales corresponden a los segmentos del display. En la tabla 5.3 se indican losvalores lgicos de salida correspondientes a cada segmento.

    Tabla 5.3Valores lgicos correspondientes a cada segmento del display

    La funcin del programa cuyo cdigo se exhibe en el listado mostrado ms abajo utilizadeclaraciones secuenciales del tipo case-when que, como se puede apreciar, ejecutan unconjunto de instrucciones basadas en el valor que pueda tomar una seal. En nuestroejemplo, se describe de qu manera se maneja el decodificador de acuerdo con el valor quetoma la seal A. Para fines prcticos se declararon todas las salidas como un solo vector debits (identificado como d). Por otro lado, la palabra reservada others, como ya se indic,define los valores que puede tomar en la sntesis la salida d.

    library ieee;use ieee.std_logic_1164.all ;entity deco is port (A: in std_logic_vector (3 downto 0);d: out std_logic_vector (6 downto 0);anodo: out std_logic_vector (3 downto 0));

  • Diseo bsico en FPGA con VHDL

    61Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    end deco;architecture behavioral of deco isbeginanodo d d d d d d d d d d d < = "1111111";end case;end process;end behavioral;

    En la instruccin case-when podemos observar el uso de asignaciones dobles (=>d < = ),las cuales permiten que una seal adopte un determinado valor de acuerdo con elcumplimiento de una condicin especificada. Por ejemplo, en nuestro diseo estasinstrucciones se interpretan dela siguiente manera: cuando la seal A sea "0000", asigna ala seal d el valor"0000001"; cuando A es "0001", asigna a d el valor "1001111", etc.

    La seal nodo se utiliza en este diseo para especificar cul es el display que queremosactivar, en este caso es el display que se encuentra ms a la derecha de nuestra tarjeta.Ejercicio 5.11.- Decodificador BCD a siete segmentos

    Introducir el diseo anterior en la tarjeta Nexys 2. Utilizar de SW0 a SW3 como entradas ylos valores del display de 7 segmentos como la salida d. Recuerde que los valores de losdisplays de 7 segmentos los puede localizar impresos en la tarjeta de desarrollo o en elmanual de usuario. Verificar el correcto funcionamiento del diseo.

  • Diseo bsico en FPGA con VHDL

    62Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    6 DISEO LGICO SECUENCIAL EN VHDLObjetivo de la unidadEl participante aplicar los principios del diseo secuencial en VHDL mediante diversosejercicios prcticos utilizando la tarjeta de desarrollo Nexys 2 de manera adecuada.

    Los circuitos digitales que se han manejado fueron del tipo combinacional; es decir, soncircuitos que dependen por completo de los valores que se encuentran en sus entradas endeterminado tiempo. Sin embargo, la mayora de los sistemas que se encuentran en laprctica incluyen elementos de memoria, los cuales requieren que el sistema se describa entrminos de lgica secuencial.

    En este captulo se describen algunos de los circuitos secuenciales ms utilizados en laprctica, como flip-flops, contadores, registros, etc.

    6.1 Sistema secuencialUn sistema secuencial est formado por un circuito combinacional y un elemento dememoria encargado de almacenar de forma temporal la historia del sistema.

    En esencia, la salida de un sistema secuencial no slo depende del valor presente de lasentradas, sino tambin de la historia del sistema, segn se observa en la figura 6.1.

  • Diseo bsico en FPGA con VHDL

    63Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Figura 6.1 Estructura de un sistema secuencial

    Bsicamente hay dos tipos de sistemas secuenciales: sncronos y asncronos; elcomportamiento de los primeros se encuentra sincronizado mediante el pulso de reloj delsistema, mientras que el funcionamiento de los sistemas asncronos depende del orden ymomento en el cual se aplican sus seales de entrada, por lo que no requieren un pulso dereloj para sincronizar sus acciones.

    6.2 Flip-flops

    El elemento de memoria utilizado indistintamente en el diseo de los sistemas sncronos oasncronos se conoce como flip-flop o celda binaria.La caracterstica principal de un flip-flop es mantener o almacenar un bit de maneraindefinida hasta que a travs de un pulso o una seal cambie de estado.

    Los flip-flops ms conocidos son los tipos SR, JK, T y D.

    6.2.1 Flip-Flop D

    Es importante recordar el significado de la notacin Q y Q(t+i);

    Q = estado presente o actualQt+1 = estado futuro o siguiente

    Consideremos la tabla de verdad que describe el funcionamiento del flip-flop tipo D,mostrado en la figura 6.2.

  • Diseo bsico en FPGA con VHDL

    64Al Servicio del Sistema Nacional de Educacin Superior Tecnolgica

    CRO-GT-PO-OO2-04 REV. 1

    Figura 6.2 a) Diagrama y tabla de verdad del flip-flop D, b) Flujo de informacin en el dispositivo

    Cuando el valor de la entrada D es igual a 1, figura 6.2 b), la salida Qt + i adopta el valor de1: Qt+i = 1 siempre y cuando se genere un pulso de reloj.

    Es importante resaltar que el valor actual en la entrada D es transferido a la salida Qt + i sinimportar cul sea el valor previo que haya tenido la salida Q en el estado presente.

    En el diseo secuencial con VHDL las declaraciones If-then-else son las ms utilizadas; porejemplo, el programa del listado