TIPOS DE PLD´S.  
   
         
 

 

De acuerdo a su estructura estos dispositivos se clasifican en:

 

PLA   PAL   GAL

 

De acuerdo a la tecnología mediante la cual se fabrican, se tienen aquellos que utilizan tecnología bipolar TTL o ECL y los de tecnología CMOS. Los de la primera tecnología son más rápidos y consumen más que los CMOS, la velocidad de propagación es menor de los 7nSeg.  y los consumos típicos oscilan alrededor de 100-200 mA, esto para un chip de 20-24 patillas.

De acuerdo a la forma en que pueden ser borrados, también dependerá del tipo de tecnología que se use. Los PLDs bipolares sólo se pueden programar una vez, mientras que la mayoría de los del tipo CMOS son reprogramables por el usuario y permiten una fácil verificación.

Dentro de las PLDs CMOS se tienen dos clases: Los EPLD que son borrables por radiación ultravioleta, por lo cual deben tener ventanas de cuarzo y deben ir encapsulados en cerámica, haciéndolos más costosos que los de la segunda clase, los EEPLD. Estos últimos son borrables eléctricamente y tienen encapsulado de plástico.

En el mercado existen unos PLDs que se denominan complejos, los cuales se caracterizan por tener retardos predecibles. No necesitan ruteados (direccionamiento), tienen módulos lógicos LAB, (Logic array block) cada uno con  16  macro células, los cuales están conectados por una matriz programable PLA. Tienen únicamente tres términos producto, pero permiten obtener más. Como ejemplo se pueden enunciar las series MAX 5000 y MAX 7000 (ALTERA). Estas últimas tienen de 44 a 208 patillas, de 32 a 216 macro células, y velocidad muy elevada.

 

 

 

 

 



 

FPLA FIELD PROGRAMMABLE LOGIC ARRAY

 

Es un PLD en el que se pueden programar las uniones en ambas matrices (véase Figura). Son los dispositivos más flexibles, pero resultan penalizados en tamaño y en velocidad debido a los transistores adicionales en la matriz de puertas OR. Se utilizan fundamentalmente para construir máquinas de estados. Para otras aplicaciones, las PAL resultan más efectivas. Las PAL y las FPLA son sistemas combinacionales incompletos porque teniendo n entradas, disponen de menos de 2n términos producto.

 



 

PROGRAMABLE LOGIC ARRAYS (PLA’s).

 

 

ESTRUCTURA BÁSICA DE UN PLA.

 

Un PLA es un bloque funcional que se utiliza para implementar multifunciones booleanas. Existe una gran relación entre su estructura interna y el conjunto de funciones que realiza.

 

 

DESCRIPCIÓN DE SU ESTRUCTURA.

 

Un PLA está constituido básicamente por dos submatrices o planos denominados plano AND y OR, respectivamente. Ambos planos están separados entre sí por una pequeña zona divisoria denominada zona de conexión. Tanto el plano AND como el plano OR disponen, a su vez, de dos zonas externas denominadas buffers o separadores de entrada y de salida. Las señales de entrada del PLA (x1, K, xm) llegan a los buffers de entrada del plano AND y producen las señales invertidas (x1, K, xm). Ambos tipos de señales (xi y xi) penetran verticalmente en el plano AND y generan los términos producto pi. Estos últimos discurren horizontalmente por ambos planos, atravesando previamente la zona de conexión, y producen finalmente las salidas del PLA mediante la realización de sumas lógicas entre los términos producto anteriores.
Además de las zonas mencionadas, existen otras dos regiones especiales. Una de ellas está situada a la izquierda del plano AND y la otra en la parte superior del plano OR. Estas regiones están constituidas por transistores del "pull-up", que actúan como resistencia de carga, a través de los cuales se alimentan las líneas de los términos producto y las líneas de salida del PLA respectivamente. En la siguiente ilustración se muestra un esquema global de su estructura:

 

 

ESTRUCTURA BASICA DE UNA PLA.

 

La realización física de un PLA se lleva a cabo mediante la conexión de cada una de las celdas que pertenecen a las regiones anteriores (buffers de entrada, plano AND, transistores de pull-up del plano AND, conexión AND-OR, plano OR, transistores de pull-up del plano OR y buffers de salida). De todas estas celdas, sólo las de los planos AND y OR están relacionadas con las funciones lógicas que definen el circuito. El resto hace referencia a otros factores externos ajenos a la lógica propiamente dicha. En algunos casos, estos factores han de ser tenidos en cuenta si se quiere hacer una estimación realista del área final ocupada por el PLA. Esto ocurre, por ejemplo, cuando se aplican técnicas de optimización en las que se modifica el número de entradas y/o salidas (técnicas de partición).

 

 

