Club SE220

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 106

Editorial

Nº 220 FPGA:
Director de la Colección Club
Saber Electrónica
Dispositivos Lógicos
Ing. Horacio D. Vallejo
Reconfigurables
Jefe de Redacción
Luis Horacio Rodriguez

Club Saber Electrónica es una publi- Recientemente ha empezado a crearse un interés cre-
cación de Saber Internacional SA de
CV de México y Editorial Quark SRL ciente por los dispositivos denominados FPGA, como alter-
de Argentina nativa a la electrónica de microprocesadores.
Básicamente, las FPGA son circuitos de hardware que un
Editor Responsable en
Argentina y México: usuario puede programar para realizar una o varias opera-
Ing. Horacio D. Vallejo ciones lógicas. Las FPGAs (Field Programmable Gate
Arrays) pueden programarse para realizar proyectos de
Administración México:
Alejandro Sánchez
hardware específicos. Estas matrices son, por tanto, un
tipo de circuito integrado reconfigurable formado por blo-
Comercio Exterior México: ques lógicos reconfigurables (CLBs), que a su vez se com-
Francisco Di Zonno ponen de tablas de consulta (LUT) junto con otra lógica,
Director Club Saber como registros y puertas lógicas.
Electrónica: PLC, FPGA, ASIC… son nombres para varios tipos de
Federico Vallejo circuitos electrónicos. Las diferencias entre un PLC y un
Responsable de Atención al
FPGA son que el PLC es una computación digital con
Lector: múltiples entradas y salidas que se utiliza para controlar
Alejandro A. Vallejo líneas de máquinas industriales y aplicaciones más
pesadas, mientras que el FPGA es una matriz programable
Coordinador Internacional
Luis Alberto Castro Regalado
que puede configurarse después de la producción.
Publicidad Un FPGA es un tipo dispositivo electrónico formado por
Argentina: 11-5310-6567 bloques funcionales unidos a través de un array de conex-
México: 55-2804-3670
Internet:
iones programables. Las FPGAs fueron “creadas” en el
www.webelectronica.com.ar año 1984 por Ross Freeman y Bernard Vonderschmitt, co-
fundadores de Xilinx. Algunos de los principales fabri-
Club Saber Electrónica. Fecha de publicación: mayo
2024. Publicación mensual editada y publicada por Edito- cantes son Xilinx, Altera (comprado por Intel en 2015),
rial Quark, Altolaguirre 310 (1870) Villa Domínico, Buenos MicroSem, Lattice Semiconductor o Atmel, entre otros. Los
Aires, Argentina (005411-42061742), en conjunto con Sa-
ber México, Av. Moctezuma Nº 2, Col. Sta. Agueda, Ecate- FPGA son más lentos que un ASIC (Application-Specific
pec de Morelos, México (005255-58395277) Distribución Integrated Circuit), procesadores específicos desarrollados
en México: Costumbres Argentinas. Distribución en Ar-
gentina: Capital: Carlos Cancellaro e Hijos SH, Guten- para desarrollar una determinada tarea. Sin embargo, la
berg 3258 - Cap. 4301-4942 - Interior: DISA – Distribución gran flexibilidad de poder cambiar su configuración hace
en Uruguay: Rodesol SA Ciudadela 1416 – Montevideo,
901-1184 – La Editorial no se responsabiliza por el conte- que su coste sea menor tanto para pequeños lotes de fab-
nido de las notas firmadas. Todos los productos o marcas ricación como para prototipado, debido al enorme gasto
que se mencionan son a los efectos de prestar un servicio
al lector, y no entrañan responsabilidad de nuestra parte. requerido para desarrollar y fabricar un ASIC.
Está prohibida la reproducción total o parcial del material Los autómatas programables (PLC) son miembros de la
contenido en esta revista, así como la industrialización y/o
comercialización de los aparatos o ideas que aparecen en familia de ordenadores diseñados y fabricados para aplica-
los mencionados textos, bajo pena de sanciones legales, ciones de control industrial. El PLC es un dispositivo lógico
salvo mediante autorización por escrito de la Editorial.
Revista Club Saber Electrónica, fijo (las funciones se realizan mediante cambios en el soft-
ISSN: 1668-6004 ware), mientras que el CPLD es un dispositivo lógico vari-

Saber Electrónica 3
redes Neuronales e inteligencia artificial

able (las funciones se realizan mediante cambios en las estructuras de los circuitos
internos). PLD es un acrónimo de dispositivo lógico programable (Programmable Logic
Device), y FPGA es un acrónimo de Field Programmable Gate Array, y las funciones de
ambos son esencialmente las mismas, pero los principios que subyacen a su imple-
mentación son un poco diferentes, por lo que a veces podemos pasar por alto ambos.
No es exagerado decir que un PLD puede suplir las funciones de cualquier dispositivo
digital, desde las CPUs de alto rendimiento hasta los circuitos más sencillos con 74s,
que podrían implementarse utilizando PLDs.
El uso de los PLD para desarrollar circuitos digitales puede acortar significativamente
los tiempos de diseño, disminuir el tamaño de las placas de circuito impreso y aumen-
tar la fiabilidad del sistema. En el caso de los dispositivos lógicos programables, los dis-
eñadores pueden diseñar, modelar y probar rápidamente sus diseños utilizando her-
ramientas de software de bajo coste. En el otro extremo del espectro están los sistemas
de control integrados, que aprovechan las matrices de puertas programables (FPGA)
para conseguir los desarrollos utilizando hardware en lugar de software.
Los FPGA se utilizan para controlar las líneas de montaje de las fábricas, las atrac-
ciones de feria, etc. Un PLC es un diseño con múltiples entradas y salidas. El PLC es
un dispositivo de control inteligente compuesto por un microprocesador y una memoria,
junto con periféricos seleccionados.
Los FPGA son empleados en la industria dedicadas al desarrollo de circuitos integra-
dos digitales y centros de investigación para crear circuitos digitales para la elaboración
de prototipos y pequeñas series de ASIC.
En este libro veremos qué es un FPGA, cuáles son los motivos de su auge y popu-
laridad en el mundo geek/maker para luego describir el diseño de un trazador de cur-
vas con FPGA sobre un trabajo de Juan Santiago Vega Martínez

¡Hasta el mes próximo!

4 Saber Electrónica
FPGA: DisPositivos LóGicos
ReconFiGuRAbes
¿unA ALteRnAtivA A Los MicRoPRocesADoRes?
Recientemente ha empezado a crearse un interés creciente por los dispositivos denominados FPGA,
como alternativa a la electrónica de microprocesadores. En este capítulo veremos qué es un FPGA,
cuáles son los motivos de su auge y popularidad en el mundo geek/maker.
Un FPGA es un tipo dispositivo electrónico formado por bloques funcionales unidos a través de un
array de conexiones programables. Las FPGAs fueron “creadas” en el año 1984 por Ross Freeman
y Bernard Vonderschmitt, co-fundadores de Xilinx. Algunos de los principales fabricantes son Xilinx,
Altera (comprado por Intel en 2015), MicroSem, Lattice Semiconductor o Atmel, entre otros. Los
FPGA son más lentos que un ASIC (Application-Specific Integrated Circuit), procesadores específi-
cos desarrollados para desarrollar una determinada tarea. Sin embargo, la gran flexibilidad de poder
cambiar su configuración hace que su coste sea menor tanto para pequeños lotes de fabricación
como para prototipado, debido al enorme gasto requerido para desarrollar y fabricar un ASIC. Los
FPGA son empleados en la industria dedicadas al desarrollo de circuitos integrados digitales y cen-
tros de investigación para crear circuitos digitales para la elaboración de prototipos y pequeñas
series de ASIC.

