DON'T FOLLOW THE LIGHT

DISPOSITIVOS LOGICOS PROGRAMABLES

DISPOSITIVOS LOGICOS PROGRAMABLES

¿Qué es la lógica programable?

La lógica programable, como el nombre implica, es una familia de componentes que contienen conjuntos de elementos lógicos (AND, OR, NOT, LATCH, FLIP-FLOP) que pueden configurarse en cualquier función lógica que el usuario desee y que el componente soporte. Hay varias clases de dispositivos lógicos programables: ASICs, FPGAs, PLAs, PROMs, PALs, GALs, y PLDs complejos.

ASIC

ASIC significa Circuitos Integrados de Aplicación Específica y son dispositivos definibles por el usuario. Los ASICs, al contrario que otros dispositivos, pueden contener funciones analógicas, digitales, y combinaciones de ambas. En general, son programables mediante máscara y no programables por el usuario. Esto significa que los fabricantes configurarán el dispositivo según las especificaciones del usuario. Se usan para combinar una gran cantidad de funciones lógicas en un dispositivo. Sin embargo, estos dispositivos tienen un costo inicial alto, por lo tanto se usan principalmente cuando es necesario una gran cantidad.

Estructura básica de un PLD

Un dispositivo programable por el usuario es aquel que contiene una arquitectura general pre-definida en la que el usuario puede programar el diseño final del dispositivo empleando un conjunto de herramientas de desarrollo. Las arquitecturas generales pueden variar pero normalmente consisten en una o más matrices de puertas AND y OR para implementar funciones lógicas. Muchos dispositivos también contienen combinaciones de flip-flops y latches que pueden usarse como elementos de almacenaje para entrada y salida de un dispositivo. Los dispositivos más complejos contienen macrocélulas. Las macrocélulas permite al usuario configurar el tipo de entradas y salidas necesarias en el diseño

PROM

http://pablin.com.ar/electron/cursos/intropld/image1.gif


Las PROM son memorias programables de sólo lectura. Aunque el nombre no implica la lógica programable, las PROM, son de hecho lógicas. La arquitectura de la mayoría de las PROM consiste generalmente en un número fijo de términos AND que alimenta una matriz programable OR. Se usan principalmente para decodificar las combinaciones de entrada en funciones de salida.

PAL

http://pablin.com.ar/electron/cursos/intropld/image2.gif


Las PAL son dispositivos de matriz programable. La arquitectura interna consiste en términos AND programables que alimentan términos OR fijos. Todas las entradas a la matriz pueden ser combinadas mediante AND entre si, pero los términos AND específicos se dedican a términos OR específicos. Las PAL tienen una arquitectura muy popular y son probablemente el tipo de dispositivo programable por usuario más empleado. Si un dispositivo contiene macrocélulas, comúnmente tendrá una arquitectura PAL. Las macrocélulas típicas pueden programarse como entradas, salidas, o entrada/salida (e/s) usando una habilitación tri-estado. Normalmente tienen registros de salida que pueden usarse o no conjuntamente con el pin de e/s asociado. Otras macrocélulas tiene más de un registro, varios tipos de retroalimentación en las matrices, y ocasionalmente realimentación entre macrocélulas.

GAL

Las GAL son dispositivos de matriz lógica genérica. Están diseñados para emular muchas PAL pensadas para el uso de macrocélulas. Si un usuario tiene un diseño que se implementa usando varias PAL comunes, puede configurar varias de las mismas GAL para emular cada de uno de los otros dispositivos. Esto reducirá el número de dispositivos diferentes en existencia y aumenta la cantidad comprada. Comúnmente, una cantidad grande del mismo dispositivo debería rebajar el costo individual del dispositivo. Estos dispositivos también son eléctricamente borrables, lo que los hace muy útiles para los ingenieros de diseño.

PLA

http://pablin.com.ar/electron/cursos/intropld/image3.gif


Las PLA son matrices lógicas programables. Estos dispositivos contienen ambos términos AND y OR programables lo que permite a cualquier término AND alimentar cualquier término OR. Las PLA probablemente tienen la mayor flexibilidad frente a otros dispositivos con respecto a la lógica funcional. Normalmente poseen realimentación desde la matriz OR hacia la matriz AND que puede usarse para implementar máquinas de estado asíncronas. La mayoría de las máquinas de estado, sin embargo, se implementan como máquinas sincrónas. Con esta perspectiva, los fabricantes crearon un tipo de PLA denominado Secuencial (Sequencer) que posee registros de realimentación desde la salida de la matriz OR hacia la matriz AND.

PLDs complejos

