You are on page 1of 22

LOS FPGA

INTRODUCCION
Durante el estudio de la ingeniera electrnica es necesario el diseo y montaje de
circuitos digitales para entender su funcionamiento, para lo cual en la universidad se
cuenta con un laboratorio que realiza prstamo de elementos electrnicos segn los
requerimientos del circuito a montar y probar, presentando dificultad en el proceso de
montaje porque no hay los suficientes elementos o si se requiere modificar algo en el
circuito inicial, demanda ms tiempo y realizar modificaciones en el circuito ubicado
sobre el protoboard es difcil, luego surge la necesidad de utilizar un sistema que
permita realizar diseo de circuitos digitales y simulacin para facilitar el proceso de
aprendizaje, esta caracterstica la presenta los FPGA que es un dispositivo lgico
programable.

QU SON LOS FPGAS?
Las FPGAs son miembros de un grupo de dispositivos llamados Dispositivos
programables en campo, conocidos en ingls como Field-Programmable Devices (FPD).
Las FPGAs podemos definirlas como un circuito integrado que contiene una matriz de
celdas lgicas que pueden ser programadas por el usuario para actuar como un
circuito digital a la medida. Las FPGA pueden ser utilizadas para cualquier aplicacin en
la que son utilizados los ASICs. Por ejemplo, uno puede implementar en una FPGA
funciones digitales de decenas de puer-tas lgicas como multiplexores,
decodificadores, sumadores, mquinas de estado, memorias, microprocesadores,
funciones de procesamiento digital tales como filtros y transformadas o incluso,
sistemas completos en un solo circuito integrado, conocidos en ingls como System On
Chip (SOC). Las FPGAs tienen un costo de desarrollo de producto relativamente bajo,
un ciclo de diseo corto, y pueden ser reprogramadas muchas veces, incluso para
corregir pequeos fallos de diseo en los productos finales.

HISTORIA DE LAS FPGAS

Antes de la invencin de los FPD los diseadores tenan que usar dispositivos discretos
especializados que contenan algunas decenas de puertas lgicas, de forma que para
conseguir un circuito de mediana complejidad eran necesarias algunas decenas de
circuitos integrados. La industria de las FPGAs tiene su fundamento en las tecnologas
de memoria de solo lectura programable y en los arreglos lgicos programables,
conocidos en ingls como Programmable Read-Only Memory (PROM) y Programmable
Logic Array (PLA), respectivamente. El primer chip programable por el usuario que
poda implementar circuitos lgicos fue la PROMs, en la cual, las lneas de direcciones
sirven como entradas del circuito lgico y las l neas de datos como salidas. Sin
embargo, las funciones lgicas raras veces requieren un gran nmero de trminos
producto,
con lo que las PROM son ineficientes para implementar circuitos lgicos. El primer
dispositivo desarrollado especficamente para implementar funciones lgicas fue el
PLAs, que se muestra en la gura 2.2. Este dispositivo consiste a en dos niveles de
puertas lgicas: el primero de puertas AND seguidas de puertas OR. El primer nivel de
puertas serva para implementar los trminos producto mientras que en el segundo
nivel (puertas OR) se implementaban las salidas.












Figura 2.2: Estructura de un PLA