ESTRUCTURA GENERAL DE LOS DISPOSITIVOS PAL.

 

Los dispositivos PAL son PLAs con o sin array OR, pero un conjunto de puertas OR que suman grupos de productos. La estructura de los dispositivos PALs combinacionales se muestra en la figura 5. Los dispositivos combinacionales de 20 pins están listados en la Tabla A.3, y los de 25 pins están listados en la Tabla A.4.

 

PLA estructurado con control de salidas.

 

Los decodificadores, o los Field Programmable Gate Arrays (FPGAS) son PALs como los PLDs combinacionales, que generalmente no tienen array OR; por lo que los productos son tomados directamente hacia las salidas. Estos son particularmente útiles para la decodificación de direcciones, cuyas arquitecturas están listadas en la Tabla A.5.
Las PALs registradas tienen registros de salida alimentados desde el array lógico como el dispositivo mostrado en la Figura 5. Las Tablas A.6 y A.7 listan las arquitecturas. Todos estos dispositivos tienen un reloj externo común, siendo estos apropiados para diseños síncronos.

 

 

CÉLULAS DE SALIDA PROGRAMABLES Y ARQUITECTURAS GENÉRICAS.

 

Para servir al mayor número posible de aplicaciones, se requiere un gran número de arquitecturas PAL. Para acabar con este problema, han sido concebidas las PALs con arquitectura genérica. Aquí hay dispositivos con células de salida, o macro células, de configuración variable. Cada uno de los dispositivos genéricos es capaz de emular un número de dispositivos de arquitectura fija en suma para ser adaptables en una única arquitectura. El primer PAL genérico fue el 22V10. Siendo capaz de generar señales de reloj registradas que internamente incrementan la flexibilidad de un dispositivo PAL registrado, permitiendo su uso en sistemas con varios relojes, y para su uso también en circuitos sin reloj. Encontrándose este tipo de PALs en la Tabla A.8.

 

 

REPRESENTACIÓN MATRICIAL.

 

Los PLA’s sirven para representar multifunciones booleanas expresadas mediante dos niveles de puertas. Sea, pues, una multifunción F formada por s funciones simples fi cada una de ellas dependiente de m variables distintas (F = Y, fi(x1, K, xm)). Supongamos también que es necesario desarrollar n productos lógicos distintos con las variables dependientes xi para expresar todas y cada una de las funciones fi mediante sumas de productos.

 

 


     Dispositivo PAL 16R4.

 

Entonces, el PLA asociado a la multifunción F, puede representarse por una matriz, C, formada por n filas y m columnas. Cada una de estas filas Ci se define del modo siguiente:

 

? j : 1..m (plano AND).
Cij = 0 si xj está complementada en el término producto Ci.
Cij = 1 si xj no está complementada en el término producto Ci.
Cij = 2 si xj no aparece en el término producto Ci.
? j : m + 1..m + s (plano OR).
Cij = 3 si Ci no forma parte de la función Fj· m
Cij = 4 si Ci forma parte de la función Fj· m

 

De la definición anterior se deduce que todos los 2os de la matriz C representan elementos vacíos en las m primeras columnas pertenecientes al plano AND o submatriz de entradas. Igualmente ocurre con los 3os en las columnas restantes del plano OR o submatríz de salidas. Por elemento vacío se entiende aquella posición del PLA en la que no existen conexiones.

Así, por ejemplo la multifunción f1 = x3x6 + x1x6, f2 = x2x4 + x1x5 + x6, f3 = x1 se representa mediante la matriz de cobertura de la Tabla 1.

 

X1 X2 X3 X4 X5 X6 F1 F2 F3
2 2 0 2 2 1 4 3 3
2 0 2 1 2 2 3 4 3
1 2 2 2 2 0 4 3 3
0 2 2 2 1 2 3 4 3
1 2 2 2 2 2 3 3 4
2 2 2 2 2 1 3 4 3

 

Tabla 1. Matriz de cobertura.

 

En muchos casos conviene utilizar otra representación matricial más simple del PLA denominada matriz de personalidad. Esta nueva matriz se define a partir de la matriz de cobertura del modo siguiente:

 

? j := 1..m
Bij = 1 si Cij = 0 ó 1.
Bij = 0 si Cij = 2.    ? j := m + 1..m + s
Bij = 1 si Cij = 4.
Bij = 0 si Cij = 3.

 