Los PLDs complejos son lo que el nombre implica, Dispositivos Complejos de Lógica Programable. Se consideran PAL muy grandes que tienen algunas características de las PLA. La arquitectura básica es muy parecida a la PAL con la capacidad para aumentar la cantidad de términos AND para cualquier término OR fijo. Esto se puede realizar quitando términos AND adyacentes o empleando términos AND desde una matriz expandida. Esto permite que cualquier diseño pueda ser implementado dentro de estos dispositivos.

FPGA

 

 

http://pablin.com.ar/electron/cursos/intropld/image4.gif


Las FPGA son Campos de Matrices de Puertas Programables. Simplemente son matrices de puertas eléctricamente programables que contienen múltiples niveles de lógica. Las FPGA se caracterizan por altas densidades de puerta, alto rendimiento, un número grande de entradas y salidas definibles por el usuario, un esquema de interconexión flexible, y un entorno de diseño similar al de matriz de puertas. No están limitadas a la típica matriz AND-OR. Por contra, contienen una matriz interna configurable de relojes lógicos (CLBs) y un anillo de circunvalación de bloques de e/s (IOBs).

Cada CLB contiene lógica programable combinacional y registros de almacenamiento. La sección de lógica combinacional es capaz de implementar cualquier función booleana de sus variables de entrada.

Cada IOB puede programarse independientemente para ser una entrada, y salida con control tri-estado o un pin bidireccional. También contiene flip-flops que pueden usarse como buffers de entrada y salida. Los recursos de interconexión son una red de líneas que corren horizontalmente y verticalmente las filas y columnas entre el CLBS.

Los interruptores programables conectan las entradas y salidas de IOBS y CLBS a líneas cercanas. Las líneas largas recorren la anchura o longitud entera del dispositivo, estableciendo intercambios para proporcionar una distribución de señales críticas con la mínima demora o distorsión.

Los diseñadores que usan FPGAs pueden definir funciones lógicas en un circuito y revisar estas funciones como sea necesario. Así, las FPGAs pueden diseñarse y verificarse en unos días, a diferencia de las varias semanas necesarias para las matrices de puerta programables.

1.1 Dispositivos Lógicos Programables

Un dispositivo lógico programable, o PLD (Programmable Logic Device), es un dispositivo cuyas características pueden ser modificadas y almacenadas mediante programación. El principio de síntesis de cualquier dispositivo lógico programable se fundamenta en el hecho de que cualquier función booleana puede ser expresada como una suma de productos. El dispositivo programable más simple es el PAL (Programmable Array Logic). El circuito interno de un PAL consiste en un arreglo, o matriz, de compuertas AND y un arreglo de compuertas OR. El arreglo AND es programable mientras que el OR generalmente es fijo. Mediante una matriz de conexiones se seleccionan cuales entradas serán conectadas al arreglo AND, cuyas salidas son conectadas al arreglo OR y de esta manera obtener una función lógica en forma de suma de productos. Una matriz de conexiones es una red de conductores distribuidos en filas y columnas con un fusible en cada punto de intersección.

La mayoría de los PLDs están formados por una matriz de conexiones, una matriz de compuertas AND, y una matriz de compuertas OR y algunos, además, con registros. Con estos recursos se implementan las funciones lógicas deseadas mediante un software especial y un programador. Las matrices pueden ser fijas o programables. El tipo más sencillo de matriz programable, que data de los años 60, era una matriz de diodos con un fusible en cada punto de intersección de la misma. En la figura 1.1 se muestran los circuitos básicos para la mayoría de los PLDs.

Dispositivos lógicos programables
Figura 1.1 Estructuras básicas de un PLD

  Matriz Genérica Programable

Una Matriz Genérica Programable (GAL, Generic Array Logic) es una denominación que utilizaba originalmente Lattice Semiconductor y que más tarde se licenció a otros fabricantes. 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 numero 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. A continuación se muestran la estructura típica de un GAL y la macrocelda de salida del GAL22V10.

Figura 1.2 Macrocelda de un GAL22V10

Figura 1.3 Estructura típica de un GAL

1.2 CPLD

Un CPLD (Complex Programmable Logic Device) extiende el concepto de un PLD a un mayor nivel de integración ya que permite implementar sistemas con un mejor desempeño porque utilizan menor espacio, mejoran la confiabilidad en el circuito, y reducen costos. Un CPLD se forma con múltiples bloques lógicos, cada uno similar a un PLD. Los bloques lógicos se comunican entre sí utilizando una matriz programable de interconexiones lo cual hace más eficiente el uso del silicio, conduciendo a un mejor desempeño y un menor costo. A continuación se explican brevemente las principales características de la arquitectura de un CPLD.

Figura 1.4 Arquitectura Básica de un CPLD

1.2.1 Matriz de Interconexiones Programables

La matriz de interconexiones programables (PIM) permiten unir los pines de entrada/salida a las entradas del bloque lógico, o las salidas del bloque lógico a las entradas de otro bloque lógico o inclusive a las entradas del mismo. La mayoría de los CPLDs usan una de dos configuraciones para esta matriz: interconexión mediante arreglo o interconexión mediante multiplexores.

