ProgramaciondePLDs Con WINCUPL

26
UNIVERSIDAD DE ALCALÁ. ESCUELA POLITÉCNICA DEPARTAMENTO DE ELECTRÓNICA I NGENIERÍA DE T ELECOMUNICACIÓN CIRCUITOS E LECTRÓNICOS Programación de Dispositivos Lógicos Programables utilizando WinCUPL

Transcript of ProgramaciondePLDs Con WINCUPL

Page 1: ProgramaciondePLDs Con WINCUPL

UNIVERSIDAD DE ALCALÁ. ESCUELA POLITÉCNICA

DEPARTAMENTO DE ELECTRÓNICA

INGENIERÍA DE TELECOMUNICACIÓN

CIRCUITOS ELECTRÓNICOS

Programación de Dispositivos Lógicos Programables utilizando WinCUPL

Page 2: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 2

1. Índice 1. Índice _____________________________________________________________________ 2

2. Introducción_______________________________________________________________ 3

3. Proceso de programación de la PAL ________________________________________ 3

3.1. Planteamiento del problema _____________________________________________ 3

3.2. Asignación de pines____________________________________________________ 4

3.3. Escritura del programa de la PAL _________________________________________ 4

3.4. Compilación del programa ______________________________________________ 7

3.5. Simulación ___________________________________________________________ 10 3.6. Grabación de la PAL ___________________________________________________ 13

4. Ficheros implicados en el proceso de programación de la PAL ______________ 15

4.1. Programa de descripción del circuito (archivo .PLD) _______________________ 16

4.2. Entrada de vectores para la simulación (archivo .SI)________________________ 17

4.3. Salida del compilador para el programador (archivo jedec .JED) _____________ 18

4.4. Salida del compilador para el programador (archivo JEDEC .JED) (Con simulación) ________________________________________________________________ 20 4.5. Documentación de salida (archivo .DOC) _________________________________ 23

4.6. Simulación de salida (archivo .SO) ______________________________________ 26

5. Recomendaciones ________________________________________________________ 27

Page 3: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 3

2. Introducción Los Dispositivos Lógicos Programables (PLDs) son circuitos cuya funcionalidad es programable, es decir, nosotros debemos definirla, y, en algunos casos, podemos modificarla posteriormente.

En este documento se explica con un ejemplo el proceso de programación de una PAL, desde la escritura del programa con WinCUPL, hasta la programación hardware. En la última parte se incluye un conjunto de recomendaciones útiles a la hora de la programación con WinCUPL.

3. Proceso de programación de la PAL 3.1. Planteamiento del problema

Ejemplo: Dados dos dígitos decimales de entrada, deseamos visualizar uno de los dos (que seleccionaremos con un bit de control) en un display. Si el dato no es válido (es mayor que 9) el display debe apagarse y encenderse el punto.

Si decidiéramos hacer el diseño con lógica no programable, el circuito sería como se muestra en la figura 1. Este circuito realiza correctamente su función, utiliza 3 circuitos integrados, y una vez diseñado no se puede modificar fácilmente para realizar otra función.

Figura 1. Esquema del circuito del ejemplo, implementado sin lógica programable.

Sin embargo, si utilizamos dispositivos lógicos programables, la lógica relativa al multiplexor y al decodificador pueden ir incluidas en el PLD, por lo que se eliminamos un circuito del diseño. Además, si en un momento determinado necesitamos modificar la funcionalidad (por ejemplo, sumar o restar los datos de entrada dependiendo del bit de selección), sólo tendremos que reprogramar el PLD, sin necesidad de cambiar el resto del circuito.

Una vez decidido utilizar una PAL en el circuito (en nuestro caso la PALCE22V10), es necesario programarla. El proceso completo se muestra resumido en la figura 2. En primer lugar, debemos hacer la especificación formal del circuito a diseñar (en este ejemplo sería el bloque formado por el multiplexor y el decodificador BCD-7 segmentos). Posteriormente describir dicho circuito según un lenguaje de programación (para nosotros el WinCUPL). Este programa se compilará y simulará, hasta asegurarnos que el resultado obtenido es el deseado. Por último, cuando tengamos el fichero definitivo, se grabará en la PAL.

A continuación explicaremos en detalle estos pasos.

A3-A0

B3-B0

Selección

MUX BCD

7 Seg

S3-S0

Page 4: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 4

Figura 2. Proceso de programación de la PAL.

3.2. Asignación de pines En primer lugar, debemos especificar las entradas y las salidas que deben conectarse a la PAL, y asignarles los pines correspondientes. Para ello habrá que considerar qué pines de la PAL son sólo de entrada y cuales de entrada-salida. En este ejemplo las entradas serán los datos A y B y la entrada de selección y las salidas serán las excitaciones de los segmentos del display y del punto.

(a) (b) (c)

Figura 3. (a) Entradas y salidas necesarias en el sistema. (b) Esquema de las entradas y salidas de la PAL. (c) Asignación de pines definitiva.

3.3. Escritura del programa de la PAL A continuación debemos escribir el programa de la PAL para que cumpla con la funcionalidad deseada y con la asignación de pines anterior. En el capítulo sobre recomendaciones encontraremos consejos útiles sobre la escritura de este fichero. Es MUY IMPORTANTE leerlos antes de enfrentarnos con el programa, y, especialmente, en caso de errores de compilación.

El programa de la PAL será un fichero de texto que puede escribirse con cualquier aplicación (el propio WinCUPL o wordpad, notepad, etc.). Debe tener extensión .PLD y la siguiente estructura:

• Cabecera con diferentes datos sobre el programa, programador, etc. El campo más importante es Device que se debe corresponder exactamente con el dispositivo en el que

Problema de diseño

Especificación formal - Diagrama de bloques - Tabla de verdad - Funcionas lógicas - Circuito

Descripción utilizando un Lenguaje de Descripción

Hardware (CUPL)

Compilador

Fichero

.JED

Simulador

Ficheros ASCII

Grabador de PLDs

