Está en la página 1de 11

PLD

PLD son las siglas de Programmable Logic Design o dispositivos de


lógica programable. Estos circuitos integrados permiten generar dentro del
mismo funciones que no disponemos en los C.I. comerciales
(decodificadores, comparadores, sumadores, etc). Podemos asimilarlo con
un circuito en blanco dentro del cual podemos generar funciones adecuadas
al problema que debemos resolver.
La evolución nos indica que las primeras necesidades de almacenar
información se remontan a las primeras memorias ROM las cuales eran
programadas mediante la destrucción de una matriz de diodos para realizar
el almacenaje de datos, aún más las primeras memorias los datos de la
misma debían ser “grabados” por el fabricante de la memoria con el
consecuente costo y la poca seguridad debido a que alguien podría conocer
mis datos. Debido a estos problemas surge la necesidad de poder
almacenar los datos por el usuario y surge así la PROM, siglas de
programmable ROM o sea memoria de solo lectura programable. Pasando
los años surgen las PAL (Progrmamble Array Logic) o Arreglo lógico
programable que consiste en una matriz de compuertas que se puede
interconectar a gusto. Finalmente surgen las GAL (Generic Array Logic)
como la lógica de arreglo genérico aprovechando las ventajas de las PAL y
PROM y integrando dentro del mismo C.I. la posibilidad de realizar lógica
secuencial.

1
Aquí vemos como una PLD no programada (donde todos sus fusibles están
intactos), así para la salida O1 tenemos:

O1 = A.B + A.B + A.B + AB


( ) (
O1 = A. B + B + A. B + B )
O1 = A + A = 1
De esta forma vemos como un PLD no programado permanece en un valor
que puede ser 0 o 1.

PROM
La ROM programable consiste básicamente en un arreglo de
compuertas AND cableadas y un arreglo de compuertas OR. En estos
dispositivos tenemos el arreglo de compuertas OR programable; así
podemos generar cualquier función lógica posible de las variables de
entrada, sin embargo se vuelven poco prácticas cuando se tiene que
atender a un gran número de entradas, debido a que se duplica el numero
de conexiones fusibles a medida que se agrega una entrada.

2
PAL
Las PROM son ideales para convertidores de código y para
almacenar datos.
Donde se pudiesen realizar las funciones necesarias sin utilizar todas
las combinaciones de las entradas surgen las PAL con un arreglo AND
programable y un arreglo OR fijo, esto nos limita el numero de productos
términos que podemos obtener a la salida.

GAL
Las GAL aprovechan las ventajas de los dos dispositivos anteriores la
posibilidad de tener todos los términos de las entradas y la versatilidad de
las PAL en cuanto a la generación de funciones, además tienen en sus
salidas flip flops, para de esa forma poder generar circuitos secuenciales en
sus salidas.

3
Básicamente tiene dos arreglos programables uno AND y otro OR y
en sus salidas posee algo llamado OLMC (Omni Logic Macro Cell) o Macro
Celda de Logica Total.

4
En el gráfico podemos la estructura interna de la GAL16V8 de la firma
Lattice, notamos que tenemos entradas dedicadas(pines 2 a 8), negadas y
no negadas, pines que pueden ser configurados como salida o entrada(12 a
19), ya que tienen una realimentación hacia el arreglo de compuertas,
además las salidas pueden configurarse como secuenciales y
combinacionales. Posee dos entradas con funciones especiales (pines 1 y
11) que son los pines de clock y de habilitación de salida (OE),
respectivamente.
Podemos ver la estructura interna simplificada de una OLMC:

De la estructura interna de la OLMC surgen los tres modos de trabajo:


• Modo simple: Lógica combinacional de suma de productos sin salida
de tres estados.
• Modo complejo: Lógica combinacional de suma de productos con
salida de tres estados dependiente de las variables de entrada
• Modo registro: En un modo similar al modo complejo o como una
salida con un registro tipo D.
La forma de trabajo de la GAL es manejada por el software de
programación en función de cómo configuremos nuestras salidas y las
funciones que realicemos.
Nota: El máximo número de suma de productos es 8.

5
Nomenclatura

Por ejemplo:
GAL16V8D 25LP
GAL16V8D es el nombre del dispositivo
25 es la velocidad o sea 25 ns
L es la potencia, o sea baja potencia.
P es el encapsulado, en este caso plástico DIP (Dual in Line
Package)
Y como la última sigla no existe es de uso comercial, no apto
para ambientes ruidosos como los industriales.

Recomendaciones
En general debemos tener las mismas recomendaciones que para un
circuito TTL convencional.
La GAL16V8 posee resistencia de pull-up en sus pines; soporta hasta 7 V,
posee un retardo de 3.5 ns lo que le permite trabajar a frecuencias de hasta
250 MHz.

Métodos de programación
Estos dispositivos al igual que las computadoras permiten que se
trabaje programando en alto nivel, luego valernos de un compilador que
traduzca todas nuestras instrucciones en lenguaje máquina que pueda
entender el dispositivo.
Existen varios lenguajes, entre ellos: CUPL (utilizado por WinCUPL,
Protel), PALASM (Siglas de assembler para PAL) y ABEL. Nos vamos a
centrar en el lenguaje utilizado por AMD que es el PALASM ya disponemos
de los medios para utilizarlo.
En general vamos a disponer de un archivo de código fuente de tipo
.PDS que es el que podemos escribir en el editor del PALASM y luego
compilar para poder obtener el lenguaje tipo código máquina que en este
caso es el diagrama de fusibles, este archivo contiene información de las
conexiones que deben abrirse para que el dispositivo realice la función

