Hace 1 año | Por mr_b a learn.sparkfun.com
Publicado hace 1 año por mr_b a learn.sparkfun.com

Empecemos desde el principio: FPGA son las siglas de Field Programmable Gate Array. Los FPGA pertenecen a una clase de dispositivos conocidos como de lógica programable o, en ocasiones, denominados como hardware programable. Esencialmente un FPGA no hace nada por sí mismo, pero se puede configurar para que sea casi cualquier circuito digital que se desee. La magia aquí es que nada cambia físicamente, simplemente carga una configuración y comienza a comportarse como el circuito descrito en la configuración cargada.

Comentarios

DangiAll

Que tiempos aquellos jugando con las FPGA, y programando en vhdl

T

#1 disculpa que me ponga exquisito, pero vhdl no es un lenguaje de programación. Diseñar en vhdl no es programar.

frankiegth

#6. Claro que es programar. Con el lenguaje VHDL describes tanto el circuito como su comportamiento. En los lenguajes de programación convencionales describes la estructura de un programa y su comportamiento. Es más de lo mimo, lo único que cambia es la perspectiva y el enfoque.
(CC #10 #11 #12 #1)

c

#21 #13 No lo creo. Es algo en lo que hacemos hincapié muchos que usamos HDLs, sobre todo cuando hablamos con novicios, porque a diferencia del SW común, cuando se describe HW hay que tener una imagen clara de que tipo de HW hará cada descripción en VHDL. Si uno escribe al tuntún, puede desperdiciar recursos del FPGA, o provocar consumo excesivo de potencia, o que la herramienta de síntesis directamente se trabe (la herramienta de síntesis es la que intrepreta el VHDL y lo traduce en compuertas, tablas lógicas, etc. etc.)

https://stackoverflow.com/questions/5121679/why-is-verilog-not-considered-a-programming-language

"Typically, a beginner in Verilog/VHDL will be tempted to "translate" a given function/algorithm from a C/C++ type of pseudocode directly to Verilog/VHDL: surprisingly, it might sometimes work, but it always lead to dramatically poor design. One must really be aware of these differences in order to become a good Verilog/VHDL programmer."

frankiegth

#22. El comentario #21 lo describe perfectamente. Y en #13 cuando hablo de perspectiva y enfoque me refiero a lo mismo. Además, con la tendencia actual de múltiples nucleos en los procesadores también hay "algo" de programación en paralelo como con los chips FPGA, aunque con las FPGA todo funciona en paralelo porque cuando se introduce un diseño programado correctamente con VHDL en el interior de la FPGA lo que se reproduce es ese circuito completo.

Tampoco es lo mismo dedicarse a programar gestionando bases de datos que dedicarse a programar drivers gráficos para tarjetas gráficas, el enfoque dentro de la programación convencional también debe adaptarse en cada caso y al propio hardware. Con las FPGA ocurre lo mismo.

ahotsa

#22 Ya he dicho que esto es una RS de carácter divulgativo y también he dicho, aunque vagamente para no ser también un cursi, que, aunque el término es el mismo que en sw, tiene sus diferencias (secuencial vs paralelo).

Todo lo que tú estás diciendo yo te lo entiendo perfectamente, pero sobra aquí. Es es el riesgo de explicar VHDL a gente de software, no electrónicos, y por eso hay que dejárselo claro desde el principio. Pero venir a decir que eso no es programar, cuando es el término utilizado, o dar esos detalles técnicos que solo unos pocos entendemos es venir a lucirse en lugar de a divulgar.

Si quisieras divulgar, podrías haber dicho algo así (o no...):

La programación software, de la que muchos por aquí son expertos o, al menos, entienden algo es, sin entrar en honduras, una secuencia de instrucciones que se ejecutan una detrás de otra (aunque pueda haber reparto de tareas por parte de un SO o de interrupciones por eventos externos).

La programación de una FPGA (u otros dispositivos digitales programables, como las EPLD) en sus primeros tiempos se llevaba a cabo diseñando el circuito electrónico a implementar, como si estuvieras diseñando un circuito con componentes discretos basados en puertas lógicas o módulos tipo registros, contadores, etc. Las FPGA se basan en celdas que contienen elementos básicos (algún registro y puertas lógicas). Un compilador del fabricante del silicio traduce el circuito a algo implementable con esas celdas. Con el tiempo el número de celdas y los componentes dentro de cada una de ellas fue creciendo exponencialmente permitiendo diseños muchísimo más complejos.

Ahí entra en juego los lenguajes de descripción del hardware (electrónica) como el VHDL. La sintaxis de este lenguaje se asemeja a los lenguajes de programación software más ampliamente conocidos. Pero las diferencias son importantes: en el caso que nos ocupa, se describe el hardware y, por tanto, no necesariamente una de las primeras líneas del programa se va a "ejecutar" antes que otra que esté escrita más abajo por debajo en el programa. Entrecomillo "ejecutar" porque un circuito electrónico siempre está haciendo algo, a diferencia de una instrucción en software, que se ejecuta cuando le llega su "turno", cuando algo así como un puntero o contador le dice que le toca.

La similitud del lenguaje VHDL a otros de programación software acerca el diseño de las FPGA a ingenieros de software. Pero es necesario tener conocimientos de diseño electrónico para evitar errores y construir diseños poco efectivos o que no cumplen los requisitos. Un ingeniero electrónico, cuando escribe el VHDL está "viendo" o intuyendo cómo el compilador va a implementar el diseño final, lo cual facilita el llegar a un diseño óptimo o hacerlo en un menor tiempo, o ser capaz de depurar los errores detectados durante la ejecución del diseño una vez grabada la FPGA.

Realmente, la depuración primera no se hace con la FPGA ya grabada, sino con un simulador que el mismo software de diseño y compilación incluirá. Ahí se verá, por ejemplo, los tiempos entre señales electrónicas (externas al circuito o internas del mismo). Esos tiempos dependerán mucho del diseño y este, a su vez, de la destreza del ingeniero electrónico que esté diseñándolo, por lo que la experiencia en electrónica es fundamental.

De hecho, para tener mayor control sobre ciertas partes de un diseño, por ser críticas en su respuesta en el tiempo, por ejemplo, pueden diseñarse a la vieja usanza como si fuera un diseño electrónico al uso. El compilador es capaz de manejar un diseño "multilenguaje" donde una parte se describe como un plano electrónico, otra como una tabla de la verdad (una tabla que indica los valores de unas señales en función de otras), otra en VHDL... Más o menos como una aplicación informática desarrollada con diferentes lenguajes, pero con una diferencia: En diseño de FPGA el compilador es uno y compila todo a la vez.

Esto ha pretendido ser un resumen divulgativo por si alguien quiere tener unas nociones muy generales de lo que es una FPGA y qué diferencias hay entre el desarrollo de sw y el de hw, ya que las herramientas y los procesos tienen ciertas semejanzas y comparten términos, aunque su significado difiera. No pretendo hacer ver que sé más o menos que nadie, sin aportar nada.

Jesuo

#28 Es una programación múltiple, convolucional, si es programación, pero en el bucle se convierte en diseño, que al fin y al cabo va implícito en el código o programa.

e

#10 yo tengo la famosa ebaz5420.

es un juguete muy interesante por los 10€ que costaba en AliExpress ya que el propio Chío fpga ya cuesta eso pero tienes que ser manitas soldando para sacarle partido ya que necesita bastantes ñapas para que sea equivalente a una placa de evaluación y es un poco lotería el estado en el que te llega ya que son reciclajes de mineros

ahotsa

#10 Pues sí, se ha venido muy arriba en una red social de carácter divulgativo, por mucho que esté en el epígrafe de "Tecnología". Por ejemplo, aquí Xilinx, el mayor fabricante de FPGA, utiliza ese término: https://www.xilinx.com/products/silicon-devices/resources/programming-an-fpga-an-introduction-to-how-it-works.html

Que el concepto difiere entre la programación del software (algo mayormente secuencial) y la descripción de un hardware (donde muchas cosas se resuelven en paralelo), sí; ¿y qué? Ese es el término que se utiliza. Lo demás es venir a hacerse notar, en mi opinión.

cc #6

e

#6 entonces que es?

c

#11 Descripción de Hardware como el nombre lo indica - Hardware Description Language

chicKles

#1 cuánto sufrimiento… 

S

Un FPGA son células madre "informáticas", que programandolas son la máquinas que querais porque forman toda la "arquitectura", el problema es que dependen de que alguien se moleste en hacer ese trabajo y que sea bueno... Si no teneis ni idea compraos las máquinas originales

Aquí con gente española dando explicaciones



Mr.Worthington

Lo primero que se me ha ocurrido como uso de esto es un pedal de guitarra configurable y he visto que hay un TFG de la UPV y un proyecto de la universidad de Tel Aviv al respecto

e

#7 hacer procesado de audio en fpga es un poco matar moscas a cañonazos porque cualquier procesador puede hacerlo de manera más simple de desarrollar ya que las tasa de audio son muy bajas y las latencias necesarias también.

otra cosa sería hacer procesado de imagen que la fpga es más idóneo a la par que una GPU para algunas cosas sencillas

Hector_Valencia

La historia de como rompieron el código FPGA es notable. Lo tuvimos desde el primer pendrive, es lo que entendemos como dispositivo, pero no fue sino hasta que se rompió el código a fuerza bruta sobre caja negra que no se entendió al valor de hacer cosas distintas, hablar de procesos a mas de 2khz es normal gracias alas FPGA.

inconnito

#4 Pero de qué hablas?

ahotsa

#18 Joder, pues le han da dado positivos. Serán los que le venden la droga

c

#18 Lo leí tres veces y las cuatro veces no lo entendí

Bley

#15 A mi no me gusta nada, prefiero consolas originales y Everdrives.

Y para tener todo en un único aparato por CRT el RGB-Pi y en la maquina arcade el Jamma Pi.

c

#16 RGB-Pi es emulación tradicional, está en otra liga...

Bley

Yo solo lo conocia por los Everdrives

c

#5 MISTER es la mejor forma de emular (realmente es como jugar en el HW original). Esperando a que siga avanzando y baje los precios

H

#15 ostras, acabo de mirar los precios de los kit míster y no bajan de 500€ hace medio creo que estaban a la mitad...

e

#32 está claro que habiendo una CPU que tienes las pilas de wifi en software no te vas a poner a picar todo eso en hdl.

solo queria exponer como curiosidad que el ejemplo no era el más indicado.

de todas formas lo de que no se va a implementar la CPUs en hdl tampoco es correcto ya que se lleva años haciendo y seguirá así para muchos casos especificos

e

Trying to do something like sending and receiving data over WiFi would be a daunting task with an FPGA

mal ejemplo

https://github.com/open-sdr/openwifi

lolerman

#25 Pero es que sí que es correcta la afirmación: programar un sistema WiFi con puertas lógicas (como se hace en un FPGA) sería una tarea bastante costosa. Lo que se hace es integrar chips que integran modulo FPGA, CPU, RAM, sistemas de entrada y salida como Ethernet o WiFi... pero no programas toda una CPU o un sistema WiFi en una FPGA; en todo caso le das acceso a tu lógica de la FPGA al modulo WiFi integrado.

Por lo menos en términos generales. Otra cosa es que haya un friki concreto que tenga sus motivos para pegarse un currazo en desarrollar todo el stack WiFi en puertas lógicas.

e

#27 échale un vistazo al repo antes de afirmar nada. es un stack completo wifi en un sistema híbrido, capa física y Mac en lógica y el resto en el arm de la zynq.
he tenido el gusto de conocer al "friki" que lo diseñó y no lo ha hecho por amor al arte si no porque fondos europeos de investigación se lo han pagado y ha hecho un trabajo espectacular que ahora pertenece a la comunidad open source

c

#30 #25 Pero si estás diciendo lo mismo que él. Lo que dijo #25 es que no tiene sentido implementar todo el WiFi en un FPGA SIN CPU. Y en el ejemplo que tú das, justamente, es FPGA + CPU.

Y

Buen artículo de introducción al mundo FPGA.

Es curioso saber que están presentes en prácticamente en todos los sectores industriales, desde la automoción hasta el espacio.
Y con posibilidades cada vez mayores como los MPsoc y RFsoc.

Jesuo

Las IAs programarán esos FPGA, que más dá si es un lenguaje o no el vhdl, estamos en la antesala de las CPU, GPU y demases chipses que se auto reprogramarán en tiempo real para hacer las distintas tareas de una forma más efectiva, tiene que cambiar hasta el concepto de las memorias RAM, el "programar" FPGAs dicen que es una tarea muy ardua y cansina, las IAs ayudarán a la transición.

Algo así como el terminator polimórfico de la segunda entrega de la saga.

Jesuo

En la película Aliens & Cowboys hay un ejemplo de cómo podrían evolucionar esos FPGA y la informática, en la nave de los aliens, que está formado por figuras geométricas que cambian de forma y de volumen constantemente en un flujo de plasma parece.