El primero se basa en una matriz de filas y columnas con una celda programable de conexión en cada intersección. Al igual que en el GAL esta celda puede ser activada para conectar/desconectar la correspondiente fila y columna. Esta configuración permite una total interconexión entre las entradas y salidas del dispositivo o bloques lógicos. Sin embargo, estas ventajas provocan que disminuya el desempeño del dispositivo además de aumentar el consumo de energía y el tamaño del componente.

En la interconexión mediante multiplexores, existe un multiplexor por cada entrada al bloque lógico. Las vías de interconexión programables son conectadas a las entradas de un numero de multiplexores por cada bloque lógico. Las líneas de selección de estos multiplexores son programadas para permitir que sea seleccionada únicamente una vía de la matriz de interconexión por cada multiplexor la cual se propagara a hacia el bloque lógico. Cabe mencionar que no todas las vías son conectadas a las entradas de casa multiplexor. La rutabilidad se incrementa usando multiplexores de mayor tamaño, permitiendo que cualquier combinación de señales de la matriz de interconexión pueda ser enlazada hacia cualquier bloque lógico. Sin embargo, el uso de grandes multiplexores incrementa el tamaño de dispositivo y reduce su desempeño.

1.2.2 Bloques Lógicos

Un bloque lógico es similar a un PLD, cada uno pose un arreglo de compuertas AND y OR en forma de suma de productos, una configuración para la distribución de estas sumas de productos, y macroceldas. El tamaño del bloque lógico es una medida de la capacidad del CPLD, ya que de esto depende el tamaño de la función booleana que pueda ser implementada dentro del bloque. Los bloques lógicos usualmente tienen de 4 a 20 macroceldas.

Figura 1.5 Estructura de un Bloque Lógico en dispositivos de

las familias MAX340 y MAX5000

1.2.3 Distribución de Productos

Existen pequeñas diferencias en cuanto a las matrices de productos, esto dependerá del CPLD y del fabricante. Obviamente el tamaño de las sumas sigue siendo el factor más importante para la implementación de funciones booleanas. Cada fabricante distribuye los productos de diferente forma. La familia MAX de CPLDs fue desarrollada por Cypress Semiconductor junto con Altera Corporation, siendo los primeros en sacar al mercado unan familia de CPLDs. Altera la llamó MAX5000 y Cypress por su parte la clasificó como MAX340. En un dispositivo como el 22V10 tenemos que la suma de productos es fija por cada macrocelda - 8, 10, 12, 14 o 16 -, en la familia MAX se colocan 4 productos por macrocelda los cuales pueden ser compartidos con otras macroceldas. Cuando un producto puede ser únicamente utilizado por una macrocelda se le conoce como termino - producto dirigido, y cuando estos pueden ser utilizados por otras macroceldas se le llama termino - producto compartido. Mediante estos productos compartidos se mejora la utilización del dispositivo, sin embargo, esto produce un retardo adicional al tener que retroalimentar un producto hacia otra macrocelda y con esto disminuye la velocidad de trabajo del circuito. La forma en que son distribuidos los productos repercute en la flexibilidad que proporciona el dispositivo para el diseñador. Además, que estos esquemas proporcionan también flexibilidad para los algoritmos del programa de síntesis que es el que finalmente selecciona la mejor forma en que deben ser distribuidas las funciones booleanas en el dispositivo.

Figura 1.6 Distribución de Productos en dispositivos de

las familias MAX340 y MAX5000

1.2.4 Macroceldas

Las macroceldas de un CPLD son similares a las de un PLD. Estas también están provistas con registros, control de polaridad, y buffers para salidas en alta impedancia. Por lo general un CPLD tiene macroceldas de entrada/salidamacroceldas de entrada y macroceldas internas uocultas (buried macrocells), en tanto que un 22V10 tiene solamente macroceldas de entrada/salida. Una macrocelda interna es similar a una macrocelda de entrada/salida, sólo que esta no puede ser conectada directamente a un pin de salida. La salida de una macrocelda interna va directamente a la matriz de interconexión programable. A continuación se muestra la estructura básica de las macroceldas de entrada/salida y macroceldas ocultas para dispositivos de la familia FLASH 370 de Cypress Semiconductors.

Figura 1.7 Macroceldas de entrada/salida y macroceldas ocultas

en dispositivos de la familia FLASH 370

Las macroceldas de entrada, como la que se muestra en la siguiente figura, son utilizadas para proporcionar entradas adicionales para las funciones booleanas. En el diagrama se muestra la macrocelda de entrada de la familia FLASH 370. En general las macroceldas de entrada incrementan la eficiencia del dispositivo al ofrecer algunos registros adicionales con los que se pueden almacenar el valor del pin de entrada, lo cual puede ser útil al momento de obtener las funciones booleanas.

