Está en la página 1de 10

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/268253760

GUÍA PARA PROGRAMACIÓN DE FPGAS

Conference Paper · July 2003

CITATIONS READS

0 22,653

5 authors, including:

Joaquín Olivares Gustavo Minnucci


University of Cordoba (Spain) Rosario National University
71 PUBLICATIONS   349 CITATIONS    1 PUBLICATION   0 CITATIONS   

SEE PROFILE SEE PROFILE

Carlos Diego Moreno Moreno Francisco Javier Quiles Latorre


University of Cordoba (Spain) University of Cordoba (Spain)
46 PUBLICATIONS   97 CITATIONS    64 PUBLICATIONS   276 CITATIONS   

SEE PROFILE SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Clock Synchronization in WSN under varying temperature environments View project

Electronic Sensoring, Data Adquisition and Monitoring for Living Systems View project

All content following this page was uploaded by Carlos Diego Moreno Moreno on 04 March 2015.

The user has requested enhancement of the downloaded file.


GUÍA PARA PROGRAMACIÓN DE FPGAS
Joaquín Olivares, Gustavo Minnucci, C. Diego Moreno, Fco. Javier Quiles,
J. Ignacio Benavides
Escuela Politécnica Superior de la Universidad de Córdoba
olivares@uco.es

1. RESUMEN
Se ha realizado un manual de prácticas para alumnos de segundo ciclo de
Ingeniero en Automática y Electrónica Industrial para la asignatura de Sistemas
Electrónicos Digitales, con el objeto de facilitar y servir de orientación en el
proceso de programación bajo el Lenguaje de Descripción Hardware VHDL, de
simulación y síntesis de circuitos digitales sobre FPGAs, para ello se mostrarán
aspectos relevantes como la estructura de una FPGA y las características
relevantes de VHDL y del entorno de Xilinx.

2. INTRODUCCIÓN
Si pensamos en la complejidad que ya de por si conllevan el diseño, la
programación y la simulación en el proceso del Diseño Digital, sumado a la
complejidad, ya no sólo para realizar el proceso de síntesis sobre un dispositivo
sino también para comprender y utilizar las herramientas existentes para
síntesis, que presentan áridos y extensos libros de soporte, es comprensible
que frecuentemente no se cubran los aspectos referentes a la síntesis e
implementación práctica en las asignaturas troncales referentes a esta materia,
por carestía de tiempo.

El presente manual de prácticas se constituye en una guía precisa que


contempla los diversos procesos necesarios para el diseño, programación e
implementación de circuitos digitales en estos dispositivos. En especial
explotaremos las posibilidades de la FPGA Xilinx XC4005-XL y de todos sus
componentes, mostrando ejemplos completos y proponiendo ejercicios en los
que el alumno podrá dar utilidad a circuitos digitales genéricos para
aplicaciones particulares. La idea del proyecto es que el alumno culmine el
proceso de diseño, programación y simulación de los circuitos digitales con el
proceso de utilización de herramientas de síntesis, la implementación y por
último la verificación de un dispositivo real sin necesitar demasiado tiempo para
familiarizarse con los complejos entornos de síntesis.

3. CARACTERÍSTICAS DEL LENGUAJE DE DESCRIPCIÓN HARDWARE


VHDL
En este apartado se da una introducción y revisión de las principales
características y limitaciones del lenguaje. Los puntos principales incluidos en
el manual se presentan a continuación, algunos de los cuales comentados: [2]
[3]
3.1. Estándar del lenguaje
IEEE std1076-1993.
3.2. Concurrencia
El comportamiento de un
sistema Digital viene dado en w<= not a;
x <= a and b;
función de sus componentes y y <= c and w;
de la interconexión física de los z <= x or y;
mismos, por tanto, este lenguaje
debe permitir simular dichos
componentes y las conexiones
entre los mismos, apareciendo Tabla 1.
los conceptos de entidad, a) Diseño VHDL b) Instrucciones VHDL
arquitectura y señal.

En la tabla 1 se muestra un circuito y su representación concurrente en


lenguaje VHDL.

3.3. Secuencialidad
Para procesos complejos que la mente humana no es capaz de discurrir
concurrentemente, podemos crear bloques que se evalúen secuencialmente,
aparecen los conceptos de process y variable.

3.4. Modularidad
Podemos crear componentes con una funcionalidad y parámetros definidos que
pueden ser reutilizados en posteriores diseños.