PALCE22V10

Selección

A2 A3

A1 A0 B3 B2 B1 B0

b a

c d e f g Punto

Selección

A2 A3

A1 A0 B3 B2 B1 B0

b a

c d e f g Punto

I2 (3) I1 (2)

I3 (4) I4 (5) I5 (6) I6 (7) I7 (8) I8 (9) I9 (10)

(16) I/O2 (15) I/O1

(17) I/O3 (18) I/O4 (19) I/O5 (20) I/O6 (21) I/O7 (14) I/O0

Page 5: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 5

va a grabarse el programa. Para la PALCE22V10 en el campo Device debemos escribir p22v10. El campo Name debe coincidir con el nombre del fichero .PLD, pero sin dicha extensión, y los ficheros de salida tendrán todos ellos el nombre más la extensión correspondiente (.JED, . DOC, etc.). (Véase apartado de recomendaciones). Una posible cabecera para el programa del ejemplo sería:

• Asignación de pines de entrada y salida que se deben corresponder con la asignación hecha anteriormente, y que es la que nos dirá donde debemos conectar cada patilla de la PAL en el circuito a la hora de montarlo.

• Cuerpo del programa para que la función de la PAL sea la deseada. En nuestro ejemplo se puede dividir en dos partes, la que se corresponde con el multiplexor, y la parte del decodificador. En este cuerpo del programa se utilizan como variables las entradas y salidas que se han definido, y se pueden añadir variables intermedias, simplemente escribiéndolas donde sean necesarias (no es necesaria una declaración previa). Los símbolos que se corresponden con las operaciones lógicas son:

! negación # OR & AND

/** Definicion de los pines de entrada **/ Pin [2..5] = [A3..0]; /* Dato A */ Pin [6..9] = [B3..0]; /* Dato B */ Pin 10 = select; /* Seleccion */ /** Definicion de los pines de salida **/ Pin [15..21] = a,b,c,d,e,f,g; /* Senianles de los displays */ Pin 14 = punto; /* Punto decimal */

Name Prac3; Partno CIR001; Revision 01; Date 13/3/99; Designer Depeca; Company Departamento de Electronica; Location Universidad de Alcala de Henares; Assembly None; Device p22v10; /*************************************************************/ /* */ /* LABORATORIO DE ELECTRONICA DIGITAL */ /* */ /* Practica 3: Multiplexor - Decodificador BCD */ /* */ /*************************************************************/ /*Programa preparado para el dispositivo: P22V10 */ /*************************************************************/

Page 6: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 6

Con estos símbolos y la funcionalidad deseada se escriben las distintas partes del programa. En la figura 4 se muestra el esquema del multiplexor y las funciones lógicas de sus salidas.

Figura 4. Esquema del multiplexor, con sus entradas y salidas, y ecuaciones lógicas equivalentes.

Estas ecuaciones lógicas se corresponden con el siguiente fragmento de código:

El esquema del decodificador BCD-7segmentos y su tabla de verdad se muestran en la figura 5.

(a) (b)

Figura 5. Esquema del decodificador y tabla de verdad correspondiente.

Esta tabla de verdad se corresponde con el siguiente fragmento de código, en el que se puede observar el formato para describir una tabla de verdad, con sus entradas y salidas, y la forma de escribir números decimales y hexadecimales.

A3-A0

B3-B0

Selección

MUX S3-S0 333 BSelectASelectS ⋅+⋅=222 BSelectASelectS ⋅+⋅=

111 BSelectASelectS ⋅+⋅=000 BSelectASelectS ⋅+⋅=

BCD

7 Seg

S3-S0 a - f

Punto

S3 S2 S1 S0 a b c d e f g Punto 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1

0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0

1 1 1 1

0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1

1 0 0 1 1 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1

1 1 1 1

1 0 0 0 1 0 0 1

1 0 1 0 1 0 1 1

0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1

1 1 0 0

1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0 0 0 0

/* Descripcion del multiplexor utilizando funciones logicas */ S3 = (!select & A3) # (select & B3); S2 = (!select & A2) # (select & B2); S1 = (!select & A1) # (select & B1); S0 = (!select & A0) # (select & B0);

Page 7: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 7

Una vez completado el programa se debe compilar y simular. Para ampliar información sobre sintaxis etc., véase el manual de WinCUPL.

3.4. Compilación del programa Para compilarlo utilizaremos el programa CULP cuya pantalla principal se muestra a continuación:

Figura 6. Pantalla de presentación del WinCUPL.

En la siguiente figura se muestra un resumen sobre el contenido de los menús del WinCUPL:

/* Descripcion del conversor BCD - 7 segmentos */ /* utilizando una tabla de verdad */ TABLE S3,S2,S1,S0=> !a,!b,!c,!d,!e,!f,!g,!punto { 'h'0=>'b'11111100; 'h'1=>'b'01100000; 'h'2=>'b'11011010; 'h'3=>'b'11110010; 'h'4=>'b'01100110; 'h'5=>'b'10110110; 'h'6=>'b'00111110; 'h'7=>'b'11100000; 'h'8=>'b'11111110; 'h'9=>'b'11100110; 'h'A=>'b'00000001; 'h'B=>'b'00000001; 'h'C=>'b'00000001; 'h'D=>'b'00000001; 'h'E=>'b'00000001; 'h'F=>'b'00000001; }

Page 8: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 8

Figura 7. Menús del WinCUPL.

Una vez arrancado el programa, abriremos el fichero PLD escrito previamente (FILE -> OPEN). A continuación lo compilamos, con la opción indicada en la siguiente figura (Run, Device Specific Compile). En esta pantalla también se incluye la pantalla obtenida tras una compilación finalizada con éxito.

Figura 8. Ventana obtenida tras la compilación de un programa sin errores.

Si la compilación finaliza con éxito se genera el fichero .JED, que será el que utilizaremos en el programa posterior para grabar en la PAL. En caso de error, nos mostrará los mensajes correspondientes en la ventana de mensajes. Si esta ventana no aparece directamente, la visualizaremos con las opciones Windows, Message.

