UNIVERSIDAD DE ALCALÁ.

E SCUELA POLITÉCNICA
DEPARTAMENTO DE E LECTRÓNICA

INGENIERÍA DE T ELECOMUNICACIÓN
CIRCUITOS E LECTRÓNICOS

Programación de Dispositivos Lógicos
Programables utilizando WinCUPL

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

Programación de Dispositivos Lógicos Programables utilizando WinCUPL

DEPECA

2

si en un momento determinado necesitamos modificar la funcionalidad (por ejemplo. la lógica relativa al multiplexor y al decodificador pueden ir incluidas en el PLD. En primer lugar. Una vez decidido utilizar una PAL en el circuito (en nuestro caso la PALCE22V10). Además. hasta la programación hardware. Planteamiento del problema Ejemplo: Dados dos dígitos decimales de entrada. sin necesidad de cambiar el resto del circuito. implementado sin lógica programable. cuando tengamos el fichero definitivo. es necesario programarla. podemos modificarla posteriormente. Sin embargo. y una vez diseñado no se puede modificar fácilmente para realizar otra función. en algunos casos. Este programa se compilará y simulará. el circuito sería como se muestra en la figura 1. Por último. En la última parte se incluye un conjunto de recomendaciones útiles a la hora de la programación con WinCUPL. A continuación explicaremos en detalle estos pasos. 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). Esquema del circuito del ejemplo.2. El proceso completo se muestra resumido en la figura 2. En este documento se explica con un ejemplo el proceso de programación de una PAL. Introducción Los Dispositivos Lógicos Programables (PLDs) son circuitos cuya funcionalidad es programable. deseamos visualizar uno de los dos (que seleccionaremos con un bit de control) en un display. si utilizamos dispositivos lógicos programables. hasta asegurarnos que el resultado obtenido es el deseado. Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 3 . desde la escritura del programa con WinCUPL. A3-A0 B3-B0 S3-S0 MUX BCD 7 Seg Selección Figura 1. Proceso de programación de la PAL 3. utiliza 3 circuitos integrados. es decir. Posteriormente describir dicho circuito según un lenguaje de programación (para nosotros el WinCUPL). y. Si el dato no es válido (es mayor que 9) el display debe apagarse y encenderse el punto. se grabará en la PAL. 3. por lo que se eliminamos un circuito del diseño. nosotros debemos definirla. sumar o restar los datos de entrada dependiendo del bit de selección). Este circuito realiza correctamente su función. sólo tendremos que reprogramar el PLD.1. Si decidiéramos hacer el diseño con lógica no programable.