https://www.luisllamas.es/que-es-una-fpga
http://robots-argentina.com.ar/didactica/un-fpga-en-un-arduino
Juan Santiago Vega Martinez

Saber Electrónica 5
FPGA: DisPositivos LóGicos ReconFiGuRAbes
¿EN QUÉ SE DIFERENCIA DE UN PROCESADOR?

Aunque en primer momento parece que un procesador y un FPGA son dispositivos similares, porque
ambos son capaces de realizar ciertas tareas, lo cierto es que al profundizar es casi más fácil encontrar
diferencias que similaridades.
Para entrar en el tema, recordemos de forma muy resumida la forma de trabajar de un procesador. Un
procesador contiene una serie de instrucciones (funciones) que realizan operaciones sobre operadores
binarios (sumar, incrementar, leer y escribir de la memoria). Algunos procesadores tienen más instruccio-
nes que otras (asociados a circuitería interna del procesador) y es uno de los factores que determinan su
rendimiento.

Por otro lado, contiene una serie de registros, que contienen los datos de entrada y salida en las ope-
raciones del procesador. Además, disponemos de memoria para almacenar información.
Finalmente, un procesador contiene una pila de instrucciones, que contienen el programa que va a eje-
cutarse en código máquina, y un reloj.
En cada ciclo de reloj, el procesador lee de la pila de instrucciones los valores necesarios, llama a la
instrucción oportuna, y ejecuta el cálculo.
Cuando programamos el procesador empleamos uno de los muchos lenguajes disponibles, en un for-
mato entendible y cómodo para los usuarios. En el proceso de enlazado y compilación, el código se tra-
duce a código máquina, que se graba en la memoria del procesador. A partir de ahí, el procesador ejecuta
las instrucciones, y por tanto nuestro programa.
Sin embargo, al programar un FPGA lo que estamos haciendo es modificar una matriz de conexiones.
Los bloques individuales están constituidos por elementos que les permiten adoptar distintas funciones de
transferencia.

6 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes
Juntos, los distintos bloques, unidos por las conexiones que programamos, hacen que físicamente se
constituya un circuito electrónico, de forma similar a como haríamos en una placa de entrenamiento o al
fabricar un chip propio.
Como vemos, la diferencia sustancial. Un procesador (en sus muchas variantes) tiene una estructura
fija y modificamos su comportamiento a través del programa que realizamos, traducido en código máquina,
y ejecutado de forma secuencial.
Sin embargo, en un FPGA variamos la estructura interna, sintetizando uno o varios circuitos electróni-
cos en su interior. Al “programar” el FPGA definimos los circuitos electrónicos que queremos que se con-
figuren en su interior.

¿CÓMO SE PROGRAMA UNA FPGA?

Los FPGA no se “programan” en el sentido al que estamos acostumbrados, con un lenguaje como C,
C++, o Python. De hecho, los FPGA usan un tipo diferente de lenguaje denominado lenguaje descriptivo,
en lugar de un lenguaje de programación.
Estos lenguajes descriptivos se denominan HDL o Hardware Description Language. Ejemplos de len-
guajes HDL son Verilog, HDL o ABEL. Verilog es Open Source, por lo que será uno de los que oiremos
hablar con mayor frecuencia.
Los lenguajes descriptivos no son algo exclusivo de los FPGA. Por el contrario, son una herramienta
extremadamente útil en el diseño de chips y SoC.
Posteriormente el integrador (a grandes rasgos, el equivalente al “compilador” en lenguajes de progra-
mación) traduce la descripción que hemos realizado del dispositivo en un dispositivo sintetizable (realiza-
ble) con los bloques del FPGA, y determina las conexiones que tiene que realizar.
Las conexiones al FPGA se traducen en una determinada trama de comunicación específica del FPGA
(bitstream), que es transmitida al FPGA durante la programación. El FPGA interpreta el bitstream y confi-
gura las conexiones. A partir de ese momento, el FPGA está configurado con el circuito que hemos defi-
nido/descrito.

Los lenguajes HDL tienen una curva de aprendizaje difícil. La mayor dificultad es que tiene un grado de
abstracción muy bajo, ya que describen circuitos electrónicos. Esto hace que los proyectos crezcan enor-
memente a medida que aumenta el código.

Saber Electrónica 7
FPGA: DisPositivos LóGicos ReconFiGuRAbes
Los fabricantes proporcionan herramientas comerciales para programar sus propios FPGA. En la actua-
lidad, configuran entornos completos con una gran cantidad de herramientas y funcionalidades.
Lamentablemente, la mayoría no son gratuitos, o lo son sólo para algunos modelos de FPGA del fabri-
cante. Lamentablemente, no son gratuitos, y están unidos a la arquitectura de un único fabricante.
Con el desarrollo de los FPGA han aparecido otros lenguajes que permiten un mayor nivel de abstrac-
ción, similar a C, Java, Matlab. Ejemlo son System-C, Handel-C, Impulse-C, Forge, entre otros.
Con la evolución en el desarrollo de las FPGA también han aparecido herramientas centradas en la pro-
gramación gráfica de las FPGA, como LabVIEW FPGA, o el proyecto Open Source IceStudiodesarrollado
por Jesús Arroyo Torrens.

Finalmente, algunas iniciativas han intentado realizar la conversión desde un lenguaje de programación
a HDL (normalmente Verilog), que luego puede ser cargado en el FPGA con las herramientas del mismo.
Ejemplos son el proyecto Panda, el proyecto Cythi, o MyPython, entre otros.

¿POR QUÉ HAY QUE SIMULAR UN FPGA?

Cuando programamos un procesador, si cometemos algún error no suele haber problemas graves.
Habitualmente incluso tendremos un entorno donde poder hacer Debug y poder tracear el programa, defi-
nir puntos de interrupción, y ver el flujo del programa.
Sin embargo, al programar un FPGA estamos configurando físicamente un sistema y, en caso de error,
podríamos provocar un corto circuito y dañar parte o todo el FPGA.
Por ese motivo, y como norma general, siempre simularemos el diseño a probar en antes de cargarlo
en el FPGA real.
Para la simulación se emplean, así mismo, lenguajes descriptivos, en combinación con algún software
que permita simular y graficar la respuesta del FPGA. Un ejemplo de GTKWave.

8 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Las suites comerciales, normalmente integran la herramienta de simulación dentro del propio entorno
de programación.

¿QUÉ PRECIO TIENE UN FPGA?

Lógicamente existe un gran rango de precios pero, en general, no son dispositivos baratos. Hablando
del sector doméstico (las que vamos a comprarnos nosotros) están en el rango de 25 a 100 dólares apro-
ximadamente.
Por ponerlo en contexto, es mucho más caro que un Arduino Nano (16Mhz) o un STM32 (160Mhz) que
podemos comprar por 1.5€, un Node Mcu ESP8266 (160Mhz + WiFi) que podemos comprar por 4 dóla-
res. Incluso, son mucho más caros que una Orange Pi (Quad 800 Mhz + WiFi), que podemos encontrar
por unos 25 dólares

¿QUÉ POTENCIA TIENE UN FPGA?

Es difícil definir la potencia de cálculo de un FPGA, dado que es algo totalmente distinto a un procesa-

