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
Publicar un comentario