notepad. y asignarles los pines correspondientes. Asignación de pines En primer lugar. 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.3. Debe tener extensión .Diagrama de bloques . debemos especificar las entradas y las salidas que deben conectarse a la PAL. y. (a) Entradas y salidas necesarias en el sistema.2. Es MUY IMPORTANTE leerlos antes de enfrentarnos con el programa. etc. programador. Proceso de programación de la PAL. El campo más importante es Device que se debe corresponder exactamente con el dispositivo en el que Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 4 . En el capítulo sobre recomendaciones encontraremos consejos útiles sobre la escritura de este fichero.). A3 A2 A1 A0 B3 B2 B1 B0 Selección A3 A2 A1 A0 B3 B2 B1 B0 Selección a b c d e f g Punto (a) I1 (2) I2 (3) I3 (4) I4 (5) I5 (6) I6 (7) I7 (8) I8 (9) I9 (10) (b) (15) I/O1 (16) I/O2 (17) I/O3 (18) I/O4 (19) I/O5 (20) I/O6 (21) I/O7 (14) I/O0 a b c d e f g Punto (c) Figura 3.Descripción utilizando un Lenguaje de Descripción Hardware (CUPL) Especificación formal . 3. El programa de la PAL será un fichero de texto que puede escribirse con cualquier aplicación (el propio WinCUPL o wordpad. (c) Asignación de pines definitiva.Tabla de verdad . 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.PLD y la siguiente estructura: • Cabecera con diferentes datos sobre el programa. (b) Esquema de las entradas y salidas de la PAL. 3.JED Figura 2.Funcionas lógicas . etc.Circuito Problema de diseño Ficheros ASCII Simulador Compilador Fichero Grabador de PLDs PALCE22V10 . en caso de errores de compilación. especialmente.

g. En este cuerpo del programa se utilizan como variables las entradas y salidas que se han definido. Una posible cabecera para el programa del ejemplo sería: Name Partno Revision Date Designer Company Location Assembly Device Prac3. 01. pero sin dicha extensión. /*************************************************************/ /* */ /* LABORATORIO DE ELECTRONICA DIGITAL */ /* */ /* Practica 3: Multiplexor .PLD. y que es la que nos dirá donde debemos conectar cada patilla de la PAL en el circuito a la hora de montarlo.Decodificador BCD */ /* */ /*************************************************************/ /*Programa preparado para el dispositivo: P22V10 */ /*************************************************************/ • Asignación de pines de entrada y salida que se deben corresponder con la asignación hecha anteriormente. y o l s ficheros de salida tendrán todos ellos el nombre más la extensión correspondiente (.. /* Dato A */ /* Dato B */ /* Seleccion */ /** Definicion de los pines de salida Pin [15.5] = [A3. p22v10. la que se corresponde con el multiplexor.b. Universidad de Alcala de Henares.0]. 13/3/99.e. DOC.9] = [B3.d.. etc. Pin 10 = select. . Los símbolos que se corresponden con las operaciones lógicas son: ! negación # OR Programación de Dispositivos Lógicos Programables utilizando WinCUPL & AND DEPECA 5 . (Véase apartado de recomendaciones)..0].JED. • **/ **/ /* Senianles de los displays */ /* Punto decimal */ Cuerpo del programa para que la función de la PAL sea la deseada. y la parte del decodificador.. Pin [6. Depeca. CIR001.). En nuestro ejemplo se puede dividir en dos partes.f.. El campo Name debe coincidir con el nombre del fichero . None. Para la PALCE22V10 en el campo Device debemos escribir p22v10. simplemente escribiéndolas donde sean necesarias (no es necesaria una declaración previa). Departamento de Electronica.21] = a.va a grabarse el programa. y se pueden añadir variables intermedias. /** Definicion de los pines de entrada Pin [2.c. Pin 14 = punto.

En la figura 4 se muestra el esquema del multiplexor y las funciones lógicas de sus salidas. B1). Estas ecuaciones lógicas se corresponden con el siguiente fragmento de código: /* Descripcion del multiplexor utilizando funciones logicas */ S3 S2 S1 S0 = = = = (!select (!select (!select (!select & & & & A3) A2) A1) A0) # # # # (select (select (select (select & & & & B3). B2). S 3 = Select ⋅ A3 + Select ⋅ B 3 S 2 = Select ⋅ A2 + Select ⋅ B2 S1 = Select ⋅ A1 + Select ⋅ B1 S 0 = Select ⋅ A0 + Select ⋅ B0 A3-A0 MUX S3-S0 B3-B0 Selección Figura 4. a-f S3-S0 BCD 7 Seg Punto S3 S2 S1 S0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 (a) a 0 1 0 0 1 0 1 0 0 0 1 1 1 1 1 1 b 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 c 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 d 0 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1 e 0 1 0 1 1 1 0 1 0 1 1 1 1 1 1 1 f 0 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 g 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1 Punto 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 (b) Figura 5. Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 6 . B0). con sus entradas y salidas. Esquema del multiplexor. El esquema del decodificador BCD-7segmentos y su tabla de verdad se muestran en la figura 5. Esta tabla de verdad se corresponde con el siguiente fragmento de código. y la forma de escribir números decimales y hexadecimales. en el que se puede observar el formato para describir una tabla de verdad. Esquema del decodificador y tabla de verdad correspondiente. con sus entradas y salidas. y ecuaciones lógicas equivalentes.Con estos símbolos y la funcionalidad deseada se escriben las distintas partes del programa.

!e. 'h'A=>'b'00000001. 'h'3=>'b'11110010.!punto { 'h'0=>'b'11111100. 'h'F=>'b'00000001.!g. 'h'D=>'b'00000001. 'h'1=>'b'01100000. En la siguiente figura se muestra un resumen sobre el contenido de los menús del WinCUPL: Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 7 . 'h'B=>'b'00000001. 'h'8=>'b'11111110.S1. 'h'7=>'b'11100000.!f. Compilación del programa Para compilarlo utilizaremos el programa CULP cuya pantalla principal se muestra a continuación: Figura 6. Para ampliar información sobre sintaxis etc. Pantalla de presentación del WinCUPL.S0=> !a.7 segmentos */ /* utilizando una tabla de verdad */ TABLE S3. 'h'6=>'b'00111110. 3. 'h'5=>'b'10110110.!b. 'h'4=>'b'01100110. véase el manual de WinCUPL. 'h'9=>'b'11100110.!c.S2.4. 'h'E=>'b'00000001.!d. 'h'C=>'b'00000001. 'h'2=>'b'11011010. } Una vez completado el programa se debe compilar y simular./* Descripcion del conversor BCD ..

JED. abriremos el fichero PLD escrito previamente (FILE -> OPEN). la visualizaremos con las opciones Windows. A continuación lo compilamos. Menús del WinCUPL. En esta pantalla también se incluye la pantalla obtenida tras una compilación finalizada con éxito. En caso de error. Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 8 . Device Specific Compile).Figura 7. Message. con la opción indicada en la siguiente figura (Run. Figura 8. Si la compilación finaliza con éxito se genera el fichero . nos mostrará los mensajes correspondientes en la ventana de mensajes. que será el que utilizaremos en el programa posterior para grabar en la PAL. Ventana obtenida tras la compilación de un programa sin errores. Una vez arrancado el programa. Si esta ventana no aparece directamente.

Si el número de productos disponibles.DOC con información sobre el programa de la PAL. verificaremos si es posible hacer una reasignación de pines. como.El compilador genera siempre (incluso cuando haya errores) el fichero .-------a b c d e f g punto Ext --- Pin --15 16 17 18 19 20 21 14 Type ---V V V V V V V V Pterms Used ------ Max Pterms ------ Min Level ----- 9 9 9 11 7 9 8 4 10 12 14 16 16 14 12 8 1 1 1 1 1 1 1 1 Una vez eliminados este tipo de errores es necesario también eliminar los errores de sintaxis. por ejemplo. Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 9 . como en el siguiente fragmento: ===================================================================== Symbol Table ===================================================================== Pin Variable Pol Name --. etc. es menor que el número de productos necesarios el programa no compilará. hasta conseguir que el fichero compile correctamente (véase apartado de recomendaciones).-------- Ext --- d b c a e f g punto Pin --15 16 17 18 19 20 21 14 Type ---V V V V V V V V Pterms Used ------ Max Pterms ------ Min Level ----- 11 9 9 9 7 9 8 4 10 12 14 16 16 14 12 8 1 1 1 1 1 1 1 1 En ese caso.. así como el número de productos disponibles en dicha salida. 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. ===================================================================== Symbol Table ===================================================================== Pin Variable Pol Name --. como pasa en el siguiente ejemplo. de forma que en todas las salidas el número de productos necesarios sea menor al número de productos disponibles.

(con el mismo nombre que el fichero PLD. • Darle una serie de entradas y él rellenará las salidas. y el sistema comprobará si estas salidas coinciden con las que obtendríamos al utilizar en el programa que hemos escrito.b. Departamento de Electronica." ". Para ello debemos escribir el fichero de simulación.0.3.f.g.5. /** 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 ******** Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 10 . la simulación nos permite comprobar si realiza la función deseada antes de grabar el dispositivo. A continuación debemos escribir el orden de las variables de entrada y de salida.a. Universidad de Alcala de Henares.SI). y el listado de /** Orden con que se van a introducir y presentar los vectores **/ Order: select.d. por lo que nosotros debemos comprobar posteriormente si el resultado es el deseado. CIR001.c.punto.. None..e. 13/3/99.B3. Este fichero puede escribirse de dos formas: • Darle una serie de entradas y las salidas que deberíamos obtener. pero con extensión ." "." ".0." ". p22v10. Ejemplo.A3. Simulación Una vez compilado el programa. El fichero debe tener la misma cabecera que el fichero PLD: Name Partno Revision Date Designer Company Location Assembly Device Prac3. 01.

valores que deseemos probar en el orden adecuado: Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 11 .

CREATED Wed Apr 14 13:04:41 1999 LISTING FOR SIMULATION FILE: PRAC3. CIR001." ". /** Orden con que se van a introducir y presentar los vectores **/ Order: select. Ejemplo." ".a." ". además de la cabecera y el orden de las variables.c.d.0. p22v10.f. Universidad de Alcala de Henares. los valores que tomarán las variables para esas entradas.g.punto. Inc. None.. como se puede ver a continuación: CSIM(WM): CUPL Simulation Program Version 4. 01. 13/3/99..b.El fichero de salida contendrá.si 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: Name Partno Revision Date Designer Company Location Assembly Device Prac3. 1996 Logical Devices.B3. /** Vectores de test **/ /* * 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 Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 12 ." ". Departamento de Electronica.A3.0.e.8a Serial# MW-66999998 Copyright (c) 1983.

También obtendremos este error cuando le digamos que simule automáticamente y no encuentre el fichero . (c) Forma correcta de insertar la PAL en el programador. la forma de conectar el cable. Grabación de la PAL Una vez compilado el programa definitivo debemos grabarlo en el dispositivo físico. Además. con la muesca hacia arriba). Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 13 .SI correspondiente en el directorio donde esté el PLD. si se activa Display Waveform mostrará en forma de cronograma la información de salida de la simulación. activando la opción de compilación Simulate. y estas no coinciden con las salidas del programa escrito. Se puede forzar al WinCUPL a que simule automáticamente después de compilar. (b) Conexión del programador al ordenador. y la manera de situar la PAL en el módulo programador (ajustado a la parte inferior. (a) Vista del programador. Para ello necesitamos : • Elemento programador: Módulo que actúa sobre el dispositivo (ALL-11). obtendremos un error de simulación (CSIM error en la ventana de mensajes).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. Si le damos en la simulación los valores de las entradas y las salidas. • Conexión ordenador/módulo programador: Cable de conexión (RS232). (b) (a) (c) Figura 9. • Ordenador: donde está el programa que quiero volcar en el dispositivo.6. En la figura 9 vemos el elemento programador. • Software programador: Herramienta SW capaz de enviar el programa al circuito (WACCESS). 3.

Proceso de grabación de la PAL. Según este diagrama de bloques. Pasos para grabar un fichero en la PAL. Para ello grabaremos el fichero JEDEC en el buffer intermedio y posteriormente en la PAL. nuestra PAL. después PLD y por último. según los < PLD JEDEC File BUFFER LECTURA pasos de la figura 11: Figura 10. para el que seleccionaremos la opción Device del menú principal. la elección del dispositivo es el primer paso. PALCE22V10Q de AMD .Comenzaremos el proceso conectando correctamente el módulo programador al ordenador. Si el dispositivo elegido no es correcto mostrará un mensaje de error. Elegir Dispositivo (circuito comercial) Editar buffer: escribimos en él Leer desde fichero Cargar buffer Volcar en circuito Figura 11. En caso de elección correcta veremos una pantalla como la de la figura siguiente: Disp seleccionado Programar Disp: Volcar Buffer Borrar Dispositivo (E2 PLD) Figura 12. y con la muesca hacia arriba). como se muestra en la figura 10. Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 14 . y debemos modificar la selección. y colocando la PAL en el programador en su lugar correcto (ajustada a la parte inferior. Pantalla del WACCESS tras elegir el dispositivo. encendiéndolo. A continuación debemos grabar el programa en la PAL. por ejemplo.

Fichero Fichero . y el compilador y simulador generarán los ficheros restantes a partir de ellos.JED y . 4.PLD y .SI Ficheros ASCII Compilador Fichero Fichero .SO . y cargamos el . seleccionamos File. 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. pulsamos Program y se programará la PAL.Llegado a este punto.SI. . Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 15 .PLD. . Load JEDEC File .ABS .JED generado en la compilación. Por último. A continuación se muestra un ejemplo de ficheros .DOC. .SI.WO .DOC Simulador Fichero Fichero Fichero .PLD .JED Figura 13. Nosotros tendremos que escribir los ficheros . Ficheros implicados en el proceso de grabación de la PAL.SO.

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

0.2. /** 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 1 1 1 0000 0001 0010 0011 0000 0000 0000 0000 ******** ******** ******** ******** 1 1 1 1 0000 0000 0000 0000 0000 0001 0010 0011 ******** ******** ******** ******** Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 17 . Ejemplo. Name Partno Revision Date Designer Company Location Assembly Device Entrada de vectores para la simulación (archivo . 01.f. None." ".e.B3.b. Universidad de Alcala de Henares. /** Orden con que se van a introducir y presentar los vectores **/ Order: select." ". CIR001.d. p22v10.a..SI) Prac3.g.punto.A3." ".0.." ". Departamento de Electronica.c.4. 13/3/99.