Tambin existi una variante de los PLA en la que el grupo de las puertas OR no era
programable, sino que estaba fija y adems su salida estaba conectada a flip- flops
para implementar lgica secuencial. A este grupo se le llamo lgica de arreglo
programable, conocido en ingls como Programmable Array Logic (PAL) (ver gura 2.3.
Los dispositivos lgicos programables complejos, conocidos en ingls como Complex
Programmable Logic Devices (CPLD) pueden verse como una continuacin de la
arquitectura de los PLAs. Los CPLD incluyen bloques lgicos, localizados en los bordes
del chip y una matriz de conexiones localizada en la parte central, como se muestra en
la gura 2.4. Cada bloque lgico tiene una estructura similar al PLA, por ello, el CPLD
puede verse como un conjunto de PLA en un chip con interconexiones programables.
Ross Freeman y Bernard Vonderschmitt, inventaron en 1985 la primera FPGA viable
(XC2064) y fundaron la compaa Xilinx. La XC2064 ten a puertas e interconexiones
entre puertas
programables, lo que dio comienzo a una nueva era de dispositivos y tambin de
negocios.











Figura 2.3: Estructura interna de una PAL

ARQUITECTURA DE LAS FPGAS
Las FPGAs son los dispositivos programables ms verstiles y poderosos disponibles
hoy en d a. Los elementos principales de una FPGA son la matriz de bloques lgicos, los
bloques de I/O y las l neas de interconexin, como puede verse en la gura 2.5.

BLOQUES LGICOS
Un bloque lgico
usualmente contiene generadores de funciones lgicas Look-Up Table (LUT) y
elementos de almacenamiento (flip- flops). Las LUTs son usadas para implementar
funciones lgicas combinacionales normalmente de cuatro entradas y una salida. Los
elementos de almacenamiento pueden ser usados como flip- flops o latches. Adems
de los elementos mencionados, los bloques lgicos contienen recursos especiales para
manejo de operaciones aritmticas, multiplexores extra para enlazar varios bloques
lgicos en mejores condiciones y lneas de interconexin rpidas para el manejo de
seales de reloj, de acarreo o de reset. En la gura 2.6 puede verse una porcin de un
bloque lgico que contiene una LUT, un flip- flop, y otros recursos especiales.

















Figura 2.4: Estructura interna de un CPLD









Figura 2.5: Estructura
interna de una FPGA
LNEAS DE
INTERCONEXIN

Una FPGA contiene lneas de interconexin flexible para conectar los diversos bloques
lgicos. Hay varios tipos de l neas de conexin en una FPGA: a) lneas largas para
conectar bloques distantes, b) l neas cortas para conectar bloques lgicos adyacentes,
c) lneas rpidas para rutas crticas en circuitos aritmticos, d) lneas de set y reset para
los flip- flops y, e) arboles de reloj dedicados usados para distribuir seales de
sincronizacin. En la gura 2.6 pueden observarse las l neas rpidas para circuitos
aritmticos (CIN, COUT), l neas de reset (SR) y l neas de reloj (CLK).
OTROS RECURSOS
Las FPGAs modernas no limitan sus recursos a los mencionados anteriormente
y contienen otros elementos de alto nivel fijos en silicio tales como:
Bloques de memoria dedicados (Block RAM) que pueden ser utilizados como
ROM, RAM y FIFOs, pudiendo eliminar la necesidad de chips de memoria
externos.
Bloques de manejo de reloj, que son utilizados para sintetizar seales de reloj.
Mdulos DSPs que contienen hardware aritmtico y que son utilizados en
bloques de filtros y en otros algoritmos.
CPUs que en caso del fabricante Xilinx, proporciona varios procesadores
PowerPC
Tranceptores serie especializados, que permiten entradas/salidas de alta
velocidad en varios estndares de comunicacin serie.


















Figura 2.6: Seccin de la estructura interna de un CLB que muestra una LUT y un FF

EVOLUCIN DE LAS FPGAS
Mucho del inters en lgica reconfigurable se ha debido al desarrollo y maduracin de
las FPGAs. El desarrollo de sistemas basados en FPGA ha sido ampliado debido al
crecimiento exponencial en la capacidad en puertas lgicas y a las mejoras de las
prestaciones de los dispositivos configurables debidas a la miniaturizacin y a las
tcnicas de fabricacin [18]. A continuacin de describe brevemente la evolucin de
las FPGAs del fabricante Virtex, atendiendo a su disponibilidad de recursos y a su
velocidad.

DISPONIBILIDAD DE RECURSOS
El nmero de puertas disponibles en las FPGAs ha evolucionado significativamente. Las
primeras FPGAs disponibles en 1987 fueron las XC2004 con 64 CLBs y 9000 puertas
equivalentes. En la dcada final del siglo XX estaban disponibles en el mercado los
dispositivos Spartan con una capacidad mxima de 40,000 puertas lgicas con una
matriz de 28x28 CLB [19]. De la misma l nea de familia anterior, las Spartan-II
contenan 270,000 puertas lgicas,
Una matriz de CLBs de 28x42 y 56 kbits de RAM empotrada [20]. A partir del ao 2006
tambin estuvo disponible en el mercado la familia Spartan-3E, con un sistema de 1.6
millones de puertas lgicas una matriz de 76x58 CLBs, 648 Kbits de RAM empotrada y
36 multiplicadores empotrados [21]. Los dispositivos de 1 milln de puertas de las
FPGAs de la familia Virtex estuvieron disponibles en el mercado en el ao 2000[22] con
una matriz de 64x96 CLBs y adems incluyeron RAM empotrada de hasta 131 kbits. La
familia Virtex-II ten a una capacidad mxima de puertas de 8 millones, una matriz de
112x104 CLBs, 3 Mbits de RAM empotrada y contenan adems 168 multiplicadores
empotrados [23]. Finalmente mencionaremos a la familia Virtex-5, que contiene una
matriz de CLBs de 240x108, 11.6 Mbits de RAM empotrada, hasta dos procesadores
PowerPc empotrados, 1 puerto PCI, tpicamente incluye 4 controladores de acceso a
Ethernet, y para algunas versiones de dispositivos, hasta 192 bloques empotrados
DSP48 (que incluyen multiplicador, sumador y acumulador)[24].

