Avisar de contenido inadecuado

Dispositivos Logicos Programables (parte 1)

{
}

 

DISPOSITIVOS LOGICOS PROGRAMABLE

 

INTRODUCCIÓN

En la década de 1970, cuando los circuitos lógicos Transistor-Transistor (TTL), se introducen al mercado, se convierten en los elementos básicos para los diseñadores de sistemas digitales. Por muchos años, las estructuras de estos circuitos se mantuvieron, cambiando solamente su tecnología de proceso para hacerlos más versátiles y rápidos, como fueron los casos de Low Power Schottky (LS),. Advanced Low Power Schottky (ALS), Standart Schottky (S), Advanced Standart Schottky (AS), Fast (F), HCMOS, Advanced CMOS Logic (ACL), BiCMOS (BCT) y Advanced BiCMOS Technology (ABT).

A mediados de esta misma década, se enfocaron esfuerzos en desarrollar dispositivos que fueran capaces de reemplazar a esta tecnología para reducir espacio en las tarjetas de circuito impreso. La Memoria de Sólo Lectura Programable por el usuario una sola vez ( Programmable Read Only Memory, PROM), desarrollada por Harris y Monolitics Memories Inc., fue el primer dispositivos "programable" que prometía ser un elemento lógico universal y dispositivo de propósito general para tales aplicaciones. Tuvo aplicaciones como decodificador de direcciones de memoria y creció hasta tamaños de 32 palabras por 8 bits. National Semiconductors fue el pionero en el desarrollo de Arreglos Lógicos Programables (Programmable Logic Arrays, PLA's) en forma de un DIP grande de 24 pines o terminales (0.6 pulgadas de ancho) con 96 términos productos, 14 entradas, 8 salidas.

 Intersil hizo el primer Arreglo Lógico Programable en el Campo (Field Programmable Logic Array, FPLA), pero con la mitad de capacidad del dispositivo creado por National Semiconductor.  Signetics incremento el empaque en número de pines a 28, el FPLA 82S10 de 16 entradas, 8 salidas, y 48 términos producto. Monolitics Memories fue la primer compañía que tomó ventaja de la tecnología bipolar de los fusibles de interconexión de las PROM´s para crear algunas FPLA´s pequeñas y veloces. También fue la primera en imponer como estándar industrial, los DIP´s delgados de 20 pines (0.3 pulgadas).

La lógica programable fue desarrollada como una alternativa entre los siguientes métodos de diseño: Los dispositivos de función fija (o de Lógica de Catálogo), y Los circuitos integrados elaborados ex profeso (CUSTOM). Cada uno de éstos tiene sus ventajas y desventajas que determinan su uso apropiado. La ventaja de utilizar estos dispositivos en el diseño digital radica en que todo el desarrollo se lleva a cabo en un solo ambiente de trabajo, esto es, el diseñador propone la función lógica a realizar y en base a métodos de descripción define los parámetros de su problema, esto se hace por medio de programación. Una vez acotado el problema, se optimiza su representación lógica y eléctricamente la misma, se selecciona el dispositivo que mejor se adapte a las condiciones de nuestro problema según criterios de velocidad, potencia, costo, etc., y finalmente se programa y verifica en el mismo lugar el o los dispositivos seleccionados. Esto ha sido posible no sólo por el avance tecnológico propiamente, sino también a la creación de herramientas de software que permiten una valiosa ayuda en la representación de los diseños.

 

CLASIFICACIÓN DE LOS CI.

Los fabricantes han desarrollado muchas familias de circuitos digitales integrados -grupos que pueden ser utilizados juntos para construir un sistema digital-. Los CI de una familia se dice que son compatibles, y pueden conectarse fácilmente entre sí.

Los CI digitales pueden dividirse en bipolares y unipolares. Los CI digitales bipolares se fabrican a partir de elementos comparables a los transistores bipolares, diodos y resistores discretos. La familia TTL es la más popular de los CI que usan tecnología bipolar. Los CI integrados unipolares se fabrican a partir de elementos comparables a los transistores de efecto de campo de puerta aislada (IGFET). La familia CMOS (metal-óxido semiconductor complementario) es un grupo de CI ampliamente usado basado en la tecnología metal-óxido semiconductor (MOS).

Los CI  pueden agruparse según su complejidad como sigue:

1. SSI (pequeña escala de integración):

  • Número de compuertas: menos de 12
  • Dispositivos digitales típicos: compuertas y flip-flops

 2. MSI (mediana escala de integración):

  • Número de compuertas: de 12 a 99
  • Dispositivos digitales típicos: sumadores, contadores, decodificadores, codificadores, multiplexores, demultiplexores y registros

 3. LSI (alta escala de integración):

  • Número de compuertas: de 100 a 9,999
  • Dispositivos digitales típicos: relojes, chips pequeños de memoria, calculadoras

4. VLSI (muy alta escala de integración):

  • Número de compuertas: de 10,000 a 99,999
  • Dispositivos digitales típicos: microprocesadores, memorias, calculadoras avanzadas.

 5. ULSI (ultra alta escala de integración):

  • Número de compuertas: sobre 100,000
  • Dispositivos digitales típicos: microprocesadores avanzados.

 

El diseñador de circuitos digitales dispone de muchas familias CI digitales, algunas de ellas se mencionan a continuación:

 1. Familias bipolares:

  • RTL lógica de resistencia-transistor
  • DTL lógica de diodo-transistor
  • TTL lógica de transistor-transistor
  • DTL lógica de emisor acoplados
  • HTL lógica de alto umbral
  • IIL lógica de inyección integrada

 2. Familias CMOS:

  • PMOS metal-óxido canal P
  • NMOS metal-óxido canal N
  • CMOS metal-óxido semiconductor complementario.

 Las tecnologías TTL y CMOS son utilizadas comúnmente para fabricar circuitos integrados SSI y MSI. Los dispositivos MOS (PMOS, NMOS y CMOS) dominan en la fabricación de dispositivos LSI y VLSI. NMOS es especialmente popular en los microprocesadores y en las memorias. CMOS es popular en aplicaciones de muy baja potencia tales como calculadoras, relojes de pulsera y computadoras alimentadas por baterías. 

 

 

CLASIFICACIÓN DE LOS CI. POR LOGICA DE DISEÑO.

Es válido realizar una clasificación de las formas de implementación de lógica de la siguiente manera:

1. Lógica convencional:

  • Compuertas.
  • Multiplexores
  • Demultiplexores
  • MUX + DEMUX.

2. Lógica programable por hardware

 3. Lógica programable por software.

  • Microprocesador
  • Microcontrolador
  • DSP

 

 

PLD'S.

Antes de la invención de los PLDs, los chips de memoria de solo lectura (ROM) se utilizaban para crear funciones de lógica combinacional arbitrarias con un número determinado de entradas. Considerando una ROM con m entradas, a las que se denomina líneas de dirección; y con n salidas, a las que se denomina líneas de datos. Cuando se utiliza como memoria, la ROM contiene 2m palabras de n bits. Supongamos que las entradas no son direccionadas por una dirección de m-bits, sino por m señales lógicas independientes. Teóricamente, hay 2m funciones booleanas posibles de estas m señales, pero la estructura de la ROM permite solo producir n de estas funciones en los pines de salida. Por lo tanto, en este caso, la ROM se vuelve un equivalente de n circuitos lógicos separados, cada uno generando una función elegida de las m entradas.

La ventaja de utilizar una ROM de esta forma es que cualquier función concebible de las m entradas puede ser colocada por las n salidas, haciendo este el dispositivo lógico combinacional de mayor propósito general disponible. También las PROMs (ROMs programables), EPROMs (PROMs de borrado por ultravioleta) y EEPROMs (PROMs de borrado eléctrico) disponibles pueden ser programadas de esta manera con un programador PROM hardware o software. Sin embargo, existen varias desventajas:

  • Son bastante más lentas que los circuitos lógicos dedicados.
  • No necesariamente pueden proveer de "protección" ante transiciones lógicas asíncronas.
  • Consumen mayor potencia.
  • Sólo se utiliza una pequeña fracción de su capacidad en una sola aplicación: un uso ineficiente del espacio.
  • Por si solas no pueden ser utilizadas para circuitos de lógica secuencial, puesto que no contienen biestables. Para realizar algunos circuitos secuenciales (como máquinas de estado) se utilizaba un registro TTL externo.

En 1970, Texas Instruments desarrolló un CI de máscara programable basado en la memoria asociativa de sólo lectura (ROAM) de IBM. Este dispositivo, el TMS2000, era programado alterando la capa metálica durante la producción del CI. El TMS2000 tenía hasta 17 entradas y 18 salidas con 8 biestables JK como memoria. Texas Instruments acuño el término Programmable logic array para este dispositivo.

En 1973 National Semiconductor introdujo un dispositivo PLA de máscara programable (DM7575) con 14 entradas y 8 salidas sin registros de memoria. Este era más popular que el de Texas Instruments, pero el coste de hacer la máscara metálica limitaba su uso. El dispositivo es significativo por ser la base de la FPGA (Field Programmable Logic Array) producido por Signetics en 1975, el 82S100.

En 1971, General Electric desarrollaba un PLD basado en la nueva tecnología PROM. Este dispositivo experimental mejoró el ROAM de IBM permitiéndole realizar lógica mulinivel. Intel acababa de introducir la PROM de puerta flotante borrable por UV por lo que los desarrolladores en General Electric incorporaron esa tecnología. El dispositivo de General Electric era el primer PLD jamás desarrollado, antecesora del EPLD de Altera en una década. General Electric obtuvo varias patentes tempranas en PLDs.

En 1974, General Electric firmó un acuerdo con Monolithic Memories para desarrollar un PLD de máscara programable incorporando las innovaciones de General. El dispositivo se bautizó como Programmable Associative Logic Array (PALA, matríz lógica asociativa programable). El MMI 5760 fue terminado en 1976 y podía implementar circuitos multinivel o secuenciales de más de 100 puertas. El dispositivo estaba soportado por el entorno de desarrollo de General, donde las ecuaciones Booleanas podían ser convertidas a patrones de máscara para configurar el dispositivo. El integrado nunca se comercializó.

 La mayoría de los PLDs (los SPLDs) están formados por matrices 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. Una matriz de conexiones es una red de conductores distribuidos en filas y columnas con un fusible en cada punto de intersección, mediante el cual se seleccionan cuales entradas serán conectadas a las compuertas AND/OR.  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.

 Los PLDs facilitan el proceso de diseño y reducen el tiempo de desarrollo, cuando se requieren prototipos o producción de baja escala, pues todo el proceso se puede llevar a cabo con la ayuda de una computadora personal, programas de aplicación y el programador los cuales actualmente están disponibles a bajo costo.

Algunos fabricantes de PLD's son:

Actel (http://www.actel.com/)
Altera Corp. (http://www.altera.com/)
Atmel Corp. (http://www.atmel.com/)
Chip Express (http://www.chipexress.com/)
Cypress Sem.(http://www.cypress.com/)
Lattice Sem. (http://www.latticesemi.com/)
Quicklogic Corp. (http://www.quicklogic.com/)
Xilinx Inc. (http://www.xilinx.com/)

 

PAL'S.

El primer circuito PAL, Programmable Array Logic (Matriz lógica programable), fue el 16L8, desarrollado por MMI en 1978 con de 20 terminales (pines), con soporte para 8 salidas y hasta 16 entradas con tecnología Bipolar. La arquitectura era más sencilla que la FPLA de Signetics porque omitía la matriz OR programable. Esto hizo los dispositivos más rápidos, más pequeños y más baratos. Estaban disponibles en encapsulados de 20 pines y 300.000 DIP, mientras que las FPLAs venían en encapsulados de 28 pines y 600.000. Ciertas publicaciones sobre PALs desmitificaban el proceso de diseño. El software de diseño PALASM (PAL Assembler, ensamblador PAL) convertía las ecuaciones Booleanas de los ingenieros en el patrón de fusibles requerido para programar el dispositivo. Los PAL de MMI pronto fueron distribuidos por National Semiconductor, Texas Instruments y AMD.

Con este tipo de dispositivos pueden simularse arreglos del tipo de Productos Lógicos, o en su caso realizar decodificación de direcciones. Sin embargo, la mayor aportación de los dispositivos PAL fue generar aplicaciones específicas en muy corto tiempo. La operación de estos dispositivos inicio manejando velocidades de 4.7 Mhz para la IBM PC hasta 33 Mhz, para posteriormente alcanzar los 50 Mhz; hoy se pueden encontrar dispositivos que operan con un retraso de propagación de la señal del orden de 5ns.

Un dispositivo PAL, esta contruido con un plano programable AND seguido por un plano fijo OR. Las salidas de las compuertas OR son sumas de productos que pueden ser opcionalmente registradas por un flip-flop en la mayoría de los dispositivos. Los PALs también ofrecen la ventaja de ser programables en campo. Cada salida en un dispositivo tipo PAL estándar tiene una compuerta OR, que es única a esa salida. Este no proporciona términos producto compartidos. Como un número limitado de términos producto se abastecen para cada salida del PAL, las técnicas de minimización lógica son importantes para implementar circuitos lógicos en este tipo de dispositivo.

Con su estructura simple de dos niveles, como se muestra en la figura 1, este tipo de PLDs permite la implementación de circuitos lógicos de alta velocidad. Sin embargo, su estructura simple también es su principal desventaja, ya que solo se pueden implementar pequeños circuitos lógicos representados con un modesto número de términos producto, porque su estructura de interconexión esta fija en cuanto a que no se puede configurar la salida si se requiere que sea activo alto, activo bajo, con o sin registro.

 

209085-123217.jpg

 Figura 1. Arreglo interno de un PLA

 

Una variación sobre los circuitos PALs básicos es la incorporación de elementos de memoria para que puedan generar maquinas secuenciales. Un típico ejemplo siguiendo con las PALs de Monolithic Memories es la 16R8 (16 entradas, R de Registro y 8 salidas) la cual incorpora registros de almacenamiento sensibles a la señal de reloj (flip-flops edge triggered) a la salida de la compuerta OR. Con esto puede ser empleado para realizar simultáneamente las funciones de almacenamiento de estados (bloque de memoria) y calculo del próximo estado (bloque combinatorio) que caracterizan una maquina secuencial tipo MOORE.

 209085-123339.jpg

Figura 2. Arreglo PAL con elemento de memoria (FLIP-FLOP) a la salida

 

 

GAL'S.

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.

Los dispositivos GALs, surgen como respuesta a la necesidad de incrementar las interconexiones internas de los dispositivos, teniendo sus salidas conectadas a macroceldas, las cuales pueden ser configuradas a sistemas combinatorios o de lógica con registros. Las estructuras GAL son, básicamente estructuras CMOS PAL, son básicamente la misma idea que la PAL 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.

ESTRUCTURA DEL GAL
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. (ver figura 3).

 

 GAL_EST

Figura 3. Estructura basica de un dispositivo GAL

Las estructuras GAL son estructuras PAL construidas con tecnología CMOS, y fueron comercializadas por primera vez en 1984 por Lattice Semiconductor. Como se ha mencionado, son programables y borrables eléctricamente. Son reprogramables y más flexibles, a la salida de la matriz AND/OR hay un circuito más complejo con selectores y flip-flops que permiten implementar ecuaciones más complejas. Hay distintas arquitecturas según la versión del fabricante.

La Figura 4 presenta un ejemplo de una GAL (GAL22V10). Donde el circuito a la salida de la matriz se denomina macrocelda y  tienen una escala de 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 (Output Logic MacroCells), 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).

 

GAL_1 

Figura 4, Esquematico de la GAL22V10


CONSTRUCCION DEL GAL
Basada en la estructura básica mostrada anteriormente, la construcción de los dispositivos GALs se diferencian por sus características de entradas, salidas y configuración interna de las macroceldas empleadas, por ejemplo detallemos el GAL 16V8, donde ciertas localidades en el arreglo de memoria son diseñadas para controlar las conexiones programables a la matriz de los términos de entrada, cada bit en esta matriz representa una conexión programable entre un renglón y una columna. Afortunadamente, no es necesario buscar dentro de las direcciones de cada localidad de bit en la matriz. El software de programación cuida de estos detalles en una manera amigable. El diagrama lógico completo del GAL 16V8 se muestra en la figura 5. Este dispositivo tiene ocho terminales de entrada dedicadas (terminales 2-9), dos con funciones especiales (1 y 11), y ocho (12-19) que pueden ser usadas como entradas o salidas.

GAL_2

 Figura 5, Diagrama logico del GAL16V8

 

La mayoría de los componentes de las GALs son; la matriz de los términos de entrada, las compuertas AND (las cuales generan los términos producto de entrada), y las macroceldas lógicas de salida (OLMCs, Output Logic Macro Cells). Hay que notar que las 8 terminales de entrada son conectados directamente a una columna de la matriz de términos de entrada, y así cada complemento de entrada es conectado a está. Estas terminales siempre serán especificadas como entradas cuando se programa el dispositivo. Un nivel lógico y su complemento son siempre retroalimentados de cada macro a una columna de la matriz de entrada. La fuente de estos niveles lógicos es determinada por la configuración de cada macro. Con esto, da un total de 32 variables de entrada (columnas en la matriz de entrada) que pueden ser programadas como conexiones a las 64 compuertas AND de entradas múltiples. En la matriz de entrada, cualquier columna puede ser conectada a un renglón de entrada durante el proceso de programación.


La flexibilidad del GAL 16V8 consiste en su macrocelda lógica de salida programable (ver figura 6). Ocho productos diferentes (salidas de las compuertas AND) son aplicadas como entradas a cada una de las ocho macroceldas. Dentro de cada macro los productos son enviados a una compuerta OR al mismo tiempo para generar la suma de productos (SOP, sum of products). Recordando, cualquier función puede ser expresada como una forma de SOP. Dentro de la macro, la salida del SOP puede ser enrutado a la terminal de salida para implementar un circuito combinacional, o como entrada a un flip-flop tipo D para implementar un circuito con salida registrada.

 

 GAL_MC

Figura 6, macrocelda lógica de salida programable de GAL 16V8

 

FUNCIONAMIENTO DEL GAL
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.
 El proceso de programación consiste en activar o desactivar cada celda E2CMOS con el objetivo de aplicar la combinación adecuada de variables a cada compuerta AND y obtener la suma de productos.

 Las celdas E2CMOS activadas conectan las variables deseadas o sus complementos con las apropiadas entradas de las puertas AND. Las celdas E2CMOS están desactivadas cuando una variable o su complemento no se utiliza en un determinado producto. La salida final de la puerta OR es una suma de productos. Cada fila está conectada a la entrada de una puerta AND, y cada columna a una variable de entrada o a su complemento. Mediante la programación se activa o desactiva cada celda E2CMOS, y se puede aplicar cualquier combinación de variables de entrada, o sus complementos, a una puerta AND para generar cualquier operación producto que se desee. Una celda activada conecta de forma efectiva su correspondiente fila y columna, y una celda desactivada desconecta la fila y la columna. Las celdas se pueden borrar y reprogramar eléctricamente. Una celda E2CMOS típica puede mantener el estado en que se ha programado durante 20 años o más.

Las macroceldas lógicas de salida (OLMCs) están formadas por circuitos lógicos que se pueden programar como lógica combinacional o como lógica secuencial. Las OLMCs proporcionan mucha más flexibilidad que la lógica de salida fija de una PAL.

GAL_ar

Figura 7, Esquematico de funcionamiento de una GAL de 2 entradas y una salida.

 

PRINCIPALES FABRICANTES DE DISPOSITIVOS GALs

Altera Corp. (http://www.altera.com/)
Cypress Sem.(http://www.cypress.com/)
Lattice Sem. (http://www.latticesemi.com/)
Xilinx Inc. (http://www.xilinx.com/)
Philips. (http://ww.philips.com)
Texas Instruments. (http://www.ti.com/)


 

CPLD'S.

Un CPLD (del acrónimo inglés Complex Programmable Logic Device) que extienden el concepto de un SPLD a un mayor nivel de integración ya que permite implementar sistemas más eficaces, ya que utilizan menor espacio, mejoran la fiabilidad del diseño, 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 una mejor eficiencia a menor costo. La figura 8, detalla un modelo genérico de una CPLD. A continuación se explican brevemente las principales características de la arquitectura de un CPLD.

 

 CPLD_1

 

Figura 8, Arquitectura básica de un CPLD

 

ESTRUCTURA DEL CPLD

Existen dos tipos de arquitectura de los CPLD: 1) Arquitectura de Matriz de suma de productos y 2) Arquitectura, Look-up Table (LUT), tabla de datos.

1) Arquitectura de Matriz de suma de productos

Se relacionan con un mayor número de interconexión de secciones de compuertas programables, tales secciones pueden ser otros PLD, es decir el CPLD puede contener similares PLD de baja densidad, "PAL", interconectados entre sí, en un solo chip. En las figuras 9 y 10 se muestran los diagramas generales de CPLD's de los fabricantes Altera y Xilinx.

Fig_9

Fig. 9, Diagrama de bloque de un CPLD (Por ALTERA)

 

Fig_10

Fig. 10,  Diagrama de bloque de un CPLD del fabricante XILINX

 

Matriz de Interconexiones Programables

La matriz de interconexiones programables (PIM) (El fabricante Altera llama a esta estructura "PIA", mientras que XILINX lo identifica como "Product-Term Select Matrix"), 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 bloques 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 las 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 rendimiento 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 número 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 cada 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 eficiencia.

 

Bloques Lógicos 

Un bloque lógico es similar a un PLD, cada uno pose un bloque 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.

La estructura principal son los bloques de matriz lógicos (LAB) o bloques de Función (Funtion Block), que se comunican en un bus interno con la matriz de Interconexión Programable (PIA) o también llamado Fast CONNECT Switch Matrix. Cada bloque es un grupo de 16 macroceldas; tienen entradas y salidas similares a los PLD de baja densidad, con capacidad de programarse. El número de pines de entrada y/o salida dependerá del dispositivo, para el caso de la figura 1, corresponde al modelo MAX7000S, basados en celdas EEPROM, del fabricante ALTERA, de 6 a 16 pines de entrada y salida, estas últimas se encuentran en el bloque de control de entrada y salida, la cual también posee conexión con el PIA, y en la figura 2, el bloque de salida y entrada I/O, poseen un bufer para los dispositivos de entrada y salida.

Cada bloque de función, para el caso de XILINX modelo de ejemplo "XC9500", esta compuesto de 18 macroceldas independientes. Los bloques funcionales también reciben una señal (reloj) de sincronismo global, una señal para habilitar la salida y una señal para habilitar el reset/set. El bloque funcional genera 18 salidas que maneja el FAST CONNECT. estas 18 salidas y su correspondiente señales de habilitación son gobernadas por el bloque I/O, La lógica dentro de los bloques funcionales es implementada utilizando la representación de  suma de producto. Ver figura 11.

Fig_11

Fig 11,  Bloque de Función

 

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/salida, macroceldas de entrada y macroceldas internas u ocultas (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.

Por lo que es posible manejar ecuaciones y almacenar el valor de salida de estas internamente utilizando los registros de estas macroceldas. Las macroceldas de entrada, como la que se muestra en la figura 12, son utilizadas para proporcionar entradas adicionales para las funciones booleanas. 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.

Las macroceldas pueden ser configuradas individualmente por una función de registro. 5 matriz de compuertas  AND, directos al "product terms "(termino de producto), son utilizados como entrada de datos primario (para las compuertas OR y XOR) para implementar funciones combinacionales, o como entradas de control incluyendo el reloj, señales set/reset, y señal de habilitación de salida. Los registros de las macroceldas pueden ser configurados como FLIP-FLOP tipo D o FLIP-FLOP tipo T, o este puede ser omitido por una operación combinacinoal. Cada registro soporta operaciones set y reset asincronos. durante el encendido del dispositivo, todos los registro son inicializados al estado predefinido por el usuario.

Fig_12

Fig. 12,  Macrocelda con bloque de función

Las señales de contro global son desarrolladas individualmente en cada macrocelda, incluyendo señal de reloj, señal de set/reset, y la señales de habilitación. la macrocelda registra señales de reloj de cada uno de los tres relojes globales o del termino producto. La señal GSR, es una señal de Reset/set, de entrada que permite que sea definido por el usuario. Ver figura 13.

 

 

Fig_13

 Fig. 13,  Reloj de Macrocelda

El termino producto, controla que la matriz de las 5 AND sean asignadas a cada macrocelda, un ejemplo pudiera ser que todas las AND sean manejadas por una OR.  El inconveniente de esto es que se evidencia el retardo de un termino producto a otro como se observa en la figura 14.

Fig_14

Fig. 14, Lógica de la Macrocelda utilizando termino producto

 

Celda de entrada/salida 

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 pueden o no ser consideradas parte del bloque lógico.

El Bloque I/O es la interfaz entre la lógica interna y los pines de entrada y salida del dispositivo CPLD. Cada bloque de I/O incluye un bufer de entrada y un manejador de salida; un multiplexor que selecciona la salida habilitada, y también incluye una señal de control de tierra para la programación del usuario. El bufer de entrada es compatible con tensión de 5 V CMOS, 5 V TTL, y señales  de voltaje de 3.3 V. El bufer de entrada usa internamente un suministro de potencia de 5 V ( Vccint), para asegurarse que el umbral de entrada permanezca constante y no varie con el voltaje Vccio. La señal de salida se habilita de la siguiente formas: una señal puede ser generada por el termino producto de la macrocelda, cualquiera de las señales globales de OE, o por una señal de tercer estado GTS. Ver figura 15.

Fig_15

Fig. 15,  Bloque I/O

 

Cada salida tiene un control independiente de "Slew Rate" (Máxima variación del voltaje de salida con respecto al tiempo); este control permite reducir o controlar el ruido en el sistema, con sólo modificar el Tslew, como se muestra en la figura 16.

Fig_16

Fig. 16,   Slew Rate

Estos  CPLD poseen circuito con memoria EEPROM; que permiten reescribirse muchas veces, dependiendo del fabricante puede ser hasta 10.000 veces, como es el caso del fabricante XILINX, los modelos de la serie XC9500.

 

2) Arquitectura, Look-up Table (LUT), tabla de datos.

Tabla de datos (Look-Up Table)

Esta arquitectura se basa en la implementación lógico de bus de interconexión de filas y columnas, estas interconexiones también proveen conexión al bloque de matriz lógicos (LAB). El LAB consiste de varios elementos lógicos (LE); según el modelo pueden ser 10 LE, por cada LAB. Los LE es una pequeña unidad lógica que proveen una eficiente implementación de funciones lógicas del usuario. El Multitrack Interconnect provee una rápida conexión entre los LAB. Ver figura 17.

F-17

                               Fig. 17, Diagrama de bloque de la arquitectura de tabla de datos

Look-Up Table (LUT), Es un circuito que implementa una función de lógica combinacional  para almacenar una lista de valores de salida que correspondan a todas las posibles combinaciones de entradas, es decir un número de elementos almacenados son usados; para resumir una función lógica, almacenando cada función como una tabla de la verdad, esto se ilustra en la figura 18.

  

F_18

Fig. 18, Look-Up Table

 

Tomando como ejemplo la tabla de la verdad de la figura 12,  como comparador A1A0=B1B2 , hace que la salida lógica AEQB = 1 lógico. Una matriz de 16 flip-flops (Q0 hasta Q15), contiene data de todas las posibles combinaciones A1A0B1B0, por cada combinación se necesita un flip-flop. La entrada de cada LUT son decodificada por un decodificador de direcciones, cada salida del decodificador activa una buffer de tres estados, que pasa por un bloque de salida de flip-flop. Cuando se activa un buffer para pasar el contenido del flip-flop, el resto de los buffer permanecen en estado de alta impedancia, de esta manera se bloquea la data de los otros flip-flops. El contenido de los flip-flop son cargados cuando el LUT es programado, con las funciones requeridas. Continuando con el ejemplo de la figura 12, los 16 elementos almacenados en dicha tabla, combinados , para  seleccionar una salida combinacional y para interconectar con otras partes del chip, es llamado Elemento Lógico (LE). La función del desempeño del elemento lógico es similar a la de macroceldas en los PLD de suma de producto. La estructura de un elemento lógico se muestra en la figura 19.

 
F_19

Fig. 19 Elemento Lógico

 

El circuito "Cascade Chain",  permite al usuario programar la función boleana, este circuito puede ser de compuertas AND o OR.

F_20

Fig. 20, Operación en Cascada

 

Bloque de Matriz Lógico (LAB), consiste en un número de elementos lógicos e interconectados localmente; el bloque LAB, esta conectado con el resto del dispositivo por medio de una serie de columnas y filas interconectadas, lo cual para este caso el fabricante ALTERA ha llamado FastTrack Interconnect, también se le conoce como Multitrack Interconnect. Ver figura 21.

F_21

Fig. 21, Bloque de Matriz Lógicos

Embedded Array Block (EAB), este bloque es una matriz de 2048 elemento de almacenaje que pueden ser usado eficientemente en la implementación de funciones lógicas complejas.

El FLEX10K es un dispositivo del fabricante ALTERA (ver figura 22), tiene una matriz de 6 filas por 24 columnas de  bloque de matriz lógico (LAB), es decir que tendrá 144 LAB, que a su ves son 8 x 144LAB= 1152 elementos lógicos, estos elementos también tienen 6 EAB; 6X2048 = 12288 bits de almacenaje de EAB, note que un EAB tiene mas capacidad de almacenaje que un LAB combinado.

Algunos los dispositivos basados en LUT, son de tecnología de memoria de acceso aleatorio estática (SRAM), la ventaja de esta configuración es que este puede ser fabricado en densidades muy altas de celdas de almacenajes y programar rápidamente, comparado con un dispositivo, (suma de producto, SOP), basado en EEPROM. La desventaja es que las celdas SRAM, son volátiles; es decir que deben reconfigurarse cada vez que se reinicia el sistema.

F_22

Fig. 22, Diagrama en bloque de un dispositivo de estructura de datos como es el caso del FLEX10K del fabricante ALTERA.

El mismo  fabricante ALTERA, posee el modelo MAXII (ver figura 23), "tabla de datos LUT", tal modelo contiene un bloque de memoria "falsh", dentro del dispositivo. La mayoría de estos almacenajes de memorias flash, son particionadas como un bloque de programación o configuración de memoria flash (CFM);  este provee un almacenaje no volátil; la CFM descarga y configura la lógica.  Una porción pequeña de la memoria flash es utilizado para  la  data de usuario, este pequeño bloque de memoria UFM, provee una almacenaje para el usuario de propósito general, en este bloque se provee la conexión del puerto programable para el arreglo lógico de lectura y escritura.

F_23

Fig. 23, Diagrama de bloque del modelo MAXII

 

F_24

Fig. 24, Diagrama del bloque de memoria UFM

El bloque UFM como se muestra en la figura 24, puede ser utilizado como el EEPROM serial, para almacenar información no volátil, este bloque se conecta al bloque de arreglo lógico a través del bus Multitrack interconectado, de esta manera se permite la interface con el bloque de elemento lógico.

 

CONSTRUCCIÓN DEL CPLD

Las vías están compuesta de 100 porciento metal de aluminio diluido, aquí se identificará como Metal 2, los contactos son 100 porciento metal de aluminio diluido, identificado como Metal 1. Como características especiales posee tecnología "FLASH FAST". Las compuertas en el canal N son del orden de 0.45 micra, y el canal P son del orden de 0.5 micra. El dispositivo esta formado por una capa de nitruro de silicio sobre otra capa de  dióxido de silicio. Posee dos capas de polisilicio. El PLOY 1 fue utilizada exclusivamente en compuertas flotantes, y POLY 2 (polisilicio y silicio de tusteno) fue utilizado para todas las compuertas estándar, en la matrix de lineas de programas y de palabra. La matrix de celdas programables son EEPROM (tecnología FAST FLASH), el Metal 2, será utilizado para las líneas de programa y de la palabra de dato. El Metal 1 distribuye la tierra GND y una línea de un bit. El dielétrico se encuentra entre las capas POLY es de ONO "óxido-nitruro-óxido".  el color anaranjado es Nitruro de Silicio, el color azul es Metal 1 y 2, el color amarillo es Óxido, el color verde es polisilicio, color rojo difusión del canal P y N, y el color gris es el substrato P. Ver figura 25 y 26.

Si el dispositivo es borrable eléctricamente EEPROM, sus conexiones es a base de transistores  MOS de puerta flotante, que contiene una puerta adicional embebida en el aislante entre la puerta normal (accesible desde el exterior) y el substrato. esta puerta extra, sin conexión al exterior y completamente rodeada de material aislante, es la puerta flotante. los transistores MOS, inicialmente no tienen carga en la puerta flotante, de forma que actúan como transistores normales: en cada linea vertical se realiza la operación lógica Y; es necesario que todas las líneas horizontales estén bajas (a=b=c=d=L) para que las líneas verticales sean altas (x=y=z=H), y basta que una de las entradas sea baja (a=L, por ejemplo) para que su línea correspondiente sea alta, y por tanto los transistores cuyas puertas están conectadas a esa línea de entada pasan a conducción, y entonces las líneas verticales se hacen L. En otras palabras, los transistores hacen el punto de conexión entre las líneas verticales y horizontales. Para desconectar un punto de conexion (un transistor), en la fase de programación se aplica una tensión relativamente elevada (15 a 20)V en la puerta del transistor a desconectar; esta tensión hace que, por un proceso físico conocido como efecto túnel, atraviesen electrones desde el substrato por la fina capa de aislante y queden almacenados en la puerta flotante. En definitiva la introducción de electrones en la puerta flotante desconecta el transistor del circuito, ya que siempre estará cortado (estado off).

F_25

Fig. 25, Construcción de un CPLD

 

   F_26    

Fig. 26,  línea de productos 

 

PRINCIPALES FABRICANTES DE DISPOSITIVOS CPLD

 

  • Altera
  • Atmel
  • Cypress Semiconductor
  • Lattice Semiconductor
  • Xilinx
  •  

     

    REFERENCIAS

    http://aristotelesanato.blogspot.com/2008_01_01_archive.html

    http://electronicaintegrada.blogspot.com/2008/02/cpld-verilog.html

    http://es.wikipedia.org/wiki/Dispositivo_l%C3%B3gico_programable

    http://html.rincondelvago.com/dispositivos-logicos-programables_2.html

    http://torio.unileon.es/~dierar/ti/pdf/pld.PDF

    http://www.latticesemi.com/lit/docs/datasheets/pal_gal/16lv8.pdf

    http://es.wikipedia.org/wiki/CPLD

     

     

    {
    }

    Álbum de fotos de Dispositivos Logicos Programables (parte 1)

    4 de 29

    Ver fotos de Dispositivos Logicos Programables (parte 1)

    {
    }

    Comentarios Dispositivos Logicos Programables (parte 1)

    Muy buen material, Felicidades! ;-)  
    Lo estoy recomendando a mis alumnos de la Universidad Tecnológica de Tijuana, México. 
    Juana Juana 20/07/2011 a las 18:49
    realmente la informacion es muy buena y en mi conclucion  son temas  que es necesario meterce afondo en cada uno de ellos ... felicidades
    jose miguel jose miguel 02/08/2011 a las 05:56
    oye muy buena informacion pero tengo una duda, ¿sabes como avtivar y desactivar un gal? me avian comentado que con un O.E (tercer estado) pero no se a ke se refieran. gracias y que estes bien
    RAUL RAUL 28/11/2011 a las 20:38
    saludos
    miguel miguel 27/03/2013 a las 16:20
    Gracias Jorge, por este excelente artículo, mi problema es que por desgracia no todos nos podemos costear por el momento un programador de GALs, lo que me dificulta el considerar a estos dispositivos en mis proyectos.
    Pedro Ruiz Dana L. Pedro Ruiz Dana L. 26/04/2014 a las 13:46

    Deja tu comentario Dispositivos Logicos Programables (parte 1)

    Identifícate en OboLog, o crea tu blog gratis si aún no estás registrado.

    Avatar Tu nombre