3.JED) CUPL(WM) 4. Salida del compilador para el programador (archivo jedec .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 Fusible 896 Fusible 896+28=924 *QF5828 *G0 *F0 *L00896 00000000000000000000000000001111 *L00928 11111111111111111111111111111111 *L00960 11111111111101111011101111111111 *L00992 11111111111110111111111111111111 Se indica los fusibles de la PAL que se *L01024 11111111101110110111111101111111 funden: *L01056 11111011101101111111111111111111 *L01088 11111011111111111011011110111111 0 – no se funde *L01120 11111111111111111011111111111111 *L01152 11111111111110110111101111110111 1 – se funde (se elimina la conexión) *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 Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 18 .4.

*L02496 *L02880 *L02912 *L02944 *L02976 *L03008 *L03040 *L03072 *L03104 *L03136 *L03168 *L03200 *L03232 *L03264 *L03296 *L03328 *L03360 *L03392 *L03424 *L03648 *L03680 *L03712 *L03744 *L03776 *L03808 *L03840 *L03872 *L03904 *L03936 *L03968 *L04000 *L04032 *L04064 *L04288 *L04320 *L04352 *L04384 *L04416 *L04448 *L04480 *L04512 *L04544 *L04576 *L04608 *L04640 *L04672 *L04704 *L04736 *L04864 *L04896 *L04928 *L04960 *L04992 *L05024 *L05056 *L05088 *L05120 *L05152 *L05184 *L05216 *L05248 10110111111100000000000000000000 00000000000000000000000011111111 11111111111111111111111111111111 11111111101110111111101111111111 11111111101111111111111111111111 11111011101111111011011111111111 10111011101110111011101110111011 11111111111101111011101110111111 11111111111110111111111110111011 01110111111111111111111110111111 11111111111111111111101110110111 01110111111111111011011110110111 11111111111111111011111111111111 11111111111110110111101101110111 11111111111111111111111110110111 01111011011111111111101101110111 10111111111111111111101111111111 11111111111111110111101110111011 01111111000000000000000000000000 00001111111111111111111111111111 11111111111111111111011110111011 11111111111111111111101111111111 11111111111111110111101110111111 01111111111110111011101110111011 10111011101111111111111110110111 01111011111111111111111110111111 11111011111101110111111111111111 11111011111111111111111111111111 10111111011101110111111111111011 11111011111111111111111111111011 11111111111111111111111110111111 10111111011111111111111111111111 11111011011101111011011111110000 00000000000000000000000011111111 11111111111111111111111111111111 11111111011110111011111111111111 11111111101111111111111111111111 11110111101110111111011111111111 10111011101110111011101110111011 11111111111111111111111111111011 10111111111101111111111110111011 11111111111111111111111110111111 11111011011110111011111111111111 11111011111111111111111111111111 10110111101110110111111111111111 11111111111110110111011101110111 11111111101101110111011111111111 11111111101111110000000000000000 00000000000000000000111111111111 11111111111111111111111111111111 11111011101111111011111111111111 11111011111111111111111111111111 10111011111110110111111111111011 10111011101110111011101110111111 11111111011110111011111111111111 11111111101111111111101111110111 01111111111111111111101111111111 11111111111111111011111101110111 01111111111110110111101101111111 11111111111110111111111111111111 11111111101101111011011101111111 *L05280 *L05312 *L05344 *L05376 *L05408 *L05440 *L05472 *L05504 *L05536 *L05568 *L05792 *L05824 *C85D0 * CF19 Programación de Dispositivos Lógicos Programables utilizando WinCUPL 11111111111111111111011110111011 11110111111100000000000000000000 00000000000000000000000011111111 11111111111111111111111111111111 11111111111111111111111101110111 10111111011111111111111111111111 11110111111101111111011111111111 01111111011111111111111111111111 10111111111101110111101111111111 11111111111110111111000000000000 00000000000000000000010101010101 0101 DEPECA 19 .

8a Serial# MW66999998 Device p22v10 Library DLIB-h37-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 Programación de Dispositivos Lógicos Programables utilizando WinCUPL *L02368 *L02400 *L02432 *L02464 *L02496 *L02880 *L02912 *L02944 *L02976 *L03008 *L03040 *L03072 *L03104 *L03136 *L03168 *L03200 *L03232 *L03264 *L03296 *L03328 *L03360 *L03392 *L03424 *L03648 *L03680 *L03712 *L03744 *L03776 *L03808 *L03840 *L03872 *L03904 *L03936 *L03968 *L04000 *L04032 *L04064 *L04288 *L04320 *L04352 *L04384 *L04416 *L04448 *L04480 *L04512 *L04544 *L04576 *L04608 *L04640 *L04672 *L04704 *L04736 *L04864 *L04896 *L04928 10111111111111111111111111111011 01110111101101111111111110110111 01111011111111111111111110111111 11111111111111111111011110111011 10110111111100000000000000000000 00000000000000000000000011111111 11111111111111111111111111111111 11111111101110111111101111111111 11111111101111111111111111111111 11111011101111111011011111111111 10111011101110111011101110111011 11111111111101111011101110111111 11111111111110111111111110111011 01110111111111111111111110111111 11111111111111111111101110110111 01110111111111111011011110110111 11111111111111111011111111111111 11111111111110110111101101110111 11111111111111111111111110110111 01111011011111111111101101110111 10111111111111111111101111111111 11111111111111110111101110111011 01111111000000000000000000000000 00001111111111111111111111111111 11111111111111111111011110111011 11111111111111111111101111111111 11111111111111110111101110111111 01111111111110111011101110111011 10111011101111111111111110110111 01111011111111111111111110111111 11111011111101110111111111111111 11111011111111111111111111111111 10111111011101110111111111111011 11111011111111111111111111111011 11111111111111111111111110111111 10111111011111111111111111111111 11111011011101111011011111110000 00000000000000000000000011111111 11111111111111111111111111111111 11111111011110111011111111111111 11111111101111111111111111111111 11110111101110111111011111111111 10111011101110111011101110111011 11111111111111111111111111111011 10111111111101111111111110111011 11111111111111111111111110111111 11111011011110111011111111111111 11111011111111111111111111111111 10110111101110110111111111111111 11111111111110110111011101110111 11111111101101110111011111111111 11111111101111110000000000000000 00000000000000000000111111111111 11111111111111111111111111111111 11111011101111111011111111111111 DEPECA 20 .4. Salida del compilador para el programador (archivo JEDEC .4.JED) (Con simulación) CUPL(WM) 4.

*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 Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 21 .

DOC) *************************************************************************** **** Prac3 *************************************************************************** **** CUPL(WM) Device Created Name Partno Revision Date Designer Company Assembly Location 4.4.5.8a Serial# MW-66999998 p22v10 Library DLIB-h-37-17 Wed Apr 14 12:53:02 1999 Prac3 CIR001 01 13/3/99 Ejemplo Departamento de Electronica None 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 # !B1 & !B2 # !A0 & !A1 # !B2 & !B3 # !A2 & !A3 # !A0 & !A1 # !B0 & !B1 # B0 & B1 & # A0 & A1 & & A3 & !select & B3 & select & !A2 & !A3 & !B0 & !B1 & !B2 & !B3 & select & !select & A2 & !A3 & !select & B2 & !B3 & select B2 & !B3 & select A2 & !A3 & !select Programación de Dispositivos Lógicos Programables utilizando WinCUPL 22 DEPECA . Documentación de salida (archivo .