VELOCIDAD
Adems del crecimiento de recursos, las FPGAs han experimentado un crecimiento
exponencial en su desempeo. Las FPGAs Spartan tenan frecuencias mximas de
operacin de 150 MHz, 200 MHz y 300 MHz, para Spartan, Spartan-II y Spartan-3E,
respectivamente [19, 20, 21]. La velocidad de operacin mxima de la familia Virtex
[22] era de 200Mhz, la cual se ve duplicada en la familia Virtex-II con sus 420 MHz de
velocidad de reloj [23]. La hoja tcnica de datos de la familia Virtex-5 establece 550
MHz como la velocidad mxima de operacin interna del dispositivo [24].


FLUJO DE DISEO CON FPGAS

El flujo de diseo con FPGAs normalmente utiliza los siguientes pasos:
Diseo de arquitectura: Que implica el anlisis de los requerimientos del
problema y de la(s) estructura(s) que cumple(n) con dichos requerimientos.
Aqu pueden evaluarse di-versas opciones para seleccionar la que ms
convenga de acuerdo a las especificaciones. Tambin se define los bloques
estructurales, sus interfaces y sus funciones.

Descripcin en HDL: El diseo es descrito formalmente en un lenguaje de
descripcin de hardware, normalmente VHDL o Verilog.


Simulacin funcional: Es deseable Veri car que la descripcin de hardware
corresponde con el circuito que se desea disear. Normalmente las
herramientas de diseo disponen de un bloque de simulacin en el que es
posible dar vectores de prueba a circuito descrito con HDL.

Sntesis: Esta etapa consiste en trasladar el cdigo HDL en una lista de
conexiones, llamada en ingles netlist. La sntesis implica tambin que el diseo
especificado cumpla con algunos criterios de diseo, como rea y velocidad. Si
los criterios no son cumplidos, se pueden ajustar los parmetros de sntesis de
la herramienta para producir una mejor optimizacin. Si aun con los ajustes de
la herramienta, no es posible cumplir con los criterios de diseo, entonces debe
cambiarse la descripcin del hardware en el cdigo HDL y repetir el proceso


Implementacin: Consiste en colocar cada una de las expresiones lgicas
obtenidas en el proceso de sntesis, en los recursos contenidos internamente
de la FPGA destino (Map). Posteriormente el software realiza el emplazamiento
y rutado de los recursos seleccionados (Place and route).

Configuracin: Una vez que el diseo cumple con los requerimientos
planteados y que dicho diseo es empotrable en la FPGA, entonces puede
descargarse a travs de software y hardware de configuracin al chip destino.




APLICACIONES DE LAS FPGAS
La principal aplicacin de las FPGAs est orientada al procesamiento digital de seales
(DSP), la cual es empleada en comunicaciones, procesado de datos, etc. La eleccin de
una FPGA para aplicaciones de tratamiento de seal se debe a su alta frecuencia de
trabajo, a su capacidad de procesamiento en paralelo, y a su bajo precio en
comparacin con los ASICs. En general, la lgica de un CPLD es insuficiente para
realizar dicho procesamiento.

De esta aplicacin se derivan una gran variedad de aplicaciones de las FPGAs,
citndose algunas de ellas a continuacin:
Sistemas de visin artificial: en el mundo actual existen cada vez en ms
nmero dispositivos que disponen de un sistema de visin artificial. Ejemplo de
esto son las cmaras de videovigilancia, robots, etc. Muchos de estos
dispositivos precisan de un sistema para conocer su posicin, reconocer los
objetos de su entorno, reconocer rostros de personas, y poder actuar e
interactuar con ellos de la forma adecuada. Esta caracterstica requiere
manejar unos volmenes de imgenes muy elevados, tratar dichas imgenes
para detectar objetos, reconocer rostros, etc., en la gran mayora de ocasiones
en tiempo real.

Sistemas de imgenes mdicas: cada vez con ms frecuencia se estn
empleando las FPGAs para el tratamiento de imgenes biomdicas obtenidas
mediante procesos de PET, escner CT, rayos X, imgenes tridimensionales, etc.
Estos sistemas de visin mdica cada vez precisan de ms resolucin y de una
capacidad de procesamiento mayor, incluso muchas necesitan poder
desarrollarse en tiempo real, por lo que las prestaciones que ofrecen las FPGAs
de frecuencia y procesamiento en paralelo se adaptan muy bien a estas
necesidades.

Radio definida por software: de forma tradicional, una radio consista en una
antena, encargada de recibir y enviar una seal, y un hardware encargado de
procesar esa seal, filtrarla, modificar su frecuencia, etc. Este hardware no
poda modificar de forma notable la funcionalidad para la cual haba sido
diseada. En la actualidad gran parte de esta funcionalidad se traslada a un
dispositivo electrnico, que con frecuencia suele ser una FPGA, pudiendo
limitarse la parte analgica a una antena y a los convertidores ADC y DAC.



