Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
56 vistas28 páginas

1programación de FPGA S

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 28

Programación de FPGA´s o

CPLD’S en una aplicación


GERARDO JARAMILLO TIRADO
FPGA (Field Programmable Gate Array)
las FPGA (Field Programmable Gate
Introducción Array) son circuitos lógicos programables
directamente por el usuario, lo cual
Las FPGA conforman actualmente la requiere de herramientas de costo
máxima evolución de los PLDs relativamente bajo, como lo son el
(Programmable Logic Device), definidos software de desarrollo y el dispositivo
éstos como circuitos integrados en los grabador. La grabación o programación
que se pueden programar ecuaciones de uno de estos dispositivos se puede
lógicas booleanas, tanto combinatorias llevar a cabo en milisegundos.
como secuenciales. Existen actualmente
una gran variedad de estos chips, y
algunos de ellos pueden contener hasta
10,000 compuertas lógicas.
¿Qué es una FPGA?

Básicamente, un dispositivo FPGA es un


dispositivo semiconductor que contiene
bloques de lógica cuya interconexión y
funcionalidad se puede programar. La lógica Históricamente las FPGAs surgen como una
programable puede reproducir desde funciones evolución de los conceptos desarrollados en las
tan sencillas como las llevadas a cabo por una PLAs (Programmable Logic Array) y los CPLDs
compuerta lógica o un sistema que combine (Complex Programmable Logic Device).
hasta complejos sistemas en un chip.
Arquitectura General de las FPGAs
Una FPGA consiste en arreglos de varios bloques
programables (bloques lógicos) los cuales están
interconectados entre sí con celdas de entrada/salida
mediante canales de conexión verticales y horizontales, tal
como muestra la figura En general, se puede decir que
posee una estructura bastante regular, aunque el bloque
lógico y la arquitectura de ruteo varían de un fabricante a
otro.
La estructura de una FPGA, comparada
con la de un CPLD, es mucho más
regular, y se encuentra más orientada a
diseños que manejan mayores
transferencias de datos y registros, en
tanto que los CPLD implementan más
eficientemente diseños con una parte
combinable más intensa.

La figura 4 muestra a primera vista la


estructura correspondiente de cada
dispositivo.
Cada bloque lógico de un CPLD
tiene su propia parte combinacional
que permite realizar un gran
número de funciones lógicas
programables, más un biestable
(flip-flop) asociado al pin de
entrada/salida. Por su parte, la
arquitectura de la FPGA cuenta
también con un bloque lógico con
una parte combinacional y una
parte secuencial. La parte
combinacional es mucho más
simple que la existente en una
CPLD, mientras que la parte
secuencial posee uno o dos
biestables, que no están
generalmente asociados a un pin
de entrada/salida, pues los bloques
lógicos se distribuyen regularmente
en todo el dispositivo.
Bloques Lógicos Configurables (CLB)
El bloque lógico consta de una parte combinacional, que permite implementar
funciones lógicas booleanas, más una parte secuencial que permite sincronizar la
salida con una señal de reloj externa e implementar registros.
La parte combinacional varía de un fabricante a otro. A continuación,
explicaremos dos de ellas:

1. Bloque lógico basado en LUT (look-up table): Una LUT es un componente