Es decir, un 1 en la j-ésima columna e i-ésima fila del plano AND indica que la columna j es un factor del término producto i, mientras que un 1 en la j-ésima columna e i-ésima fila del plano OR indica que el término producto i es un término de la salida j-m. La Tabla 2 corresponde a la matriz de personalidad asociada a la matriz de cobertura de la tabla 1.

 

X1 X2 X3 X4 X5 X6 F1 F2 F3
0 0 1 0 0 1 1 0 0
0 1 0 1 0 0 0 1 0
1 0 0 0 0 1 1 0 0
1 0 0 0 1 0 0 1 0
1 0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1 0

 

Tabla 2. Matriz de personalidad.

 

La representación de un PLA mediante su matriz de personalidad respectiva nos ayudará a resolver los problemas planteados en la optimización lógica y topológica de PLAs.

 

APLICACIONES DE LAS PLAs.

 

La estructura de los PLAs se muestra en la figura 6, y un ejemplo específico se encuentra en la figura 7, encontrándose las arquitecturas PLA listadas en la tabla A.1. La estructura de los secuenciadores se encuentran en la figura 8, las arquitecturas de los secuenciadores están listadas en la tabla A.2.

 


  

(a) PLA con control de salida; (b) Segunda forma con los términos de control en PSL173.

 


 
 
 

 


Estructura genérica de un secuenciador

 

 



 

PAL (Programmable Array Logic).

 

 También llamados PLAs, son un tipo de PLDs en las que se pueden programar las uniones en la matriz de puertas AND, siendo fijas las uniones en la matriz de puertas OR (véase Figura 1). Los dispositivos con arquitectura PAL son los más populares y los más utilizados, razón ésta por la que dedicamos el siguiente capítulo, para analizarlos más a fondo.

 

 

PAL BIPOLARES Y PAL CMOS

 

Si en un principio, todas las PAL eran bipolares porque utilizaban la misma tecnología que las PROM de fusibles, en la actualidad existen dos familias de PAL CMOS que utilizan las mismas tecnologías que las memorias UVPROM o EEPROM. Por esta razón, estas PAL CMOS son programables y borrables eléctricamente o por exposición a los ultravioletas. Como para las memorias, esta utilización de la tecnología CMOS no se hace en detrimento de la velocidad y, si bien las PAL bipolares llegan a ser un poco más rápidas que las PAL CMOS, esto solo se aprecia en determinadas aplicaciones muy criticas. Así, la PAL CMOS más rápida actualmente de AMD está especificada en 15 ns de tiempo de propagación mientras que la más rápida  de las pal bipolares baja hasta 705 ns. Esta es una relación de uno a dos, efectivamente, pero a estos niveles de velocidad, la diferencia no resulta demasiado significativa. Para una memoria, téngase en cuenta que una simple puerta NAND en tecnología TTL LS tiene un tiempo de propagación de 10 ns y la tecnología bipolar es mucho más sencilla que la de una PAL
Considerando estas diferencias tecnológicas, se encuentran las mismas distinciones que en las memorias. Las PAL bipolares, por tanto de fusibles, sólo son programables una vez, puesto que hay ruptura física de una conexión. La duración de retención de la información es, por tanto, ilimitada en el tiempo mientras la programación haya sido realizada con un aparato reconocido por el fabricante de las PAL. Evidentemente, no está prevista ninguna posibilidad de borrado y las únicas modificaciones que se pueden efectuar sobre una PAL ya programada consisten en destruir un fusible que no lo estuviera, y nada más. Como en las PROM bipolares, las PAL bipolares no pueden ser verificadas al 100% en cuanto a su programabilidad y, por tanto, los fabricantes descambian gratuitamente los circuitos que no sean correctamente programables. Por importantes que puedan ser, estas limitaciones se minimizan cuando se fabrica un producto en serie. En este caso, el contenido de la PAL es perfectamente retenido y no tener posibilidad de reprogramacion no es inconveniente. Además, en el momento de escribir estas líneas, las PAL bipolares son aún claramente menos caras que sus equivalentes en CMOS.
 

PAL  ASINCRÓNAS DE REGISTROS.

 