La principal ventaja de este tipo de radio es que su funcionalidad viene definida por el
diseo del software, de forma que su modificacin o actualizacin es sencilla y no
precisa de la sustitucin de ningn elemento de hardware.
Codificacin y encriptacin: la seguridad en el envo de mensajes es
fundamental en la vida diaria, por ejemplo a la hora de enviar un email o de
realizar una compra por internet, y lo es ms an en el mbito militar,
aeronutico y gubernamental. En este terreno, la encriptacin eficiente y
segura de mensajes se convierte en un objetivo prioritario. Las FPGAs pueden
aportar en este terreno su capacidad de manejar grandes volmenes de
informacin y sus bloques optimizados para realizar operaciones aritmticas.

Radioastronoma: la radioastronoma es la ciencia que se encarga de estudiar
los fenmenos que ocurren en el espacio mediante la captacin de la radiacin
electromagntica procedente de ste. De forma similar a las aplicaciones
anteriores, precisa del procesamiento de una gran cantidad de informacin en
el que la FPGA puede aportar todo su potencial.

Reconocimiento de voz: el reconocimiento de la persona que habla es una
tcnica empleada en seguridad, sistemas de recuperacin de informacin, etc.,
y se espera que en el futuro su mbito de aplicacin aumente. En este
contexto, la FPGA resulta muy eficiente a la hora de realizar la comparacin de
la voz de una persona con unos patrones previamente almacenados.

Aeronutica y defensa: adems de las mencionadas previamente, existen
multitud de aplicaciones aeronuticas y de defensa que emplean FPGAs debido
a las buenas caractersticas que stas ofrecen.













Los Cinco Beneficios Principales de la Tecnologa FPGA
1. Rendimiento
2. Tiempo en Llegar al Mercado
3. Precio
4. Fiabilidad
5. Mantenimiento a Largo Plazo
1. Rendimiento Aprovechando del paralelismo del hardware, los FPGAs exceden la
potencia de cmputo de los procesadores digitales de seales (DSPs) rompiendo el
paradigma de ejecucin secuencial y logrando ms en cada ciclo de reloj. BDTI, una
destacada firma analista que realiza evaluaciones de referencia, lanz evaluaciones
mostrando cmo los FPGAs pueden entregar significativamente ms potencia de
procesamiento por dlar que una solucin de DSP, en algunas aplicaciones
2
. El
controlar entradas y salidas (E/S) a nivel de hardware ofrece tiempos de respuesta
ms veloces y funcionalidad especializada que coincide con los requerimientos de
una aplicacin.
2. Tiempo en llegar al mercado La tecnologa FPGA ofrece flexibilidad y
capacidades de rpido desarrollo de prototipos para enfrentar los retos de que un
producto se libere tarde al mercado. Usted puede probar una idea o un concepto y
verificarlo en hardware sin tener que pasar por el largo proceso de fabricacin por
el que pasa un diseo personalizado de ASIC
3
. Posteriormente podr implementar
cambios y realizar iteraciones de un diseo FPGA en cuestin de horas en vez de
semanas. Tambin existe hardware comercial listo para usarse (COTS) con
diferentes tipos de E/S ya conectados a un chip FPGA programable por el usuario.
El aumento en disponibilidad de herramientas de software de alto nivel disminuye
la curva de aprendizaje con niveles de abstraccin. Estas herramientas
frecuentemente incluyen importantes ncleos IP (funciones pre-construidas) para
control avanzado y procesamiento de seales.
3. Precio El precio de la ingeniera no recurrente de un diseo personalizado ASIC
excede considerablemente al de las soluciones de hardware basadas en FPGA. La
fuerte inversin inicial de los ASICs es fcilmente justificable para los fabricantes de
equipos originales que embarcan miles de chips por ao, pero muchos usuarios
finales necesitan la funcionalidad de un hardware personalizado para decenas o
cientos de sistemas en desarrollo. La misma naturaleza programable del silicio
implica que no hay precio de fabricacin o largo plazos de ejecucin de
ensamblado. Los requerimientos de un sistema van cambiando con el tiempo, y el
precio de cambiar incrementalmente los diseos FPGA es insignificante al
compararlo con el precio de implementar cambios en un ASIC antes de su
lanzamiento.
4. Fiabilidad Mientras que las herramientas de software ofrecen un entorno de
programacin, los circuitos de un FPGA son una implementacin segura de la
ejecucin de un programa. Los sistemas basados en procesadores frecuentemente
implican varios niveles de abstraccin para auxiliar a programar las tareas y
compartir los recursos entre procesos mltiples. El software a nivel driver se
encarga de administrar los recursos de hardware y el sistema operativo administra
la memoria y el ancho de banda del procesador. El ncleo de un procesador slo
puede ejecutar una instruccin a la vez, y los sistemas basados en procesadores
estn siempre en riesgo de que sus tareas se obstruyan entre s. Los FPGAs, que no
necesitan sistemas operativos, minimizan los retos de fiabilidad con ejecucin
paralela y hardware preciso dedicado a cada tarea.
5. Mantenimiento a largo plazo Como se mencion anteriormente, los chips FPGA
son actualizables en campo y no requieren el tiempo y el precio que implica
redisear un ASIC. Los protocolos de comunicacin digital por ejemplo, tienen
especificaciones que podran cambiar con el tiempo, y las interfaces basadas en
ASICs podran causar retos de mantenimiento y habilidad de actualizacin. Los
chips FPGA, al ser reconfigurables, son capaces de mantenerse al tanto con
modificaciones a futuro que pudieran ser necesarias. Mientras el producto o
sistema se va desarrollando, usted puede implementarle mejoras funcionales sin la
necesidad de invertir tiempo rediseando el hardware o modificando el diseo de
la tarjeta.
Escoger un FPGA
Al examinar las especificaciones de un chip FPGA, observe que generalmente estn
divididos en bloques de lgica configurables como segmentos o clulas de lgica,
funciones fijas de lgica como multiplicadores, y recursos de memoria como RAM en
bloque embebida. El chip FPGA tiene otros componentes, pero stos son
generalmente los ms importantes cuando se seleccionan y comparan FPGAs para una
aplicacin en particular.