de celdas de memoria SRAM que almacenan una tabla de verdad, como la de la
figura 5. Las direcciones de las celdas son las entradas de la función lógica que
se quiere implementar, y en cada celda de memoria se guarda el resultado para
cada una de las combinaciones de las entradas. En una LUT de n x 1 es posible
implementar cualquier función lógica de n entradas.
2. Bloque lógico basado en multiplexores: El bloque lógico basado en multiplexores,
como el de la figura 6, se caracteriza porque requiere mucha menos lógica que el
anterior basado en una LUT, y, en consecuencia, ocupa mucha menos área. De este
modo, se pueden implementar mayor número de bloques lógicos en el mismo espacio,
o, para el mismo número de bloques disponer de más espacio para incrementar los
recursos de ruteo. Como contrapartida, no se puede implementar cualquier función
lógica de n entradas, como ocurría con las LUTs. En caso necesario, esta función lógica
hay que repartirla entre varios bloques lógicos.
La estructura de los bloques lógicos y las formas en que
éstos pueden ser interconectados, tanto salidas como
entradas de los bloques, varía de acuerdo al fabricante.
En general un bloque lógico tiene menos funcionalidad
que la combinación de sumas de productos y
macroceldas de un CPLD, pero como cada FPGA tienen
una gran cantidad de bloques lógicos, es posible
implementar grandes funciones utilizando varios de ellos
en cascada.
Interconexión entre bloques lógicos
Además de los bloques lógicos, también es importante la tecnología utilizada para crear las conexiones entre los
canales y tecnología de programación. Las más importantes son las siguientes:
Antifusible (Antifuse): Una FPGA que utiliza este tipo de tecnología sólo se puede programar
una sola vez, y utilizan algo similar a un fusible para las conexiones. La diferencia entre un fusible
y un antifusible es que el primero se desactiva deshabilitando la conexión, en cambio, para el
segundo se produce una conexión cuando son programados, por lo que normalmente se
encuentran abiertos. La desventaja obvia es que no son reutilizables, pero por otro lado
disminuyen considerablemente el tamaño y costo de los dispositivos.
● SRAM (StaticRAM): Estas guardan la configuración del circuito, es decir, que las SRAM son utilizadas como

generadores de funciones y además son usadas para controlar multiplexores, que están incluidos en las

FPGAs, y la interconexión entre bloques. En éstas el contenido se almacena mediante un proceso de

configuración en el momento de encendido del circuito que contiene la FPGA, ya que al ser SRAM, el

contenido de la memoria se pierde cuando se deja de suministrar energía; la información binaria de las celdas

SRAM generalmente se almacena en memorias seriales EEPROM conocidas como memorias de

configuración o celdas de configuración. En el momento de encendido del circuito toda la información binaria

es transferida a los bloques e interconexiones de la FPGA mediante el proceso de configuración el cual es

generalmente automático, dado que la propia FPGA contiene un circuito interno que se encarga de hacer toda

la programación.
● Flash: Las FPGAs basadas en celdas flash recogen las ventajas principales de las dos técnicas

anteriores situándose en un punto intermedio. Su tamaño es más reducido que el de una celda de

SRAM, aunque sin llegar al tamaño reducido de un antifusible; son reprogramables, no obstante la

velocidad de programación es más lenta que en el caso de una SRAM; y son no volátiles, por lo que no

necesitan dispositivos auxiliares para guardar la configuración interna, como en el caso de la SRAM.
Una FPGA que tiene una gran cantidad de canales de interconexión tiende a tener pequeños bloques lógicos con muchas
entradas y salidas en comparación con el número de compuertas que contiene el bloque. Este bloque lógico se caracteriza por
ser bastante sencillo, con poca lógica en su parte combinacional. Este es el caso del bloque lógico a base de multiplexores.

Este tipo de FPGA generalmente utiliza tecnología antifusible. Por otra parte, una FPGA que tiene una estructura pequeña en
canales de interconexión tiende a tener grandes bloques lógicos con pocas entradas y salidas, en comparación con el número de
compuertas que existe en el bloque. Este es el caso del bloque lógico basado en LUTs, que permiten implementar cualquier
función lógica del mismo número de entradas. Este tipo de FPGA generalmente está fabricado con tecnología SRAM.
Bloques entrada/salida (IOB)
Al igual que en los CPLDs, la función de un bloque de entrada/salida es permitir el paso de una
señal hacia dentro o hacia el exterior del dispositivo. Además debe contar con recursos tales como:

● Salidas configurables como TRI-STATE u open-collector.

● Entradas con posibilidad de pull-up o pull-down programables.

● Registros de salida.

