Dispositivos Lógicos Programables (PLD's)
¿QUE SON LOS PLD?
Los PLD son dispositivos digitales 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.
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 se fundamenta en el hecho de que cualquier función booleana puede ser 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.
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. 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 permite implementar cualquier función lógica como suma de productos con un numero 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.
El PLD (Programmable Logic Device - Dispositivo Lógico Programable). Componente electrónico empleado para la fabricación de circuitos digitales. A diferencia de las puertas lógicas, que tienen una función fija, un PLD tiene una función indefinida al mismo de fabricarse. Antes de que un PLD pueda ser usado en un circuito, este puede ser programado.
Los PLD's está compuesto por puertas lógicas AND y OR. Un programador quema los fusibles en el PLD para controlar las operaciones en las puertas.
Muchos PLD's tienen salidas programablesque incrementan su flexibilidad haciendolos útiles para una gran variedad de aplicaciones.
ARQUITECTURA BASICA DE LOS PLD's
Las entradas del PLD entran al arreglo lógico los cuales son hechos de columnas y filas. La figura 2 muestra
tal arreglo. Cada par de columnas representa la entrada negada o complementada y la misma entrada sin
negar. cada fila constituye un término AND. Las conexiones lógicas se estblecen entre diferentes columnas y
filas en el arreglo para determinar cual combinación de entradas llevaran al termino AND a un nivel alto.
Mas de un término AND alimenta una compuerta OR. La salida es la suma de rpoductos.
2
FIG 2. Arreglo AND-OR usado en la mayoría de los PLD.
PORQUÉ EL USO DE LOS PLD's?
La flexibilidad y programabilidad de los PLD's hacen que el diseño con ellos sea mucho más rápido que
diseñar con lógica discreta. Esto es, se puede utilizar el PLD para implementar la mayoría de las funciones
hechas con los cientos de dispositivos de la familia lógica "7400". Tambien cabe recalcar que se toma menos
espacio sobre el circuito impreso que con los dispositivos discretos.
Una vez tomada la decisión de cambiar de lógica discreta a PLD, la siguiente pregunta es:
"Cuál PLD?" Los más flexible de un PLD es,lo utilizable que es, ya que un diseñador puede implementar
cualquier ecuación lógica. Hay que escoger PLD's que sean compatibles con los otros dispositivos que se
estén utilizando. Hay que tomar en consideración la potencia que se requiere que se gaste, ya que hay unos
que requiren menos potencia para trabajar que otros. La estabilidad es otro factor importante.
PROCESO DE DISEÑO
Un proceso tipico para diseñar con los PLD es el siguiente:
1. La lógica a ser implentada en un PLD se expresa en un archivo fuente usando un lenguaje de diseño. Estos
incluyen ecuaciones booleanas, tablas de verdad y sintaxis de máquinas de estado.
2. El archivo se procesa por un compilador lógico para generar un archivo JEDEC del diseño. El compilador
configura los bits en le archivo JEDEC los cuales determinan las conecciones que se harán en el arreglo
lógico y configurar así las salidas. La figura 3 es una muestra de este proceso.
3
FIG 3. Proceso típico de diseño para PLD's
PRACTICAS
PRACTICA No 1
En esta práctica el alumno analizará la estructura de los archivos fuentes y la sintaxis necesaria para la
implementación y diseño de los PLD's mediante el paquete computacional PLDshell Plus V3.0.
ARCHIVOS FUENTES.
En estos archivos es donde se realizará el diseño del circuito. Lo mínimo que contienen es la sección de
declaración y al menos uno de las siguientes secciones de diseño: Máquinas de estado, ecuaciones o tablas de
verdad. Cabe mencionar que se puede tener más de una tabla de verdad o máquinas de estado. Estos archivos
tienen la extención "PDS" editándose o formándose desde un simple procesador de palabras, en donde el que
más se utiliza es el EDIT del DOS. Para entrar al paquete debemos teclear PLDSHELL. Una vez
hecho esto, entramos al editor con la opcion EDIT dando el nombre del archivo (con extensión PDS). En la
figura 4 se muestra el cuerpo del programa para un archivo fuente.
Algunos PLD son:
* PROM (Programmable Read Only Memory)
* PLA (Programmable Logic Array)
* PAL/GAL Programmable Array Logic/Generic Array Logic)
El PLD (Programmable Logic Device - Dispositivo Lógico Programable). Componente electrónico empleado para la fabricación de circuitos digitales. A diferencia de las puertas lógicas, que tienen una función fija, un PLD tiene una función indefinida al mismo de fabricarse. Antes de que un PLD pueda ser usado en un circuito, este puede ser programado.
Los PLD's está compuesto por puertas lógicas AND y OR. Un programador quema los fusibles en el PLD para controlar las operaciones en las puertas.
Muchos PLD's tienen salidas programablesque incrementan su flexibilidad haciendolos útiles para una gran variedad de aplicaciones.
ARQUITECTURA BASICA DE LOS PLD's
Las entradas del PLD entran al arreglo lógico los cuales son hechos de columnas y filas. La figura 2 muestra
tal arreglo. Cada par de columnas representa la entrada negada o complementada y la misma entrada sin
negar. cada fila constituye un término AND. Las conexiones lógicas se estblecen entre diferentes columnas y
filas en el arreglo para determinar cual combinación de entradas llevaran al termino AND a un nivel alto.
Mas de un término AND alimenta una compuerta OR. La salida es la suma de rpoductos.
2
FIG 2. Arreglo AND-OR usado en la mayoría de los PLD.
PORQUÉ EL USO DE LOS PLD's?
La flexibilidad y programabilidad de los PLD's hacen que el diseño con ellos sea mucho más rápido que
diseñar con lógica discreta. Esto es, se puede utilizar el PLD para implementar la mayoría de las funciones
hechas con los cientos de dispositivos de la familia lógica "7400". Tambien cabe recalcar que se toma menos
espacio sobre el circuito impreso que con los dispositivos discretos.
Una vez tomada la decisión de cambiar de lógica discreta a PLD, la siguiente pregunta es:
"Cuál PLD?" Los más flexible de un PLD es,lo utilizable que es, ya que un diseñador puede implementar
cualquier ecuación lógica. Hay que escoger PLD's que sean compatibles con los otros dispositivos que se
estén utilizando. Hay que tomar en consideración la potencia que se requiere que se gaste, ya que hay unos
que requiren menos potencia para trabajar que otros. La estabilidad es otro factor importante.
PROCESO DE DISEÑO
Un proceso tipico para diseñar con los PLD es el siguiente:
1. La lógica a ser implentada en un PLD se expresa en un archivo fuente usando un lenguaje de diseño. Estos
incluyen ecuaciones booleanas, tablas de verdad y sintaxis de máquinas de estado.
2. El archivo se procesa por un compilador lógico para generar un archivo JEDEC del diseño. El compilador
configura los bits en le archivo JEDEC los cuales determinan las conecciones que se harán en el arreglo
lógico y configurar así las salidas. La figura 3 es una muestra de este proceso.
3
FIG 3. Proceso típico de diseño para PLD's
PRACTICAS
PRACTICA No 1
En esta práctica el alumno analizará la estructura de los archivos fuentes y la sintaxis necesaria para la
implementación y diseño de los PLD's mediante el paquete computacional PLDshell Plus V3.0.
ARCHIVOS FUENTES.
En estos archivos es donde se realizará el diseño del circuito. Lo mínimo que contienen es la sección de
declaración y al menos uno de las siguientes secciones de diseño: Máquinas de estado, ecuaciones o tablas de
verdad. Cabe mencionar que se puede tener más de una tabla de verdad o máquinas de estado. Estos archivos
tienen la extención "PDS" editándose o formándose desde un simple procesador de palabras, en donde el que
más se utiliza es el EDIT del DOS. Para entrar al paquete debemos teclear PLDSHELL
hecho esto, entramos al editor con la opcion EDIT dando el nombre del archivo (con extensión PDS). En la
figura 4 se muestra el cuerpo del programa para un archivo fuente.
Algunos PLD son:
* PROM (Programmable Read Only Memory)
* PLA (Programmable Logic Array)
* PAL/GAL Programmable Array Logic/Generic Array Logic)
Ejemplo en la utilización del
GAL22V10