oe => 1 Programación de Dispositivos Lógicos Programables utilizando WinCUPL 23 DEPECA .!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 # !B0 & !B2 & !B3 # !A0 & !A1 & !A2 # !A0 & !A1 & !A2 # A0 & A1 & !A2 & # B0 & B1 & !B2 & # A0 & !A1 & A2 & # B0 & !B1 & B2 & # !B0 & B1 & B2 & # !A0 & A1 & A2 & # !B0 & !B1 & !B2 & !select & select & !A3 & !B0 & !B1 & !B2 & !B3 & A3 & !select !A3 & !select !B3 & select !A3 & !select !B3 & select !B3 & select !A3 & !select & B3 & select !e => !A0 # !B0 # !A0 # !A0 # !B0 # !A0 # !B0 & !select & select & !A3 & !B0 & !B1 & !B2 & !B3 & A3 & !select !B3 & select !A3 & !select & B3 & select & & & & & & & !A2 & !A3 !B2 & !B3 !A1 & !A2 !A1 & !A2 B1 & B2 & A1 & A2 & !B1 & !B2 !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 ========================================================================== Symbol Table ========================================================================== Pin Variable Pol Name --.oe => 1 d.oe => 1 c.oe => 1 g.b.oe => 1 e.-------A0 A1 A2 A3 B0 B1 B2 B3 S0 S1 S2 S3 a b c d e f g punto select a b c d e f g punto LEGEND D I U T : : : : Ext --- Pin --- oe oe oe oe oe oe oe oe 5 4 3 2 9 8 7 6 0 0 0 0 15 16 17 18 19 20 21 14 10 15 16 17 18 19 20 21 14 default variable intermediate variable undefined function Type ---V V V V V V V V I I I I V V V V V V V V V D D D D D D D D Max Pterms ------ Min Level ----- 2 2 2 2 9 9 9 11 7 9 8 4 1 1 1 1 1 1 1 1 10 12 14 16 16 14 12 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 F : field N : node V : variable Programación de Dispositivos Lógicos Programables utilizando WinCUPL 24 Pterms Used ------ G : group M : extended node X : extended variable DEPECA .oe => 1 f.oe => 1 punto.