● Registros de entrada.
tenemos como ejemplo un diagrama en
bloques simplificado de un bloque de
entrada/salida de la familia 4000 de las
FPGA de Xilinx.
Tiempos de propagación
El cálculo de los retardos incluidos en un diseño basado en FPGAs no es tan fácil de predecir como en el caso
de un CPLD. La propia estructura matricial de estos circuitos hace difícil saber cuántas celdas básicas,
interconexiones programables o bloques de entradas/salida se utilizan para cada señal. Esto hace necesario
conocer cómo se ha realizado la interconexión entre los bloques en el dispositivo para tener un conocimiento
exacto de los retardos de propagación debidos a cada uno.

Debido a este factor, las herramientas de desarrollo para FPGAs suelen incluir un analizador de tiempos, que
sirve para calcular tiempos de set-up, de clock-to-output, y sobre todo dar una estimación de la frecuencia
máxima de operación.
Programación
La tarea del programador es definir la función lógica que realizará cada uno de los CLB, seleccionar el modo de trabajo de cada
IOB e interconectarlos.

El diseñador cuenta con la ayuda de entornos de desarrollo especializados en el diseño de sistemas a implementarse en una
FPGA. Un diseño se puede llevar a cabo, ya sea como un diagrama esquemático, o haciendo uso de un lenguaje de programación
especial.

Las figuras muestran cómo se realiza la programación de una tarjeta FPGA marca Altera, en lenguaje VHDL.
VHDL
Es el acrónimo que representa la combinación de VHSIC (Very High Speed Integrated Circuit) y HDL. Es un lenguaje textual
de alto nivel, definido por el IEEE (ANSI/IEEE 1076-1993), utilizado para la descripción del hardware de los sistemas digitales.
Entre sus principales características se pueden mencionar:

● Lenguaje estándar.

● Soporte de las principales compañías proveedoras de herramientas CAD (Diseño Asistido por Computadora).

● Existen formas metódicas para el diseño de máquinas de estados, filtros digitales, bancos de pruebas etc.

● Flexibilidad de implementación en circuitos integrados, el código VHDL es portable entre herramientas, aunque

normalmente es necesario hacer ajustes según el dispositivo.

● Es un lenguaje popular cuyo número de usuarios sigue aumentando.


Aplicaciones
Cualquier circuito de aplicación específica puede ser implementado en una FPGA, siempre y cuando ésta disponga de los
recursos necesarios. Las aplicaciones donde más comúnmente se utilizan las FPGA incluyen a los DSP, radio definido por
software, sistemas aeroespaciales y de defensa, prototipos de ASICs, sistemas de imágenes para medicina, sistemas de visión
para computadoras, reconocimiento de voz, bioinformática, emulación de hardware de computadora, entre otras. Cabe notar
que su uso en otras áreas es cada vez mayor, sobre todo en aquellas aplicaciones que requieren un alto grado de paralelismo.
Conclusiones
La importancia de los dispositivos lógicos programables radica en el hecho de que la mayoría de
los equipos electrónicos modernos incluyen en su diseño PLDs, por lo que todo profesional
relacionado con el mantenimiento o fabricación de equipo electrónico debería dominar dicha
metodología.
Los PLDs combinan muchos de los beneficios de la lógica discreta, utilización de circuitos
integrados comerciales TTL o CMOS, con la gran ventaja de implementar circuitos a la medida del
cliente. Entre otras ventajas de esta tecnología son:

Diseño sencillo
Alto rendimiento
Fiabilidad
Ahorro en costo
Reprogramación
Seguridad
En consecuencia, los circuitos lógicos programables tienen un gran campo de
aplicación en la implementación de circuitos lógicos de todo tipo.
Entre la amplia gama de PLDs tenemos a las FPGAs, que son utilizadas para
diseños que manejan una mayor transferencia de datos y registros; además
permiten implementar dentro de ellas memorias del tipo RAM, ROM, FIFO, etc, a
través de sus bloques de memoria.
La elección de la familia de FPGA a utilizar dependerá de la cantidad de lógica
combinacional (compuertas), la cantidad de lógica secuencial (flip-flops) y por
supuesto la cantidad de memoria a implementar.

También un factor a tener en cuenta son los tiempos de propagación internos,


asimismo la cantidad de pines del dispositivo.
FIN DE LA PRESENTACION

También podría gustarte