Logo Studenta

Diseño VHDL en FPGAs

¡Este material tiene más páginas!

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

Continuar navegando