Dispositivos lógicos programables y FPGA.

 Dispositivos lógicos programables.

Los dispositivos lógicos programables (Programmable Logic Device, PLD) contienen una gran cantidad de puertas lógicas dentro de un solo encapsulado y permiten al usuario determinar cómo éstas deben unirse. Esta tecnología se conoce también como lógica programable, pues las puertas no están comprometidas con ninguna función específica. Se utilizan tanto en aplicaciones combinacionales como secuenciales. Un PLD está formado por una matriz de puertas AND y puertas OR que se pueden programar para conseguir funciones lógicas dadas. Existen cuatro tipos de dispositivos que se clasifican como PLDs:

·         La memoria programable de sólo lectura (Programmable Read Only Memory, PROM).

·         La matriz lógica programable PLA (Programmable Logic Array).

·         La matriz lógica programable PAL (Programmable Array Logic).

·         La matriz lógica genérica GAL (Generic Array Logic).

FPGA.

Es el acrónimo de Field Programmable Gate Arrays y no es más que una serie de dispositivos basados en semiconductores a base de matrices de bloques lógicos configurables o CLB, donde además se conectan a través de lo que en el sector se denomina interconexiones programables.

Su principal característica y ventaja es que pueden ser reprogramados para un trabajo específico o cambiar sus requisitos después de haberse fabricado. El inventor de esta tecnología fue Xilinx, el cual ha evolucionado dicha tecnología hasta convertirla en un nuevo concepto a tener en cuenta en ciertos entornos de trabajo.

Como podremos intuir, la principal característica de un FPGA es la flexibilidad. Esto viene dado por su naturaleza, donde un ingeniero podría descargar un archivo para un FPGA en concreto y modificar el comportamiento del mismo mediante cambios en dicho fichero.


Arquitectura de los FPGA.

Los microcontroladores están basados en una arquitectura CPU y ejecutan las instrucciones de una manera secuencial. En contra parte, las FPGAs son dispositivos de lógica programable y el algoritmo se ejecuta de una manera paralela.

Una FPGA consiste en arreglos de varios bloques programables (bloques lógicos) los cuales están interconectados entre sí con celdas de entrada/salida mediante canales de conexión verticales y horizontales.

En general, se puede decir que posee una estructura bastante regular, aunque el bloque lógico y la arquitectura de ruteo varían de un fabricante a otro.

La estructura de una FPGA, comparada con la de un CPLD, es mucho más regular, y se encuentra más orientada a diseños que manejan mayores transferencias de datos y registros, en tanto que los CPLD implementan más eficientemente diseños con una parte combinable más intensa.


Cada bloque lógico de un CPLD tiene su propia parte combinacional que permite realizar un gran número de funciones lógicas programables, más un biestable (flip-flop) asociado al pin de entrada/salida. Por su parte, la arquitectura de la FPGA cuenta también con un bloque lógico con una parte combinacional y una parte secuencial. La parte combinacional es mucho más simple que la existente en una CPLD, mientras que la parte secuencial posee uno o dos biestables, que no están generalmente asociados a un pin de entrada/salida, pues los bloques lógicos se distribuyen regularmente en todo el dispositivo.

 

Bloques Lógicos Configurables (CLB)

El bloque lógico consta de una parte combinacional, que permite implementar funciones lógicas booleanas, más una parte secuencial que permite sincronizar la salida con una señal de reloj externa e implementar registros.

La parte combinacional varía de un fabricante a otro. A continuación, explicaremos dos de ellas:

1. Bloque lógico basado en LUT (look-up table):  Una LUT es un componente de celdas de memoria SRAM que almacenan una tabla de verdad. Las direcciones de las celdas son las entradas de la función lógica que se quiere implementar, y en cada celda de memoria se guarda el resultado para cada una de las combinaciones de las entradas. En una LUT de n x 1 es posible implementar cualquier función lógica de n entradas.


2. Bloque lógico basado en multiplexores: El bloque lógico basado en multiplexores, como el de la figura 6, se caracteriza porque requiere mucha menos lógica que el anterior basado en una LUT, y, en consecuencia, ocupa mucha menos área. De este modo, se pueden implementar mayor número de bloques lógicos en el mismo espacio, o, para el mismo número de bloques disponer de más espacio para incrementar los recursos de ruteo. Como contrapartida, no se puede implementar cualquier función lógica de n entradas, como ocurría con las LUTs. En caso necesario, esta función lógica hay que repartirla entre varios bloques lógicos.


Como se mencionó anteriormente, la estructura de los bloques lógicos y las formas en que éstos pueden ser interconectados, tanto salidas como entradas de los bloques, varía de acuerdo al fabricante. En general un bloque lógico tiene menos funcionalidad que la combinación de sumas de productos y macroceldas de un CPLD, pero como cada FPGA tienen una gran cantidad de bloques lógicos, es posible implementar grandes funciones utilizando varios de ellos en cascada.

Referencias.

.  "Qué Es Un FPGA: Características Y Utilidad De Este Tipo De Componente". 2021. Hardzone. https://hardzone.es/reportajes/que-es/fpga-caracteristicas-utilidad/.

.  2021. Infor.Uva.Es. https://www.infor.uva.es/~jjalvarez/asignaturas/fundamentos/apuntes/digital/Tema4_memorias.pdf.

.  "FPGA (Field Programmable Gate Array) - MCI Capacitación". 2019. MCI Capacitación. https://cursos.mcielectronics.cl/2019/06/18/fpga-field-programmable-gate-array/.


Comentarios

Entradas populares de este blog

Software para programar amiba2 (INTegra)

Amiba 2

¿QUÉ ES UN USART?