GAL (Generic Array Logic), en español
Arreglo Lógico Genérico, son un tipo de circuito integrado, de marca registrada
por Lattice Semiconductor, que ha sido diseñados con el propósito de sustituir
a la mayoría de las PAL, manteniendo la compatibilidad de sus terminales.
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.
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.
FUNCIONAMIENTO
Una GAL permite implementar cualquier expresión en suma de productos con un número de variables definidas, por ejemplo este diagrama muestra la estructura básica de una GAL para dos variables de entrada y una salida.
Una GAL permite implementar cualquier expresión en suma de productos con un número de variables definidas, por ejemplo este diagrama muestra la estructura básica de una GAL para dos variables de entrada y una salida.
PRINCIPALES FABRICANTES DE DISPOSITIVOS GALs
Altera
Cypress
Lattice
Philips
Texas Instruments
Xilinx
Altera
Cypress
Lattice
Philips
Texas Instruments
Xilinx
ESTRUCTURA
El GAL básicamente está formado por una matriz AND reprogramable y una matriz OR fija con configuración programable de salidas y/o entradas.
El GAL básicamente está formado por una matriz AND reprogramable y una matriz OR fija con configuración programable de salidas y/o entradas.
Almacenamiento de la configuración en las PLDs
Una PLD es una combinación de un dispositivo lógico
y una memoria. La
memoria se utiliza para almacenar el patrón el que se le ha dado al chip
durante la programación. La mayoría de los métodos para almacenar datos en
un circuito integrado han sido adaptados para el uso en PLDs. Entre
estos se incluyen:
Los antifusibles de silicio son elementos de
almacenamiento utilizados en las PAL, el primer tipo de PLD. Estos antifusibles
se encargan de formar conexiones mediante la aplicación de voltaje en un área
modificada del chip. Se le llama antifusibles porque funcionan de manera
opuesta a los fusiles normales, los cuales permiten la conexión hasta que se
rompen por exceso de corriente eléctrica.
Las SRAM, o RAM estáticas, son un tipo volátil de
memoria, lo que quiere decir que su contenido se pierde cada vez que se
desconectan. Las PLDs basadas en SRAM tíenen que ser programadas cada vez que
el circuito se enciende. Generalmente esto lo hace otra parte del circuito.
Una célula EPROM es un transistor MOS (metal-óxido-semiconductor) que puede activarse atrapando
una carga eléctrica permanentemente en su puerta, cosa que realiza un programador PAL. La carga permanece
durante algunos años sólo puede ser eliminada exponiendo al chip a una
luz ultravioleta fuerte en un dispositivo
llamado borrador EPROM.
Las memorias flash son no volátiles, por lo que
retienen sus contenidos incluso cuando se les corta la alimentación. Puede ser
borradas y reprogramadas tanto como sea necesario, lo que las hace útiles para
las memorias PLD.
Compilador Universal
para Logica Programable (CUPL)
El CUPL (Compiler Universal for Programmable Logic), es un lenguaje de descripción y simulación.
Por medio de este se puede describir el funcionamiento de un circuito lógico
(combinacional o secuencial), por medio de sus ecuaciones lógicas, por diagramas de
estados o tablas.
Después de conocer las ecuaciones lógicas que rigen un circuito, o su diagrama de
estados, este puede llevarse a CUPL, compilarse y obtenerse un archivo .jed, que permite
por medio de un programador y de un software, programar un dispositivo PLD, con la función
que requiera el usuario. Por medio del CUPL, también se pueden hacer pruebas al circuito para
comprobar que el diseño sea optimo o si es el caso, hacer las correcciones necesarias.
CUPL tiene palabras y símbolos reservados, es decir, tienen un uso restringido dentro
del programa, por ejemplo no pueden hacerse uso del nombre del programa en ninguna variable.
Para lógica combinacional se tienen símbolos especiales que representan las funciones
lógicas básicas not, and, or y xor.
El CUPL (Compiler Universal for Programmable Logic), es un lenguaje de descripción y simulación.
Por medio de este se puede describir el funcionamiento de un circuito lógico
(combinacional o secuencial), por medio de sus ecuaciones lógicas, por diagramas de
estados o tablas.
Después de conocer las ecuaciones lógicas que rigen un circuito, o su diagrama de
estados, este puede llevarse a CUPL, compilarse y obtenerse un archivo .jed, que permite
por medio de un programador y de un software, programar un dispositivo PLD, con la función
que requiera el usuario. Por medio del CUPL, también se pueden hacer pruebas al circuito para
comprobar que el diseño sea optimo o si es el caso, hacer las correcciones necesarias.
CUPL tiene palabras y símbolos reservados, es decir, tienen un uso restringido dentro
del programa, por ejemplo no pueden hacerse uso del nombre del programa en ninguna variable.
Para lógica combinacional se tienen símbolos especiales que representan las funciones
lógicas básicas not, and, or y xor.
Una FPGA (del
inglés Field Programmable Gate Array)
es un dispositivo semiconductor que contiene bloques de
lógica cuya interconexión y funcionalidad puede ser configurada 'in
situ' mediante
un lenguaje de descripción especializado. La lógica programable puede
reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lógica o un sistema combinacional hasta complejos sistemas en un chip.
Las FPGAs se utilizan en aplicaciones similares a
los ASICs sin
embargo son más lentas, tienen un mayor consumo de potencia y
no pueden abarcar sistemas tan complejos como ellos. A pesar de esto, las FPGAs
tienen las ventajas de ser reprogramables (lo que añade una enorme flexibilidad
al flujo de diseño), sus costes de desarrollo y adquisición son mucho menores
para pequeñas cantidades de dispositivos y el tiempo de desarrollo es también
menor.
Ciertos fabricantes cuentan con FPGAs que sólo se
pueden programar una vez, por lo que sus ventajas e inconvenientes se
encuentran a medio camino entre los ASICs y las FPGAs reprogramables.
Características
Una
jerarquía de interconexiones programables permite a los bloques lógicos de un
FPGA ser interconectados según la necesidad del diseñador del sistema, algo
parecido a un breadboard (es una placa de uso genérico
reutilizable o semi permanente) programable. Estos bloques lógicos e
interconexiones pueden ser programados después del proceso de manufactura por
el usuario/diseñador, así que el FPGA puede desempeñar cualquier función lógica
necesaria.
Programación
En la FPGA no se realiza programación tal cual como
se realiza en otros dispositivos como DSP, CPLD o microcontroladores. La FPGA
tiene celdas que se configuran con una función específica ya sea como memoria
(FLIP-FLOP tipo D), como multiplexor o con una función lógica tipo AND, OR,
XOR. La labor del "programador" es describir el hardware que tendrá
la FPGA. Por consiguiente, la tarea del "programador" es definir la
función lógica que realizará cada uno de los CLB, seleccionar el modo de trabajo de cada IOB e interconectarlos.
El diseñador cuenta con la ayuda de entornos de desarrollo especializados en el diseño
de sistemas a implementarse en un FPGA. Un diseño puede ser capturado ya sea
como esquemático, o haciendo uso de un lenguaje de programación especial. Estos lenguajes de programación
especiales son conocidos como HDL o Hardware
Description Language (lenguajes de descripción dehardware). Los HDLs más utilizados son:
En un intento de reducir la complejidad y el tiempo
de desarrollo en fases de prototipaje rápido, y para validar un diseño en HDL,
existen varias propuestas y niveles de abstracción del diseño. Los niveles de
abstracción superior son los funcionales y los niveles de abstracción inferior
son los de diseño al nivel de componentes hardware básicos. Entre otras,
National InstrumentsLabVIEW FPGA propone un
acercamiento de programación gráfica de alto nivel.
Aplicaciones
Cualquier
circuito de aplicación específica puede ser implementado en un FPGA, siempre y
cuando esta disponga de los recursos necesarios. Las aplicaciones donde más
comúnmente se utilizan los FPGA incluyen a los DSP (procesamiento digital de señales),
radio definido por software, sistemas aeroespaciales y de defensa, prototipos
de ASICs, sistemas de imágenes para medicina, sistemas de visión para
computadoras, reconocimiento de voz, bioinformática, emulación de hardware de
computadora, entre otras. Cabe notar que su uso en otras áreas es cada vez
mayor, sobre todo en aquellas aplicaciones que requieren un alto grado de
paralelismo.
No hay comentarios:
Publicar un comentario