APLICAIONES
A continuación te presentaremos 1 ejemplo muy sencillo para configurar el hardware del dispositivo lógico programable (PLD) GAL22V10.
- Grabaremos la GAL22V10 con un programador, que seguramente encontrarás en tu centro educativo.
- Debemos tener cuidado al tocar los pines de la GAL22V10, ya que las cargas estáticas del cuerpo puede descomponer el dispositivo (no pasa nada si lo tocas, solo se descompone si lo tocas demasiado, por ejemplo, agarrando todos los pines de la GAL dentro de la mano).
OBJETIVOS: Implementar las operaciones booleanas NOT, AND, OR, XOR, NAND, NOR y XNOR para tres variables de entrada en el dispositivo lógico programable GAL22V10.
DESARROLLO: En la figura 1 podemos ver la configuración de las patillas o pines en la GAL22v10: las patillas de alimentación son la 12 (a tierra) y la 24 (a voltaje); los pines del 1 al 11 y el 13 son exclusivamente entradas, mientras que los del 14 al 23 funcionan como entradas/salidas.
Para nuestra práctica utilizaremos como entradas las patillas de la 1 a la 3 y como salidas las patillas de la 14 a la 20.


Emplearemos el programa WinCupl para generar el archivo .jed (utilizado por el programador para grabar o quemar la GAL22V10), que podremos descargar gratuitamente (previa registración) en la siguiente dirección: Atmel Products,
Al abrir WinCupl veremos la siguientes barras: de menús y herramientas.
En la barra de menús pulsamos File > New > Design File con lo que se abrirá la siguiente ventana:
En Device cambiamos virtual por g22v10 (para generar el archivo .jed), mientras que en Name nombraremos nuestro archivo de diseño, hecho esto presionamos OK. Aparecerá una pequeña ventana titulada INPUT PINS, en la que pondremos el numero de pines de entrada que necesitemos, en nuestro caso 3, presionamos OK; nos saldrá otra ventana titulada OUTPUT PINS donde pondremos el numero de patillas destinadas a ser salidas, escribiremos 7, presionamos OK; se abrirá otra ventana que no modificaremos, pulsaremos OK y finalmente nos saldrá el espacio de trabajo.
En el espacio de trabajo aparecerán los datos que ya hemos rellenado, pero que podrán ser modificados fácilmente si así se requiere.
Vemos que los pines de entrada (INPUT PINS) y salida (OUTPUT PINS) aún no están definidos, es decir, no hemos escogido los números de patillas a utilizar ni sus nombres de variable.
Como ya habíamos mencionado, utilizaremos los pines del 1 al 3 como entradas, por lo que pasamos a escribir los números de esas patillas con sus respectivos nombres de variable, lo cual nos servirá para efectuar las posteriores ecuaciones lógicas que determinarán la función del dispositivo. Para las salidas usaremos los pines del 14 al 20, realizando el mismo procedimiento que con las entradas, con lo que obtendremos un espacio de trabajo similar a éste:
Para realizar las ecuaciones lógicas de las operaciones booleanas correspondientes, debemos saber como se representan los operadores lógicos en WinCupl:
Como solo representaremos la operación NOT de la variable de entrada a, las ecuaciones lógicas nos quedarían así:
and = a & b & c ;
nand = !(a & b & c) ;
or = a # b # c ;
nor = !(a # b # c) ;
xor = a $ b $ c ;
xnor = !(a $ b $ c) ;
nota = !a ;
Por lo que finalmente, nuestro espacio de trabajo sería similar a este:
Pasamos a compilar el código para generar el archivo .jed, que como ya habíamos mencionado, es el utilizado por el programador para grabar la GAL22V10. Antes de esto, debemos asegurarnos que en Options > Compiler de la barra de menú, este activado lo siguiente: en la pestaña Output Files, en el recuadro Download, debe estar activado la opción JEDEC como lo vemos a continuación:
Mientras que en la pestaña General debe estar activada la opción JEDEC name = PLD name (aunque no se active esta casilla la mayoría de las veces se genera el archivo .jed, aunque en algunas ocasiones es necesario activarla para poder generar el archivo).
Hecho lo anterior, compilamos el código mediante Run > Device Dependent Compile, por lo que en la ventana de la derecha obtendremos los archivos generados después de la compilación, entre ellos el .jed.
Ahora que hemos obtenido el archivo .jed, podremos simular nuestro circuito en un programa como Proteus ó grabarlo directamente en el programador.
IMPLEMENTACIÓN EN EL PROTOBOARD SIMPLIFICADO.
Para esta práctica utilizamos una fuente de alimentación de 5 Volts, un circuito integrado GAL22V10, un switch dip de más de 3 posiciones (como las presentaciones de 4, 6, 8, etc.), y 7 leds de cualquier color (pueden ser de dos colores para diferenciar bien las operaciones inversas ejemplo: nor-or).

Lo ideal sería que entre las salidas de la GAL22V10 y las patillas de cada led se pusiera un resistor de aproximadamente 200 Ohms, pero por falta de espacio no se pusieron.