Page 9: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 9

El compilador genera siempre (incluso cuando haya errores) el fichero .DOC con información sobre el programa de la PAL, como, por ejemplo, la función lógica implementada en cada salida. Entre la información incluida en este fichero está el número de productos que necesita la función implementada cada en cada salida, así como el número de productos disponibles en dicha salida. Si el número de productos disponibles, como pasa en el siguiente ejemplo, es menor que el número de productos necesarios el programa no compilará.

En ese caso, verificaremos si es posible hacer una reasignación de pines, de forma que en todas las salidas el número de productos necesarios sea menor al número de productos disponibles, como en el siguiente fragmento:

Una vez eliminados este tipo de errores es necesario también eliminar los errores de sintaxis, etc., hasta conseguir que el fichero compile correctamente (véase apartado de recomendaciones).

===================================================================== Symbol Table

===================================================================== Pin Variable Pterms Max Min Pol Name Ext Pin Type Used Pterms Level --- -------- --- --- ---- ------ ------ ----- a 15 V 9 10 1 b 16 V 9 12 1 c 17 V 9 14 1 d 18 V 11 16 1 e 19 V 7 16 1 f 20 V 9 14 1 g 21 V 8 12 1 punto 14 V 4 8 1

===================================================================== Symbol Table

===================================================================== Pin Variable Pterms Max Min Pol Name Ext Pin Type Used Pterms Level --- -------- --- --- ---- ------ ------ ----- d 15 V 11 10 1 b 16 V 9 12 1 c 17 V 9 14 1 a 18 V 9 16 1 e 19 V 7 16 1 f 20 V 9 14 1 g 21 V 8 12 1 punto 14 V 4 8 1

Page 10: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 10

3.5. Simulación Una vez compilado el programa, la simulación nos permite comprobar si realiza la función deseada antes de grabar el dispositivo. Para ello debemos escribir el fichero de simulación. (con el mismo nombre que el fichero PLD, pero con extensión .SI). Este fichero puede escribirse de dos formas:

• Darle una serie de entradas y las salidas que deberíamos obtener, y el sistema comprobará si estas salidas coinciden con las que obtendríamos al utilizar en el programa que hemos escrito.

• Darle una serie de entradas y él rellenará las salidas, por lo que nosotros debemos comprobar posteriormente si el resultado es el deseado.

El fichero debe tener la misma cabecera que el fichero PLD:

A continuación debemos escribir el orden de las variables de entrada y de salida, y el listado de

Name Prac3; Partno CIR001; Revision 01; Date 13/3/99; Designer Ejemplo; Company Departamento de Electronica; Location Universidad de Alcala de Henares; Assembly None; Device p22v10;

/** Orden con que se van a introducir y presentar los vectores **/ Order: select," ",A3..0," ",B3..0," ",a,b,c,d,e,f,g," ",punto; /** Vectores de test **/ /* El asterisco * indica que sera rellenado por el simulador */ Vectors: 0 0000 0000 ******** 0 0001 0000 ******** 0 0010 0000 ******** 0 0011 0000 ******** 0 0100 0000 ******** 0 0101 0000 ******** 0 0110 0000 ******** 0 0111 0000 ******** 0 1000 0000 ******** 0 1001 0000 ******** 0 1010 0000 ******** 0 1011 0000 ******** 0 1100 0000 ******** 0 1101 0000 ******** 0 1110 0000 ******** 0 1111 0000 ******** 1 0000 0000 ******** 1 0001 0000 ******** 1 0010 0000 ******** 1 0011 0000 ******** 1 0000 0000 ******** 1 0000 0001 ******** 1 0000 0010 ******** 1 0000 0011 ********

Page 11: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 11

valores que deseemos probar en el orden adecuado:

Page 12: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 12

El fichero de salida contendrá, además de la cabecera y el orden de las variables, los valores que tomarán las variables para esas entradas, como se puede ver a continuación:

CSIM(WM): CUPL Simulation Program Version 4.8a Serial# MW-66999998 Copyright (c) 1983, 1996 Logical Devices, Inc. CREATED Wed Apr 14 13:04:41 1999 LISTING FOR SIMULATION FILE: PRAC3.si 1: Name Prac3; 2: Partno CIR001; 3: Revision 01; 4: Date 13/3/99; 5: Designer Ejemplo; 6: Company Departamento de Electronica; 7: Location Universidad de Alcala de Henares; 8: Assembly None; 9: Device p22v10; 10: 11: 12: /** Orden con que se van a introducir y presentar los vectores **/ 13: 14: Order: select," ",A3..0," ",B3..0," ",a,b,c,d,e,f,g," ",punto; 15: 16: /** Vectores de test **/ 17: 18: /* * indica que sera rellenado por el simulador */ ============================== s e p l u e n c AAAA BBBB t t 3210 3210 abcdefg o ============================== 0001: 0 0000 0000 LLLLLLH H 0002: 0 0001 0000 HLLHHHH H 0003: 0 0010 0000 LLHLLHL H 0004: 0 0011 0000 LLLLHHL H 0005: 0 0100 0000 HLLHHLL H 0006: 0 0101 0000 LHLLHLL H 0007: 0 0110 0000 HHLLLLL H 0008: 0 0111 0000 LLLHHHH H 0009: 0 1000 0000 LLLLLLL H 0010: 0 1001 0000 LLLHHLL H 0011: 0 1010 0000 HHHHHHH L 0012: 0 1011 0000 HHHHHHH L 0013: 0 1100 0000 HHHHHHH L 0014: 0 1101 0000 HHHHHHH L 0015: 0 1110 0000 HHHHHHH L 0016: 0 1111 0000 HHHHHHH L 0017: 1 0000 0000 LLLLLLH H 0018: 1 0001 0000 LLLLLLH H 0019: 1 0010 0000 LLLLLLH H 0020: 1 0011 0000 LLLLLLH H 0021: 1 0000 0000 LLLLLLH H 0022: 1 0000 0001 HLLHHHH H 0023: 1 0000 0010 LLHLLHL H 0024: 1 0000 0011 LLLLHHL H