Saber Electrónica 9
FPGA: DisPositivos LóGicos ReconFiGuRAbes
dor como el que podemos encontrar en un Arduino, un STM32, un ESP8266, o incluso un ordenador como
Raspberry PI.
Las FPGA destacan en la realización de tareas en paralelo, y por un control extremadamente fino del
tiempo y el sincronismo de las tareas.
En realidad, es mejor pensar en términos de un circuito integrado. Una vez programado, el FPGA cons-
tituye físicamente un circuito. En general, como hemos comentado, un FPGA es más lento que el ASIC
equivalente.
La potencia de un FPGA viene dada por la cantidad de bloques disponibles y la velocidad de su elec-
trónica. Además, intervienen otros factores como la constitución de cada uno de los bloques, y otros ele-
mentos como los bloques de RAM o PLLs.
Por seguir con la comparación, la velocidad de un procesador viene determinada por su velocidad de
funcionamiento. Además hay que tener en cuenta que un procesador frecuentemente requiere entre 2 a 4
instrucciones para realizar una operación.
Por otro lado, aunque los FPGA normalmente incorporan un reloj para la elaboración de tareas síncro-
nas, en algunas de las tareas la velocidad es independiente del reloj, y están determinado por la velocidad
de los componentes electrónicos que lo forman.
A modo de ejemplo, en el bien conocido FPGA Lattice ICE40, una tarea simple como un contador puede
ejecutarse a una frecuencia de 220Mhz (según el datasheet). En un único FPGA podemos hacer cientos
de bloques de estos.

¿QUÉ ES MEJOR ARDUINO, FPGA O RASPBERY?

Pues... ¿Qué es mejor, una cuchara, un cuchillo o un tenedor? Son herramientas distintas, que desta-
can en cosas distintas. Ciertas tareas pueden realizarse con ambas, pero en algunas resulta mucho más
adecuado y eficiente emplear una de ellas.
Afortunadamente, el campo científico y técnico no es como un partido de futbol o la política... no tene-
mos que elegir un bando. De hecho, podemos usarlas todas incluso simultáneamente. Así, existen dispo-
sitivos que combinan un procesador junto con un FPGA para proporcionarnos lo mejor de ambos mundos.
En cualquier caso, las FPGA son una herramienta muy potente y lo suficiente diferentes del resto para
ser interesantes por sí mismos.

¿PUEDO HACER UN PROCESADOR CON UN FPGA?

Por supuesto que sí. Un FPGA puede adoptar cualquier circuito lógico electrónico, y los procesadores
son circuitos electrónicos. La única limitación es que el FPGA tiene que ser lo suficientemente grande para
alojar la electrónica del procesador (y los procesadores no son precisamente pequeños)
Hay proyectos de pequeños procesadores que pueden ser configurados en un FPGA. Ejemplos son
MicroBlaze y PicoBlaze de Xlinx, Nios y Nios II de Altera, y los procesadores de código abierto
LatticeMicro32 y LatticeMicro8.
Incluso existen proyectos para emular procesadores históricos en FPGA, como el procesador del Apollo
11 Guidance Computer.

Emular un procesador FPGA es un ejercicio interesante tanto por la complejidad, como por el aprendi-
zaje. Además, es interesante si queremos probar nuestro propio procesador o nuestras ideas.
Sin embargo, en la mayoría de los casos, resulta más sencillo y económico combinar el FPGA con un
procesador existente. Existen muy buenos procesadores (AVR, ESP8266, STM32).

10 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes
¿POR QUÉ ESTÁN EN AUGE LOS FPGA?

En primer lugar, porque con el tiempo las tecnologías bajan de precio. Hace no muchos años un autó-
mata con una capacidad similar a un Arduino podía costar cientos e incluso miles de euros, y ahora pode-
mos encontrarlo por pocos euros.
De forma similar, los FPGA han ido alcanzando popularidad en la industria. A medida que aumenta la
producción han aparecido con mayores capacidades y funcionalidades. Incluso existen gamas destinadas
a dispositivos embebidos o aplicaciones móviles. Todo esto propicia la bajada de precio de ciertos mode-
los de FPGA.
Por otro lado, el principal motivo del auge de la popularización de los FPGA en el ámbito
doméstico/maker es el trabajo de ingeniería inversa realizado por Clifford Wolf en el FPGA Lattice iCE40
LP/HX 1K/4K/8K, que dio lugar al proyecto IceStorm.
El proyecto IceStorm es un toolkit (formado por IceStorm Tools + Archne-pnr + Yosys) que permite la
creación del bitstream necesario para programar un FPGA iCE40 con herramientas open Source.
El trabajo de Clifford se realizó un IceStick, una placa de desarrollo con un FPGA iCE40, por su bajo
coste y pequeñas características técnicas, que permitían el trabajo de ingeniería inversa.

Fue la primera vez que se podría programar un FPGA con herramientas Open Source. Esto permitió la
generación de una creciente comunidad de colaboradores que han dado como frutos maravillas como
IceStudio o Apio.
Tener en cuenta que el resto de FPGA requieren inversiones de cientos de euros para comprar
el FPGA y hasta miles de euros en el software.
Digamos que, salvando distancias, el proyecto IceStorm y el Lattice ICE fue el inicio de una revolución
en el campo de las FPGA similar a la que empezó Arduino con los procesadores AVR de Atmel, y que ha
permitido poner al alcance de los usuarios domésticos.

¿TIENEN FUTURO LOS FPGA O SON UNA MODA PASAJERA?

Pues aún sin tener una bola de cristal, lo más probable es que los FPGA sean dispositivos que tendrán
utilidad, al menos, a medio y corto plazo. Como hemos dicho, se usan frecuentemente para facilitar el
diseño y prototipo de ASIC. Además están ampliando su ámbito de aplicación, desde aplicaciones con cál-
culos pesados (sistemas de visión, IA, conducción autónoma) a versiones ligeras para dispositivos móvi-
les.
Como ejemplo de su viabilidad, considerar que Intel ha invertido 16.700 millones de dólares en la com-
pra de Altera. Estimaciones del mercado apuntan a una estimación de 9000-10000 millones de dólares
para el próximo año (2020), frente a los 6000-7000 millones de dólares de 2014, y un crecimiento anual
del 6-7% (muy por encima del 1-2% del crecimiento medio para el sector de los semiconductores).

Saber Electrónica 11
FPGA: DisPositivos LóGicos ReconFiGuRAbes

Hablando del futuro (años) en el que los FPGA se abaraten y popularicen, podemos incluso imaginar
sistemas híbridos FPGA y procesador (o incluso totalmente FPGA) donde el software puede reconfigurar
el hardware, creando o deshaciendo procesadores, o memoria, en función de las necesidades.
La auténtica pregunta es ¿tienen futuro los FPGA Open Source y en el campo “doméstico” o son una
moda pasajera?
La respuesta corta es, esperemos que sí. La larga es que, a día de hoy, únicamente tenemos un FPGA
(el iCe40) disponible compatible con herramientas Open Source, y en realidad es FPGA bastante pequeño
y poco potente.

Si la técnica sigue avanzando y la comunidad no es lo suficiente fuerte para generar un ecosistema que
empuje de las FPGA hacia el Open Source, hay un cierto riesgo en que quede una burbuja pasajera.
La mejor forma es fomentar a la extensión de este tipo de dispositivos, y que se genere una comuni-
dad fuerte que propicie la popularización de esta tecnología. Y si es posible, creando y mejorando las
herramientas Open Source disponibles para las FPGAs.

12 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes
¿UN FPGA EN UN ARDUINO?

