Dispositivos digitales programables
Dispositivos digitales programables (PAL, GAL, CPLD, FPGA)
Un Dispositivo Lógico Programable (PLD) es un componente electrónico usado para construir circuitos digitales reconfigurables. A diferencia de una compuerta lógica que tiene una función fija, los PLDs salen de fábrica sin una función en específico, por lo tanto necesitan ser programados o reconfigurados antes de poder ser usados.
PAL
El PAL (Programmable Array Logic) es un caso especial del PLA en el que el arreglo de ANDs es programable y el de ORs es fijo. Sus estructuras son iguales, pero el hecho de que únicamente el arreglo de ANDs sea programable hace más barato y fácil de programar el PAL en comparación con el PLA. Cuando se diseña con PALs se deben simplificar las ecuaciones lógicas para que quepan en uno (o más) de los PALs existentes. Los términos AND no se pueden compartir entre dos o más compuertas OR, por lo tanto cada función puede ser simplificada por si misma sin importar los otros términos. En cualquier PAL el número de términos AND que alimentan cada compuerta OR es fijo y limitado. Los PALs también pueden contener flip flops D con sus entradas provenientes del arreglo combinacional. Estos se llaman PALs secuenciales. Los PALs fueron desapareciendo con el desarrollo de otros dispositivos, como GALs, CPLDs y FPGAs.
GAL
Utiliza una matriz de memoria EEPROM en lugar por lo que se puede programar varias veces.
Un GAL en su forma básica es un PLD con una matriz AND reprogramable, una matriz OR fija y una lógica de salida programable mediante una macrocelda. Esta estructura permite implementar cualquier función lógica como suma de productos con un número de términos definido.
En los PLDs no reprogramables la síntesis de las ecuaciones lógicas se realiza mediante quema de fusibles en cada punto de intersección de los pines de entrada con las compuertas. En el caso de un GAL es básicamente la misma idea pero en vez de estar formada por una red de conductores ordenados en filas y columnas en las que en cada punto de intersección hay un fusible, el fusible se reemplaza por una celda CMOS eléctricamente borrable (EECMOS). Mediante la programación se activa o desactiva cada celda EECMOS y se puede aplicar cualquier combinación de variables de entrada, o sus complementos, a una compuerta AND para generar cualquier operación producto que se desee. Una celda activada conecta su correspondiente intersección de fila y columna, y una celda desactivada desconecta la intersección. Las celdas se pueden borrar y reprogramar eléctricamente.

