UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
Dispositivos Lógicos Programables
Las iniciales PLD vienen del inglés Programmable Logic Device, que traducido a nuestro idioma significa Dispositivo Lógico Programable y son circuitos integrados que ofrecen a los diseñadores en un solo chip, un arreglo de compuertas lógicas y flip- flop’s, que se pueden configurar por el usuario para implementar una amplia variedad de funciones lógicas en sistemas. Estos dispositivos tienen pines de entrada, un arreglo lógico programable y pines de entrada y salida. Muchos PLD's tienen salidas programables programables que incrementan incrementan su flexibilidad flexibilidad haciéndolos útiles para una gran variedad de aplicaciones. 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 programable se fundamenta en el hecho de que cualquier cualquier función booleana puede ser expresada 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.
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
Figura 1.1 Estructuras básicas de un PLD
1 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. Una 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. A continuación se muestran la estructura típica de un GAL y la macrocelda de salida del GAL22V10.
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
FIGURA 1.3 Macrocelda de un GAL22V10
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
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
2.1 Matriz de Interconexiones Programables La matriz de interconexiones programables (PIM) permite 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
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
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 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 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.
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.
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
Figura 1.5 Estructura de un Bloque Lógico en dispositivos delas familias MAX340 y MAX5000
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
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
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
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/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. 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.
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
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
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
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.
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.
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
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).
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 número 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 po r Cypress, Actel, QuickLogic, y Xilinx. A continuación se muestran varias celdas lógicas con diferentes nombres de acuerdo al fabricante.
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
(a) Bloque Lógico Configurable de la familia XC4000 de Xilinx, Inc
(b) Modulo Lógico de la familia ACT3 de Actel Corporation
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
(c) Elemento Lógico de la familia APEX20K de Altera Corporation Figura 1.10 Diferentes Celdas Lógicas
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
CRONOLOGIA DE LOS PLD´S 1948 Se inventa el transistor de contacto puntual en los Laboratorios Bell Telephone en Estados Unidos, resultado de una investigación sobre semiconductores llevada a cabo por Walter Brattain, John Bardeen y William Shockley, quienes recibirían el premio Nobel por su enorme contribución en 1956. 1951 Se logra un transistor con una estructura como la que se conoce actualmente. 1957 John Wallmark de RCA patenta el FET ( Field Effect Transistor ). 1959 Se concibe el primer Circuito Integrado Digital en la compañía Texas Instruments y es Jack Kilby quién desarrolla un Flip-Flop sobre una base de substrato de Germanio y contenía solo cuatro transistores. 1961 Se presenta la primera familia de Circuitos Integrados Digitales comerciales, denominada R.T.L. ( Resistor - Transistor - Logic ) y que fue introducida por Fairchild Semiconductor bajo la serie 900, está familia operaba a 3.2 Voltios, poco tiempo después nace otra familia denominada D.T.L. ( Diode - Transistor - Logic ). 1962 Aparece la familia T.T.L. ( Transistor - Transistor - Logic ), con características como el de ser más rápida que sus predecesoras, los primeros trabajos hechos en TTL los realizó James Buie de Pacific Semiconductor ( hoy subsidiaria de TRW ). En ese mismo año Steven Hofstein y Frederick Heiman de RCA, desarrollan el MOSFET y a finales del mismo, fabrican el primer Circuito Integrado MOS ( Metal Oxide - Silicon ) que contenía 16 transistores sobre una pastilla de silicio de 0.063 mm por lado. 1963 La compañía RCA producía un Circuito Integrado con cientos de MOSFET´S en un área muy reducida, al mismo tiempo nacían familias como la MOS de canal N y de canal P, NMOS y PMOS respectivamente y así como la CMOS ( Complementary MOS ). La CMOS se impuso con el tiempo bajo la serie 40XX lanzada por RCA. Y poco tiempo después la 74CXX de National Semiconductor. A mediados de los 60´s surge el primer PLD, una matriz de diodos configurables y fusibles desarrollado por Harris Semiconductor ( conocida en ese tiempo como R adiation, Inc. ). 1967 Fairchild lanza al mercado una ROM de 64 bits con tecnología MOS. 1969 Nace el primer PLA, desarrollado por IBM y descrito como ROAM ( Read – Only Associative Memory ). 1970 La compañía Harris crea la PROM, que combinaba la tecnología de fusibles de nicromo con una simplificación en la estructura de la ROM. En este mismo año Texas Instruments fabrica el TMS 200 y era un Circuito Integrado de máscara programable basado en el ROAM de IBM, este manejaba diecisiete entradas y ocho salidas, contenía ocho Flip - Flops JK como elementos de memoria.
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
1971 Collins Radio ofrece otro PLA de máscara programable denominado CRC 3506/7, similar al TMS 200. Intel hace una innovación tecnológica al introducir la EPROM borrable con rayos UV. General Electric abre una puerta más con una nueva tecnología PROM, desarrollada por David Greer, donde la estructura consistía de un Plano-Or y señales que van hacia un Plano-And; permitiendo el uso de lógica de multinivel sin desperdicio de pines I/O. 1971 Al mismo tiempo General Electric hace experimentos con PLD´s de tecnología MOS, usando las características de los PLA y con la tecnología de borrado con rayos UV. En junio Intel ofrece al mercado el primer microprocesador MOS ( el 4004, de 4 bits ) que contenía 2300 transistores. 1972 MOSTEK Corporation lanza la primera Memoria de Alta Densidad ( una RAM dinámica de 1024 bits e Intel ofrece los primeros microprocesadores de 8 bits ( el 8008 y el 8080 ). 1973 National Semiconductor crea su propio PLA de máscara programable similar al TMS 200 pero con catorce entradas y ocho salidas sin elementos de memoria. El mérito a este dispositivo consistió en su menor complejidad en el diseño, mostrando así un avance en la nueva tecnología. Este dispositivo fue conocido como DM7575/DM8575. 1974 Monolithic Memories fabrica un dispositivo denominado PALA ( Programable Associative Logic Array ) bajo el número de parte MMT 5760/6760 implementaba multiniveles y circuitos secuenciales de más de 100 compuertas e incorporó bajo acuerdo de General Electric innovaciones en el dispositivo de máscara programable. 1975 Intersil anuncia el IM5200 un FPLA; poco después, Signetics hace lo mismo con el 82S100 que logró encabezar la carrera de los PLD´s durante un tiempo. 1978 En el verano de este año nace el dispositivo PAL, como un proyecto de MMI encabezado por John Birkner, en el que se pretendían satisfacer varias necesidades del mercado, entre ellas las de reemplazar la lógica estándar, mejorar los tamaños y la velocidad de los ya existentes; bajo esta idea los PAL invaden el mercado. El PAL que conocemos actualmente se basa en un diseño de H.T. Chua. MMI ofrece soporte para el manejo de los nuevos dispositivos en el “PAL Handbook “escrito por John
Birkner y que en el mismo se acompañaba de un programa hecho en Fortran para ayudar a programar los dispositivos. 1980 Se propone y presenta el primer formato JEDEC para los PLD´s. 1981 Signetics registra FPLA´s con aplicaciones para máquinas de estados. 1982 En el verano de este año Bill Wiley Smith de Signetics crea una muestra de lo que sería el soporte para la programación de PLD´s, llamado BEE ( Boolean Equation Entry ); cuyas características eran las Ecuaciones Booleanas, notación de estados, tablas de verdad, minimización lógica en forma automática así como la simulación de los diseños.
UNIVERSIDAD TECNOLÓGICA DE SAN JUAN DEL RÍO INNOVACIÓN PARA EL DESARROLLO
En diciembre de este año se anuncia el proyecto ABEL ( Advanced Boolean Expression Language ) para un número limitado de PLD’s de diferentes manufacturas y que fue un Software muy bien recibido por el mercado. Se crea otra herramienta denominada CUPL ( Common Universal tool for Programable Logic ) desarrollado por Bob Osann de Assited Technology. 1983 En Marzo se crea una segunda versión de CUPL soportando a todos los PAL´s soportados por PALASM y un número limitado de FPLAS combinacionales de Signetics con características similares al BEE. Poco después surge la segunda versión de ABEL que soportaba virtualmente a todos los PLD´s de esa época y esto toma por sorpresa a los diseñadores de otras herramientas de Software. En seguida National Semiconductor lanza el Software llamado PLAN (Programable Logic Analysis by National ). Cypress Semiconductor crea un PAL que se hace popular por su alta velocidad. Lattice Semiconductor compañía especializada en tecnología borrable CMOS crea un PAL borrable eléctricamente al que llamaron Generic Array Logic o GAL, pero esta compañía tuvo problemas legales con MMI hoy parte de AMD quién obtuvo el derecho de producir el GAL pero bajo otro nombre, en seguida Lattice crea el GAL 39V18 conocido hoy como Lattice 6001. 1983 International CMOS Technology ( I.C.T. ) desarrolla un dispositivo llamado PEEL (Programable Electrically Erasable Logic ) con tecnología de Lattice y fue llevado a primera producción en 1986. 1984 Se anuncia un nuevo concepto en cuanto a la tecnología de los PLD´s y es encabezado por Xilinix Corporation, el dispositivo desarrollado es el LCA ( Logic Cell Array ) compuesto de pequeñas celdas lógicas, similares a la arquitectura de una PROM, donde cada celda es capaz de crear cuatro o cinco funciones de entrada y dos de salida. Poco después Exel Microelectronic´s crece el XL78C800 Erasic, este dispositivo creado bajo arreglo de multiniveles de lógica y tardo aún más el diseño del Software y programación en estar disponible. 1988 Actel Corporation introduce un FPGA diferente al de los dispositivos de Xilinix. El Act 1 de densidad comparable al arreglo de compuertas de máscara programable al igual que el LCA requiere de el trazado de rutas de funciones lógicas para ser usado efectivamente. 1989 Plessey Semiconductor introduce un FPGA con características similares, pero con una mejor arquitectura. 1995 Lattice Semiconductor Corporation, anuncia el 7 de Agosto, la introducción de WorldÆ fastest 3.3 Volt 22V10, cuya máxima velocidad de operación es de 7.5 ns ( 133.33 Mhz ). Que permite la utilización del dispositivo con baterías. Lattice Semiconductor Corporation, anuncia una actualización para los Programadores Universales en septiembre de ese año. La actualización responde a que sus nuevos productos, el GAL16LV8D-3LJ y el GAL16V8D-5LJ son lanzados al mercado. Las nuevas cualidades de estos dispositivos son : velocidades desde 3.5 ns ( 286 Mhz ); además de operar a un voltaje de alimentación de 3.3 Volts.