Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Umbral Científico ISSN: 1692-3375 umbralcientifico@umb.edu.co Universidad Manuela Beltrán Colombia Ballesteros Larrotta, Dora María; Piraján Aranguren, Alexis Javier DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS Umbral Científico, núm. 4, junio, 2004, pp. 37-49 Universidad Manuela Beltrán Bogotá, Colombia Disponible en: http://www.redalyc.org/articulo.oa?id=30400406 Cómo citar el artículo Número completo Más información del artículo Página de la revista en redalyc.org Sistema de Información Científica Red de Revistas Científicas de América Latina, el Caribe, España y Portugal Proyecto académico sin fines de lucro, desarrollado bajo la iniciativa de acceso abierto http://www.redalyc.org/revista.oa?id=304 http://www.redalyc.org/articulo.oa?id=30400406 http://www.redalyc.org/comocitar.oa?id=30400406 http://www.redalyc.org/fasciculo.oa?id=304&numero=1280 http://www.redalyc.org/articulo.oa?id=30400406 http://www.redalyc.org/revista.oa?id=304 http://www.redalyc.org DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 37 RESUMEN Las FPGAS son una gran solución en la elaboración de prototipos gracias a la flexibilidad que ofrecen en el diseño. Debido a su importancia, se presenta como ejemplo de diseño, la descripción de un circuito combinacional en lenguaje VHDL programado en una FPGA Spartan XCS200E. Se realizó la simulación funcional utilizando el programa ModelSim 5.7 y para las etapas de diseño restantes se utilizó ISE Foundation 6.1; ambos programas de la empresa Xilinx. ABSTRACT FPGAs are a great solution for prototyping because they offer designers the flexibility to test, due to it, we development as an example, a combinational circuit by programming the XCS200E Spartan with VHDL language. To validate the design simulations were done in ModelSim 5.7 simulation tool, for the others design stages, we used ISE Foundation 6.1, both of them of the Xilinx Company. Palabras clave: circuitos combinacionales, circuitos secuenciales, ISE Foundation, ModelSim, Unidad arimético-logica (ALU). Keywords: combinational circuits, synchronous circuits, ISE Foundation, ModelSim, Arithmetic Logic Unit. Nomenclatura: ALU: unidad aritmético- lógica CAE: asistencia para ingeniería utilizando un computador CAD: diseño asistido por computador. ASIC: circuito integrado específico a una aplicación HDL: lenguaje de descripción de hardware VHDL: lenguaje de descripción de hardware para dispositivos de alta velocidad PLD: dispositivo lógico programable FPGA: campo de arreglo de compuertas programables. PROM: Es un PLD en el que las uniones en la matriz de puertas AND es fija, siendo programables las uniones en la matriz de puertas OR. PAL: dispositivo programable de las uniones de compuertas AND PLA: dispositivo programable de las uniones AND y OR. DSP: dispositivo dedicado al procesamiento digital de señales Msc. Dora María Ballesteros Larrotta 1 Msc.(c) Alexis Javier Piraján Aranguren 2 1 Docente Investigador. Grupo de Investigación “Sistemas de Adquisición, Procesado y Análisis de Señales Bioeléctricas: SAPAB”. UMB 2 Docente Universidad Piloto de Colombia, Jefe de Área Sistemas Inalámbricos. DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 38 INTRODUCCIÓN El diseño tradicional de sistemas digitales es de bajo costo y con tiempos de desarrollo cortos, pero es restringido por arquitecturas inflexibles, velocidades de operación y recursos limitados así como poco versátiles a la hora de la puesta en marcha, como lo son: memorias, microcontroladores, procesadores digitales de señal (DSPs), entre otros. Una solución para estos inconvenientes es el diseño ASIC o de aplicación específica, en contraparte los tiempos de diseño y fabricación son muy extensos y por ende costosos a la hora de solucionar un problema particular. Tomando las ventajas de los dos tipos de diseño expuestos - bajo costo, tiempo de diseño reducido, flexibilidad y versatilidad- surgen los dispositivos lógicos programables, con la característica particular de poseer todos los recursos del primer tipo de diseño concentrados en una pequeña área. Estas ventajas no están completas sin una herramienta adecuada que nos permita organizar y aprovechar estos recursos; para lo cual surgen los lenguajes de descripción de hardware HDL. El diseño de sistemas digitales se transforma en una descripción de alto nivel de los componentes que lo conforman, luego esta descripción configura apropiadamente los recursos del dispositivo, para finalmente obtener el sistema funcional. Lenguajes De Descripción De Hardware Los lenguajes de descripción hardware –HDL: hardware description languages-, se empezaron a utilizar en los años 70. Los primeros lenguajes surgidos no tuvieron gran acogida y es hasta una década después que aparecen los lenguajes VHDL y Verilog, los cuales son en la actualizad los más utilizados y han desplazado a los otros lenguajes. [1] A. Historia del VHDL La creación de este lenguaje se inicia en el año 1981, con la creación del programa de desarrollo de circuitos integrados de muy alta velocidad (VHSIC) del Departamento de defensa de Estados Unidos. En el año de 1982 las compañías IBM, Texas Instrumets, Intermetrics, obtuvieron la concesión para la realización del lenguaje y de un conjunto de herramientas para su aplicación. En el año de 1987 el lenguaje VHDL se convierte en la norma 1076 y en el año de 1993 se actualiza con la norma 1164 [1],[2]. El objetivo principal de utilizar lenguaje VHDL para la descripción de hardware, es especificar y documentar circuitos y sistemas digitales con un lenguaje formal que sea entendido tanto por diseñadores como por máquinas –computadoras-. Entre las principales características del lenguaje se tiene que es ejecutable, lo que permite que la descripción del hardware se materialice en dispositivos programables; posibilita la descripción del hardware con distintos niveles de abstracción y es independiente de la tecnología. Las diferencias entre VHDL y Verilog son: las unidades de diseño múltiple pueden ser compiladas separadamente en VHDL, mientras que en Verilog, al producirse un cambio sencillo en el orden de compilación la simulación puede cambiar; el usuario puede definir el tipo de datos utilizando VHDL; los conceptos de librería, - que permite compilar proyectos de diseño múltiple -, y paquetes – los cuales pueden ser utilizados por cualquier unidad de diseño -, solamente existen en VHDL. B. Entidades de Diseño de VHDL El diseño y modelado de sistemas digitales en VHDL, divide el diseño en bloques funcionales que se denominan componentes. Cada componente corresponde a una entidad de diseño: design entity, que se modela por separado como parte de un sistema. La jerarquía se logra utilizando design hierarchy. Las entidades de diseño se construyen en VHDL usando cinco formas diferentes de unidades de diseño, las cuales son: entity, package, configuration, architecture: y package body. [1]-[3] DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 39 Fig. 1. Unidades de diseño de VHDL. Tomado de [1] - Entity declaration: la declaración de una entidad describe la interfaz de una unidad de diseño la cual se comunica con otras entidades del mismo ambiente. La interfaz incluye todas las entradas, salidas y señales bidireccionales en la declaración del puerto. - Architecture body: una arquitectura describe la composición funcional de un diseño. - Configuration declaration: es una unidad de diseño primaria usada para enlazar una entidad a una arquitectura para formar los componentes de un diseño. - Package declaration: es un depósito que permite almacenar declaraciones que son comúnmente usadas paraser accedidas por múltiples unidades de diseño. - Package body: se relaciona con una declaración tipo paquete y contiene los subprogramas de las funciones y procedimientos declarados en el paquete asociado. DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 40 C. Diseño de herramientas automatizadas Las herramientas software que se utilizan para asistir en el diseño se dividen en dos categorías [4]: la primera, CAD: computer aided design y la segunda, CAE: computer aided engineering, para el diseño de sistemas digitales las herramientas están compuestas por las dos clases de software. Entre las herramientas disponibles para la simulación de un modelo hardware, se tienen: ISE Foundation, Leonardo Spectrum, CADENCE HDL, MAXPLUS, entre otros. Cada una de estas herramientas permite la descripción, síntesis, simulación y programación de los dispositivos lógicos programables. DISPOSITIVOS LOGICOS PROGRAMABLES PLD. Un dispositivo programable es aquel que contiene una arquitectura general predefinida en la que el usuario puede configurar a partir de un conjunto de herramientas de desarrollo, dentro de estos dispositivos encontramos PLAs, PROMs, PALs, GALs, CPLDs y FPGAs según su orden de complejidad y versatilidad [5]. Las FPGA son matrices de puertas eléctricamente programables que contienen múltiples niveles de lógica. Se caracterizan por altas densidades de elementos, alto rendimiento, un gran número de entradas y salidas disponibles por el usuario y un esquema de interconexión flexible, tal y como se presenta en la Fig. 2. Los bloques lógicos (CLB) permiten realizar la descripción de diseño de un módulo en particular y la interconexión entre ellos es definida por el usuario. Puede contener desde 1000 hasta 100000 CLBs por FPGA [7]. Fig. 2. Arquitectura interna FPGA. Tomado de [6] Fig. 3. Etapas de diseño para FPGAs. A. Flujo de diseño en una FPGA: Los pasos presentados en la Fig 3. muestran el flujo de información para el diseño y puesta en marcha de un sistema digital sobre un dispositivo lógico programable. - Especificación: Relaciona la aplicación con los elementos de hardware involucrados, datos de entrada y salida, velocidad de operación, etc. - Código HDL: Una vez definida la arquitectura dedicada, se procede a realizar la descripción de la misma uti l izando algún lenguaje HDL sobre una herramienta de diseño. - Depuración del código: Consiste en la verificación de sintaxis y lógica del código HDL. - Síntesis: Es la etapa en la cual el código es traducido o interpretado como compuertas y conexiones eléctricas para cumplir con el objetivo de diseño propuesto. DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 41 ISE FOUNDATION Este programa permite la descripción en lenguajes VHDL, Verilog, ABEL, UCF [9]. La pantalla está dividida en cuatro subpantallas principales, tal y como se presenta en la Fig 4. En la parte superior izquierda se encuentra la ventana Sources in Project –fuentes en la pantalla-, la cual presenta de forma jerárquica los elementos incluidos en el proyecto. Bajo esta subpantalla se encuentra Processes for Source el cual muestra los procesos habilitados. La tercera ventana, ubicada en la parte inferior, muestra errores y advertencias, que se producen durante todas las etapas del proyecto. La última ventana se encuentra a la derecha y es una interfaz multi- documento (MDI) para la visualización de los archivos de texto ascii y el código HDL DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 42 Fig. 4. Interfaz del proyecto: Interface Project Navegator Fig. 5. Ventana fuentes del proyecto: Sources in Project Fuentes en la pantalla del Proyecto: esta ventana consiste de tres etiquetas que le suministran información al usuario: module view, snapshot view y library view. Procesos en la ventana actual: esta ventana contiene las opciones de depuración del código, asignación de pines en la FPGA, chequeo de sintaxis, entre otros. Esta subventana se presenta en Fig 6. Consola: despliega errores, advertencias e información adicional. EJEMPLO DE DISEÑO: UNIDAD ARITMÉTICO – LÓGICA (ALU) Una unidad aritmético lógica -ALU-, es una unidad que de acuerdo al valor lógico de los bits de selección, se realiza una función en particular. A.Especificación del diseño Las funciones a implementar en la ALU con el valor de selección, se presentan en la Tabla I. Fig. 6. Procesos en la ventana actual: processes for source TABLA I. DEFINICIÓN DE LAS OPERACIONES DE LA ALU DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 43 La operación de suma puede generar acarreo, por lo que se debe además agregar una bandera la cual se establece como ‘1’ lógico cuando tiene carry y como ‘0’ cuando no tiene. El número de bits de los vectores A y B es de 8, al igual que el vector de salida. La FPGA que se utiliza es una Spartan IIE XC2S200E-PQ208 y el lenguaje a utilizar es VHDL. B. Código HDL Para la descripción de la ALU se utiliza lenguaje VHDL el cual se presenta en la ventana multi- documento de ISE FOUNDATION: Fig 7. C. Depuración del código Se realiza haciendo doble click sobre View VHDL Instantiation Template de la opción Design Entry Utilities de la ventana Processes for Source. Started process «View VHDL Instantiation Template». Fig. 7. Parte del código VHDL de la ALU, editado en la ventana multi-documento. Compiling vhdl file C:/Xilinx/./ALU/alu.vhd in Library work. Entity <alu> (Architecture <Behavioral>) compiled. tdtfi(vhdl) completed successfully. Completed process “View VHDL Instantiation Template”. Fig. 8. Mensaje en la ventana de consola. DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 44 Una vez verificado que el código VHDL de la ALU está correctamente escrito, se realiza la síntesis del diseño. D. Síntesis del Diseño El reporte de los recursos utilizados en el diseño de la ALU, se presenta al hacer click sobre View Synthesis Report de la opción Synthesize – XST de la ventana Processes for Source. Para esta aplicación, se utilizaron los recursos que se presentan en la Tabla I. TABLA II. UTILIZACIÓN DE RECURSOS DE LA FPGA XCS200E E. Simulación Para la simulación de la ALU, se utiliza el programa ModelSim [10]. El primer paso consiste en compilar el archivo vhdl correspondiente, posteriormente se abren las ventanas wave y signal , las cuales van a permitir forzar los valores de los puertos de entrada A, B y la señal de selección sel (ventana signal) y ver la simulación del módulo ALU (ventana wave). La ventana signals presenta las señales definidas en entity. Los valores de las señales de entrada –sel, a, b-, se forzan, mientras que los valores de las señales de salida –y, ban-, se dejan indeterminados: undefined; tal y como se presenta en la Figura 9. La simulación para A=10101010, B=10101010 y los ocho posibles valores de sel, se presenta en la Figura 10. DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 45 F. Asignación de pines Se utiliza la tarjeta DIO4 para la visualización del funcionamiento de la ALU, la cual es un periférico que contiene 8 switches, 5 pulsadores, 8 leds y 4 displays de 7 segmentos. Esta tarjeta se conecta con la DS2B a través de alguno de los puertos de expansión. Fig. 10 Simulación en tiempo de la ALU para A y B fijos y sel todos los valores. Se seleccionan los pines de la DIO4 que corresponden a BTN3, BTN4, BTN5 –los cuales se utilizan como señal deselección-, SW1, SW2, SW3, SW4, -para los bits más significativos de la señal de entrada A-, SW5, SW6, SW7, SW8, -para los bits más significativos de la señal de entrada B-, los leds LED5 hasta LED8 para la señal de salida de la ALU y LED4 para el acarreo de la operación de suma. La Tabla II, presenta la relación de los pines de la tarjeta D2SB [11] con su correspondencia con los pines de la tarjeta DIO4, [12] para las señales mencionadas en el párrafo anterior. Para efectuar la asignación de los pines, se debe seleccionar la opción User Constraints Assign Package Pin, de la ventana Processes for Source; la cual se presenta en Fig 12. Fig. 11 Puertos de expansión y enrutamiento de las señales para la tarjeta DS2B. Tomado de [9] TABLA II. RELACIÓN DE PINES D2SB & DIO4 DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 46 En la parte izquierda aparecen los puertos definidos en entity, y en la parte derecha los pines de la FPGA. DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 47 G. Programación El software genera el archivo de programación, el cual configura los componentes internos del dispositivo. Este proceso se realiza mediante 4 pines del PLD, los cuales son: TDO, TDI, TMS y TCK, y desde el computador por el puerto paralelo. Dado que el dispositivo a usar es una FPGA, su naturaleza es RAM, es decir que cada vez que se suspenda la fuente de alimentación la configuración del dispositivo desaparece. Las Fig. 13 y Fig 14, muestran las ventanas de configuración, dentro de las cuales se puede seleccionar el tipo de puerto a usar para la programación, así como la velocidad y el número de dispositivos que se quieren configurar con la misma descripción. Fig. 13. Pantalla para la programación del dispositivo Fig. 14 Programación en curso CONCLUSIONES La descripción en VHDL de un sistema digital permite independencia de las referencias de los circuitos integrados comerciales, ya que está descripción se relaciona con el funcionamiento del dispositivo que se está modelando, y de esta forma no se pierde vigencia en el diseño realizado. El ahorro en tiempo en la elaboración de aplicaciones es bastante notorio, siempre y cuando se tenga un conocimiento previo del lenguaje de descripción de hardware que se utiliza y fundamentos teóricos de sistemas digitales. Las modificaciones en el diseño no necesitan un esfuerzo adicional notable con respecto a los desarrollos hardware convencionales. Las herramientas CAE-CAD, permiten no solamente programar dispositivos CPLDs y FPGAs, sino que además permiten realizar la simulación del diseño, de esta forma se puede verificar su correcto funcionamiento. Debido a los recursos totales disponibles en las FPGAs, se pueden realizar diseños bastante complejos, que contengan integrados como procesadores, DPSs, entre otros, con la ventaja de desarrollarlo de acuerdo a las condiciones específicas de la aplicación. DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 48 DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS DISEÑO VHDL DE SISTEMAS DIGITALES SOBRE DISPOSITIVOS LÓGICOS PROGRAMABLES FPGAS 49 BIBLIOGRAFÍA [1]. D J Smith. HDL Chip Design. A practical guide for designing, synthesizing and simulating ASICs and FPGAs using VHDL or Verilog. 1998 [2]. M A Freira. Introducción al lenguaje VHDL. Universidad Politécnica de Madrid. [3]. IEEE Standard VHDL Languaje Reference Manual, IEEE Standard 1076. 2000 [4]. B Stephen. Fundamentals of digital logic In VHDL. Mc Graw Hill. 2000 [5]. S Brawn, J Rose. Architecture of FPGAs and CPLDs: A Tutorial. Disponible en: http://www.eecg.toronto.edu/~jayar/pubs/brown/survey.pdf [6]. Xilinx. An Introduction to Xilinx Products. 1999. Disponible en: http://bwrc.eecs.berkeley.edu/Research/Pico_Radio/Test _Bed/Hardware/Documentat ion/Xi l inx/ intro.pdf [7]. XcellJournal. The authoritative Journal for programmable logic users. Issue 46, Summer 2003. Xilinx, Inc. [8]. ISP Standards & Specifications. IEEE Std 1149.1 Background. Disponible en: http://www.xilinx.com/xlnx/xil_prodcat_product.jsp?title =isp_standards_specs#1149.1 [9]. ISE 6 In Depth Tutorial. Disponible en http://direct.xilinx.com/direct/ise6_tutorials/ise6tut.pdf [10]. ModelSim. Xilinx Edition II. Tutorial. Version 5.7c [11]. Digilent D2-SB. System Board. Reference Manual. Sep, 2003. Disponible en: http://www.digilentinc.com/Data/Products/D2SB/D2SB- rm.pdf [12]. Digilent DI04 Peripheral Board. Reference Manual. Sep, 2003. Disponible en: http://www.digilentinc.com/Data/Products/DIO4/DIO4 - rm.pdf
Compartir