Page 13: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 13

El proceso de escritura-compilación-simulación deberá repetirse tantas veces como sea necesario hasta que se obtengan en las salidas los valores deseados.

Se puede forzar al WinCUPL a que simule automáticamente después de compilar, activando la opción de compilación Simulate. Además, si se activa Display Waveform mostrará en forma de cronograma la información de salida de la simulación.

Si le damos en la simulación los valores de las entradas y las salidas, y estas no coinciden con las salidas del programa escrito, obtendremos un error de simulación (CSIM error en la ventana de mensajes). También obtendremos este error cuando le digamos que simule automáticamente y no encuentre el fichero .SI correspondiente en el directorio donde esté el PLD.

3.6. Grabación de la PAL Una vez compilado el programa definitivo debemos grabarlo en el dispositivo físico. Para ello necesitamos:

• Elemento programador: Módulo que actúa sobre el dispositivo (ALL-11).

• Ordenador: donde está el programa que quiero volcar en el dispositivo.

• Software programador: Herramienta SW capaz de enviar el programa al circuito (WACCESS).

• Conexión ordenador/módulo programador: Cable de conexión (RS232).

En la figura 9 vemos el elemento programador, la forma de conectar el cable, y la manera de situar la PAL en el módulo programador (ajustado a la parte inferior, con la muesca hacia arriba).

(b)

(a) (c)

Figura 9. (a) Vista del programador. (b) Conexión del programador al ordenador. (c) Forma correcta de insertar la PAL en el programador.

Page 14: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 14

Comenzaremos el proceso conectando correctamente el módulo programador al ordenador, encendiéndolo, y colocando la PAL en el programador en su lugar correcto (ajustada a la parte inferior, y con la muesca hacia arriba).

A continuación debemos grabar el programa en la PAL. Para ello grabaremos el fichero JEDEC en el buffer intermedio y posteriormente en la PAL, como se muestra en la figura 10, según los

pasos de la figura 11:

Figura 10. Proceso de grabación de la PAL.

Figura 11. Pasos para grabar un fichero en la PAL.

Según este diagrama de bloques, la elección del dispositivo es el primer paso, para el que seleccionaremos la opción Device del menú principal, después PLD y por último, nuestra PAL, por ejemplo, PALCE22V10Q de AMD. Si el dispositivo elegido no es correcto mostrará un mensaje de error, y debemos modificar la selección. En caso de elección correcta veremos una pantalla como la de la figura siguiente:

Figura 12. Pantalla del WACCESS tras elegir el dispositivo.

Borrar Dispositivo (E2PLD) Programar Disp: Volcar Buffer

Disp seleccionado

<

JEDEC File

BUFFER

PLD

LECTURA

Elegir Dispositivo (circuito comercial)

Cargar buffer

Volcar en circuito

Leer desde fichero Editar buffer: escribimos en él

Page 15: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 15

Llegado a este punto, seleccionamos File, Load JEDEC File , y cargamos el .JED generado en la compilación. Por último, pulsamos Program y se programará la PAL.

4. Ficheros implicados en el proceso de programación de la PAL

En la siguiente figura se muestra a modo de esquema el conjunto de ficheros implicados en el proceso de grabación de la PAL. Nosotros tendremos que escribir los ficheros .PLD y .SI, y el compilador y simulador generarán los ficheros restantes a partir de ellos.

Figura 13. Ficheros implicados en el proceso de grabación de la PAL.

A continuación se muestra un ejemplo de ficheros .PLD, .SI, .SO, .JED y .DOC.

Fichero

.PLD

Compilador

Fichero

.ABS

Fichero

.DOC

Simulador

Fichero

.SI

Fichero

.JED

Fichero

.SO

Fichero

.WO

Ficheros ASCII

Page 16: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 16

4.1. Programa de descripción del circuito (archivo .PLD) Name Prac3; Partno CIR001; Revision 01; Date 13/3/99; Designer Ejemplo; Company Departamento de Electronica; Location Universidad de Alcala de Henares; Assembly None; Device p22v10; /******************************************************************/ /* */ /* LABORATORIO DE ELECTRONICA DIGITAL */ /* */ /* Practica 3: Multiplexor - Decodificador BCD */ /* */ /******************************************************************/ /* Programa preparado para el dispositivo: P22V10 */ /******************************************************************/ /** Definicion de los pines de entrada **/ Pin [2..5] = [A3..0]; /* Dato A */ Pin [6..9] = [B3..0]; /* Dato B */ Pin 10 = select; /* Seleccion */ /** Definicion de los pines de salida **/ Pin [15..21] = a,b,c,d,e,f,g; /* Senianles de los displays */ Pin 14 = punto; /* Punto decimal */ /** Cuerpo del programa **/ /* Descripcion del multiplexor utilizando funciones logicas */ S3 = (!select & A3) # (select & B3); S2 = (!select & A2) # (select & B2); S1 = (!select & A1) # (select & B1); S0 = (!select & A0) # (select & B0); /* Descripcion del conversion BCD - 7 segmentos utilizando una tabla de verdad */ TABLE S3,S2,S1,S0=> !a,!b,!c,!d,!e,!f,!g,!punto { 'h'0=>'b'11111100; 'h'1=>'b'01100000; 'h'2=>'b'11011010; 'h'3=>'b'11110010; 'h'4=>'b'01100110; 'h'5=>'b'10110110; 'h'6=>'b'00111110; 'h'7=>'b'11100000; 'h'8=>'b'11111110; 'h'9=>'b'11100110; 'h'A=>'b'00000001; 'h'B=>'b'00000001; 'h'C=>'b'00000001; 'h'D=>'b'00000001; 'h'E=>'b'00000001; 'h'F=>'b'00000001; }

Page 17: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 17