Virtex-II
1000
Virtex-II
3000
Spartan-
3
1000
Spartan-
3
2000
Virtex-5
LX30
Virtex-5
LX50
Virtex-5
LX85
Virtex-5
LX110
Compuertas 1 milln 3
millones
1 milln 2
millones
----- ----- ----- -----
Flip-Flops 10,240 28,672 15,360 40,960 19,200 28,800 51,840 69,120
LUTs 10,240 28,672 15,360 40,960 19,200 28,800 51,840 69,120
Multiplicadores 40 96 24 40 32 48 48 64
RAM en
Bloque (kb)
720 1,728 432 720 1,152 1,728 3,456 4,608

Tabla 1. Especificaciones de Recursos FPGA de Varias Familias

La Tabla 1 muestra especificaciones de recursos usados para comparar chips FPGA
dentro de varias familias de Xilinx. El nmero de compuertas ha sido una forma tpica
de comparar el tamao de los chips FPGA contra la tecnologa ASIC, pero no describe
realmente el nmero de componentes individuales dentro de un FPGA. sta es una de
las razones por las cuales Xilinx no especific el nmero de compuertas de sistema
equivalentes en la nueva familia Virtex-5.























Conclusin
La adopcin de la tecnologa FPGA contina incrementando mientras que las
herramientas de ms alto nivel como LabVIEW, el microprocesador estndar y la
arquitectura FPGA RIO hacen a los FPGAs ms accesibles. Es importante mirar dentro
del FPGA y apreciar todo lo que est pasando cuando los diagramas de bloques son
compilados para ejecutar un silicio. Comparar y seleccionar los objetivos de hardware
basados en flip-flops, LUTs, multiplicadores y RAM en bloque es la mejor manera de
escoger el chip FPGA adecuado para su aplicacin. Comprender el uso de los recursos
es extremadamente til durante el desarrollo, especialmente al optimizar tamao y
velocidad. Este documento no pretende ser una extensa lista de todos los bloques de
construccin de FPGA fundamentales. Puede aprender ms sobre FPGAs y diseo de
hardware digital en los siguientes recursos.






























Lenguajes de Descripcin de Hardware
Los lenguajes de descripcin de hardware (HDLs) son utilizados para describir la
arquitectura y comportamiento de un sistema electrnico los cuales fueron
desarrollados para trabajar con diseos complejos. Comparando un HDL con los
lenguajes para el desarrollo de software vemos que en un lenguaje de este tipo un
programa que se encuentra en un lenguaje de alto nivel (VHDL) necesita ser
ensamblado a cdigo mquina (compuertas y conexiones) para poder ser interpretado
por el procesador. De igual manera, el objetivo de un HDL es describir un circuito
mediante un conjunto de instrucciones de alto nivel de abstraccin para que el
programa de sntesis genere (ensamble) un circuito que pueda ser implementado
fsicamente.

LENGUAJE VHDL
Historia
En los ltimos diez aos la industria electrnica ha tenido una gran evolucin en el
desarrollo de sistemas digitales; desde computadoras personales, sistemas de audio y
vdeo hasta dispositivos de alta velocidad para las comunicaciones. Esto ha sido posible
gracias a la implementacin de herramientas de diseo asistidos por computadora,
conocidas como herramientas CAD (Computer Aided Design), aunque especficamente
se hace uso de herramientas EDA (Electronic Design Automation), que es el nombre
que se le da a todas las herramientas CAD para el diseo de sistemas electrnicos.
Adems de facilitar el trabajo, el uso de herramientas EDA tambin aceler los
procesos de diseo. Esta situacin condujo a adoptar nuevas metodologas para el
diseo y evaluacin de los circuitos electrnicos. El uso de las herramientas EDA junto
con los dispositivos lgicos programables, que pueden ser utilizados en diferentes
aplicaciones e inclusive reprogramados, cambiaron bastante el concepto de diseo de
circuitos digitales.