Arduino anunció recientemente una nueva línea de productos, y uno de ellos, el MKR Vidor 4000,
incluye un FPGA. ¿Qué harán los diseñadores con el poder de un FPGA en sus manos?

UN FPGA EN UN ARDUINO

Arduino es una popular herramienta de creación de prototipos por varias razones. En pri-
mer lugar, no requiere un programador voluminoso y caro (como los chips PIC) y se puede
programar a través de USB. En segundo lugar, las placas Arduino son de código abierto y,
debido a esto, hay muchos fabricantes de placas Arduino que ofrecen precios competitivos.
En tercer lugar, los Arduinos son famosos por su robusto entorno de shields y soporte de
bibliotecas, lo que hace que el uso de dispositivos complejos como los chips de Ethernet sea
cosa fácil. A medida que progresó la tecnología, también lo hizo el Arduino. En el lanzamiento
de las nuevas placas Arduino se reflejan muchas tendencias de la industria. Por ejemplo, la
introducción del Arduino Yun agregó capacidades de Wi-Fi, y el Arduino Duo marcó el
comienzo con procesadores más potentes. La miniaturización se concretó con el Arduino
Nano, y con el LilyPad se introdujo la electrónica portátil. Pero todas estas mejoras involu-
cran hardware especializado que realiza tareas únicas, como comunicaciones por RF o bajo
consumo de energía. Ahora que los FPGA se están volviendo más baratos y más accesibles,
Arduino está a punto de lanzar un Arduino con un FPGA incorporado, el MKR Vidor 4000. La
parte «MKR» de su nombre se pronuncia como “Maker” («Creador»), y Massimo Banzi, cofun-
dador de Arduino, se refiere a él como una placa de «factor de forma de creador». Esto no es
sorprendente, ya que generalmente se acepta que Arduino está diseñado para creadores, y
no es de especial interés para los profesionales de ingeniería electrónica.

El FPGA

El FPGA incluido es un Intel Cyclone 10CL016, y el sitio web de Arduino afirma que el

Saber Electrónica 13
FPGA: DisPositivos LóGicos ReconFiGuRAbes
FPGA contiene 16.000 elementos lógicos, 504 Kb de RAM, 56 multiplicadores 18×18 de hard-
ware para aplicaciones DSP de alta velocidad, etc. El sitio web también establece que los
pines FPGA pueden dar salidas de hasta 150MHz, y que también pueden configurarse como
puertos de comunicaciones comunes como UART, I2C y SPI. Si es cierto, este complemento
FPGA podría ser extremadamente útil para los diseñadores que desean crear sistemas digita-
les de alta velocidad que necesitan capturar datos y procesarlos rápidamente (como los pro-
cesadores de señales digitales).

Sin embargo, ¿cuántos aficionados realmente necesitan usar un FPGA?

¿CÓMO AYUDARÁ ESTO A LOS DISEñADORES?

El acceso a un FPGA permite que los diseñadores creen circuitos personalizados para
conectarse al Arduino, lo que puede eliminar la necesidad de circuitos externos. También per-
mite cargarle las funciones de E/S del Arduino al FPGA, pero conlleva el costo de requerir una
línea de comunicación entre el FPGA y el Arduino (a menos que el FPGA y la CPU estén inte-
grados en el mismo paquete, en cuyo caso los dos pueden tener líneas de E/S especiales
para su comunicación).
Los FPGA, sin embargo, son dispositivos complejos y, a menudo, se programan en lengua-
jes como HDL y Verilog, que no son aptos para personas no muy arriesgadas. Si bien Arduino
anunció que están diseñando un sistema de compilación basado en la nube que facilitará el
uso del FPGA, esto aún está por verse. La mayoría de las veces que un sistema se hace más
fácil de usar, sacrifica su poder, capacidad y control. Dicho esto, el Vidor 4000 podría ser una
herramienta educativa invaluable para aquellos que desean comenzar con FPGA.

¿MÁS AL ESTILO PI?

El Vidor 4000 no solo cuenta con la inclusión de un FPGA; también tiene varios dispositivos
de E/S que lo hacen parecer más a un Pi que a un Arduino. El Vidor 4000 incluye también un
módulo Wi-Fi Nina W102, un chip criptográfico ECC508, un conector micro HDMI, un conector
MIPI para cámara y un conector rápido MiniPCI con hasta 25 pines programables por el usua-
rio. Estas características, especialmente el Wi-Fi incorporado, crean una plataforma de IoT
potencialmente popular que puede realizar tareas increíblemente complejas. Con el chip crip-
tográfico incorporado, la verificación SSL y HTTPS se convertirán en una tarea trivial y ayuda-
rán a descargar las tareas de seguridad del microcontrolador principal. Si bien este dispositivo
no será tan poderoso como un Raspberry Pi, definitivamente es más pequeño y está más
enfocado en el hardware, algo en lo que la Pi se queda atrás.

PLACAS COMPETIDORAS PARA CREADORES CON FPGA

El Vidor 4000, obviamente, no es la primera placa en salir con capacidades FPGA, pero
tampoco es la primera construida teniendo en cuenta la compatibilidad con Arduino. Otro pro-
ducto ya en el mercado, XLR8, es una tarjeta de desarrollo compatible con Arduino que está
basada en FPGA, incluye un microcontrolador integrado de instrucción AVR de 8 bits y es pro-
gramable a través del IDE de Arduino.

14 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

El XLR8 está preconfigurado con «bloques xcelerator», que son bloques que están espe-
cialmente diseñados para manejar tareas específicas. Los bloques con los que viene preinsta-
lada la unidad incluyen un bloque matemático de punto flotante, un servocontrol, un controla-
dor NeoPixel y un ADC mejorado.
La integración de los FPGA en un proyecto Arduino sin duda creará una nueva ola de pro-
yectos e ideas que podrán construir los aficionados, pero los FPGA son dispositivos comple-
jos. Sin embargo, los usuarios de Arduino pueden comenzar a diseñar su propio hardware
desde cero y los FPGA incluidos en los microcontroladores pueden cambiar la forma en que
se construyen los circuitos.
La nueva placa MKR Vidor 4000 lleva la complejidad de los FPGA a los que no son inge-
nieros electrónicos.

INSTRUMENTACIÓN VIRTUAL
DISEñO DE UN TRAzADOR DE CURVAS CON FPGA

Describiremos el desarrollo de un Trazador de Curvas como un Caso de Aplicación de un


Instrumento Virtual Reconfigurable, que constituye la TÉSIS de Ingeniería en Electrónica del
autor: Juan Santiago Vega Martinez; con el asesoramiento del Ingeniero Alberto Alvarado
Rivera, de la Universidad Tecnológica del Perú.
Dicha tesis persigue el desarrollo de un instrumento virtual denominado Trazador de
Curvas, el cual puede representar las características de tensión y corriente (I vs V) de un
dispositivo semiconductor y el extracto de algunos parámetros cuantitativos, usando una
plataforma del proyecto del Centro Internacional de Física Teórica – ICTP (Trieste-Italia),
denominado Instrumentación Virtual Reconfigurable (RVI), que posee como componente