6
deseada, el mismo es de tipo .JED y ese archivo debe ser entregado al
grabador de GAL para la programación del mismo, notemos que
independientemente de con que programa se realice el código fuente
(PALASM o WinCUPL) el archivo .JED que le entregamos al programador
debe ser idéntico.

.PDS

.JED

Lenguaje
El lenguaje de programación se compone de operadores y palabras
clave
Entre los operadores encontramos algunos de ellos:
/ NOT
+ OR
* AND
:+: XOR
:*: XNOR
() Agrupa ecuaciones
= Asigna la ecuación de la derecha a la
variable de la izquierda
*= La variable a su izquierda es
latcheada
:= La ecuación es secuencial
< Menor
<= Menor o igual
<> Distinto

Ejemplos:
D = /(A + B +/C)
/E := E + /A + /B
F *= B :+: C

7
Tenemos también palabras reservadas que solo pueden ser usadas por el
lenguaje
IF THEN ELSE Similar a C si, entices, sino.
CASE OTHERWISE Similar a C.
TRACE_ON Usado en simulación, indica el
comienzo de la actividad en las
variables.
TRACE_OFF En simulación indica que no se
modifican las variables.
SETF Setea la variable al valor que se
indique a su derecha, puede ir mas
de una en la misma sentencia.
CHECKF Indica al simulador el valor que debe
tener la variable, de esta forma se
comprueban errores.

Ejemplos de If y Case:

IF (Condicion) CASE (Variables)


THEN BEGIN
BEGIN VALOR:
Ecuaciones BEGIN
END ACCION
ELSE END
BEGIN OTHERWISE:
Ecuaciones BEGIN
END ACCION
END
END

Con todos estas ecuaciones y operadores vamos a escribirlas en el


editor del PALASM y compilarlas con el mismo.
Para ello debemos instalar el PALASM y luego de descargarlo
debemos tener cuidado ya que debemos agregar dos líneas a nuestro
autoexec.bat:

PATH C:\PALASM\EXE (o carpeta donde lo instalamos)


SET PALASM = C:\PALASM (o carpeta donde lo instalamos)

Una vez que lo instalamos y lo corrimos usando el archivo Palasm.exe


desde la carpeta C:\PALASM\EXE vamos a obtener la siguiente pantalla de
bienvenida:

8
Para comenzar le damos a la opcion FILE à Bejín New Design se
nos desplega un cuadro en el cual le damos el nombre: nombre.pds le
decimos que es de tipo texto y e l damos F10, notemos que F10 funciona a
modo de OK en este programa.
A continuación nos pide que le demos nombre a nuestro proyecto,
nuestro nombre, la compañía, el dispositivo (en nuestro caso PALCE16V8).
En la tabla inferior tenemos el listado de los pines del dispositivo, el nombre,
si es combinatorial o secuencial, comentarios. Una vez que llenamos todo el
formulario le damos con F10 hasta que llegamos al editor.

9
En el editor vemos:

En la cual podemos escribir nuestras ecuaciones y simulaciones, una


vez que finalizamos le damos Esc para que aparezca el menú superior

Donde podremos salvar nuestro trabajo y luego salir a la pantalla


inicial.

Nota: La forma de copiar y pegar es bastante rebuscada y es así:


Debemos presionar Ctrl. + KB para indicar el comienzo del bloque, luego
Ctrl. + KK para indicar el fin del bloque, en ese momento tenemos el texto
seleccionado, nos posicionamos en el lugar donde lo queremos pegar y le
damos Ctrl. + KC.

Nuevamente en la pantalla inicial podemos ir al menu RUN à


Compilation para obtener de esa manera nuestro archivo .JED. En el caso
de que todo esté correcto veremos un mensaje de éxito. En el menu View
à Pinout veremos que nombre le dimos a cada pin. Luego de efectuar la
simulación podemos ver la forma de onda en View à Waveform display.
El programa posee una completa ayuda en línea del lenguaje también.
Programador de GAL
Con nuestro archivo .JED, estamos listos para programar nuestra GAL
primeramente debemos encender el programador desde la tecla que tiene
en su parte trasera, antes de encenderlo debemos insertarle el peine

10
(circuito impreso que corresponde con el dispositivo o familia de CI que
queremos programar, en nuestro caso el 3b). Una vez encendido debemos
iniciar el software del programador llamado emp20. Obtenemos la siguiente
pantalla de bienvenida:

Lo primero que hacemos es seleccionar el dispositivo con la opcion 5,


luego cargamos el archivo del disco, para ello con v lo seleccionamos
presionando F1 y buscamos el archivo donde se encuentre (buscamos el
.JED que realizamos con el PALASM).
Paso posterior es cargar nuestro archivo al buffer del programador
con la opción 8, luego podemos con la primera opción programar nuestra
GAL. En este momento debemos tener insertada nuestra GAL en el
programador teniendo en cuenta que debemos insertarla desde abajo en el
zócalo ZIF de la misma.
Si desean armar un programador de bajo coste para GAL pueden
poner en google minimum effort GAL programming y con un zocalo 20x10,
unas resistencias, un capacitor y un par de cables pueden realizar el
programador.

11

También podría gustarte