Figura 1.8 Macrocelda de entrada en dispositivos de la familia FLASH 370

1.2.5 Celda de entrada/salida

En la figura 1.7 se puede apreciar una celda de entrada/salida, que bien podría considerarse parte del bloque lógico, pero no necesariamente tienen que estar a la salida de un bloque lógico. La función de una celda de entrada/salida es permitir el paso de una señal hacia dentro o hacia el exterior del dispositivo. Dependiendo del fabricante y de la arquitectura del CPLD estas celdas son pueden ser consideradas o no consideradas parte del bloque lógico.

1.3 FPGA

La arquitectura de un FPGA (Field Programmable Gate Array) consiste en arreglos de varias celdas lógicas las cuales se comunican unas con otras mediante canales de conexión verticales y horizontales como se muestra en la siguiente figura.

Figura 1.9 Arquitectura básica de un FPGA

Cada celda lógica es similar a los bloques lógicos de un CPLD. La estructura de las celdas lógicas y las formas en que estas pueden ser interconectadas, tanto salidas como entradas de la celda, varían de acuerdo al fabricante. En general una celda lógica 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 celdas lógicas es posible implementar grandes funciones utilizando varias celdas lógicas en cascada.

Además de las celdas lógicas también es importante la tecnología utilizada para crear las conexiones entre los canales, las más importantes son las siguientes.

ANTIFUSE

Al igual que la tecnología PROM son programables una sola vez y utilizan algo similar a un fusible para realizar las conexiones, una vez que es programado éste ya no se puede recuperar. Al contrario que un fusible normal, estos anti - fusibles cuando son programados producen una conexión entre ellos por lo que normalmente se encuentran abiertos. La desventaja es que no son reutilizables pero por el contrario disminuyen considerablemente el tamaño y costo de los dispositivos.

SRAM

Celdas SRAM son implementadas como generadores de funciones para simular lógica combinacional y, además, son usadas para controlar multiplexores e interconectar las celdas lógicas entre si (similar a un CPLD).

1.3.1 Celdas Lógicas

La estructura de las celdas lógicas se ve fuertemente influida por la tecnología utilizada para fabricar el FPGA. Un FPGA que tiene una gran cantidad de canales de interconexión tiende a tener pequeñas celdas lógicas con muchas entradas y salidas en comparación con el número de compuertas que tiene la celda, este tipo de FPGAs generalmente utilizan tecnología ANTIFUSE.

Un FPGA que tiene una estructura pequeña en canales de interconexión tiende a tener grandes celdas lógicas con pocas entradas y salidas en comparación con el número de compuertas que hay en la celda. Este tipo de FPGA generalmente está hecho con tecnología SRAM.

Una arquitectura con celdas lógicas pequeñas nos permite utilizar totalmente los recursos del dispositivo. Sin embargo, si las celdas lógicas son demasiado pequeñas entonces sucede que tendremos que utilizar un gran numero de estas en cascada para poder implementar funciones booleanas grandes, lo cual afecta porque cada celda lógica en cascada agrega un tiempo de retardo en la función implementada.

Cuando el tamaño de la celda lógica es grande sucede lo contrario. En este tipo de celdas lógicas es posible utilizar un gran número de compuertas por lo que podemos implementar funciones booleanas de varios términos con pocas celdas lógicas. El que el tamaño de la celda sea grande no afecta la frecuencia máxima de trabajo porque estamos hablando de que existe un gran numero de compuertas que pueden ser usadas en la función al mismo tiempo, siendo el mismo tiempo de retardo para todas. En cambio cuando la celda lógica tiene pocas compuertas es necesario utilizar las compuertas de otra celda para poder implementar la misma función y se acumula el tiempo de retardo de las compuertas de la otra celda. Sin embargo, cuando las funciones son pequeñas en comparación con el tamaño de la celda no es necesario utilizar todas las compuertas de la celda, por lo que este tipo de celdas no son precisamente las más indicadas para desempeñar pequeñas funciones.

La tecnología SRAM y ANTIFUSE son comúnmente utilizadas por la mayoría de los fabricantes. La tecnología SRAM es utilizada por Altera, Lucent Technologies, Atmel, Xilinx y otros. La tecnología ANTIFUSE es utilizada por Cypress, Actel, QuickLogic, y Xilinx.

A continuación se muestran varias celdas lógicas con diferentes nombres de acuerdo al fabricante.

(a) Bloque Lógico Configurable de la familia XC4000 de Xilinx, Inc.

(b) Modulo Lógico de la familia ACT3 de Actel Corporation

(c) Elemento Lógico de la familia APEX20K de Altera Corporation

Figura 1.10 Diferentes Celdas Lógicas

 

 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis