Por lo general, presento el FPGA (matriz de puerta programable en campo) diciendo que es como una caja de Lego , llena de muchas instancias de varios tipos de bloques. En lugar de bloques Lego, el FPGA contiene circuitos digitales modulares que comprenden algunos de los componentes combinacionales (por ejemplo, compuertas lógicas, multiplexores) y secuenciales (por ejemplo, flip-flops).
Los bloques de Lego nos permiten construir muchos, muchos objetos diferentes (casas, automóviles, puentes, aviones, etc.). El FPGA se puede utilizar para construir casi cualquier circuito digital, siempre que la parte FPGA seleccionada tenga suficientes recursos (bloques y velocidad) para implementar ese circuito.
Entonces, el FPGA es el circuito reconfigurable más popular.
El costo de FPGA va de unos pocos USD a más de mil USD, según el modelo que necesite para su diseño.
- Un diodo de 4 diodos en un puente rectificador obtiene OC en AVR. ¿Cuál será el efecto de esto?
- ¿Cómo permite la conexión Scott la conversión del sistema de 2 fases al sistema de 3 fases?
- ¿Cómo se produce la fuerza electromotriz según la ley de inducción de Faraday? ¿Justifica / coincide con la primera y tercera ley de Newton?
- Soy un estudiante de ingeniería eléctrica bastante inteligente y quiero construir un sitio web dinámico de tipo Instagram (nivel de dificultad técnica) en 7 meses. ¿Es eso posible? (detalles en la descripción)
- ¿Por qué no podemos almacenar AC como DC?
A continuación se muestra una imagen de un FPGA típico, muy simple y clásico.
Como puede ver, los bloques principales en el FPGA son bloques lógicos y bloques de E / S (entrada / salida). Pero la gran mayoría de los bloques en el FPGA son bloques lógicos, como se puede deducir de la figura.
Además de los bloques, hay grupos de líneas de metal dentro del FPGA, que generalmente se ejecutan a lo largo de dos direcciones ortogonales: vertical y horizontal. Estos se denominan interconexiones programables . En la encrucijada de las líneas vertical y horizontal, hay grupos de interruptores (el cuadrado gris en el zoom de Interconexión Programable, que se muestra en la figura anterior, representa uno de ellos) implementado con transistores MOSFET, que se conectan, de manera programada, Las líneas ortogonales según el circuito digital (proyecto) que estamos desplegando en el FPGA.
Los Bloques lógicos , llamados CLB (Bloques lógicos configurables) por algunos proveedores de FPGA (es decir, Xilinx), varían en arquitectura según el proveedor y la familia de FPGA. A continuación se muestra un CLB típico, pero simple.
Este CLB contiene dos LUT de 3 entradas (Tablas de búsqueda), que en realidad son dos pequeñas RAM de 8 bits, que generalmente se utilizan para emular cualquier función combinacional (o combinatoria) de 3 entradas. Combinando las dos LUT de 3 entradas con un MUX de dos entradas (multiplexor), podemos implementar cualquier función combinacional de 4 entradas. Este CLB también tiene una celda sumadora completa (FA), algunos MUX y un flip-flop tipo D (DFF). Por lo tanto, este CLB puede ser parte de circuitos combinados o secuenciales complejos digitales (con muchas compuertas y flip-flops).
Otro proveedor importante de FPGA, el antiguo Altera (ahora Intel-FPGA, porque Intel compró Altera hace unos meses), llama a los Elementos Lógicos (LE) a sus bloques lógicos. A continuación se muestra un LE de su familia Cyclone II, un bloque algo similar al CLB de Xilinx (que se mostró en la imagen anterior).
Para reconfigurar (o “programar”) el FPGA, generalmente describimos el circuito digital que deseamos implementar en el FPGA utilizando los lenguajes de descripción de hardware (HDL) Verilog o VHDL . Esta descripción se “compila” (lo que generalmente se llama compilación de hardware) a una secuencia de bits que se descarga, a través de un pin FPGA, a una cadena de registro dentro de la FPGA. Esta cadena de registros atraviesa todos los registros programables en la FPGA: LUT, MUX y FFD en los bloques lógicos, interruptores MOSFET en las interconexiones programables y eventualmente otros registros internos (es decir, registros en los bloques de E / S).
A continuación se muestra una imagen del Quartus II IDE (Entorno de desarrollo integrado) de Altera (o Intel-FPGA), donde se muestra un circuito digital, descrito como un módulo Verilog. Es un decodificador / demultiplexor simple, si los comentarios en la figura son verdaderos 🙂
De hecho, consta de solo cinco puertas AND interconectadas.
El IDE de Xilinx tiene un aspecto muy similar. A continuación se muestra una imagen del software ISE de Xilinx.
De hecho, si aprende a trabajar con una de estas herramientas, es bastante sencillo extender sus habilidades a las herramientas de otros proveedores, dado que son bastante similares.
Recuerde que después de haber terminado de describir su proyecto en una de estas herramientas de diseño, definiendo los módulos (o entidades) Verilog o VHDL, o incluso dibujando los esquemas del circuito, que también está permitido en la mayoría de las herramientas, compila su diseño para un archivo de bits conforme con el modelo FPGA donde desea implementar su proyecto. Este archivo de bits se descarga en el FPGA, y luego puede conectar otros dispositivos y señales al FPGA (relojes, habilitaciones, etc.) y probar su diseño observando su comportamiento con osciloscopios y analizadores de señales digitales.
Es importante tener en cuenta que las herramientas también proporcionan la simulación de su diseño. Entonces, antes de probar el hardware, debe simular su diseño para realizar su verificación . Solo después de que este paso se haya realizado con éxito, debe proceder a las pruebas de hardware (que casi siempre es más costoso y consume bastante más tiempo del ingeniero en comparación con la simulación).
Hay varias variaciones del FPGA típico mencionado anteriormente. Mencionaré algunos de ellos.
Por ejemplo, hay FPGA de señal mixta, es decir, chips similares a FPGA que tienen algunos bloques reconfigurables digitales estándar pero también tienen un “número limitado” de bloques analógicos reconfigurables. El que se muestra a continuación, de Microsemi (anteriormente Actel) es un ejemplo: tiene algunos comparadores, ADC y DAC que se pueden vincular de varias maneras. Este dispositivo en particular también tiene un procesador integrado (ARM Cortex-M3). Por lo tanto, es un chip bastante versátil.
Hoy en día hay varios ejemplos de dispositivos que combinan, en el mismo chip, un procesador (micro) estándar y un FPGA. Un ejemplo popular es el Zynq de Xilinx. A continuación se muestra un diagrama de la arquitectura Zynq-7000.
Como puede ver, hay un subsistema que consiste en un procesador (de la familia ARM), varias interfaces de E / S y una estructura FPGA (parte amarilla del diagrama) que consta de los bloques FPGA habituales. En los FPGA complejos, como estos, además de los tres bloques FPGA básicos (bloques lógicos, bloques de E / S e interconexiones programables), se pueden encontrar bloques más complejos, como DSP (bloques de procesamiento de señal digital) y RAM grande (acceso aleatorio Memoria) bloques.
Conclusión…
Un FPGA puede verse como una “bolsa” de bloques que implementan una funcionalidad digital simple (compuertas, flip-flops, multiplexores …) o, en FPGA más complejos y costosos, que implementan funciones digitales de alto nivel como los bloques de procesamiento de señales digitales. Dentro del FPGA también hay una infraestructura de interconexiones programables que se utilizan para vincular los bloques FPGA con el fin de “construir” el proyecto digital propuesto. El diseñador de circuitos describe su proyecto en Verilog o VHDL la mayoría de las veces, utilizando las herramientas del proveedor de FPGA (a menudo proporcionadas sin costo) y esa descripción del circuito se “compila por hardware” en un archivo de bits que consiste en el flujo de bits que se descarga a las partes internas de FPGA (de hecho, a un largo registro de desplazamiento interno). “Et voila”, tienes tu circuito digital construido de una manera similar a una construcción de Lego 🙂
Última nota: bueno (o menos bueno …) ¡Los diseñadores de FPGA generalmente encuentran trabajo fácil y rápidamente!
Descargo de responsabilidad: no tengo ningún tipo de relación con los proveedores de FPGA; Hay varias compañías más que proporcionan FPGA, además de las que mencioné en esta respuesta.