Saber Electrónica 15
FPGA: DisPositivos LóGicos ReconFiGuRAbes
principal un dispositivo lógica reconfigurable llamado FPGA (Field Programmable Gate
Array).
Con este instrumento se logró caracterizar distintos dispositivos semiconductores y como
resultado, se obtuvo una percepción real acerca del comportamiento del mismo, el cual es
importante cuando se realiza un nuevo diseño electrónico. Se diseñó el trazador de curvas
usando una plataforma reconfigurable y software libre, con el objetivo de brindar flexibilidad y
portabilidad tanto en el diseño del hardware como en el software, así como también dar la
posibilidad a centros de investigación de bajos recursos, para contar con un instrumento espe-
cializado.
Por otro lado este trabajo, aporta al proyecto de Instrumentación Virtual Reconfigurable,
adicionando un instrumento más dentro de esta plataforma.
El trazador de curvas, está constituido por la plataforma de instrumentación virtual reconfi-
gurable, un adaptador de señales y una interfaz de usuario.
Donde el diseño del hardware dentro de la FPGA, está basado en el uso de núcleos de
propiedad intelectual, descritos en lenguaje VHDL (VHSIC Hardware Description Language),
los cuales controlan todo flujo de datos en la plataforma RVI.
El adaptador de señales, tiene la finalidad de proveer las condiciones adecuadas de
corriente y voltaje, en el proceso de adquisición de señales del dispositivo en prueba. La inter-
faz de usuario desarrollado en Lazarus y Free Pascal, posee los controles y el entorno visual
del instrumento.

INTRODUCCIÓN

La modernización de las tecnologías de fabricación de semiconductores, ha permitido la


creación de nuevos dispositivos que rápidamente se convierten en partes esenciales del des-
arrollo de un diseño electrónico.
En el análisis y verificación de un diseño se utilizan equipos de alto costo, como los traza-
dores de curvas comerciales por ejemplo: National Instruments, usa su plataforma NI myDAQ
y su software LabVIEW. KEITHLEY Instruments, tiene todo un sistema de prueba de varios
instrumentos dedicados al análisis de semiconductores.
KEYSIGHT Technologies, tiene una línea de instrumentos que caracterizan varios tipos de
dispositivos semiconductores.
Muchos de ellos son de hardware y software propietarios, de tal forma que el usuario no
puede extender o personalizar, y no suelen ser accesibles para los centros de investigación
de bajo presupuesto.
En estos casos los instrumentos virtuales, cumplen un papel importante al permitir realizar
algunos análisis a un costo significativamente menor.
Las hojas de datos presentan principalmente valores genéricos de los parámetros caracte-
rísticos de los componentes; pero cuando se necesita realizar cálculos precisos para la elabo-
ración de un circuito determinado se tiene que recurrir a técnicas que nos permitan obtener
los parámetros del semiconductor con mayor precisión.
Con este proyecto se pretende la construcción de un instrumento virtual que pueda ayudar
al análisis y verificación de los dispositivos semiconductores con similares características que
los comerciales.

16 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Saber Electrónica 17
FPGA: DisPositivos LóGicos ReconFiGuRAbes

18 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Saber Electrónica 19
FPGA: DisPositivos LóGicos ReconFiGuRAbes

20 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Saber Electrónica 21
FPGA: DisPositivos LóGicos ReconFiGuRAbes

22 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Saber Electrónica 23
FPGA: DisPositivos LóGicos ReconFiGuRAbes

24 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Saber Electrónica 25
FPGA: DisPositivos LóGicos ReconFiGuRAbes

26 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Saber Electrónica 27
FPGA: DisPositivos LóGicos ReconFiGuRAbes

28 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Saber Electrónica 29
FPGA: DisPositivos LóGicos ReconFiGuRAbes

30 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Saber Electrónica 31
FPGA: DisPositivos LóGicos ReconFiGuRAbes

32 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Saber Electrónica 33
FPGA: DisPositivos LóGicos ReconFiGuRAbes

34 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Saber Electrónica 35
FPGA: DisPositivos LóGicos ReconFiGuRAbes

36 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Saber Electrónica 37
FPGA: DisPositivos LóGicos ReconFiGuRAbes

38 Saber Electrónica
unA ALteRnAtivA PARA Los MicRocontRoLADoRes

Saber Electrónica 39
FPGA: DisPositivos LóGicos ReconFiGuRAbes

40 Saber Electrónica
M icrocontrol adores

Diseño De un TrazaDor De Curvas Con


FPGa
Un trazador de curvas es esencial en electrónica para visualizar y analizar cómo componentes elec-
trónicos responden a cambios en voltaje y corriente. Este instrumento permite construir curvas que
representan la relación entre voltaje y corriente, facilitando la comprensión de las características
estáticas de los componentes y la ganancia de corriente de transistores, entre otros datos clave. Con
capacidades como la generación de gráficas, alta precisión en mediciones y amplias aplicaciones en
diseño de circuitos, educación y control de calidad, los trazadores de curvas son herramientas fun-
damentales para ingenieros electrónicos y laboratorios de investigación.
Las FPGAs son dispositivos que nos permiten describir un circuito digital usando un lenguaje espe-
cífico (los dos más comunes son VHDL y Verilog) y que tras cargarlo en el integrado, es creado físi-
camente en el chip. Su nombre es un acrónimo inglés que significa matriz de puertas reprograma-
ble o Field Programmable Gate Array.
En la edición anterior describimos estos dispositivos y propusimos una serie de artículos destinados
a mostrar su potencial. En esta edición comenzamos a describir el diseño de un trazador de curvas
utilizando FPGA.
https://www.luisllamas.es/que-es-una-fpga
http://robots-argentina.com.ar/didactica/un-fpga-en-un-arduino
Juan Santiago Vega Martinez

Saber Electrónica 41
FPGa: DisPosiTivos LóGiCos reConFiGurabes

42 Saber Electrónica
diseño de un trazador de curvas con FPGa

Saber Electrónica 43
FPGa: DisPosiTivos LóGiCos reConFiGurabes

44 Saber Electrónica
diseño de un trazador de curvas con FPGa

Saber Electrónica 45
FPGa: DisPosiTivos LóGiCos reConFiGurabes

46 Saber Electrónica
diseño de un trazador de curvas con FPGa

Saber Electrónica 47
FPGa: DisPosiTivos LóGiCos reConFiGurabes

48 Saber Electrónica
diseño de un trazador de curvas con FPGa

Saber Electrónica 49
FPGa: DisPosiTivos LóGiCos reConFiGurabes

50 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 51
FPGA: DisPositivos LóGicos ReconFiGuRAbes

52 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 53
FPGA: DisPositivos LóGicos ReconFiGuRAbes

54 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 55
FPGA: DisPositivos LóGicos ReconFiGuRAbes

56 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 57
FPGA: DisPositivos LóGicos ReconFiGuRAbes

58 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 59
FPGA: DisPositivos LóGicos ReconFiGuRAbes

60 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 61
FPGA: DisPositivos LóGicos ReconFiGuRAbes

62 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 63
FPGA: DisPositivos LóGicos ReconFiGuRAbes

64 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 65
FPGA: DisPositivos LóGicos ReconFiGuRAbes

66 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 67
FPGA: DisPositivos LóGicos ReconFiGuRAbes

68 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 69
FPGA: DisPositivos LóGicos ReconFiGuRAbes

70 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 71
FPGA: DisPositivos LóGicos ReconFiGuRAbes

72 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 73
FPGA: DisPositivos LóGicos ReconFiGuRAbes

74 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 75
FPGA: DisPositivos LóGicos ReconFiGuRAbes

76 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 77
FPGA: DisPositivos LóGicos ReconFiGuRAbes

78 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 79
FPGA: DisPositivos LóGicos ReconFiGuRAbes

80 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 81
FPGA: DisPositivos LóGicos ReconFiGuRAbes