4.2. Entrada de vectores para la simulación (archivo .SI) Name Prac3; Partno CIR001; Revision 01; Date 13/3/99; Designer Ejemplo; Company Departamento de Electronica; Location Universidad de Alcala de Henares; Assembly None; Device p22v10; /** Orden con que se van a introducir y presentar los vectores **/ Order: select," ",A3..0," ",B3..0," ",a,b,c,d,e,f,g," ",punto; /** Vectores de test **/ /* * indica que sera rellenado por el simulador */ Vectors: 0 0000 0000 ******** 0 0001 0000 ******** 0 0010 0000 ******** 0 0011 0000 ******** 0 0100 0000 ******** 0 0101 0000 ******** 0 0110 0000 ******** 0 0111 0000 ******** 0 1000 0000 ******** 0 1001 0000 ******** 0 1010 0000 ******** 0 1011 0000 ******** 0 1100 0000 ******** 0 1101 0000 ******** 0 1110 0000 ******** 0 1111 0000 ******** 1 0000 0000 ******** 1 0001 0000 ******** 1 0010 0000 ******** 1 0011 0000 ******** 1 0000 0000 ******** 1 0000 0001 ******** 1 0000 0010 ******** 1 0000 0011 ********

Page 18: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 18

4.3. Salida del compilador para el programador (archivo jedec .JED)

CUPL(WM) 4.8a Serial# MW-66999998 Device p22v10 Library DLIB-h-37-17 Created Wed Apr 14 12:34:07 1999 Name Prac3 Partno CIR001 Revision 01 Date 13/3/99 Designer Ejemplo Company Departamento de Electronica Assembly None Location Universidad de Alcala de Henares *QP24 *QF5828 *G0 *F0 *L00896 00000000000000000000000000001111 *L00928 11111111111111111111111111111111 *L00960 11111111111101111011101111111111 *L00992 11111111111110111111111111111111 *L01024 11111111101110110111111101111111 *L01056 11111011101101111111111111111111 *L01088 11111011111111111011011110111111 *L01120 11111111111111111011111111111111 *L01152 11111111111110110111101111110111 *L01184 11111111111111111111111110110111 *L01216 01111011011111111111101101110111 *L01248 10111111111111111111101111111111 *L01280 11111111111111110111101110111111 *L01312 01111111000000000000000000000000 *L01472 00000000000000000000000011111111 *L01504 11111111111111111111111111111111 *L01536 11111111101111111011101111111111 *L01568 11111111101111111111111111111111 *L01600 11111011111110111011011111111111 *L01632 10111011101110111011101110111011 *L01664 11111111111101111011101111111111 *L01696 11111111111110111111111110110111 *L01728 10110111111111111111111110111111 *L01760 11111111111111111111101101111011 *L01792 01110111111111111111111111111111 *L01824 10110111011110110111111111111011 *L01856 01110111101111111111111111111011 *L01888 11111111111111111111111101111011 *L01920 10111111011111110000000000000000 *L02144 00000000000011111111111111111111 *L02176 11111111111111111111111111111011 *L02208 10111111101111111111111111111011 *L02240 11111111111111111111111110111011 *L02272 11111011011111111111101110111011 *L02304 10111011101110111011111111111111 *L02336 01111011101110111111111111111111 *L02368 10111111111111111111111111111011 *L02400 01110111101101111111111110110111 *L02432 01111011111111111111111110111111 *L02464 11111111111111111111011110111011

Se indica los fusibles de la PAL que se funden:

0 – no se funde

1 – se funde (se elimina la conexión)

Fusible 896 Fusible 896+28=924

Page 19: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 19

*L02496 10110111111100000000000000000000 *L02880 00000000000000000000000011111111 *L02912 11111111111111111111111111111111 *L02944 11111111101110111111101111111111 *L02976 11111111101111111111111111111111 *L03008 11111011101111111011011111111111 *L03040 10111011101110111011101110111011 *L03072 11111111111101111011101110111111 *L03104 11111111111110111111111110111011 *L03136 01110111111111111111111110111111 *L03168 11111111111111111111101110110111 *L03200 01110111111111111011011110110111 *L03232 11111111111111111011111111111111 *L03264 11111111111110110111101101110111 *L03296 11111111111111111111111110110111 *L03328 01111011011111111111101101110111 *L03360 10111111111111111111101111111111 *L03392 11111111111111110111101110111011 *L03424 01111111000000000000000000000000 *L03648 00001111111111111111111111111111 *L03680 11111111111111111111011110111011 *L03712 11111111111111111111101111111111 *L03744 11111111111111110111101110111111 *L03776 01111111111110111011101110111011 *L03808 10111011101111111111111110110111 *L03840 01111011111111111111111110111111 *L03872 11111011111101110111111111111111 *L03904 11111011111111111111111111111111 *L03936 10111111011101110111111111111011 *L03968 11111011111111111111111111111011 *L04000 11111111111111111111111110111111 *L04032 10111111011111111111111111111111 *L04064 11111011011101111011011111110000 *L04288 00000000000000000000000011111111 *L04320 11111111111111111111111111111111 *L04352 11111111011110111011111111111111 *L04384 11111111101111111111111111111111 *L04416 11110111101110111111011111111111 *L04448 10111011101110111011101110111011 *L04480 11111111111111111111111111111011 *L04512 10111111111101111111111110111011 *L04544 11111111111111111111111110111111 *L04576 11111011011110111011111111111111 *L04608 11111011111111111111111111111111 *L04640 10110111101110110111111111111111 *L04672 11111111111110110111011101110111 *L04704 11111111101101110111011111111111 *L04736 11111111101111110000000000000000 *L04864 00000000000000000000111111111111 *L04896 11111111111111111111111111111111 *L04928 11111011101111111011111111111111 *L04960 11111011111111111111111111111111 *L04992 10111011111110110111111111111011 *L05024 10111011101110111011101110111111 *L05056 11111111011110111011111111111111 *L05088 11111111101111111111101111110111 *L05120 01111111111111111111101111111111 *L05152 11111111111111111011111101110111 *L05184 01111111111110110111101101111111 *L05216 11111111111110111111111111111111 *L05248 11111111101101111011011101111111