3.5. Limitaciones
El lenguaje proporciona una funcionalidad amplia, dado que es un lenguaje
compatible entre diferentes herramientas de CAD y portable entre distintos
Dispositivos Electrónicos programables, por tanto no todas las operaciones que
permita un simulador de VHDL son implementables en todas las herramientas
CAD ni en todos los Dispositivos.

3.6. Otras características relevantes


También se afrontan otros aspectos como la estructura sintáctica, tipo de los
datos, jerarquía, compatibilidad, portabilidad, documentación, temporización,
COREs, etc.

4. DISPOSITIVOS DE LÓGICA PROGRAMABLE PLA, GAL, PAL, CPLD,


FPGA.
El uso de dispositivos lógicos programables se ha difundido entre los
diseñadores de hardware debido a las múltiples ventajas que estos poseen,
algunas de ellas son que permiten reemplazar a gran cantidad de
componentes discretos, admiten reprogramación y permiten un diseño
relativamente simple, en la figura 1 se muestra la estructura general de un
dispositivo de lógica programable. [1]

Entradas Salidas

In 0 Q0
In 1 Q1
In 2 Función Matriz Matriz Función Q2
de AND OR de
entrada salida
In n Qp

Realimentación Estructura básica

Figura 1. Estructura general de un PLD

4.1. FPGA (Field Programmable Gate Array)


Las FPGA son Matrices de Puertas Programables en Campo. Simplemente son
matrices de puertas eléctricamente programables que contienen múltiples
niveles de lógica. Las FPGA se caracterizan por altas densidades de puerta,
alto rendimiento, un número grande de entradas y salidas definibles por el
usuario, un esquema de interconexión flexible, y un entorno de diseño similar al
de matriz de puertas. No están limitadas a la típica matriz AND-OR. Por contra,
contienen una matriz interna configurable de relojes lógicos (CLBs) y un anillo
de circunvalación de bloques de entrada/salida (IOBs).

Cada CLB contiene lógica programable combinacional y registros de


almacenamiento. La sección de lógica combinacional es capaz de implementar
cualquier función booleana de sus variables de entrada.

Cada IOB puede programarse independientemente para ser una entrada, y


salida con control tri-estado o un pin bidireccional. También contiene flip-flops
que pueden usarse como buffers de entrada y salida. Los recursos de
interconexión son una red de líneas que corren horizontalmente y verticalmente
las filas y columnas entre el CLBS.

Los interruptores programables conectan las entradas y salidas de IOBS y


CLBS a líneas cercanas. Las líneas largas recorren la anchura o longitud
entera del dispositivo, estableciendo intercambios para proporcionar una
distribución de señales críticas con la mínima demora o distorsión.

Los diseñadores que usan FPGAs pueden definir funciones lógicas en un


circuito y revisar estas funciones como sea necesario. Así, las FPGAs pueden
diseñarse y verificarse en unos días, a diferencia de las varias semanas
necesarias para las matrices de puerta programables.
4.2. Estructura de una FPGA
En realidad, la estructura interna, ver figura
2, de una FPGA depende de su tipo y
fabricante.

En este apartado se intenta mostrar un


esquema genérico para las FPGA´s a
utilizar en las prácticas sucesivas.

Los datos provistos por el fabricante son


una herramienta insustituible a la hora de
evaluar la arquitectura interna del
dispositivo y su funcionamiento, por lo que
resulta conveniente su lectura. [8]

A continuación, se verán algunas


características de la familia Xilinx XC4000,
las cuales presentan tres tipos de Figura 2. Estructura interna de una FPGA
componentes diferenciados en su interior:
CLB, IOB y red de Interconexión.

4.2.1. CLB (Bloques lógicos configurables)

Los CLB son los “ladrillos”


básicos de la FPGA. Se
encuentran distribuidos
uniformemente por toda el
área de la misma y son
idénticos entre sí.

Dependiendo del tipo de


FPGA, ver figura 3, estos
bloques lógicos poseen
distintos componentes.

Los CLBs son configurables,


estableciéndose en ellos las
conexiones y funciones Figura 3. Estructura interna de un CLB de una FPGA de la
que se implementarán. familia XC4000 de Xilinx
4.2.2. IOB (bloques de entrada/salida)

Los IOB son una especie de


