Club SE220
Club SE220
Club SE220
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
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.
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.
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.
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
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.
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.
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.
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).
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.
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.
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
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
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
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
Objetivos: ...................................................................................................................... 3
3. Bibliografía ......................................................................................................20
2
Fundamentos de FPGA
“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)
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.
“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
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
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).
Entidad
• 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.
“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)
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 ;
Arquitectura
Cabecera de la arquitectura
Se da comienzo al programa.
Además, los comentarios se inician con dos guiones seguidos y terminan al final de la
línea.
“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;
Declaraciones concurrentes
Asignación de señales
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.
Ejercicio
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
▪ “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
▪ “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)
“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
3. Bibliografía