miércoles, 6 de noviembre de 2013

Descripciones: GAL, PLD, CUPL, FPGA

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.
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.
PRINCIPALES FABRICANTES DE DISPOSITIVOS GALs 

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.
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:
·         antifusibles de silicio.
·         SRAMs.
·         Células EPROM o EEPROM.
·         Memoria flash.
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.


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:
·         VHDL
·         Verilog
·         ABEL
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