VHDL es un lenguaje que se cre para el diseo, modelado y documentacin de
circuitos complejos. Actualmente se le utiliza para la sntesis de circuitos digitales
utilizando dispositivos lgicos programables. Es as como los dispositivos lgicos
programables y VHDL, Very High Speed Integrated Circuit (VHSIC) Hardware
Description Language, constituyen los elementos fundamentales para estas nuevas
metodologas de diseo.

VHDL es un lenguaje con una sintaxis amplia y flexible que permite el modelado
estructural, en flujo de datos y de comportamiento hardware. VHDL permite el
modelado preciso, en distintos estilos, del comportamiento de un sistema digital
conocido y el desarrollo de modelos de simulacin. Uno de los objetivos del lenguaje
VHDL es el modelado. Modelado es el desarrollo de un modelo para simulacin de un
circuito o sistema previamente implementado cuyo comportamiento, por tanto, se
conoce. El objetivo del modelado es la simulacin.
Otro de los usos de este lenguaje es la sntesis automtica de circuitos. En el proceso
de sntesis, se parte de una especificacin de entrada con un determinado nivel de
abstraccin, y se llega a una implementacin ms detallada, menos abstracta. Por
tanto, la sntesis es una tarea vertical entre niveles de abstraccin, del nivel ms alto
en la jerarqua de diseo se va hacia el ms bajo nivel de la jerarqua.

El VHDL es un lenguaje que fue diseado inicialmente para ser usado en el modelado
de sistemas digitales. Es por esta razn que su utilizacin en sntesis no es inmediata,
aunque lo cierto es que la sofisticacin de las actuales herramientas de sntesis es tal
que permiten implementar diseos especificados en un alto nivel de abstraccin. La
sntesis a partir de VHDL constituye hoy en da una de las principales aplicaciones del
lenguaje con una gran demanda de uso. Las herramientas de sntesis basadas en el
lenguaje permiten en la actualidad ganancias importantes en la productividad de
diseo.

Ventajas del uso de VHDL para la descripcin de hardware:

VHDL permite disear, modelar, y comprobar un sistema desde un alto nivel de
abstraccin bajando hasta el nivel de definicin estructural de compuertas.
Circuitos descritos utilizando VHDL, siguiendo unas guas para sntesis, pueden
ser utilizados por herramientas de sntesis para crear implementaciones de
diseos a nivel de compuertas.
Al estar basado en un estndar (IEEE Std 1076-1987) los ingenieros de toda la
industria de diseo pueden usar este lenguaje para minimizar errores de
comunicacin y problemas de compatibilidad.
VHDL permite diseo Top-Down, esto es, permite describir (modelado) el
comportamiento de los bloques de alto nivel, analizndolos (simulacin), y
refinar la funcionalidad de alto nivel requerida antes de llegar a niveles mas
bajos de abstraccin de la implementacin del diseo.
Modularidad: VHDL permite dividir o descomponer un diseo hardware y su
descripcin VHDL en unidades ms pequeas.
Un proyecto de VHDL puede contener muchos ficheros. El cdigo VHDL usualmente se
encuentra en los ficheros con extensin *.vhd. La estructura tpica de uno de estos
ficheros es:
Llamadas a libreras.
Entidad.
Arquitectura(s).

VHDL describe estructura y comportamiento

Existen dos formas de describir un circuito; por un lado se puede describir un circuito
indicando los diferentes componentes que lo forman y su interconexin, de esta
manera tenemos especificado un circuito y sabemos cmo funciona; esta es la forma
habitual en que se han venido describiendo circuitos y las herramientas utilizadas para
ello han sido las de captura de esquemas y las descripciones netlist.
La segunda forma consiste en describir un circuito indicando lo que hace o como
funciona, es decir, describiendo su comportamiento. Naturalmente esta forma de
describir un circuito es mucho mejor para un diseador puesto que lo que realmente
interesa es el funcionamiento del circuito ms que sus componentes. Por otro lado, al
encontrarse lejos de lo que un circuito es realmente puede plantear algunos
problemas a la hora de realizar un circuito a partir de la descripcin de su
comportamiento. El VHDL va a ser interesante ya que va a permitir los dos tipos de
descripciones:
Estructura: VHDL puede ser usado como un lenguaje de Netlist normal y
corriente donde se especifican por un lado los componentes del sistema y por
otro sus interconexiones.
Comportamiento: VHDL tambin se puede utilizar para la descripcin
comportamental o funcional de un circuito. Esto es lo que lo distingue de un
lenguaje de Netlist. Sin necesidad de conocer la estructura interna de un
circuito es posible describirlo explicando su funcionalidad. Esto es
especialmente til en simulacin ya que permite simular un sistema sin conocer
su estructura interna, pero este tipo de descripcin se est volviendo cada da
ms importante porque las actuales herramientas de sntesis permiten la
creacin automtica de circuitos a partir de una descripcin de su
funcionamiento.