*L05280 11111111111111111111011110111011 *L05312 11110111111100000000000000000000 *L05344 00000000000000000000000011111111 *L05376 11111111111111111111111111111111 *L05408 11111111111111111111111101110111 *L05440 10111111011111111111111111111111 *L05472 11110111111101111111011111111111 *L05504 01111111011111111111111111111111 *L05536 10111111111101110111101111111111 *L05568 11111111111110111111000000000000 *L05792 00000000000000000000010101010101 *L05824 0101 *C85D0 *�CF19

Page 20: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 20

4.4. Salida del compilador para el programador (archivo JEDEC .JED) (Con simulación)

CUPL(WM) 4.8a Serial# MW-66999998 Device p22v10 Library DLIB-h-37-17 Created Wed Apr 14 12:53:02 1999 Name Prac3 Partno CIR001 Revision 01 Date 13/3/99 Designer Ejemplo Company Departamento de Electronica Assembly None Location Universidad de Alcala de Henares *QP24 *QF5828 *QV24 *G0 *F0 *L00896 00000000000000000000000000001111 *L00928 11111111111111111111111111111111 *L00960 11111111111101111011101111111111 *L00992 11111111111110111111111111111111 *L01024 11111111101110110111111101111111 *L01056 11111011101101111111111111111111 *L01088 11111011111111111011011110111111 *L01120 11111111111111111011111111111111 *L01152 11111111111110110111101111110111 *L01184 11111111111111111111111110110111 *L01216 01111011011111111111101101110111 *L01248 10111111111111111111101111111111 *L01280 11111111111111110111101110111111 *L01312 01111111000000000000000000000000 *L01472 00000000000000000000000011111111 *L01504 11111111111111111111111111111111 *L01536 11111111101111111011101111111111 *L01568 11111111101111111111111111111111 *L01600 11111011111110111011011111111111 *L01632 10111011101110111011101110111011 *L01664 11111111111101111011101111111111 *L01696 11111111111110111111111110110111 *L01728 10110111111111111111111110111111 *L01760 11111111111111111111101101111011 *L01792 01110111111111111111111111111111 *L01824 10110111011110110111111111111011 *L01856 01110111101111111111111111111011 *L01888 11111111111111111111111101111011 *L01920 10111111011111110000000000000000 *L02144 00000000000011111111111111111111 *L02176 11111111111111111111111111111011 *L02208 10111111101111111111111111111011 *L02240 11111111111111111111111110111011 *L02272 11111011011111111111101110111011 *L02304 10111011101110111011111111111111 *L02336 01111011101110111111111111111111

*L02368 10111111111111111111111111111011 *L02400 01110111101101111111111110110111 *L02432 01111011111111111111111110111111 *L02464 11111111111111111111011110111011 *L02496 10110111111100000000000000000000 *L02880 00000000000000000000000011111111 *L02912 11111111111111111111111111111111 *L02944 11111111101110111111101111111111 *L02976 11111111101111111111111111111111 *L03008 11111011101111111011011111111111 *L03040 10111011101110111011101110111011 *L03072 11111111111101111011101110111111 *L03104 11111111111110111111111110111011 *L03136 01110111111111111111111110111111 *L03168 11111111111111111111101110110111 *L03200 01110111111111111011011110110111 *L03232 11111111111111111011111111111111 *L03264 11111111111110110111101101110111 *L03296 11111111111111111111111110110111 *L03328 01111011011111111111101101110111 *L03360 10111111111111111111101111111111 *L03392 11111111111111110111101110111011 *L03424 01111111000000000000000000000000 *L03648 00001111111111111111111111111111 *L03680 11111111111111111111011110111011 *L03712 11111111111111111111101111111111 *L03744 11111111111111110111101110111111 *L03776 01111111111110111011101110111011 *L03808 10111011101111111111111110110111 *L03840 01111011111111111111111110111111 *L03872 11111011111101110111111111111111 *L03904 11111011111111111111111111111111 *L03936 10111111011101110111111111111011 *L03968 11111011111111111111111111111011 *L04000 11111111111111111111111110111111 *L04032 10111111011111111111111111111111 *L04064 11111011011101111011011111110000 *L04288 00000000000000000000000011111111 *L04320 11111111111111111111111111111111 *L04352 11111111011110111011111111111111 *L04384 11111111101111111111111111111111 *L04416 11110111101110111111011111111111 *L04448 10111011101110111011101110111011 *L04480 11111111111111111111111111111011 *L04512 10111111111101111111111110111011 *L04544 11111111111111111111111110111111 *L04576 11111011011110111011111111111111 *L04608 11111011111111111111111111111111 *L04640 10110111101110110111111111111111 *L04672 11111111111110110111011101110111 *L04704 11111111101101110111011111111111 *L04736 11111111101111110000000000000000 *L04864 00000000000000000000111111111111 *L04896 11111111111111111111111111111111 *L04928 11111011101111111011111111111111

Page 21: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 21