82 Saber Electrónica
Diseño de un Trazador de Curvas con FPGA

Saber Electrónica 83
FPGA: DisPositivos LóGicos ReconFiGuRAbes

84 Saber Electrónica
3ª de forros 2.qxd:club 10/12/12 09:55 Página 3ªFo1
4ª de forros.qxd:sumario 223 21/11/13 18:13 Página 4ªFo1
ÍNDICE

1. Unidad 4: Procesamiento digital de datos...........................................................3

Tema 1: Fundamentos de FPGA .................................................................................... 3

Objetivos: ...................................................................................................................... 3

2. Información de los subtemas .............................................................................5

2.1 Subtema 1: Arquitectura .................................................................................... 5

2.2 Subtema 2: Lenguaje VHDL ................................................................................ 9

2.3 Subtema 3: Aplicaciones .................................................................................. 17

3. Bibliografía ......................................................................................................20

2
Fundamentos de FPGA

1. Unidad 4: Procesamiento digital


de datos
Tema 1: Fundamentos de FPGA
Objetivos:

Al finalizar el tema 7 el estudiante aprenderá a:

• Describir la arquitectura de una FPGA.


• Explicar el funcionamiento básico de una tabla de consulta LUT.
• Explicar las funciones integradas que tienen el FPGA.
• Representar señales en VHDL, escribir código simple VHDL.

Antes de hablar de FPGA y su arquitectura revisaremos un poco del concepto de lógica


programable que es el objetivo final de aprendizaje, de poder programar los FPGA
mediante lenguajes de programación a nivel de hardware y construir diversas
aplicaciones.

“La lógica programable requiere tanto de hardware como de software. Los dispositivos
lógicos programables pueden programarse para que el fabricante o el usuario pueda
llevar a cabo funciones lógicas específicas. Una ventaja de la lógica programable frente
a la lógica fija es que los dispositivos utilizan menos espacio de la tarjeta de circuito
impreso para una cantidad equivalente de lógica. Otra ventaja es que, con la lógica
programable, los diseños se pueden modificar fácilmente sin tener que recablear o
reemplazar componentes.” (Floyd, 2006, pág. 26)

“Existen muchos tipos de dispositivos lógicos programables, desde pequeños


dispositivos que pueden reemplazar a algunos de los dispositivos de función fija hasta
© Universidad Estatal de Milagro – UNEMI

complejos dispositivos de alta densidad que pueden reemplazar a miles de dispositivos


de función fija. Las dos principales categorías de los dispositivos lógicos programables
de usuario son los PLD (Programmable Logic Device, dispositivo lógico programable) y
las FPGA (Field Programmable Gate Array, matrices de puertas programable por
campo), que se muestran en la figura 1. Los PLD pueden ser SPLD (Simple PLD, PLD
simple) o CPLD (Complex PLD, PLD complejo).” (Floyd, 2006, pág. 26)

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 3


Fundamentos de FPGA

FIGURA 1: Clasificación de dispositivos lógicos programables


Fuente: “Fundamentos de Sistemas Digitales, Floyd, 9na edición” Pag 26
© Universidad Estatal de Milagro – UNEMI

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 4


Fundamentos de FPGA

2. Informacion de los subtemas


2.1 Subtema 1: Arquitectura
“La FPGA (Field Programmable Gate Array) tiene una estructura interna (arquitectura)
diferente como se ilustra en la figura 2. Los tres elementos básicos en una FPGA son el
bloque lógico configurable (CLB, Configurable Logic Block), las interconexiones y los
bloques de entrada/salida (E/S). Los bloques CLB de una FPGA no son tan complejos
como los bloques LAB o FB de un CPLD, pero suele haber muchos más bloques CLB.
Cuando los bloques CLB son relativamente simples, decimos que la arquitectura FPGA
es de granularidad fina. Cuando los bloques CLB son de mayor tamaño y más
complejos, decimos que la arquitectura es de granularidad gruesa.” (Floyd, 2006, pág.
27)

“Los bloques de E/S situados alrededor del perímetro de la estructura proporcionan un


acceso de entrada/salida o bidireccional, individualmente seleccionable, hacia el
mundo exterior. La matriz distribuida de interconexiones programables permite
interconectar los bloques CLB entre sí y conectarlos a las entradas y a las salidas. Los
dispositivos FPGA de gran tamaño pueden tener decenas de miles de bloques CLB,
además de memoria y otros recursos.” (Floyd, 2006, pág. 27)
© Universidad Estatal de Milagro – UNEMI

FIGURA 2: Estructura interna de la FPGA


Fuente: “Fundamentos de Sistemas Digitales, Floyd, 9na edición” Pág. 707

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 5


Fundamentos de FPGA

En la Figura 3 se muestra un encapsulado BGA (Ball-Grid Array) típico para FPGA. Estos
tipos de encapsulados pueden tener unos 1.000 pines de entrada y salida.

FIGURA 3: Encapsulado BGA


Fuente: “Fundamentos de Sistemas Digitales, Floyd, 9na edición” Pág. 29

Las FPGA son reprogramables y utilizan tecnología de proceso SRAM o de antifusibles


para implementar las conexiones programables. Las densidades pueden ir desde los
centenares de módulos lógicos hasta aproximadamente 180.000 módulos lógicos, en
encapsulados de hasta más de 1000 pines. Las tensiones de alimentación continua
están comprendidas habitualmente entre 1,2 V y 2,5 V, dependiendo del dispositivo
específico.

Bloques lógicos configurables

“Normalmente, un bloque lógico de FPGA está compuesto por varios módulos lógicos
más pequeños, que son las unidades componentes básicas y que en cierto modo
resultan análogos a las macroceldas de un CPLD.
La Figura 4 muestra los bloques lógicos configurables fundamentales (CLB) dentro de la
© Universidad Estatal de Milagro – UNEMI

matriz global de interconexiones programables dispuestas en filas/columnas y que se


utilizan para conectar entre sí los bloques lógicos. Cada CLB está formado por múltiples
módulos lógicos más pequeños y por una serie de interconexiones programables
locales que se emplean para conectar entre sí los módulos lógicos que componen el
CLB.” (Floyd, 2006, pág. 30)

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 6


Fundamentos de FPGA

FIGURA 4: Bloques lógicos configurables


Fuente: “Fundamentos de Sistemas Digitales, Floyd, 9na edición” Pag 708

Módulos lógicos. “Un módulo lógico de un bloque lógico de una FPGA puede
configurarse para implementar lógica combinacional, lógica registrada o una
combinación de ambas. Se emplea un flip-flop que forma parte de la lógica asociada
para implementar lógica registrada. En la Figura 5 se muestra un diagrama de bloques
de un módulo lógico típico basado en LUT. Como ya sabemos, una LUT (Look-Up Table)
es un tipo de memoria programable que se utiliza para generar funciones lógicas
combinacionales suma de productos. La LUT realiza, esencialmente, el mismo trabajo
que una PAL o una PLA.” (Floyd, 2006, pág. 686)
© Universidad Estatal de Milagro – UNEMI

FIGURA 5: Módulo lógico basado en LUT


Fuente: dx“Fundamentos de Sistemas Digitales, Floyd, 9na edición” Pag 708

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 7


Fundamentos de FPGA

Generalmente, la organización de una LUT consiste en una serie de 2n celdas de


