Introducción
Las PAL (Arreglos Lógicos Programables), que como su nombre lo
indica son arreglos matriciales de fusibles y diodos que mediante una cierta
lógica pueden llegar a desempeñar cualquier función
booleana. Su arquitectura interna consiste en términos AND programables
que alimentan términos OR fijos. Todas las entradas a la matriz pueden
ser combinadas mediante AND entre si, pero los términos AND
específicos se dedican a términos OR específicos. Las PAL tienen una arquitectura muy popular y son probablemente el
tipo de dispositivo programable por usuario mas empleado. Si un dispositivo contiene macrocélulas,
comúnmente tendra una arquitectura PAL.
Las PAL son PLD que se han desarrollado para superar
ciertas desventajas de la PLA, tales como los
largos retardos debidos a los fusibles adicionales que resultan de la
utilización de dos matrices programables y la mayor complejidad del circuito.
Basicamente la PAL esta formada por una matriz AND programable y
una matriz OR fija con la lógica de salida, esta estructura permite
implementar cualquier suma de productos lógica con un
número de variables definido, sabiendo que cualquier función
lógica puede expresarse como
suma de productos. La PAL es el dispositivo lógico programable
mas común y se implementa con tecnología bipolar TTL o
ECL.
Arreglos Lógicos Programables (PAL
Un dispositivo lógico programable es aquel cuyas características
pueden ser modificadas y almacenadas mediante programación. Entre los dispositivos lógicos programables el PAL es el
mas simple, son los mas populares y los mas utilizados.
El circuito interno de un PAL consiste de una matriz
de conexiones, una matriz de compuertas AND programables y un arreglo de
compuertas OR fijo [1]. La matriz de conexiones es una red de conductores
distribuidos en filas y columnas con un fusible en
cada punto de intersección, mediante la cual se seleccionan
cualesentradas del
dispositivo seran conectadas al arreglo OR y así obtener una
función lógica en forma de suma de productos. Los circuitos PAL
son no reprogramables; ya que la síntesis de las ecuaciones
lógicas se realiza a través de la quema de fusibles en cada punto
de intersección de los pines de entrada con las compuertas.
Estructura de la PAL
En la Figura 1 se muestra la estructura interna de una PAL, en esta se observa
que cada línea de salida es conectada a tres líneas producto y
por consiguiente representa una suma de tres términos producto.
[pic]
Figura 1. Estructura interna de la PAL.
Debido al arreglo OR, la representación del PAL mostrada en
la Figura 2 es mas usada que el de la Figura 1.
[pic]
Figura 2. Estructura interna de la
PAL estandar.
Funcionamiento de la PAL.
Como se ha
mencionado, las PAL estan formadas por una matriz de puertas AND
programable conectada a una puerta OR fija. Esta estructura permite implementar
cualquier suma de productos lógicos con un
número de variables definidas y limitadas, entre otras, por el
número de entradas y salidas que tenga el dispositivo.
En la Figura 3 se muestra la estructura basica de un
PAL para tres variables de entrada y salida sin programar [2]. Cada punto de
intersección entre una fila y una columna se denomina celda y es el
elemento programable de la PAL. Cada fila se conecta a
la entrada de una puerta AND y cada columna a la variable de entrada o su
complemento. En función de la presencia o ausencia de las conexiones
creadas por programación, 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.
[pic]
Figura 3. PAL con matriz AND sin programar.
La implementación de una función lógica sobre un PAL, se
muestra la figura 4, donde las señales que entran a la matriz son las
variables de entrada y sus complementos.Cuando se requiere la conexión
entre una fila y una columna, el fusible queda intacto, Cuando dicha
conexión no se requiere, el fusible se abre en el proceso de
programación. La salida de la puerta OR proporciona finalmente la suma
de productos. Observe que si alguna entrada de una puerta AND queda sin
conectar, esta adquiere el valor del
elemento neutro del
producto lógico, sin afectar el resultado de dicha puerta.
[pic]
Figura 4. PAL con matriz AND programada.
Símbolo simplificado de la PAL.
Puesto que las PAL son circuitos integrados muy complejos desde el punto de
vista interno, los fabricantes han adoptado una
notación simplificada para eliminar los diagramas lógicos
complicados. En la Figura 5 se muestra la notación.
[pic]
Figura 5. Símbolo simplificado de una PAL.
Buffer de entrada: Para evitar cargar con la
gran cantidad de entradas de puertas AND a las que se pueden conectar una
variable o su complemento, se añade un buffer a
las variables de entrada de la PAL. Un buffer inversor
genera el complemento de una variable de entrada.
Puertas AND: una matriz AND de una puerta PAL típica tiene una gran
cantidad de líneas de interconexión y cada puerta AND tiene
entradas múltiples. El diagrama lógico de una PAL muestra cada
puerta AND que realmente tienen varias entradas, utilizando una sola
línea para representar a todas las líneas de entrada.
Conexiones de una PAL: Para obtener un diagrama lo mas sencillo posible, los fusibles de
una matriz AND programable se indican mediante una X en el punto de
intersección si el fusible queda intacto y no se indica nada sí
el fusible esta fundido. Las conexiones fijas emplean el
punto estandar.
Diagrama de bloque de una PAL.
Las salidas de la matriz AND son las entradas de la matriz OR y la salida de cada
puerta OR se asocia a una variable lógica de salida. Una PAL
típica tiene ocho o mas entradas en la matriz AND y hasta ocho
bloqueslógicos de salida como se muestra en la Figura 6 [3].
[pic]
Figura 6. Diagrama de bloque de una PAL.
Algunas PAL disponen de pines de entrada/salida (E/S) combinados, que se pueden
programar como salida o
como entrada.
La presencia de estos pines es muy útil cuando se desea, por ejemplo,
realizar una realimentación entre variables de salida y entrada como es el caso del diseño de un biestable.
Fabricantes de la PAL.
Dispositivos PAL (o simplemente PALS) se introducen en 1978 por Monolithic
Memories, Inc., (MMI), la arquitectura era mas sencilla que la FPLA
porque omitía la matriz OR programable. Esto hizo los
dispositivos mas rapidos, mas pequeños y mas
baratos [4].
Los PAL de MMI pronto fueron distribuidos por AMD la cual empleo
tecnología PROM de fusibles Titanio-Tungsteno programables una sola vez;
Texas Instruments apoya las PALs con arquitectura variable programables una
sola vez y National Semiconductor, quien 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.
El primer circuito PAL fue el 16L8, de 20 terminales (pines), con soporte para
8 salidas y hasta 16 entradas con tecnología Bipolar, mostrada en la
Figura 7, en cada macro celda se observa:
° Cada variable de entrada es distribuida negada y sin negar en la matriz
de intersección mediante los literales (columnas).
° Todas las columnas cruzan líneas
horizontales donde se puede realizar el AND cableado de las columnas que se
elijan y con ello generar en cada fila la suma de productos que se desee.
° Siete filas son unidas mediante una compuerta OR para realizar la suma de
productos.
° La señal de salida es negada por cuestiones de velocidad; ya que
es mas rapida una compuerta NOR que una OR, aunque existe la PAL 16H8,
donde la salida en lacompuerta OR sale sin negar.
° En algunas macroceldas el valor de salida se realimenta negado y sin
negar a todo el circuito, lo cual permite la conexión en cascada de
lógica, para la síntesis de funciones mas complejas. Esto ademas facilita el diseño de circuitos realimentados
para la elaboración de celdas de emorias.
° Las salidas se pueden controlar individualmente a través de las
compuertas Tri-State de cada una y con esto poder seleccionar la salida como
entrada.
Figura 7. PAL16L8 en encapsulado
DIP20.
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.
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. En la Figura 8 se observa el diseño de una PAL
con puertas de distintos tipos.
Figura 8. Diseño de una PAL con puertas de
distintos tipos.
En el mercado se manejan referencias de las PALs comerciales como la PAL16L8,
PAL20L8, PAL20V8 y PAL20X8.
Nomenclatura de la PAL.
Los líderes en fabricación de PLDs, Texas
Instruments y AMD, tienen una notación para identificar los dispositivos
[2]. Por ejemplo, la estructura en PLD según AMD es
Figura 9. Nomenclatura utilizada para identificar los PLD
según AMD.
Dentro de laestructura de salida se tienen las posibilidades
contenidas en la tabla 1.
Tabla 1 Tipos de Salidas de una PAL.
[pic]
PALs Comerciales
En el mercado se manejan referencias como la PAL16L8, PAL20L8, PAL20V8 y
PAL20X8.
Matriz Lógica Genérica (GAL, Generic Array Logic
La GAL se forma con una matriz AND reprogramable y una matriz OR fija , con una
salida lógica programable. La figura 4.4.7. muestra
el diagrama de bloques de una GAL. Esta estructura permite implementar
cualquier expresión lógica suma de productos con un número de variables limitado.
[pic]
Figura 4.4.7. Diagrama de Bloques de
una GAL (Generic Array Logic).
Las dos principales diferencias entre los dispositivos GAL y PAL son
a) la GAL es reprogramable y
b) la GAL tiene configuraciones de salida programables. La GAL se puede
programar una y otra vez, ya que usa
tecnología ECMOS (Electrically Erasable CMOS, CMOS borrable
eléctricamente).
En la figura 4.4.8. se
ilustra la estructura basica de una GAL con dos variables de entrada y
una de salida. La matriz reprogramable es esencialmente una red de conductores
ordenados en filas y columnas, con una celda CMOS eléctricamente
borrable (E2CMOS) en cada punto de intersección, en lugar de un fusible
como en el caso de las PAL. Estos PLDs son borrables y
reprogramables. El transistor CMOS tiene 2 compuertas, una de ellas totalmente aislada, flotante. Para
programar cada celda se aplica o no una tensión mayor a VDD (alta) en la compuerta no flotante. Al aplicar esta
tensión el dieléctrico conduce y la compuerta flotante se carga
negativamente, dejando en operación normal siempre abierto el
transistor.
[pic]
Figura 4.4.8. Estructura Basica de una GAL
(Generic Array Logic
En la figura 4.2.9. se muestra un ejemplo de una
sencilla matriz GAL programada para obtener la suma de tres productos.
[pic]
Figura 4.4.9. Programación de
una GAL (Generic Array Logic).
El borrado se puedehacer de dos formas
• Con luz ultravioleta (UV): exponiendo el transistor de 5 a 20 minutos a
luz UV, el dieléctrico conduce y permite la descarga de la compuerta
flotante. Para este
borrado el chip lleva una ventana de cuarzo transparente.
• Borrado eléctrico: Es el mas usado hoy en día. La
capa que aisla la compuerta flotante es mas delgada. Al aplicar una
tensión alta con polaridad contraria , la
compuerta flotante se descarga porque el dieléctrico conduce. Las ventajas mas importantes de esta técnica son una
descarga rapida, no se requiere UV y no se requiere sacar el chip de su
base.
GALs comerciales
Las diversas GAL tienen el mismo tipo de matriz programable. Se diferencian en
el tamaño de la matriz, en el tipo de OLMC (Las macroceldas
Lógicas de Salida que contienen circuitos lógicos programables
que se pueden configurar como entrada o salida combinacional y secuencial) y en
los parametros de funcionamiento, tales como velocidad y
disipación de potencia.
|Referencia |Número de Pines |tPD |ICC (mA) |Características |
|GAL16V8A |20 |10, 15, 25 |55, 115 |E2CMOS PLD Genérica |
|GAL18V10 |20 |15, 20 |115 |E2CMOS PLD Universal |
|GAL22V8A |24 |10, 15, 25 |55, 115 |E2CMOS PLD Genérica |
|GAL22RA10 |24 |15, 20 |115 |E2CMOS PLD Universal |
|GAL22V10 |24 |10, 15, 25 |130 |E2CMOS PLD Universal |
|GAL26CV12 |28 |15, 20 |130 |E2CMOS PLD Universal|
|GAL6001 |24 |30, 35 |150 |E2CMOS FPLA |
|ispGAL16Z8 |24 |30, 35 |190 |E2CMOS PLD Programable en Circuito |
Ejemplo de Programación en CUPL
|Name Funciones lógicas; |
|Partno GAL16V8; |
|Revision 01; |
|Date 03/01/03; |
|Company UNEXPO; |
|Location X; |
|Assembly X; |
|Device G16V8; |
|/ ** ** ** ** ** ** ************/ |
|/* Archivo Fuente de ejemplo en CUPL para implementar funciones lógicas
*/ |
|/ ** ** ** ** ** ** ************/ |
|/* Definición de las entradas */ |
|Pin 1 = a;|
|Pin 2 = b; |
|/* Definición de las salidas */ |
|Pin 12 = inva; |
|Pin 13 = invb; |
|Pin 14 = and; |
|Pin 15 = nand; |
|Pin 16 = or; |
|Pin 17 = nor; |
|Pin 18 = xor; |
|Pin 19 = xnor; |
|/* Definición de Ecuaciones Lógicas*/ |
|inva = !a;
/*
Inversión de las entradas a y b*/ |
|invb = !b; |
|and = a &
b;
/* Función AND */ |
|nand = !(a & b);
/*
Función NAND */ |
|or = a #
b;
/* FunciónOR*/ |
|nor = !(a #
b);
/* Función NOR */ |
|xor = a $ b;
/*
Función XOR */ |
|xnor = !(a $ b);
/*
Función XOR Negada*/ |
Archivo fuente de ejemplo en CUPL para implementación de funciones
lógicas
Lenguajes de programación
ABEL
ABEL es la abreviatura de Advanced Boolean Expression Language. Es un lenguaje de descripción de hardware y un conjunto
de herramientas de diseño para programar dispositivos lógicos
programables (PLDs).
Verilog
Verilog es un lenguaje de descripción de
hardware (HDL, del
Inglés Hardware Description Language) usado para modelar sistemas
electrónicos.
|¿|[|
|H|C|
|a|o|
|s|n|
|n|t|
|o|r|
|t|a|
|a|e|
|d|r|
|o|]|
|a
|l|[|
|g|A|
|o|y|
|d|ú|
|i|d|
|f|a|
|e|n|
|r|o|
|e|s|
|n|t|
|t|r|
|e|a|
|?|d|
|H|u|
|e|c|
|m|i|
|o|e|
|s|n|
|h|d|
|e|o|
|c|.|
|h|]|
|o
|a
|l
|g
|u
|n
|a
|s
|m
|e
|j
|o
|r
|a
|s
|e
|n
|W
|i
|k
|i
|p
|e
|d
|i
|a
|.
|V
|e
|r
|m
|a
|s
|.