*L04960 11111011111111111111111111111111 *L04992 10111011111110110111111111111011 *L05024 10111011101110111011101110111111 *L05056 11111111011110111011111111111111 *L05088 11111111101111111111101111110111 *L05120 01111111111111111111101111111111 *L05152 11111111111111111011111101110111 *L05184 01111111111110110111101101111111 *L05216 11111111111110111111111111111111 *L05248 11111111101101111011011101111111 *L05280 11111111111111111111011110111011 *L05312 11110111111100000000000000000000 *L05344 00000000000000000000000011111111 *L05376 11111111111111111111111111111111 *L05408 11111111111111111111111101110111 *L05440 10111111011111111111111111111111 *L05472 11110111111101111111011111111111 *L05504 01111111011111111111111111111111 *L05536 10111111111101110111101111111111 *L05568 11111111111110111111000000000000 *L05792 00000000000000000000010101010101 *L05824 0101 *C85D0 *P 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 *V0001 X000000000XNXHLLLLLLHXXN *V0002 X000100000XNXHHLLHHHHXXN *V0003 X001000000XNXHLLHLLHLXXN *V0004 X001100000XNXHLLLLHHLXXN *V0005 X010000000XNXHHLLHHLLXXN *V0006 X010100000XNXHLHLLHLLXXN *V0007 X011000000XNXHHHLLLLLXXN *V0008 X011100000XNXHLLLHHHHXXN *V0009 X100000000XNXHLLLLLLLXXN *V0010 X100100000XNXHLLLHHLLXXN *V0011 X101000000XNXLHHHHHHHXXN *V0012 X101100000XNXLHHHHHHHXXN *V0013 X110000000XNXLHHHHHHHXXN *V0014 X110100000XNXLHHHHHHHXXN *V0015 X111000000XNXLHHHHHHHXXN *V0016 X111100000XNXLHHHHHHHXXN *V0017 X000000001XNXHLLLLLLHXXN *V0018 X000100001XNXHLLLLLLHXXN *V0019 X001000001XNXHLLLLLLHXXN *V0020 X001100001XNXHLLLLLLHXXN *V0021 X000000001XNXHLLLLLLHXXN *V0022 X000000011XNXHHLLHHHHXXN *V0023 X000000101XNXHLLHLLHLXXN *V0024 X000000111XNXHLLLLHHLXXN *�9768

Page 22: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 22

4.5. Documentación de salida (archivo .DOC) ******************************************************************************* Prac3 ******************************************************************************* CUPL(WM) 4.8a Serial# MW-66999998 Device p22v10 Library DLIB-h-37-17 Created Wed Apr 14 12:53:02 1999 Name Prac3 Partno CIR001 Revision 01 Date 13/3/99 Designer Ejemplo Company Departamento de Electronica Assembly None Location Universidad de Alcala de Henares ========================================================================== Expanded Product Terms ========================================================================== S0 => A0 & !select # B0 & select S1 => A1 & !select # B1 & select S2 => A2 & !select # B2 & select S3 => A3 & !select # B3 & select !a => !A0 & !A2 & !A3 & !select # !B0 & !B2 & !B3 & select # !A0 & !A1 & !A2 & !A3 & !B0 & !B1 & !B2 & !B3 # !A1 & !A2 & A3 & !select # A0 & A1 & !A3 & !select # B0 & B1 & !B3 & select # A0 & !A1 & A2 & !A3 & !select # B0 & !B1 & B2 & !B3 & select # !B1 & !B2 & B3 & select !b => !A1 & !A2 & A3 & !select # !B1 & !B2 & B3 & select # !A0 & !A1 & !A2 & !A3 & !B0 & !B1 & !B2 & !B3 # !B2 & !B3 & select # !A2 & !A3 & !select # !A0 & !A1 & A2 & !A3 & !select # !B0 & !B1 & B2 & !B3 & select # B0 & B1 & B2 & !B3 & select # A0 & A1 & A2 & !A3 & !select

Page 23: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 23

!c => !A1 & !A2 & A3 & !select # !B1 & !B2 & B3 & select # !A0 & !A1 & !A2 & !A3 & !B0 & !B1 & !B2 & !B3 # !A0 & A1 & A2 & !A3 & !select # A0 & A1 & !A3 & !select # B0 & B1 & !B3 & select # !A1 & !A3 & !select # !B1 & !B3 & select # !B0 & B1 & B2 & !B3 & select !d => !A0 & !A2 & !A3 & !select # !B0 & !B2 & !B3 & select # !A0 & !A1 & !A2 & !A3 & !B0 & !B1 & !B2 & !B3 # !A0 & !A1 & !A2 & A3 & !select # A0 & A1 & !A2 & !A3 & !select # B0 & B1 & !B2 & !B3 & select # A0 & !A1 & A2 & !A3 & !select # B0 & !B1 & B2 & !B3 & select # !B0 & B1 & B2 & !B3 & select # !A0 & A1 & A2 & !A3 & !select # !B0 & !B1 & !B2 & B3 & select !e => !A0 & !A2 & !A3 & !select # !B0 & !B2 & !B3 & select # !A0 & !A1 & !A2 & !A3 & !B0 & !B1 & !B2 & !B3 # !A0 & !A1 & !A2 & A3 & !select # !B0 & B1 & B2 & !B3 & select # !A0 & A1 & A2 & !A3 & !select # !B0 & !B1 & !B2 & B3 & select !f => !A0 & !A1 & !A3 & !select # !B0 & !B1 & !B3 & select # !A0 & !A1 & !A2 & !A3 & !B0 & !B1 & !B2 & !B3 # !A1 & !A2 & A3 & !select # A0 & !A1 & A2 & !A3 & !select # B0 & !B1 & B2 & !B3 & select # !B0 & B1 & B2 & !B3 & select # !A0 & A1 & A2 & !A3 & !select # !B1 & !B2 & B3 & select !g => !A1 & !A2 & A3 & !select # B1 & !B2 & !B3 & select # A1 & !A2 & !A3 & !select # !A1 & A2 & !A3 & !select # !B1 & B2 & !B3 & select # !B0 & B1 & B2 & !B3 & select # !A0 & A1 & A2 & !A3 & !select # !B1 & !B2 & B3 & select !punto => !B1 & B2 & B3 & select # B1 & B3 & select # A1 & A3 & !select # !A1 & A2 & A3 & !select a.oe => 1

Page 24: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 24