memoria, siendo n el número de variables de entrada. Por ejemplo, mediante tres
entradas se pueden seleccionar hasta ocho celdas de memoria, por lo que una LUT con
tres variables de entrada permite generar una suma de productos con hasta ocho
términos.
Dentro de las celdas de memoria LUT puede programarse un patrón de 1s y 0s, como
se ilustra en la Figura 6 para una función suma de productos especificada. Cada 1
significa que el término producto asociado aparecerá en la salida suma de producto
mientras que un 0 significa que dicho término producto asociado no aparecerá en la
salida suma de productos. La expresión de la salida suma de productos resultante es:
© Universidad Estatal de Milagro – UNEMI

FIGURA 6: Suma de productos en LUT


Fuente: “Fundamentos de Sistemas Digitales, Floyd, 9na edición” Pag 709

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 8


Fundamentos de FPGA

2.2 Subtema 2: Lenguaje VHDL


Un lenguaje de descripción de hardware (HDL) es una herramienta formal que sirve
para describir el comportamiento y la arquitectura de un circuito o sistema electrónico
utilizando diferentes niveles de abstracción y en muchos casos de modo jerárquico.
El VHDL Very High Speed Integrated Circuit Hardware Desing/Description Language.
surge de Intermetrics, Texas Instruments e IBM. Inicialmente fue llamado VHD2L. Es un
lenguaje amplio y prolijo; tanto así que algunos le han adjudicado un segundo
significado: Very Hard Description Language.
A mediados de los años 80 y desde 1987 se convirtió en un estándar de la IEEE.
Utilizando VHDL se puede diseñar, simular y sintetizar desde un CLC sencillo, hasta
sistemas digitales de gran complejidad tal como un microprocesador.

El Lenguaje VHDL ha ganado mucha popularidad entre los diseñadores de sistemas


digitales en los últimos años gracias a la aparición en el mercado de variadas
herramientas de diseño que utilizan el VHDL.
Numerosas firmas han adoptado el lenguaje VHDL como herramienta básica y lo han
incorporado a sus productos. Entre las mismas están: Altera [Quartus Prime], Xilinx
[Vivado]

Dentro de la estructura, VHDL está formado por la pareja Entidad-Arquitectura (Entity-


Architecture). A la pareja entidad-arquitectura se le llama modelo en VHDL. Un fichero
nombre.vhd puede contener uno o varios modelos.
© Universidad Estatal de Milagro – UNEMI

Por lo tanto, un diseño en VHDL será un fichero texto (no un dibujo), escrito en
cualquier editor, donde en la primera parte aparece la declaración de la entidad
(entity) y a continuación la definición de la arquitectura (architecture).

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 9


Fundamentos de FPGA

Entidad

“En la declaración (Carpio, 2000) de entidades, se definen las entradas, salidas y


tamaño de un circuito, explicitando cuáles son, de qué tamaño (de 0 a n bits), modo
(entrada, salida, ...) y tipo (integer, bit,...) .

• Las entidades pueden definir bien las entradas y salidas de un diseño más grande o
las entradas y salidas de un chip directamente.

• La declaración de entidades es análoga al símbolo esquemático de lo que queremos


implementar, el cual describe las conexiones de un componente al resto del proyecto,
es decir, si hay una entrada o puerto de 8 bits, o dos salidas o puertos de 4 bits, etc.”
(Carpio, 2000, pág. 40)

Entity. Cabecera del programa

“Port. Se indica que a continuación viene los puertos (o grupos señales) de entrada y/o
salida. Aquí se declaran las entradas y/o salidas con la sintaxis que se verá a
continuación. Las líneas empezadas por dos guiones son ignoradas por el compilador.
Así mismo, recordamos que el compilador no distingue las mayúsculas de las
minúsculas.
© Universidad Estatal de Milagro – UNEMI

End. Se indica que se ha acabado la declaración de puertos de entrada y/o salida, y que
se ha acabado la entidad” (Carpio, 2000, pág. 41)

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 10


Fundamentos de FPGA

En VHDL las señales puede ser de cuatro modos diferentes:

Los tipos de señales posibles se muestran a continuación:


© Universidad Estatal de Milagro – UNEMI

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 11


Fundamentos de FPGA

Veremos ahora un ejemplo de designación de puertos:

“nombre_variable: modo tipo; Forma genérica de designar un puerto

Puertoa: in bit; El primer puerto es un bit de entrada, y su nombre es "puertoa"

Puertob: in bit_vector(0 to 7); El segundo puerto es un vector de 8 bits de entrada


siendo el MSB el puertob(0) y el LSB el puertob(7)

Puertoc: out bit_vector(3 downto 0); El tercer puerto es un vector de 4


bits de salida siendo el MSB el puertoc(3) y el LSB el puertoc(0)

Puertod: buffer bit; El cuarto puerto es un buffer de un solo bit, cuyo nombre es
"puertod"

Puertoe: inout std_logic; El quinto puerto es una entrada/salida del tipo estándar logic
de un solo bit” (Carpio, 2000, pág. 83)

Ahora que ya hemos revisado como declarar entradas y los tipos disponibles, vamos a
realizar a modo de ejemplo una declaración de entidad.

Escriba la declaración de identidad para un circuito digital con dos entradas (a, b) y una
salida f, como el mostrado:

Solución:
ENTITY ejemplo1 IS
© Universidad Estatal de Milagro – UNEMI

PORT ( x, y : IN std_logic ;
f : OUT std_logic ) ;
END ejemplo1 ;

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 12


Fundamentos de FPGA

Arquitectura

“La arquitectura indica el tipo de procesado que se realiza con la información


correspondiente a las señales de entrada, (declarados previamente en la entidad) para
llegar a tener los puertos de salida (también declarados en la entidad). En la
declaración de arquitecturas es donde reside todo el funcionamiento de un circuito, ya
que es ahí donde se indica que hacer con cada entrada, para obtener la salida. Si la
entidad es vista como una "caja negra", para la cual lo único importante son las
entradas y las salidas, entonces, la arquitectura es el conjunto de detalle interiores de
la caja negra.” (Carpio, 2000, pág. 102)

Cabecera de la arquitectura

Declaraciones de apoyo que se verán más


adelante.

Se da comienzo al programa.

Conjunto de sentencias, bucles, procesos,


funciones, que dan operatividad al
programa.

Fin del programa.

La estructura más común de un programa VHDL consiste en tres partes:


© Universidad Estatal de Milagro – UNEMI

1. Declaración de las bibliotecas utilizadas (library).

2. Una entidad (entity)

3. Una arquitectura (arquitecture)

Además, los comentarios se inician con dos guiones seguidos y terminan al final de la
línea.

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 13


Fundamentos de FPGA

“El lenguaje VHDL se organiza y trabaja con bibliotecas. Una biblioteca VHDL es un
lugar donde el compilador VHDL almacena información referente a un proyecto de
diseño particular, incluyendo documentos intermedios que son usados en el análisis, la
simulación y la síntesis.” (Carpio, 2000, pág. 102)

Una biblioteca estándar muy usada es la biblioteca IEEE. La biblioteca IEEE es solo de
lectura y es del tipo global pues permite ser usada por varios programas a la vez. El
diseñador no puede interactuar con ella ni modificar su contenido. Para usarla se debe
escribir al inicio del programa:

library ieee;

Veremos ahora unos cuantos operadores básicos con la nomenclatura VHDL.


© Universidad Estatal de Milagro – UNEMI

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 14


Fundamentos de FPGA

Declaraciones concurrentes

La descripción por flujo de datos utiliza en su escritura ecuaciones simples de


