EUR | USD

FPGA 101: Una guía para principiantes

Para los de mentalidad binaria entre ustedes, no, no se han perdido las partes 1 a 4. Esta es una breve introducción a mi dispositivo electrónico favorito:  el arreglo programable de puertas en campo (FPGA). Cuando hablo con la gente sobre los FPGA, escucho muchas frases como: “No sé cómo funcionan”, “Son demasiado complicados” o “No puedo programarlos en C”. Debido a que odiaría ver que estos asombrosos dispositivos se desechen tan fácilmente, intentaré abordar algunas de estas inquietudes comunes a continuación.

¿Qué es un arreglo programable de puertas en campo?

Aquí está la respuesta larga:  Del nombre, se puede deducir que se trata de una estructura programable de puertas lógicas. Esto está cerca, pero no es exacto porque el arreglo lógico interno no se implementa realmente con puertas. En su lugar, nos referimos a los bloques del arreglo como elementos lógicos. Estos normalmente constan de una tabla de búsqueda (LUT) que implementa una función lógica arbitraria, así como algunos circuitos de apoyo como multiplexores, sumadores y biestables. A menudo, escuchará que se refieren a este arreglo de elementos lógicos como “tela de FPGA”.

Figura 1: Muestra de un elemento lógico de FPGA. (Fuente de la imagen: Wikimedia Commons)

Para simplificar, me gusta pensar en un FPGA como una caja de bloques de construcción coloridos y sin marca registrada para crear circuitos digitales. Puedo conectar los bloques entre sí de la forma que desee para ajustar mi aplicación. Si puede describir cómo se comporta un circuito digital, puede crearlo dentro de un FPGA con suficientes elementos lógicos. ¿Necesita 25 salidas de PWM? No hay problema. ¿Necesita un protocolo de comunicación especial? Escriba algo de hardware para manejarlo.

¿Por qué necesitaría un FPGA?

Un FPGA se utiliza para implementar un sistema digital, pero un simple microcontrolador a menudo puede lograr el mismo efecto. Los microcontroladores son económicos y fáciles de colocar en una placa CI. Los FPGA son herramientas poderosas, pero pueden no ser adecuados para todos los casos. Tienen más requisitos de potencia, diseño y circuitos externos que pueden tener costos muy altos. Usar un FPGA que es considerablemente más costoso y tiene muchos requisitos especiales podría parecer una noción absurda.

Es posible que ya haya adivinado la primera razón por la que podría necesitar un FPGA: la flexibilidad. Disponer de bloques lógicos configurables significa que nunca tendrá que quedarse con el hardware. Nunca puede quedarse sin temporizadores o transmisores receptores asíncronos universales (UART) mientras tenga elementos lógicos disponibles para crear otros. Ser capaz de reconfigurar en el futuro también puede extender el ciclo de vida de un producto a medida que cambian la tecnología y los requisitos.

La segunda razón es la velocidad. Un microcontrolador ejecuta las instrucciones una a la vez, secuencialmente. Una estructura FPGA es intrínsecamente paralela debido a su naturaleza de hardware. Esto permite que las cosas ocurran simultáneamente, lo que es útil para operaciones como la transformada rápida de Fourier (FFT) o el procesamiento de gráficos, que pueden ser costosos en un procesador secuencial. Los FPGA también tienen más opciones de E/S de alta velocidad que un microcontrolador típico como tecnología de señal diferencial de bajo voltaje (LVDS) y transceptores capaces de más de 10 Gbps para protocolos como HDMI.

¿Cómo programo un FPGA?

Los FPGA utilizan un tipo especial de lenguaje llamado Lenguaje de descripción de hardware (HDL). Existen dos sistemas primarios: Verilog y VHDL. Casi todos los paquetes de desarrollo, como Quartus o Vivado, soportan ambos, por lo que la decisión de utilizarlos es una cuestión de preferencia. Estos lenguajes se “sintetizan”, lo que es análogo a la compilación para microcontroladores. La herramienta de síntesis le indica al FPGA cómo conectar sus elementos lógicos para crear el efecto descrito por su código. Cuando empiece a trabajar, es importante que recuerde que su código está siendo traducido a hardware y no a instrucciones de la unidad central de procesamiento (CPU).

Para facilitar el desarrollo, los proveedores de FPGA le proporcionan un catálogo de bloques de código de uso común que se pueden colocar fácilmente en un diseño. Estos incluyen cosas como multiplicadores, RAM, bloques de comunicación, y más. Pueden configurarse y añadirse a su diseño sin tener que mirar nunca el código de HDL implicado, lo que acelera su tiempo de desarrollo.

Figura 2: Diagrama de bloques parciales que muestra bloques IP del catálogo de Xilinx y HLS. (Fuente de la imagen: eewiki.net)

Algunos proveedores también tienen herramientas de síntesis de alto nivel (HLS) que pueden traducir una función escrita en C o C++ en un bloque de código de HDL. El uso de estas herramientas reduce en gran medida la barrera de entrada para los desarrolladores con un fondo de software al abstraer algunos de los detalles de bajo nivel.

¿Todavía no está convencido? Una de mis características favoritas de un FPGA es la capacidad de usar un procesador de software. Se trata de un procesador completo construido a partir de los elementos lógicos de un FPGA. Con esto, puede construir hardware de soporte personalizado para el procesador y escribir su aplicación en C. Un simple sistema de procesador de software puede ser configurado y programado en solo unos minutos. Si todavía necesita un procesador tradicional, eche un vistazo a los SoC que tienen un FPGA y un procesador ARM resistente en un solo paquete.

En resumen, los FPGA son más costosos y más difíciles de trabajar que un microcontrolador típico, pero pueden ofrecer mucha más potencia y flexibilidad si se requiere. A medida que la tecnología mejora y los FPGA se vuelven menos costosos con mayores niveles de integración, podrían incluso reemplazar a los microcontroladores tradicionales. Por lo tanto, si algo de esto le parece interesante, empiece a utilizar los FPGA ahora para que pueda mantenerse a la vanguardia. Si está buscando una placa de desarrollo de bajo costo para empezar, eche un vistazo a estas placas que presentan cada uno de nuestros proveedores de FPGA: la DE10-Lite de Terasic, la Arty de Digilent, la Mobile Dev Board de Lattice o la Maker Kit de Microsemi.

Información sobre el autor

Image of Taylor Roorda Taylor Roorda, ingeniero de aplicaciones asociado de Digi-Key Electronics, se unió a la organización en 2015 y sus principales áreas de interés son los sistemas integrados, la lógica programable y el procesamiento de señales. Tiene una licenciatura en Ingeniería Eléctrica de la Universidad Estatal de Dakota del Norte y pasa su tiempo libre tocando la guitarra y escribiendo música.
More posts by Taylor Roorda