b.oe => 1 c.oe => 1 d.oe => 1 e.oe => 1 f.oe => 1 g.oe => 1 punto.oe => 1 ========================================================================== Symbol Table ========================================================================== Pin Variable Pterms Max Min Pol Name Ext Pin Type Used Pterms Level --- -------- --- --- ---- ------ ------ ----- A0 5 V - - - A1 4 V - - - A2 3 V - - - A3 2 V - - - B0 9 V - - - B1 8 V - - - B2 7 V - - - B3 6 V - - - S0 0 I 2 - - S1 0 I 2 - - S2 0 I 2 - - S3 0 I 2 - - a 15 V 9 10 1 b 16 V 9 12 1 c 17 V 9 14 1 d 18 V 11 16 1 e 19 V 7 16 1 f 20 V 9 14 1 g 21 V 8 12 1 punto 14 V 4 8 1 select 10 V - - - a oe 15 D 1 1 0 b oe 16 D 1 1 0 c oe 17 D 1 1 0 d oe 18 D 1 1 0 e oe 19 D 1 1 0 f oe 20 D 1 1 0 g oe 21 D 1 1 0 punto oe 14 D 1 1 0 LEGEND D : default variable F : field G : group I : intermediate variable N : node M : extended node U : undefined V : variable X : extended variable T : function

Page 25: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 25

4.6. Simulación de salida (archivo .SO) CSIM(WM): CUPL Simulation Program Version 4.8a Serial# MW-66999998 Copyright (c) 1983, 1996 Logical Devices, Inc. CREATED Wed Apr 14 13:04:41 1999 LISTING FOR SIMULATION FILE: PRAC3.si 1: Name Prac3; 2: Partno CIR001; 3: Revision 01; 4: Date 13/3/99; 5: Designer Ejemplo; 6: Company Departamento de Electronica; 7: Location Universidad de Alcala de Henares; 8: Assembly None; 9: Device p22v10; 10: 11: 12: /** Orden con que se van a introducir y presentar los vectores **/ 13: 14: Order: select," ",A3..0," ",B3..0," ",a,b,c,d,e,f,g," ",punto; 15: 16: /** Vectores de test **/ 17: 18: /* * indica que sera rellenado por el simulador */ ============================== s e p l u e n c AAAA BBBB t t 3210 3210 abcdefg o ============================== 0001: 0 0000 0000 LLLLLLH H 0002: 0 0001 0000 HLLHHHH H 0003: 0 0010 0000 LLHLLHL H 0004: 0 0011 0000 LLLLHHL H 0005: 0 0100 0000 HLLHHLL H 0006: 0 0101 0000 LHLLHLL H 0007: 0 0110 0000 HHLLLLL H 0008: 0 0111 0000 LLLHHHH H 0009: 0 1000 0000 LLLLLLL H 0010: 0 1001 0000 LLLHHLL H 0011: 0 1010 0000 HHHHHHH L 0012: 0 1011 0000 HHHHHHH L 0013: 0 1100 0000 HHHHHHH L 0014: 0 1101 0000 HHHHHHH L 0015: 0 1110 0000 HHHHHHH L 0016: 0 1111 0000 HHHHHHH L 0017: 1 0000 0000 LLLLLLH H 0018: 1 0001 0000 LLLLLLH H 0019: 1 0010 0000 LLLLLLH H 0020: 1 0011 0000 LLLLLLH H 0021: 1 0000 0000 LLLLLLH H 0022: 1 0000 0001 HLLHHHH H 0023: 1 0000 0010 LLHLLHL H 0024: 1 0000 0011 LLLLHHL H

Page 26: ProgramaciondePLDs Con WINCUPL

Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 26

5. Recomendaciones

• El WinCUPL incluye un directorio de ejemplos (EXAMPLES) que pueden utilizarse para familiarizarse con la sintaxis.

• El WinCUPL no admite la letra 'ñ' ni acentos, en ningún punto del programa (ni siquiera en los comentarios). La presencia de cualquiera de estos caracteres provocará la salida inmediata del programa cuando se intente compilar, sin producir ningún fichero de salida ni ningún mensaje de error.

• Tras la última línea de programa, en el fichero .PLD debemos escribir al menos 2 retornos de carro. Si no lo hacemos, el programa no compilará.

• Al programar con el WinCUPL es necesario tener en cuenta que en la instrucción field posicion=[q3..0]; el orden de los términos q3 a q0 va a ser siempre q3,q2,q1,q0, INDEPENDIENTEMENTE DEL ORDEN EN QUE LOS SITUEMOS, (¡¡¡¡¡sólo en esa instrucción!!!!!). Es decir, es lo mismo field posicion=[q3..0]; que field posicion=[q0..3]; y el orden va a ser el indicado anteriormente.

• La cabecera del fichero de simulación (.si) debe ser exactamente la misma que la del fichero .pld. En esta cabecera, se debe indicar que el Device es "p22v10" (sin las comillas) y en Name se pondrá el mismo nombre que tiene el fichero (sin la extensión).

• En las tablas de verdad es necesario incluir todas las posibles combinaciones binarias de las entradas, incluso las que nunca vayan a utilizarse en el circuito.

• Algunas veces, al intentar compilar se nos muestra un mensaje de error indicándonos que nos falta una dll. En esos casos se seguirán los siguientes pasos: Option, Compiler options, Select library, y se seleccionará culp.dl del directorio donde esté instalado CULP.

• Si en las opciones de compilación (Alt-O) se activan "Simulation" y "Show waveform" hará de una vez la compilación y la simulación, además al final saldrá una ventana con el cronograma de las señales implicadas en la simulación. MUCHO OJO cuando vayamos a cerrarla, porque suele quedar abierta también otra ventana por detrás. Si no se cierran TODAS las ventanas antes de hacer la siguiente compilación, esta no se realizará correctamente y tendremos que cerrar el WinCUPL y volver a abrirlo.

• Es necesario introducir una señal de reloj a los biestables de la PAL cuando funciona como elemento secuencial. Esta señal debe se introduce en el pin 1 de la PAL.

• La característica Power Up Reset de la PAL hace que tras alimentar el sistema todos los biestables de la PAL tengan salida 0, es decir, el estado en el que la PAL comienza siempre es el 0. Esta circunstancia debe ser considerada en la programación de la PAL: se debe incluir siempre ese estado inicial y gestionar las transiciones oportunas.