El circuito a la salida de la matriz se denomina macrocelda. Tienen integración baja/media. El Terminal puede funcionar como entrada o salida según la programación. Los términos productos se dibujan todos sobre una sola línea para simplificar el diagrama.
Un terminal en modo salida puede reflejar la salida Q y Q negada del flip-flop para circuitos secuenciales o la entrada D y negada para circuitos combinacionales.
De modo similar puede realimentar el terminal de salida o la salida Q negada del flip flop hacia otros términos. Las GAL se usan para circuitos lógicos sencillos y de complejidad media.
La macrocelda, en el idioma inglés es por sus siglas OLMC (OutputLogicMacrocells). Y son Macroceldas lógicas que contienen puertas OR y lógica programable, circuitos lógicos que se pueden programar como lógica combinacional o lógica secuencial (flip-flops, contadores y registros).
CPLD
Los avances en tecnología han hecho posible la creación de circuitos integrados programables equivalentes a varios PLDs en el mismo chip. A estos circuitos integrados se les llaman dispositivos lógicos programables complejos (CPLDs por sus siglas en inglés). Un CPLD es un circuito integrado que consiste en un número de bloques lógicos parecidos a un PAL, incluyendo además una matriz programable de interconexiones entre estos bloques. Algunos CPLDs se basan en la arquitectura del PAL, en cuyo caso cada macrocelda contiene un flip flop y una compuerta OR, cuyas entradas están asociadas a un arreglo de compuertas AND fijo, mientras que los CPLDs que se 24 basan en PLAs cada salida de compuertas AND en un bloque se puede conectar a la entrada de cualquier compuerta OR en ese bloque. Los más grandes fabricantes de CPLDs hoy en día son Xilinx, Altera, Lattice Semiconductor, Cypress y Atmel. Algunos de estos vendedores especifican sus productos en términos de cantidad de compuertas, mientras que otros lo hacen en términos de elementos lógicos. Por ejemplo, Altera vende tres series de CPLDs, las cuales son MAX II, MAX 3000 Y MAX 7000. Cada una de éstas tiene especificaciones en general y los dispositivos dentro de cada serie se diferencian de acuerdo a sus capacidades lógicas y el número de pines de entrada/ salida. Dentro de la serie MAX 7000 existen dispositivos que van de las 600 compuertas (32 macroceldas) hasta 5000 compuertas (256 macroceldas). Su arquitectura esta basada en módulos de arreglos lógicos, llamados Logia Array Blocks (LABs) que consisten en arreglos de 16 macroceldas. Los LABs se conectan por medio del Programmable Interconnect Array (PIA) alimentado por todas las entradas, pines de entrada/salida así como por las macroceldas.
FPGA
Los FPGAs son circuitos integrados que contienen un arreglo de bloques lógicos idénticos con interconexiones programables, en los que el usuario puede programar tanto las funciones realizadas por cada bloque lógico como las conexiones entre bloques. Los FPGAs tienen varias ventajas con respecto a MPGAs. Un arreglo de compuertas tradicional puede ser usado para implementar cualquier circuito, pero 27 sólo se puede programar en fábrica ya que se requiere hacer una máscara específica para un circuito en particular y el tiempo de diseño para un circuito integrado basado en arreglo de compuertas es de algunos meses. Por otro lado, los FPGAs son productos comerciales, el tiempo de manufactura se puede reducir de meses a algunas horas cambiando de MPGAs a FPGAs. De la misma forma, se vuelve más fácil y más barato corregir errores en los diseños. A volúmenes no tan altos, los FPGAs son más baratos que los MPGAs. El interior de los FPGAs contiene típicamente tres elementos programables: los bloques lógicos, los bloques de entrada/ salida y las interconexiones. Se considera que los bloques de entrada/ salida se encuentran en la periferia del circuito integrado, éstos conectan las señales lógicas a los pines del chip. Los bloques lógicos se encuentran distribuidos dentro del FPGA y el espacio entre ellos se usa para mandar conexiones entre bloques. La programabilidad de campo se logra por los elementos que pueden ser reconfigurables por el usuario. Los bloques lógicos se crean usando multiplexores, look-up tables y arreglos de compuertas AND-OR o NAND-NAND, y cualquiera de estas cosas puede ser programada (o configurada) por el usuario. Lo que diferencia un FPGA de un CPLD es la interconexión flexible de propósito general. En un CPLD la interconexión es bastante restringida, mientras que en un FPGA es muy flexible, lo cual a veces puede resultar ser una desventaja ya que mandar una conexión de una parte del chip a otra muy alejada puede hacer el diseño más lento. Los bloques lógicos entre FPGAs varían en los componentes básicos que emplean. Algunos FPGAs usan bloques basados en LUTs, mientras que otros usan multiplexores y compuertas lógicas. Existen también bloques lógicos que simplemente consistían en pares de transistores. En los primeros FPGAs de Altera, los bloques consistían en PLDs. 28 Los bloques lógicos también varían en el tamaño. Algunos FPGAs usan bloques básicos grandes, capaces de implementar varias funciones de cuatro o cinco variables, con algunos flip flops. En contraste, también existen FPGAs con bloques que sólo permiten una función de tres variables y un flip flop en cada bloque. Los distintos fabricantes usan nombres diferentes para sus bloques, por ejemplo, en Xilinx un bloque lógico programable se llama Configurable Logic Block; Altera los llama Logic Elements (LEs) y una colección de ocho o diez de ellos se llama Logic Array Block (LAB). Un elemento importante en los FPGAs es la interconexión programable entre bloques lógicos. Existen diferentes tipos de conexiones en FPGAs comerciales. Algunos usan matrices de switches, en las que hay un switch en cada intersección de “cables”. Una matriz de switches soporta cualquier conexión entre cable y cable, pero resulta muy cara esta tecnología, además de que no todas las conexiones pueden existir al mismo tiempo. Otros FPGAs usan conexiones especiales entre bloques lógicos adyacentes. Este tipo de conexiones son rápidas porque no necesitan pasar por una matriz de ruteo. En este tipo de FPGAs las interconexiones directas se dan hacia los cuatro bloques vecinos (arriba, abajo, izquierda y derecha), en otros casos se dan hacia los ocho vecinos, incluyendo así a los diagonales. Los pines de un FPGA están conectados a bloques programables de entrada/ salida que facilitan conectar las señales de los bloques lógicos al mundo externo. Cada bloque de entrada salida tiene un número de opciones. El pin puede ser configurado para ser entrada o salida mediante un buffer triestado. El bloque contiene flip flops para guardar los valores de entrada o de salida. La señal de salida puede ser invertida si se desea, mediante una compuerta XOR. 29 Los FPGAs recientes tienen también bloques especializados. Dentro de estos bloques existen los de memoria RAM, que van de 16k a 10M bits los cuales pueden servir para almacenar datos necesarios en un proceso. El vendedor puede incluir también bloques de procesamiento digital de señales con hardware para realizar transformadas rápidas de Fourier, filtros FIR e IIR, entre otras cosas. Existen también bloques embebidos de procesadores dentro de los FPGAs modernos, como el MicroBlaze de Xilinx y el Nios de Altera.
Referencias bibliográficas
- GAL Y VHDL. (s. f.). ELECTRONICA INTEGRADA.
http://electronicaintegradaunexpo.blogspot.com/2008/02/gal-y-vhdl.html - (s. f.). Apache Tomcat/8.5.68.
http://www.ptolomeo.unam.mx:8080/jspui/bitstream/132.248.52.100/658/8/A8.pdf
Comentarios
Publicar un comentario