En primer lugar, el registro dispone de dos líneas de preinicialización: AR para el reset  o puesta a ceros, y AP para el preset o puesta a unos.  Estas líneas provienen de la matriz de fusibles y pueden ser controladas, por tanto, por las señales  o combinaciones de señales  que se deseen. Aparte de las características normales anteriores, estas dos líneas AR y AP desempeñan otra función. En efecto, si se establecen todas a unos, el flip-flop es inhibido o transparente si se prefiere, y la PAL se transforma entonces en un modelo combinatorio simple. El reloj también proviene de la zona de fusibles y por tanto puede ser la combinación de cualquier señal.  La salida es de tipo triestado, pero bajo el control de dos señales de origen diferente.  La primera señal, representada por una línea vertical denominada OE, es una señal global común a todas las salidas de la PAL. No proviene de la zona de fusibles sino que corresponde a una patilla concreta del encapsulado.  La segunda señal proviene, por el contrario de la zona de fusibles y puede, por tanto, servir de puesta a tres estados local  para la salida considerada. La señal OE global es, evidentemente, prioritaria como se deduce de su cableado.  A partir de esto, es posible configurar cualquier salida de una PAL asíncrona de registro como una PAL de registro o como una PAL combinatoria. Por otro lado, el hecho de que permite realizar funciones que no podían hacerse con las PAL vistas anteriormente, la PAL asíncrona de registro puede reemplazar igualmente en la mayoría de los casos a cualquier PAL de registro o combinatoria, con un número idéntico de entradas / salidas, por supuesto.
 

PAL VERSÁTILES O V PAL.

 

Se observa claramente una báscula o flip-flop preconfigurable asociada a dos multiplexores programables. El multiplexor de cuatro entradas permite configurar la celda según uno de los cuatro modos presentados en esta misma figura. Para ello se programa las señales S0 y S1 que en realidad se generan mediante fusibles internos, exactamente  como otras uniones de la PAL. La estructura de la celda toma ahora uno de los aspectos presentados sobre la figura 9 donde se puede reconocer todas las arquitecturas  de salidas de las PAL clásicas. Como las PAL asíncronas de registros, las V PAL tienen la posibilidad de preinicializarse a uno o a cero en la báscula de salida, pero, mientras que en las PAL asíncronas cada salida tenía una línea de control independiente, aquí la puesta a cero y la puesta a uno son comunes a todas las básculas de salida. Para flexibilizar su uso, no están disponibles en una patilla específica del encapsulado, sino que están conectadas a la zona de fusibles. Con el fin de que las V PAL arranquen con un estado bien definido, incluyen en el encapsulado una circuiteria de inicialización automática que actúa en el momento de aplicar tensión, haciendo que todas las salidas Q de las básculas se pongan automáticamente a nivel bajo.

 

 



 

GAL es una denominación que utilizaba originalmente Lattice Semiconductor y que más tarde se licenció a otros fabricantes. La GAL en su forma básica es un PLD con una matriz AND reprogramable, una matriz OR fija y una salida lógica programable.

 

Funcionamiento de una GAL

 

Básicamente, una GAL está formada por una matriz de puertas AND reprogramable conectada a una matriz de puertas OR fija. Al igual que la PAL, esta estructura permite implementar cualquier función lógica como suma de productos con un número de variables definido.

 

En la Figura a continuación se ilustra la estructura básica de una GAL con dos variables de entrada y una salida, aunque la mayoría de las GALs pueden tener muchas entradas y muchas salidas. 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 PALs. En la figura, estas celdas se indican como bloques.

 

 

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.

 

Como se indica, 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.

 

Diagrama de bloques de una GAL:

 

En la Figura  se presenta el diagrama de bloques de una GAL. Las salidas de la matriz AND se introducen en las macroceldas lógicas de salida (output logic macrocells, OLMC), que contienen puertas OR y lógica programable. Una GAL típica puede tener ocho o más entradas, y ocho o más entradas/salidas de las OLMCs como se indica en la figura, siendo n>8 y m>8.

 

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.

 

Referencia estándar de una GAL

 

Las GALs existen en una gran variedad de configuraciones, cada una de las cuales se identifica por una única referencia. Esta referencia siempre comienza por el prefijo GAL. Los dos primeros dígitos que siguen al prefijo indican el número de entradas, incluyendo las salidas que se pueden configurar como entradas. La letra V que sigue al número de entradas designa una configuración de salida variable. El o los dos números siguientes al tipo de salida son el número de salidas. La siguiente referencia es un ejemplo:

 

     

GAL22V10

 

Todas las GALs tienen el mismo tipo de matriz programable. Se diferencian en el tamaño de la matriz, en el tipo de OLMC y en los parámetros de funcionamiento tales como velocidad y disipación de potencia.

 

Diagrama de bloques de la GAL22V10

 

Como muestra el diagrama de bloques de la Figura 18, la GAL22V10 tiene doce entradas dedicadas y diez entradas/salidas. Este dispositivo se puede encontrar en encapsulado DIP de 24 pines o en PLCC de 28 pines, como muestra la Figura 19.
 
 