EJEMPLO BSICO DE DESCRIPCIN VHDL

Ejemplo: Describir en VHDL un circuito que multiplexe dos lneas (a y b) de un bit, a
una sola lnea (salida) tambin de un bit; la seal selec sirve para indicar que a la salida
se tiene la lnea a (selec='0') o b (selec='1').
En la figura 1 se muestra el circuito implementado con compuertas lgicas que realiza
la funcin de multiplexacin. Lo que se va a realizar a continuacin es la descripcin
comportamental del circuito de la figura 1, y luego se realizara la descripcin
estructural para ver las diferencias. La sintaxis del VHDL no es sensible a maysculas o
minsculas por lo que se puede escribir como se prefiera.




Figura 1. Esquema del ejemplo bsico en VHDL.

En primer lugar, sea el tipo de descripcin que sea, hay que definir el smbolo o
entidad del circuito. En efecto, lo primero es definir las entradas y salidas del circuito,
es decir, la caja negra que lo define. Se le llama entidad porque en la sintaxis de VHDL
esta parte se declara con la palabra clave ENTITY. Esta definicin de entidad, que suele
ser la primera parte de toda descripcin VHDL, se expone a continuacin:

Esta porcin del lenguaje indica que la entidad mux (que es el nombre que se le ha
dado al circuito) tiene tres entradas de tipo bit, y una salida tambin del tipo bit. Los
tipos de las entradas y salidas se vern ms adelante. El tipo bit simplemente indica
una lnea que puede tomar los valores '0' y '1'. La entidad de un circuito es nica, sin
embargo, se mostr que un mismo smbolo, en este caso entidad, podr tener varias
vistas o en el caso de VHDL arquitecturas. Cada bloque de arquitectura, que es donde
se describe el circuito, puede ser una representacin diferente del mismo circuito. Por
ejemplo, puede haber una descripcin estructural y otra comportamental, ambas son
descripciones diferentes, pero ambas descripciones corresponden al mismo circuito,
smbolo, o entidad. Veamos entonces la descripcin comportamental:

Ms adelante se ver lo que hace un bloque PROCESS, de momento, y como primera
aproximacin, se considerara que es una especie de subrutina cuyas instrucciones se
ejecutan secuencialmente cada vez que algunas de las seales de la lista sensible
cambian. Esta lista sensible es una lista de seales que se suele poner junto a la
palabra clave PROCESS, y en el caso del ejemplo es (a, b, selec).
Esta descripcin comportamental es muy sencilla de entender ya que sigue una
estructura parecida a los lenguajes de programacin convencionales. Lo que se est
indicando es simplemente que si la seal selec es cero, entonces la salida es la entrada
a, y si selec es uno, entonces la salida es la entrada b. Esta forma tan sencilla de
describir el circuito permite a ciertas herramientas sintetizar un circuito a partir de una
descripcin comportamental como esta. La diferencia con un Netlist es directa: en una
descripcin comportamental no se estn indicando ni los componentes ni sus
interconexiones, sino simplemente lo que hace, es decir, su comportamiento o
funcionamiento. La descripcin anterior era puramente comportamental, de manera
que con una secuencia sencilla de instrucciones podamos definir el circuito.
Naturalmente, a veces resulta ms interesante describir el circuito de forma que este
ms cercano a una posible realizacin fsica del mismo. En ese sentido VHDL posee una
forma de describir circuitos que adems permite la paralelizacin de instrucciones y
que se encuentra ms cercana a una descripcin estructural del mismo. A continuacin
se muestran dos ejemplos de una descripcin concurrente o tambin llamada de
transferencias entre registros.

En la descripcin (1) hay varias instrucciones, todas ellas concurrentes, es decir, se
ejecutan cada vez que cambia alguna de las seales que intervienen en la asignacin.
Este primer caso es casi una descripcin estructural ya que de alguna manera se estn
definiendo las seales (cables) y los componentes que la definen, aunque no es
comportamental ya que en realidad se trata de asignaciones a seales y no una
descripcin de componentes y conexiones. El segundo caso (2) es tambin una
descripcin de transferencia aunque basta una nica instruccin de asignacin para
definir el circuito.
Aunque no es la caracterstica ms interesante del VHDL, tambin permite ser usado
como Netlist o lenguaje de descripcin de estructura. En este caso, esta estructura
tambin estar indicada dentro de un bloque de arquitectura, aunque la sintaxis
interna es completamente diferente:
Se observa fcilmente que esta descripcin es ms larga y encima menos clara que las
anteriores. Dentro de la arquitectura se definen en primer lugar los componentes que
se van a utilizar. Esto se realiza mediante la palabra clave COMPONENT, donde se
indican adems las entradas y salidas mediante la clusula PORT. Estos componentes
deben tener una entidad y arquitectura propia indicando su comportamiento.
Normalmente estas entidades se suelen poner en una librera separada. Al igual que
ocurre en cualquier netlist, las seales o conexiones deben tener un nombre. En el
esquema se le han puesto nombres a las lneas de conexin internas al circuito. Estas
lneas hay que declararlas como SIGNAL en el cuerpo de la arquitectura y delante del
BEGIN. Una vez declarados los componentes y las seales que intervienen se procede a
conectarlos entre si. Para ello la sintaxis es muy simple. Lo primero es identicar cada
componente, es lo que comnmente se conoce como instanciacin, es decir, asignarle
a cada componente concreto un smbolo. En este ejemplo se le ha llamado u a cada
componente y se le ha aadido un nmero para distinguirlos, en principio el nombre
puede ser cualquier cosa y la nica condicin es que no haya dos nombres iguales. A
continuacin del nombre viene el tipo de componente que es, en nuestro caso puede
ser una and2, una or2, o una puerta inversora inv. Despus se realizan las conexiones
poniendo cada seal en su lugar correspondiente con las palabras PORT MAP. As, los
dos primeros argumentos en el caso de la puerta and2 son las entradas, y el ltimo es
la salida. De esta forma tan simple se va creando el netlist o definicin de la estructura.




