Diseño de Sistemas Digitales II
Profesor: Omar Torres García
Bloque I. Dispositivos de Lógica Programable 2
1.1 Panorama General 3
1.2 Arreglos Lógicos Programables 4
1.3 Dispositivos Lógicos Programables (PAL) (GAL) 6
1.4 Métodos de Programación de Dispositivos 9
1.4.1 Programador Universal 10
Referencias 11
1
Bloque I. Dispositivos de Lógica Programable
Los Dispositivos de Lógica Programable incluyen a los circuitos de integración SSI y MSI que
pueden ser configurados para emular más circuitos lógicos discretos, igual que las
interconexiones complejas de estos circuitos. Debido a estas características, muchos profetas
predijeron alguna vez que la época de la lógica discreta había terminado debido a que todos
los diseñadores la reemplazarían agresivamente con lógica programable. Tal decisión puede
reducir inventarios y proporcionar un medio ambiente más flexible de diseño.
Aunque tal razonamiento era adecuado, el mercado multimillonario del dólar aún mantuvo el
interés por los circuitos de lógica discreta demostrando que esta profecía era falsa. Sin
embargo, la falla de esta predicción pudo ser debido a la ignorancia del mercado del diseño
digital, al igual que por otros factores.
El aspecto más significativo de este concepto, del cual toma ventaja es que estos circuitos
pueden ser configurados para reemplazar a más de un circuito de lógica discreta. Por
ejemplo, si asumimos que un diseño digital de un circuito de lógica combinatoria genera 10
funciones lógicas, cada una minimizada con variables de 8 minitérminos de un conjunto de
12 entradas diferentes, tal diseño podría ser implementado con compuertas de lógica discreta.
Un mínimo de 10 compuertas OR de ocho entradas tendrían que asumirse para los ocho
minitérminos, cada uno creada por una compuerta AND de 12 entradas. Esto requeriría en
total 96 compuertas AND de 12 entradas. Este problema puede resolverse fácilmente usando
un solo dispositivo de lógica programable que esta comercialmente disponible. Además, los
dispositivos disponibles contienen flip flops que son parte del circuito secuencial común.
Al desarrollar diseños de máquinas de estado, descubriremos que los dispositivos de lógica
programable son particularmente más adaptables para estas aplicaciones. Una máquina de
estados compleja moderadamente, puede requerir mucha lógica discreta por lo que
construirla puede ser poco práctico. Sin embargo, el mismo diseño puede requerir solo uno o
dos dispositivos de lógica programable.
2
1.1 Panorama General
El gran desarrollo tecnológico que se ha experimentado en las últimas décadas sobre todo
en la microelectrónica, ha permitido integrar millones de elementos activos en un cristal de
silicio, mediante la tecnología planar. Lo anterior ha provocado que viejas arquitecturas de
dispositivos lógicos resurjan con más fuerza y complejidad que antes, tal es el caso de los
Arreglos Lógicos Programables (PLAs) y en general los Dispositivos Lógicos Programables
(PLDs). Estas arquitecturas, datan de 1974; en aquel entonces, las limitantes eran la
complejidad, las rígidas arquitecturas, el escaso avance de la tecnología y los altos costos,
los hizo poco competitivos contra los dispositivos de línea estándares, por ejemplo, la familia
TTL.
Sin embargo, la necesidad de diseñar sistemas digitales compactos que respondan a los
requerimientos de los diseñadores, con tiempos de diseño cortos y de costo accesible,
utilizando las funciones de los dispositivos lógicos discretos de baja escala de integración
(SSI, Short Scale Integration) y los de mediana escala de integración (MSI, Medium Scale
Integration), tales como compuertas TTL y CMOS, dió lugar a los PLDs que son dispositivos
que pueden ser programados por el usuario, personalizando de esta manera sus diseños.
Aunque el término anterior es aplicable a cualquier dispositivo lógico programable,
actualmente consiste en un arreglo de compuertas lógicas, elementos de memoria (Flip-
Flop’s), y registros los cuales pueden ser interconectados de múltiples maneras para
conformar circuitos lógicos de alta complejidad, para un número ilimitado de diseños lógicos.
Los tipos de PLDs básicos incluyen las Memorias de Sólo Lectura (PROMs, Programmable
Read Only Memorys), que son la forma más vieja de PLDs, pero no fueron diseñadas para
aplicaciones lógicas, los Arreglos Lógicos Programables (PLAs, Programmable Logic Arrays),
la Lógica de Arreglos Programables (PALs, Programmable Array Logic), la Lógica
Programable y Borrable Eléctricamente (PEELs, Programmable Electrically Erasable Logic),
los Arreglos Lógicos Genéricos (GALs, Generic Array Logic), y los PLDs Complejos (CPLD,
Complex PLD).
3
Los dispositivos lógicos programables (Programmable Logic Device, PLD) contienen una gran
cantidad de puertas lógicas dentro de un solo encapsulado y permiten al usuario determinar
cómo éstas deben unirse. Esta tecnología se conoce también como lógica programable, pues
las puertas no están comprometidas con ninguna función específica.
Se utilizan tanto en aplicaciones combinacionales como secuenciales. En muchas
aplicaciones, los PLDs y, en concreto las matrices lógicas programables (Programmable
Array Logic, PAL) y las matrices lógicas genéricas (Generic Array Logic, GAL) pueden
emplearse para reemplazar dispositivos lógicos SSI y MSI consiguiendo con ello una
reducción de etapas y costes.
Un PLD está formado por una matriz de puertas AND y puertas OR que se pueden programar
para conseguir funciones lógicas dadas.
Existen cuatro tipos de dispositivos que se clasifican como PLDs:
● La memoria programable de sólo lectura (Programmable Read Only Memory, PROM).
● La matriz lógica programable PLA (Programmable Logic Array).
● La matriz lógica programable PAL (Programmable Array Logic).
● La matriz lógica genérica GAL (Generic Array Logic).
1.2 Arreglos Lógicos Programables
Los PLA’s son arreglos lógicos programables (Programmable Logic Array). Estos dispositivos
contienen los dos tipos de arreglos programables AND y OR, que permiten a cualquier termino
AND proporcionar cualquier termino OR. Los PLA’s son probablemente los que tienen la
mayor flexibilidad que los dispositivos anteriores, conservando la funcionalidad lógica. Las
PLA’s típicamente cuentan con retroalimentación del arreglo OR de regreso al arreglo AND
que puede ser utilizado para implementar máquinas de estado asíncronas, sin embargo
muchas de las máquinas de estados son implementadas como máquinas asíncronas. Con
esta idea en mente, los fabricantes crearon un tipo de PLA llamado SEQUENCER, el cual
tiene un registro de retroalimentación de salida del arreglo OR dentro del arreglo AND.
El arreglo de la lógica programable es similar a la memoria es su concepto, solo que el PLA
no efectúa la decodificación cabal de las variables ni genera todos los minitérminos. El
codificador de sustituye por un arreglo de compuertas AND que se programan para generar
cualquier término producto de las variables de entrada. Luego, los términos producto se
conectan a compuertas OR para formar la suma de productos de las funciones booleanas.
4
Matriz OR
Está formada por una serie de puertas OR conectadas a una matriz programable con fusibles
en cada punto de intersección de una columna y una fila, como muestra la figura 1.1. La matriz
se programa fundiendo los fusibles para eliminar las variables seleccionadas de las funciones
de salida, como ilustra la parte (b). Para cada una de las entradas de la puerta OR sólo queda
intacto un fusible que conecta la variable deseada a la entrada de la puerta. Una vez que el
fusible está fundido no se puede volver a conectar.
Figura 1.1 (a) Matriz OR (b) Matriz OR programada
Matriz AND
Este tipo de matriz está formado por puertas AND conectadas a una matriz programable con
fusibles en cada punto de intersección como muestra la figura 1.2. Al igual que la matriz
OR se programa fundiendo los fusibles para eliminar las variables de las funciones de salida,
como muestra la parte (b).
Figura 1.2 (a) Matriz AND (b) Matriz AND programada
5
1.3 Dispositivos Lógicos Programables (PAL) (GAL)
Otro tipo de dispositivo programable típico diseñado específicamente para implementar
circuitos lógicos es el PAL, que es similar al PLA, pero consiste de 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. El primer circuito PAL fue el
16L8, de 20 terminales (pines), con soporte para 8 salidas y hasta 16 entradas con tecnología
Bipolar. 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. El PLA es una versión
más flexible en términos de arquitectura que el PAL, ya que el número de términos no es fijo,
es decir, por los arreglos AND y OR que son programables. Esto hace que las PLAs sean
mejor utilizadas para aplicaciones de máquinas de estado complejas que para aplicaciones
de decodificación como las PALs.
En la figura 1.3 se ilustra la estructura básica de una PAL para dos variables de entrada y una
de salida, aunque la mayoría de PALs tienen muchas entradas y muchas salidas.
Figura 1.3 (a) Estructura básica de una PAL (b) Ejemplo de implementación de una suma de productos
Existe una gran variedad de PALs cada una de las cuales se identifica mediante una
referencia. Esta referencia siempre comienza con el prefijo PAL. Los dos primeros dígitos que
6
siguen indican el número de entradas. La letra siguiente indica el tipo de salida: L=LOW
(activa a nivel bajo), H = HIGH (activa a nivel alto) y P = polaridad programable.
Y los últimos dos dígitos designan el número de salidas. Por ejemplo, PAL10L8 designará a
una PAL de 10 entradas activas a nivel bajo y 8 salidas. Esta referencia, además, puede llevar
subíndices que especifican la velocidad, tipo de encapsulado y el rango de temperatura.
En electrónica digital, un GAL de las siglas en inglés Generic Array Logic, es un dispositivo
lógico programable que es utilizado para realizar circuitos combinacionales lógicos, se
desarrolló en los años 80's por la empresa Lattice Semiconductor.
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. Un
dispositivo de amplio uso es el 16V8, el cual reemplaza a 24 tipos de PALs.
Las GALs están construidas con arreglos EEPROM (tecnología CMOS), por lo cual pueden
ser programadas varias veces, presentando consumos de potencia menores en comparación
a los de la tecnología de las PALs (BIPOLAR, las cuales son programables una sola vez), y
con velocidades comparables.
El problema con las GALs es la velocidad de disparo, que puede producir grandes cantidades
de ruido en el circuito. En el GAL 16V8, 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.
Una lógica combinacional, es un tipo de lógica digital, que se realiza a través de un circuito
booleano, esto quiere decir, que la salida es una función que solo depende de la entrada
actual, en contrario con la lógica secuencial, la cual tiene memoria, mientras que esta lógica
combinacional no.
Un Arreglo Lógico Generico o GAL (Generic Array Logic) es una denominación que utilizaba
originalmente Lattice Semiconductor y que más tarde se licenció a otros fabricantes.
Es importante señalar que el término GAL también podemos encontrarlo en diferentes
recursos literarios como Matriz Lógica Genérica.
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 es la que
permite la implementación de cualquier función lógica en forma de suma de productos. En los
PLD no programables la síntesis de las ecuaciones lógicas se realizan mediante la quema de
fusibles en cada punto de intersección de los pines de entradas con las compuertas.
7
En un GAL el fusible se reemplaza usando una celda CMOS eléctricamente borrable
(EECMOS) y mediante programación se activa o se desactiva cada celda EECMOS. Aquí
una celda activa conecta su correspondiente intersección fila y columna, y una celda
desactivada desconecta dicha intersección.
Es gracias a esta estructura que 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. La siguiente figura muestra el diagrama a bloques de un GAL.
Figura 1.4 Diagrama de bloques de un GAL
Figura 1.5 Chips GAL
8
1.4 Métodos de Programación de Dispositivos
Como ya se mencionó, las PAL se programan dejando intactos los fusibles que se requieren
y fundiendo los restantes. Las GAL se programan de forma similar, pero son las celdas
EECMOS las que se activan o desactivan.
Es fácil pensar que, existe un mejor método para especificar una configuración para un PLD
que escribir X’s y 0’s sobre un diagrama de matriz. Para entender y apreciar las reglas de
software de desarrollo, vamos a examinar algunos detalles en el proceso de programación.
Varios recursos son necesarios para diseñar y construir circuitos usando PLDs:
● Una Computadora Personal (PC)
● Software de desarrollo de PLDs
● Accesorios de programación
● Software para manejar el equipo de programación
● Dispositivos Lógicos Programables.
La figura 1.6, muestra un equipo de programación típico. El diseño inicial es cargado en la
PC en uno de varios caminos posibles, el cual será discutido en una forma sencilla. En la PC
corre un software de desarrollo, traslada el diseño a un archivo llamado Diagrama de Fusibles.
Este archivo es como un mapa que muestra los fusibles que serán fundidos y los que
permanecerán intactos en un dispositivo programable. Este diagrama es entonces trasladado
a un archivo de salida con formato apropiado para enviarlo al equipo de programación.
El software de programación que se comunica con el equipo de programación es entonces
invocado en la PC. Esto permite que el usuario informe al programador el tipo de dispositivo
que será programado. El archivo de salida es entonces enviado sobre un cable al equipo
programador. Este proceso es llamado “transferir el archivo al programador” (downloading).
Finalmente, el PLD es insertado en la base (socket) del programador, y el comando es
enviado desde la PC para programarlo.
Normalmente los programadores tienen una base especial para permitir que se inserte el chip,
y entonces se cierran los contactos sobre las terminales. Esto es llamado un socket de cero
esfuerzos de inserción (ZIF, Zero Insertion Force).
9
1.4.1 Programador Universal
Los equipos de programación universal, pueden programar cualquier tipo de dispositivos,
incluyendo PROMs, EPROMs, microcomputadoras en un solo chip, y una gran cantidad de
PLDs que están disponibles de numerosos fabricantes. Afortunadamente, como las piezas
programables empezaron a proliferar, los fabricantes tuvieron la necesidad de estandarizar la
asignación de terminales, y los métodos de programación.
Como resultado, fue formado el Consejo Mixto de Ingeniería de Dispositivos Electrónicos
(JEDEC, Joint Electronic Device Engineering Council). Uno de los resultados fue el estándar
3 JEDEC, que es un formato estándar para transferir datos de programación para PLDs,
independiente del fabricante o software de programación. La asignación de terminales para
varios empaques de circuitos integrados (CI), fue también estandarizado, haciendo
programadores universales menos complicados.
Consecuentemente, los equipos de programación son capaces de programar numerosos
tipos de PLDs. El software que permite diseñar específicamente una configuración para un
PLD, simplemente necesita producir un archivo de salida que conforme el estándar JEDEC,
este archivo puede ser cargado dentro de cualquier programador de PLD compatible con
JEDEC, y es capaz de programar el tipo deseado de PLD.
10
Referencias
● Mano, M. Morris y Kime, Charles. “Fundamentos de Diseño Lógico y Computadoras”,
Ed. Prentice - Hall, 1999.
● Tokheim, Roger. “Principios Digitales”, Ed. McGraw Hill,1995
● Horenstein, Mark. “Microelectrónica: Circuitos y Dispositivos”, Ed. Prentice - Hall,
1997.
● Bolton, Martin. “Digital System Design with Programmable Logic”, Ed. Addison-
Wesley, 1997.
● Pallerin, Davis y Holley, Michael. “Practical Design Using Programmable Logic”, Ed.
Prentice - Hall, 1997.
● Digiacomo, Joshep. “Designing with High Performance ASIC’s”, Ed. Prentice - Hall,
1998.
● Smith, Michael J. S. “Application – Specific Integrated Circuits”, Ed. Addison - Wesley,
1999.
11