Las macroceldas lógicas de salida (OLMCs)

 

 

 

 

Una OLMC contiene circuitos lógicos programables que se pueden configurar como entrada o salida combinacional, o como salida secuencial.

En el modo secuencial, la salida resulta de un
flip-flop. Este capítulo se centra en el modo combinacional. Las configuraciones combinacionales de estas macroceldas lógicas se establecen automáticamente mediante programación.

 

Como se indica en el diagrama de bloques de la anterior Figura, de las diez OLMCs disponibles de la GAL22V 10, dos tienen ocho operaciones producto (número de líneas de la matriz AND a la puerta OR), dos tienen diez operaciones producto, otras dos doce, otras dos catorce y, por último, otras dos tienen dieciséis. Cada OLMC puede programarse para que el nivel activo de salida sea alto o bajo y también, pueden programarse como entradas.

 

 

Diagrama lógico:

 

En la Figura a continuación se muestra un diagrama lógico básico de la OLMC de la GAL22V 10. Las entradas de las puertas AND a la puerta OR varían desde ocho hasta dieciséis, como se indica. La lógica de la zona sombreada está formada por un flip-flop y dos multiplexores.
El multiplexor 1 -de-4 conecta una de sus cuatro líneas de entrada al buffer de salida triestado en función del estado de las dos entradas de selección, S0 y S1. Las entradas del multiplexor 1-de-4 son la salida de la puerta OR, su complemento, la salida del flip-flop y su complemento. El multiplexor 1-de-2 conecta a través de un buffer a la matriz AND la salida del buffer de tres estados o del flip-flop, en función del estado de la entrada S1. Los bits de selección S0 y S1 de cada OLMC se programan mediante un grupo especial de celdas de la matriz. Las cuatro configuraciones de las macroceldas lógicas programables son:

 

- Modo combinacional con salida activa a nivel bajo.
- Modo combinacional con salida activa a nivel alto.
- Modo secuencial con salida activa a nivel bajo.
- Modo secuencial con salida activa a nivel alto.

 


 

Modo combinacional:

 

Cuando S1 = 1 y S0 = 0, el multiplexor selecciona la salida de la puerta OR..

Cuando S0 = 1 y S1 = 1, se selecciona el complemento de la salida de la puerta. La salida es activa a nivel alto debido a la doble inversión (complemento de OR e inversión del buffer triestado). Los bits S0 y S1 de cada una de las diez OLMCs se determinan mediante la programación de un conjunto especial de celdas de la matriz, separado de las celdas de la matriz lógica.

La OLMC se puede configurar como salida o como entrada controlando el buffer triestado.
 

Buffer triestado:

 

El buffer triestado, mostrado en la Figura es un inversor de dos estados lógicos, con una línea de control que permite desconectar la salida de la entrada. Los tres estados de salida son: nivel bajo (cuando la entrada está a nivel alto), nivel alto (cuando la entrada está a nivel bajo) y alta impedancia (cuando la salida está desconectada de la entrada).

 



 

Cuando la línea de control está a nivel alto, el buffer está activo; y cuando la línea de control está a nivel bajo, el buffer está en estado de alta impedancia. En la figura anterior se ilustran estos tres estados. En el estado de alta impedancia, el buffer actúa como un interruptor abierto.


Selección de entrada o de salida. En la lógica en modo combinacional de la OLMC de la siguiente Figura, se puede ver que la línea de control del buffer de tres estados resulta de una puerta AND de la matriz. Cuando esta línea de control está a nivel alto, la OLMC produce una salida combinacional. Cuando esta línea está a nivel bajo, el buffer está en abierto (alta impedancia) y el pin funciona como entrada, como se indica en la Figura.

 


 El estado de la línea de control del buffer de tres estados se establece mediante programación.

 

La matriz programable de la GAL22V 10 dispone de 22 líneas de entrada y sus complementos que interseccionan con las 132 líneas de términos producto. Por cada una de las 5808 intersecciones existe una celda E2CMOS. Cada celda se puede programar en estado activó para conectar una variable de entrada, o su complemento, a una línea de término producto.  En la GAL22V10 hay 44 líneas para cada puerta AND. Por tanto, cada línea de términos producto está formada por 44 entradas de puerta AND, una para cada línea de entrada y su complemento. Los números mostrados para cada línea de términos producto designan a las 44 celdas asociadas con cada línea. El número de cada OLMC para S0 y S1 son los números de las celdas de la matriz en las que se programan estos bits. Contiene veinte celdas especiales (de la 5808 hasta la 5827).