Operadores y expresiones
Las expresiones en VHDL son prcticamente iguales a como pudieran ser en otros
lenguajes de programacin o descripcin, por lo que se expondrn brevemente
algunos de los existentes en VHDL y su utilizacin.
Operadores varios
& (Concatenacin) Concatena matrices de manera que la dimensin de la matriz
resultante es la suma de las dimensiones de las matrices sobre las que opera: punto< =
x &y mete en la matriz punto la matriz x en las primeras posiciones, y la matriz y en las
ltimas.
Operadores aritmticos
** (Exponencial) Sirve para elevar un nmero a una potencia: 4**2 es 4^2. El operador
de la izquierda puede ser entero o real, pero el de la derecha solo puede ser entero.
ABS() (valor absoluto) Como su propio nombre indica esta funcin devuelve el valor
absoluto de su argumento que puede ser de cualquier tipo numrico.
* (Multiplicacin) Sirve para multiplicar dos nmeros de cualquier tipo (los tipos bit o
bit vector no son numricos).
/ (Divisin) Tambin funciona con cualquier dato de tipo numrico.
MOD (mdulo) Calcula en mdulo de dos nmeros. Exactamente se define el mdulo
como la operacin que cumple: a=b*N+(a MOD b) donde N es un entero. Los
operandos solo pueden ser enteros. El resultado toma el signo de b.
REM (resto) Calcula el resto de la divisin entera y se define como el operador que
cumple: a=(a/b)*b+(a REM b), siendo la divisin entera. Los operandos solo pueden ser
enteros. El resultado toma el signo de a.
+ (suma y signo positivo) Este operador sirve para indicar suma, si va entre dos
operandos, o signo, si va al principio de una expresin. La precedencia es diferente en
cada caso. Opera sobre valores numricos de cualquier tipo.
- (resta y signo negativo) Cuando va entre dos operandos se realiza la operacin de
sustraccin, y si va delante de una expresin le cambia el signo. Los operandos pueden
ser numricos de cualquier tipo.

Operadores de desplazamiento
SLL, SRL (desplazamiento lgico a izquierda y a derecha) Desplaza un vector un nmero
de bits a izquierda (SLL) o derecha (SRL) rellenando con ceros los huecos libres. Se
utiliza en notacin infija de manera que la seal a la izquierda del operador es el vector
que se quiere desplazar y el de la derecha es un valor que indica el nmero de bits a
desplazar. Por ejemplo dato SLL 2 desplaza a izquierda el vector dato, es decir, lo
multiplica por 4.
SLA, SRA (desplazamiento aritmtico a izquierda y derecha)
ROL, ROR (rotacin a izquierda y a derecha) Es como el de desplazamiento pero los
huecos son ocupados por los bits que van quedando fuera.



Operadores relacionales
Devuelven siempre un valor de tipo booleano (TRUE o FALSE). Los tipos con los que
pueden operar dependen de la operacin:
=, /= (igualdad) El primero devuelve TRUE si los operandos son iguales y FALSE en caso
contrario. El segundo indica desigualdad, funciona justo al revs. Los operandos
pueden ser de cualquier tipo con la condicin de que sean ambos del mismo tipo.
<, <=,>,>= (menor mayor) Tienen el significado habitual. La diferencia con los
anteriores es que los tipos de datos que pueden manejar son siempre de tipo escalar o
matrices de una sola dimensin de tipos discretos.

Operadores lgicos
Son NOT, AND, NAND, OR, NOR y XOR. El funcionamiento es el habitual para este tipo
de operadores. Actan sobre los tipos bit, bit vector y boolean. En el caso de realizarse
estas operaciones sobre un vector, la operacin se realiza bit a bit, incluyendo la
operacin NOT.

You might also like