/** Vectores de test **/ /* * 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 Programación de Dispositivos Lógicos Programables utilizando WinCUPL 25 DEPECA . 01." ". /** Orden con que se van a introducir y presentar los vectores **/ Order: select. Simulación de salida (archivo .si 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: Name Partno Revision Date Designer Company Location Assembly Device Prac3.c.d.g. CREATED Wed Apr 14 13:04:41 1999 LISTING FOR SIMULATION FILE: PRAC3.. p22v10.punto. Inc. 13/3/99." ".a. Departamento de Electronica. None.0.8a Serial# MW-66999998 Copyright (c) 1983..b. CIR001.SO) CSIM(WM): CUPL Simulation Program Version 4." ". Universidad de Alcala de Henares.4.6.0.f." ".A3. 1996 Logical Devices.e.B3. Ejemplo.

• Es necesario introducir una señal de reloj a los biestables de la PAL cuando funciona como elemento secuencial. Recomendaciones • El WinCUPL incluye un directorio de ejemplos (EXAMPLES) que pueden utilizarse para familiarizarse con la sintaxis. (¡¡¡¡¡sólo en esa instrucción!!!!!). • 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. Select library. INDEPENDIENTEMENTE DEL ORDEN EN QUE LOS SITUEMOS. En esta cabecera.3]. • Tras la última línea de programa. y el orden va a ser el indicado anteriormente. 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). porque suele quedar abierta también otra ventana por detrás. en el fichero . el estado en el que la PAL comienza siempre es el 0. • En las tablas de verdad es necesario incluir todas las posibles combinaciones binarias de las entradas..0]. al intentar compilar se nos muestra un mensaje de error indicándonos que nos falta una dll. que field posicion=[q0.si) debe ser exactamente la misma que la del fichero . además al final saldrá una ventana con el cronograma de las señales implicadas en la simulación. incluso las que nunca vayan a utilizarse en el circuito. es decir.q1. • Al programar con el WinCUPL es necesario tener en cuenta que en la instrucción field posicion=[q3. • La característica Power Up Reset de la PAL hace que tras alimentar el sistema todos los biestables de la PAL tengan salida 0.q2. MUCHO OJO cuando vayamos a cerrarla. en ningún punto del programa (ni siquiera en los comentarios).pld. Si no lo hacemos.. La presencia de cualquiera de estos caracteres provocará la salida inmediata del programa cuando se intente compilar. En esos casos se seguirán los siguientes pasos: Option. Programación de Dispositivos Lógicos Programables utilizando WinCUPL 26 DEPECA . el programa no compilará. Si no se cierran TODAS las ventanas antes de hacer la siguiente compilación. sin producir ningún fichero de salida ni ningún mensaje de error. Esta circunstancia debe ser considerada en la programación de la PAL: se debe incluir siempre ese estado inicial y gestionar las transiciones oportunas. • El WinCUPL no admite la letra 'ñ' ni acentos.5.0].PLD debemos escribir al menos 2 retornos de carro.dl del directorio donde esté instalado CULP. • Algunas veces. es lo mismo field posicion=[q3. Compiler options. y se seleccionará culp. esta no se realizará correctamente y tendremos que cerrar el WinCUPL y volver a abrirlo. • La cabecera del fichero de simulación (.. Esta señal debe se introduce en el pin 1 de la PAL.q0. el orden de los términos q3 a q0 va a ser siempre q3. Es decir.