CLB especializado, que se
encuentran junto a los pines
de conexión externa al chip.
En la figura 4 se muestra la
estructura interna de un IOB.

Su función es interconectar la
lógica interna con el exterior
permitiendo definir distintas
características eléctricas
como: ser dirección de datos
del pin (Entrada / Salida),
Configuración en estado de Figura 4. Estructura interna de un IOB de una FPGA de la
reposo (Pull Down / Pull Up), familia XC4000 de Xilinx
tipo de IO (combinacional o
registrada), etc.

4.2.3. Red de Interconexión

La Red de Interconexión,
mostrada en la figura 5, es un
conjunto de caminos formados
por Wires (líneas de conexión) y
PSM (Programmable Switch
Matrix o matrices de
interconexión - magic boxes).
Éstas últimas permiten la
conexión de distintos Bloques
Lógicos Programables (CLB's)
entre sí y/o la conexión con
Bloques de Entrada/Salida
(IOB's). Figura 5. Estructura interna de la Red de Interconexión de
una FPGA de la familia XC4000 de XIlinx

Todas las funciones lógicas, multiplexores, decodificadores, biestables,


memorias, etc, se implementan utilizando los componentes internos de los
CLB's. Cuanto mayor es el circuito a diseñar, mayor será la cantidad de CLB's
necesaria para implementarlo.

El funcionamiento de los distintos IOBs, CLBs y Redes de Interconexión queda


determinado por un Bitstream ( ó tira de bits) de configuración que son
cargados después del reset del dispositivo. Este Bit-Stream es el que
determina el funcionamiento del dispositivo y otorga al mismo la característica
de Dispositivo Reconfigurable.
5. LAS HERRAMIENTAS DE DISEÑO, COMPILACIÓN Y SIMULACIÓN

Para programar una FPGA de la familia Xilinx XC4000 en nuestro caso, vamos
a necesitar una serie de herramientas sobre las cuales se ofrece un manual al
alumno. Las herramientas mostradas se enumeran a continuación: [4] [5] [7]

5.1. Xilinx Foundation 2.1i


Entorno integrado de
desarrollo para la
generación, compilación y
depuración de programas
VHDL y esquemáticos, en la
figura 6 se muestra la
interfaz de usuario.

Esta herramienta incluye un


simulador que evalúa tanto
consideraciones de índole
funcionales como
temporales.

Permite manejar proyectos,


compilar componentes para Figura 6. Entorno de programación Xilinx Foundation
2.1i
librerías y generar archivos
binarios de configuración
para programación de diferentes FPGAs de la familia Xilinx.

5.2. Utilidades XESS


Una vez creado el código para programar la FPGA, debemos introducir el
código físicamente en la FPGA, y además debemos ser capaces de
comunicarnos con los diferentes puertos de la misma y poder configurarla
apropiadamente, XESS constituye un conjunto de utilidades para la
comunicación con la tarjeta FPGA, se muestra al alumno el funcionamiento de
las mismas. Estas contemplan la transmisión de datos a la FPGA, activación de
puertos asociados a pines en la FPGA, configuración del reloj programable y
test de funcionamiento. [8] [9]

5.2.1. XESS GXSLoad


Esta herramienta, figura 7, permite la carga de los
archivos binarios de configuración generados por
Xilinx Foundation a la FPGA de la Kit de
desarrollo Xess XS-40.

También permite la carga de la memoria RAM


estática así como la programación de la memoria
Flash de almacenamiento permanente.

Figura 7. Xess GXSLoad.


5.2.2. XESS GXSPort

Esta herramienta, mostrada en la


figura 8, permite la activación de
líneas del puerto paralelo que
están conectadas a pines de la
FPGA. Por este medio se
pueden generar estímulos
externos. Figura 8. Xess GXSPort.

5.2.3. XESS GXSTest

Esta herramienta permite el testeo de


funcionamiento del Kit Xess XS-40 y la
conexión del puerto paralelo, se
muestra en la fig. 9.

Figura 9. Xess GXSTest.

5.2.3. XESS GXSSetClk

Esta herramienta permite la


configuración del reloj programable
del Kit de desarrollo XS-40. Consta de
un divisor de frecuencia programable
siendo posible obtener señales de
reloj según la expresión:

T[clk] = K * T[xtal] Figura 10. Xess GXSTest.

T[xtal] = 10 nSeg (f[xtal] = 100 MHz) y K = 1,2,3,4…

6. HERRAMIENTAS HARDWARE

6.1. Kit de desarrollo para FPGA

En un primer lugar se presenta la


tarjeta de prácticas XS 40005 XL,
mostrando las características
internas de la misma, a nivel de
estructura y arquitectura, esta tarjeta
se muestra en la figura 11.

Figura 11. Xess GXSTest.


Los kits de desarrollo de FPGA permiten la
ejecución en hardware los programas.
Además, implementan interfaces de
comunicaciones PS2, salida de video VGA,
RAM estáticas. En la figura 12, se muestran
las conexiones con los interfaces de
comunicaciones.

Poseen pines de conexión inferior que


permiten extender los pines de la FPGA a
Figura 12. Conexionado
otra placa específica o conectar instrumentos
de medición.

6. TUTORIALES DE DISEÑO E IMPLEMENTACIÓN

Una vez conocidas las herramientas y el entorno, es el momento de realizar


diferentes prácticas que proporcionen al alumno una visión práctica de los
conocimientos impartidos en la asignatura.

Este punto refleja la segunda parte del manual, que consiste en una ‘libreta de
prácticas’ en ella se describen una serie de prácticas mediante imágenes,
código fuente VHDL, comportamiento de los componentes presentados y se
proponen ciertas actividades al alumno, las prácticas propuestas se enumeran
a continuación: [6]

• Circuitos Combinacionales.
• Circuitos Secuenciales.
• Máquinas de Estados.
• Utilización de la Memoria Interna y Externa incluida en la XC4005-XL.
• Comprensión de la importancia de la configuración del reloj.
• Utilización del LED incluido en la tarjeta para ofrecer resultados.

Cada práctica propuesta proporciona al alumno los fundamentos teóricos


generales para afrontarla, incluyendo teoría, esquemas y código VHDL sobre
los componentes sobre los que se articula la práctica, registros, contadores,
multiplexores, utilización de la RAM de la tarjeta, etc., posteriormente se
proponen al alumno los ejercicios a realizar que dotarán al mismo de un mayor
conocimiento sobre el lenguaje y el comportamiento de los componentes, para
ello el alumno deberá rellenar en un espacio reservado a tal fin en el manual,
cuestiones referentes a la práctica y trazar el cronograma correspondiente a la
simulación del diseño.
7. CONCLUSIONES

Se ha elaborado un manual para alumnos de la asignatura Sistemas


Electrónicos Digitales de la titulación de Ingeniero en Automática y Electrónica
Industrial, este manual tiene dos partes bien diferenciadas, la primera parte
tiene como objeto, dotar a los alumnos con fundamentos sobre Dispositivos
Lógicos Programables, Instrumentación y el Lenguaje de Descripción Hardware
VHDL, por otra parte, la segunda parte del manual se constituye en una libreta
de prácticas que aportará al alumno conocimientos sobre Diseño de Sistemas
Digitales, el alumno deberá programar, simular e implementar las prácticas
propuestas, respondiendo en el espacio habilitado a tal fin cuestiones
referentes a la práctica y dibujando el cronograma obtenido en la simulación de
la práctica.

8. BIBLIOGRAFÍA Y RECURSOS INTERNET

[1] Peter J. Ashenden. 1996. "The Designer's Guide to VHDL".


Ed. Morgan Kaufmann.

[2] David Pellerin. 1997. "VHDL Made Easy!".


Ed. McGraw-Hill.

[3] S. A. Pérez. 2002. “Diseño de Sistemas Digitales con VHDL”. Ed.


Thomson.

[4] Xilinx, Inc. 1999. “Foundation Series 2.1i Quick Start Guide”.

[5] Xilinx, Inc. 1999. “Foundation Series 2.1i User Guide”.

[6] John F. Wakerly. 2001. “Diseño Digital Principios y Prácticas”. Ed.


Prentice-Hall.

[7] David E. Vanden Bout. 2001. “Pragmatic Logic Design”.


www.xess.com/pragmatic-2_1.html

[8] Xess Corporation. “XS40-005XL Prototyping Board with 3.3V, 9000


gate FPGA”. www.xess.com/prod004.php3

[9] Xess Corporation. 1998. “XS40, XSP, and XS95 Board Manual”.
XSTOOLS CDROM

View publication stats

También podría gustarte