Dispositivo lógico programable
Un dispositivo lógico programable (PLD) es un componente electrónico utilizado para construir circuitos digitales reconfigurables. A diferencia de la lógica digital construida utilizando puertas lógicas discretas con funciones fijas, un PLD tiene una función indefinida en el momento de la fabricación. Antes de que el PLD pueda usarse en un circuito, debe programarse para implementar la función deseada. En comparación con los dispositivos de lógica fija, los dispositivos de lógica programable simplifican el diseño de lógica compleja y pueden ofrecer un rendimiento superior. A diferencia de los microprocesadores, la programación de un PLD cambia las conexiones realizadas entre las puertas del dispositivo.
Los PLD se pueden clasificar en términos generales, en orden creciente de complejidad, Dispositivos lógicos programables simples (SPLD), que comprenden lógica de matriz programable, matriz lógica programable y lógica de matriz genérica; Dispositivos lógicos programables complejos (CPLD) y matrices de puertas programables en campo (FPGA).
Historia
En 1969, Motorola ofreció el XC157, una matriz de puertas programadas con máscara con 12 puertas y 30 pines de entrada/salida no comprometidos.
En 1970, Texas Instruments desarrolló un IC programable por máscara basado en la memoria asociativa de solo lectura de IBM o ROAM. Este dispositivo, el TMS2000, se programó alterando la capa de metal durante la producción del circuito integrado. El TMS2000 tenía hasta 17 entradas y 18 salidas con 8 flip flop JK para memoria. TI acuñó el término matriz lógica programable (PLA) para este dispositivo.
En 1971, General Electric Company (GE) estaba desarrollando un dispositivo lógico programable basado en la nueva tecnología de memoria programable de solo lectura (PROM). Este dispositivo experimental mejoró el ROAM de IBM al permitir la lógica multinivel. Intel acababa de presentar la PROM borrable UV de puerta flotante, por lo que el investigador de GE incorporó esa tecnología. El dispositivo de GE fue el primer PLD borrable jamás desarrollado, anterior al EPLD de Altera por más de una década. GE obtuvo varias patentes tempranas sobre dispositivos lógicos programables.
En 1973, National Semiconductor introdujo un dispositivo PLA programable por máscara (DM7575) con 14 entradas y 8 salidas sin registros de memoria. Esto fue más popular que la parte TI, pero el costo de hacer la máscara de metal limitó su uso. El dispositivo es significativo porque fue la base para la matriz lógica programable de campo producida por Signetics en 1975, la 82S100. (Intersil en realidad venció a Signetics en el mercado, pero el bajo rendimiento condenó su parte).
En 1974, GE celebró un acuerdo con Monolithic Memories (MMI) para desarrollar un dispositivo lógico programable con máscara que incorporara las innovaciones de GE. El dispositivo se denominó 'Arreglo lógico asociativo programable' o PALA. El MMI 5760 se completó en 1976 y podía implementar circuitos multinivel o secuenciales de más de 100 puertas. El dispositivo fue respaldado por un entorno de diseño de GE donde las ecuaciones booleanas se convertirían en patrones de máscara para configurar el dispositivo. La pieza nunca fue llevada al mercado.
PLA
En 1970, Texas Instruments desarrolló un IC programable por máscara basado en la memoria asociativa de solo lectura de IBM o ROAM. Este dispositivo, el TMS2000, se programó alterando la capa de metal durante la producción del circuito integrado. El TMS2000 tenía hasta 17 entradas y 18 salidas con 8 flip-flops JK para memoria. TI acuñó el término matriz lógica programable para este dispositivo.
Una matriz lógica programable (PLA) tiene una matriz de compuertas AND programable, que se vincula a una matriz de compuertas OR programable, que luego se puede complementar condicionalmente para producir una salida. Un PLA es similar a un concepto de ROM, sin embargo, un PLA no proporciona una decodificación completa de una variable y no genera todos los términos mínimos como en una ROM.
PAL
Los dispositivos PAL tienen matrices de celdas de transistor dispuestas en un "fijo-O, programable-Y" plano utilizado para implementar la "suma de productos" ecuaciones lógicas binarias para cada una de las salidas en términos de las entradas y retroalimentación síncrona o asíncrona de las salidas.
MMI introdujo un dispositivo innovador en 1978, la lógica de matriz programable o PAL. La arquitectura era más simple que la de Signetics FPLA porque omitió la matriz OR programable. Esto hizo que las piezas fueran más rápidas, más pequeñas y más baratas. Estaban disponibles en paquetes DIP de 20 pines y 300 mil, mientras que los FPLA venían en paquetes de 28 pines y 600 mil. El Manual PAL desmitificó el proceso de diseño. El software de diseño de PALASM (ensamblador PAL) convirtió a los ingenieros & # 39; Ecuaciones booleanas en el patrón de fusible requerido para programar la pieza. Los dispositivos PAL pronto fueron subcontratados por National Semiconductor, Texas Instruments y AMD.
Después de que MMI tuviera éxito con las partes PAL de 20 pines, AMD presentó el PAL 22V10 de 24 pines con características adicionales. Después de comprar MMI (1987), AMD escindió una operación consolidada como Vantis, y ese negocio fue adquirido por Lattice Semiconductor en 1999.
GAL
Una mejora del PAL fue el dispositivo lógico de matriz genérica, o GAL, inventado por Lattice Semiconductor en 1985. Este dispositivo tiene las mismas propiedades lógicas que el PAL, pero se puede borrar y reprogramar. El GAL es muy útil en la etapa de creación de prototipos de un diseño, cuando cualquier error en la lógica se puede corregir mediante la reprogramación. Los GAL se programan y reprograman con un programador PAL o con la técnica de programación en circuito en chips compatibles.
Lattice GAL combina CMOS y tecnología de puerta flotante borrable eléctricamente (E2) para un dispositivo lógico de alta velocidad y bajo consumo. La corporación International CMOS Technology (ICT) introdujo un dispositivo similar llamado PEEL (lógica programable eléctricamente borrable).
CPLD
Las PAL y GAL solo están disponibles en tamaños pequeños, equivalentes a unos pocos cientos de puertas lógicas. Para circuitos lógicos más grandes, se pueden usar PLD o CPLD complejos. Estos contienen el equivalente de varios PAL vinculados por interconexiones programables, todo en un circuito integrado. Los CPLD pueden reemplazar miles o incluso cientos de miles de puertas lógicas.
Algunos CPLD se programan con un programador PAL, pero este método se vuelve inconveniente para dispositivos con cientos de pines. Un segundo método de programación es soldar el dispositivo a su placa de circuito impreso y luego alimentarlo con un flujo de datos en serie desde una computadora personal. El CPLD contiene un circuito que decodifica el flujo de datos y configura el CPLD para realizar su función lógica especificada. Algunos fabricantes (incluidos Altera y Microsemi) utilizan JTAG para programar CPLD en circuito a partir de archivos.JAM.
FPGA
Mientras los PAL se estaban desarrollando en GAL y CPLD (todos discutidos anteriormente), estaba ocurriendo un flujo de desarrollo separado. Este tipo de dispositivo se basa en la tecnología de matriz de puertas y se denomina matriz de puertas programables en campo (FPGA). Los primeros ejemplos de FPGA son la matriz 82s100 y el secuenciador 82S105, de Signetics, introducidos a fines de la década de 1970. El 82S100 era una matriz de términos AND. El 82S105 también tenía funciones de flip flop.
(Observación: 82S100 y circuitos integrados similares de Signetics tienen estructura PLA, plano AND + plano OR)
Los FPGA utilizan una cuadrícula de puertas lógicas y, una vez almacenados, los datos no cambian, de forma similar a una matriz de puertas común. El término "programable en campo" significa que el dispositivo está programado por el cliente, no por el fabricante.
Los FPGA generalmente se programan después de soldarlos a la placa de circuito, de manera similar a los CPLD más grandes. En la mayoría de los FPGA más grandes, la configuración es volátil y debe volver a cargarse en el dispositivo cada vez que se aplica energía o se requiere una funcionalidad diferente. La configuración generalmente se almacena en una PROM o EEPROM de configuración. Las versiones de EEPROM pueden ser programables en el sistema (típicamente a través de JTAG).
La diferencia entre los FPGA y los CPLD es que los FPGA se basan internamente en tablas de búsqueda (LUT), mientras que los CPLD forman funciones lógicas con sea-of-gates (por ejemplo, suma de productos). Los CPLD están destinados a diseños más simples, mientras que los FPGA están destinados a diseños más complejos. En general, los CPLD son una buena opción para amplias aplicaciones de lógica combinatoria, mientras que los FPGA son más adecuados para grandes máquinas de estado, como los microprocesadores.
EPLD
Usando la misma tecnología que las EPROM, las EPLD tienen una ventana de cuarzo en el paquete que permite que se borre al exponerse a la luz ultravioleta.
Usando la misma tecnología que las EEPROM, las EEPLD pueden borrarse eléctricamente.
Un dispositivo lógico programable borrable (EPLD) es un circuito integrado que comprende una matriz de PLD que no vienen preconectados; las conexiones son programadas eléctricamente por el usuario. La mayoría de los dispositivos GAL y FPGA son ejemplos de EPLD.
Otras variantes
Estos son circuitos de microprocesador que contienen algunas funciones fijas y otras funciones que pueden modificarse mediante el código que se ejecuta en el procesador. El diseño de sistemas autoalterables requiere que los ingenieros aprendan nuevos métodos y que se desarrollen nuevas herramientas de software.
Ahora se venden PLD que contienen un microprocesador con una función fija (el llamado núcleo) rodeado de lógica programable. Estos dispositivos permiten a los diseñadores concentrarse en agregar nuevas funciones a los diseños sin tener que preocuparse por hacer que el microprocesador funcione. Además, el microprocesador de función fija ocupa menos espacio en el chip que una parte de la matriz de puertas programables que implementa el mismo procesador, lo que deja más espacio para que la matriz de puertas programables contenga los circuitos especializados del diseñador.
Cómo conservan los PLD su configuración
Un PLD es una combinación de un dispositivo lógico y un dispositivo de memoria. La memoria se utiliza para almacenar el patrón que se le dio al chip durante la programación. La mayoría de los métodos para almacenar datos en un circuito integrado se han adaptado para su uso en PLD. Éstas incluyen:
- Antifusos de silicona
- SRAM
- Células de memoria EPROM o EEPROM
- Memoria Flash
Los antifusibles de silicio son conexiones que se realizan aplicando un voltaje a través de un área modificada de silicio dentro del chip. Se llaman antifusibles porque funcionan de manera opuesta a los fusibles normales, que comienzan su vida como conexiones hasta que se rompen por la corriente eléctrica.
SRAM, o RAM estática, es un tipo de memoria volátil, lo que significa que su contenido se pierde cada vez que se apaga la alimentación. Por lo tanto, los PLD basados en SRAM deben programarse cada vez que se enciende el circuito. Esto generalmente lo hace automáticamente otra parte del circuito.
Una celda de memoria EPROM es un MOSFET (transistor de efecto de campo semiconductor de óxido de metal o transistor MOS) que se puede encender atrapando una carga eléctrica permanentemente en su electrodo de puerta. Esto lo hace un programador PAL. La carga permanece durante muchos años y solo puede eliminarse exponiendo el chip a una fuerte luz ultravioleta en un dispositivo llamado borrador de EPROM.
La memoria flash no es volátil y retiene su contenido incluso cuando se apaga la alimentación. Se almacena en celdas de memoria MOSFET de puerta flotante y se puede borrar y reprogramar según sea necesario. Esto lo hace útil en PLD que pueden reprogramarse con frecuencia, como los PLD que se usan en prototipos. La memoria flash es un tipo de EEPROM que contiene información utilizando cargas eléctricas atrapadas similares a las EPROM. En consecuencia, la memoria Flash puede contener información durante años, pero posiblemente no tantos años como la EPROM.
A partir de 2005, la mayoría de los CPLD son programables y borrables eléctricamente, y no volátiles. Esto se debe a que son demasiado pequeñas para justificar el inconveniente de programar celdas SRAM internas cada vez que se inician, y las celdas EPROM son más caras debido a su paquete cerámico con ventana de cuarzo.
Lenguajes de programación PLD
Muchos dispositivos de programación PAL aceptan entradas en un formato de archivo estándar, comúnmente conocido como 'archivos JEDEC'. Son análogos a los compiladores de software. Los lenguajes utilizados como código fuente para los compiladores lógicos se denominan lenguajes de descripción de hardware o HDL.
PALAM, ABEL y CUPL se usan con frecuencia para dispositivos de baja complejidad, mientras que Verilog y VHDL son lenguajes de descripción de alto nivel populares para dispositivos más complejos. El ABEL más limitado se usa a menudo por razones históricas, pero para los nuevos diseños, VHDL es más popular, incluso para diseños de baja complejidad.
Para lenguajes de programación PLD modernos, flujos de diseño y herramientas, consulte FPGA y computación reconfigurable.
Dispositivos de programación PLD
Se utiliza un programador de dispositivos para transferir el patrón lógico booleano al dispositivo programable. En los primeros días de la lógica programable, cada fabricante de PLD también producía un programador de dispositivos especializado para su familia de dispositivos lógicos. Más tarde, aparecieron en el mercado programadores de dispositivos universales que admitían varias familias de dispositivos lógicos de diferentes fabricantes. Los programadores de dispositivos de hoy en día generalmente pueden programar PLD comunes (principalmente equivalentes PAL/GAL) de todos los fabricantes existentes. Los formatos de archivo comunes utilizados para almacenar el patrón lógico booleano (fusibles) son JEDEC, Altera POF (archivo de objeto programable) o Xilinx BITstream.
Contenido relacionado
ISO/CEI 8859-1
Dispositivo de carga acoplada
Sobrecarga de operadores