asignación de señales, declaraciones de asignación condicional de señales (usando
when-else) o de asignación de señales seleccionadas (usando with-select-when).

Asignación de señales

El miembro de la derecha del operador de asignación <= se le conoce como expresión,


cuyo valor se obtiene evaluándola completa. Luego ese valor se deposita
en el miembro de la izquierda. En la implementación de circuitos simples, el miembro
de la derecha es la función minimizada, que asigna un valor de verdad a la salida.

Asignación de condición de señales

“Cuando una señal cambia de valor se dice que se ha producido un evento. La


existencia de eventos da lugar a otro evento. De esta manera se actualizan los valores
de las señales” (Carpio, 2000, pág. 110). De esta manera cuando la expresión booleana
cambie de valor, la expresión que se le asigne a la señal será distinta.

Asignación de condición de señales


“Este tipo de declaración de asignación evalúa la expresión que acompaña a la
© Universidad Estatal de Milagro – UNEMI

declaración with y cuando el valor coincide con una de las alternativas señaladas
después de la palabra clave when, entonces el valor correspondiente a esta alternativa
se le asigna al nombre de la señal.” (Carpio, 2000, pág. 103)

Cuando el valor de la señal para varias alternativas es el mismo, pueden ser expresadas
como una lista de valores separadas por barras verticales “|” La palabra clave others
sirve para cubrir todos los casos posibles faltantes.

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 15


Fundamentos de FPGA

Ejercicio

Realizar la descripción en VHDL de tipo flujo de datos de la compuerta XOR.


© Universidad Estatal de Milagro – UNEMI

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 16


Fundamentos de FPGA

2.3 Subtema 3: Aplicaciones


“El rango de aplicaciones de las FPGA es muy amplio, debido a la versatilidad y a la
flexibilidad de estos dispositivos; siendo la principal aplicación de las FPGAs
el procesamiento digital de señales (DSP), comunicaciones, procesado de datos, etc.
La elección de una FPGA para aplicaciones de tratamiento de señal se debe a su alta
frecuencia de trabajo, a su capacidad de procesamiento en paralelo, y a su bajo precio
en comparación con los ASICs. En general, la lógica de un CPLD es insuficiente para
realizar dicho procesamiento.” (Carpio, 2000, pág. 201)

En la siguiente ilustración puede apreciarse la distribución de las aplicaciones de las


FPGA.

FIGURA 7: Distribución de aplicaciones de las FPGA


“VHDL: Lenguaje para síntesis y modelado de circuitos, 9na edición” Pag 250

De esta aplicación se derivan una gran variedad de aplicaciones de las FPGA, citándose
algunas de ellas a continuación:

▪ “Sistemas de visión artificial: En el mundo actual existen cada vez en más números
dispositivos que disponen de un sistema de visión artificial. Ejemplo de esto son las
© Universidad Estatal de Milagro – UNEMI

cámaras de videovigilancia, robots, etc. Muchos de estos dispositivos precisan de


un sistema para conocer su posición, reconocer los objetos de su entorno,
reconocer rostros de personas, y poder actuar e interactuar con ellos de la forma
adecuada. Esta característica requiere manejar unos volúmenes de imágenes muy
elevados, tratar dichas imágenes para detectar objetos, reconocer rostros, etc., en
la gran mayoría de ocasiones en tiempo real.” (Carpio, 2000, pág. 210)

▪ “Sistemas de imágenes médicas: Cada vez con más frecuencia se están empleando
las FPGAs para el tratamiento de imágenes biomédicas obtenidas mediante

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 17


Fundamentos de FPGA

procesos de PET, escáner CT, rayos X, imágenes tridimensionales, etc. Estos


sistemas de visión médica cada vez precisan de más resolución 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.” (Carpio,
2000, pág. 210)

▪ “Radio definida por software (SDR): De forma tradicional, una radio consistía en
una antena, encargada de recibir y enviar una señal, y un hardware encargado de
procesar esa señal, filtrarla, modificar su frecuencia, etc. Este hardware no podía
modificar de forma notable la funcionalidad para la cual había sido diseñada. En la
actualidad gran parte de esta funcionalidad se traslada a un dispositivo electrónico,
que con frecuencia suele ser una FPGA, pudiendo limitarse la parte analógica a una
antena y a los convertidores ADC y DAC.” (Carpio, 2000, pág. 211)

▪ “Codificación y encriptación: La seguridad en el envío 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 más aún en el ámbito militar, aeronáutico y gubernamental. En
este terreno, la encriptación eficiente y segura de mensajes se convierte en un
objetivo prioritario. Las FPGA pueden aportar en este terreno su capacidad de
manejar grandes volúmenes de información y sus bloques optimizados para realizar
operaciones aritméticas.” (Carpio, 2000, pág. 211)

▪ “Radioastronomía: La radioastronomía es la ciencia que se encarga de estudiar los


fenómenos que ocurren en el espacio mediante la captación de la radiación
electromagnética procedente de éste. De forma similar a las aplicaciones
anteriores, precisa del procesamiento de una gran cantidad de información en el
que la FPGA puede aportar todo su potencial.” (Carpio, 2000, pág. 211)

▪ “Reconocimiento de voz: El reconocimiento de la persona que habla es una técnica


© Universidad Estatal de Milagro – UNEMI

empleada en seguridad, sistemas de recuperación de información, etc., y se espera


que en el futuro su ámbito de aplicación aumente. En este contexto, la FPGA
resulta muy eficiente a la hora de realizar la comparación de la voz de una persona
con unos patrones previamente almacenados.” (Carpio, 2000, pág. 211)

▪ “Aeronáutica y defensa: Además de las mencionadas previamente, existen


multitud de aplicaciones aeronáuticas y de defensa que emplean FPGA debido a las
buenas características que éstas ofrecen.” (Carpio, 2000, pág. 211)

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 18


Fundamentos de FPGA

FIGURA 8: Diagrama de bloques de FPGA


“VHDL: Lenguaje para síntesis y modelado de circuitos, 9na edición” Pag 250

“La principal ventaja de este tipo de radio es que su funcionalidad viene definida por el
diseño del software, de forma que su modificación o actualización es sencilla y no
precisa de la sustitución de ningún elemento de hardware.” (Carpio, 2000, pág. 212)

Data Center / Cloud: El internet de las cosa (IoT), y en general el big data, están
generando un crecimiento exponencial de los datos adquiridos y procesados, que
junto con el análisis computacional de los mismos mediante técnicas de aprendizaje
profundo de múltiples operaciones paralelas/concurrentes, están conllevando una alta
demanda de capacidad computacional de baja latencia, flexible y segura que no se
resuelve añadiendo más servidores / blades, debido al disparatado incremento del
coste en espacio, consumo y dinero. Bajo este panorama, las puertas del mundo del
Data Center se están abriendo de manera masiva a las FPGAs, debido a su capacidad
de aceleración computacional, flexibilidad de configuración y la seguridad que
garantiza el hardware frente al software.
© Universidad Estatal de Milagro – UNEMI

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 19


Fundamentos de FPGA

3. Bibliografía

» Carpio, F. P. (2000). VHDL: Lenguaje para sintesis y modelado de circuitos.


Madrid: Alfaomega.

» Floyd, T. L. (2006). FUNDAMENTOS DE SISTEMAS DIGITALES. Madrid: PEARSON


EDUCACIÓN.
© Universidad Estatal de Milagro – UNEMI

FORMATO CONTROLADO: FR0018/ v1.0 / 18-11-2019 20

También podría gustarte