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

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

Proceso de programación de la PAL. 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. El programa de la PAL será un fichero de texto que puede escribirse con cualquier aplicación (el propio WinCUPL o wordpad. programador. Es MUY IMPORTANTE leerlos antes de enfrentarnos con el programa.Funcionas lógicas .3. en caso de errores de compilación. Para ello habrá que considerar qué pines de la PAL son sólo de entrada y cuales de entrada-salida. (c) Asignación de pines definitiva. Debe tener extensión . 3. 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 .Descripción utilizando un Lenguaje de Descripción Hardware (CUPL) Especificación formal .2.Diagrama de bloques .JED Figura 2. 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. debemos especificar las entradas y las salidas que deben conectarse a la PAL. notepad.). (b) Esquema de las entradas y salidas de la PAL. y. y asignarles los pines correspondientes.PLD y la siguiente estructura: • Cabecera con diferentes datos sobre el programa. 3. Asignación de pines En primer lugar. 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. (a) Entradas y salidas necesarias en el sistema. etc. etc.Tabla de verdad . especialmente. En el capítulo sobre recomendaciones encontraremos consejos útiles sobre la escritura de este fichero.Circuito Problema de diseño Ficheros ASCII Simulador Compilador Fichero Grabador de PLDs PALCE22V10 .

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

Esquema del decodificador y tabla de verdad correspondiente. con sus entradas y salidas. en el que se puede observar el formato para describir una tabla de verdad. B1).Con estos símbolos y la funcionalidad deseada se escriben las distintas partes del programa. B2). y ecuaciones lógicas equivalentes. El esquema del decodificador BCD-7segmentos y su tabla de verdad se muestran en la figura 5. con sus entradas y salidas. 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). y la forma de escribir números decimales y hexadecimales. 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. Esquema del multiplexor. 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. En la figura 4 se muestra el esquema del multiplexor y las funciones lógicas de sus salidas. B0). Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 6 . Esta tabla de verdad se corresponde con el siguiente fragmento de código.

'h'D=>'b'00000001. 3.!e. 'h'6=>'b'00111110.4. 'h'7=>'b'11100000. 'h'C=>'b'00000001. 'h'E=>'b'00000001.S0=> !a./* Descripcion del conversor BCD ..!c. } Una vez completado el programa se debe compilar y simular. 'h'3=>'b'11110010. 'h'1=>'b'01100000.S2.!g. 'h'2=>'b'11011010. 'h'A=>'b'00000001. Compilación del programa Para compilarlo utilizaremos el programa CULP cuya pantalla principal se muestra a continuación: Figura 6. 'h'4=>'b'01100110. Para ampliar información sobre sintaxis etc.!punto { 'h'0=>'b'11111100. 'h'5=>'b'10110110.!b.7 segmentos */ /* utilizando una tabla de verdad */ TABLE S3. 'h'9=>'b'11100110.S1.!d.!f. 'h'F=>'b'00000001. véase el manual de WinCUPL. 'h'B=>'b'00000001. Pantalla de presentación del WinCUPL. 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'8=>'b'11111110.

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

verificaremos si es posible hacer una reasignación de pines. es menor que el número de productos necesarios el programa no compilará.-------- 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.-------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. así como el número de productos disponibles en dicha salida. Si el número de productos disponibles. como. como pasa en el siguiente ejemplo.. etc. hasta conseguir que el fichero compile correctamente (véase apartado de recomendaciones).El compilador genera siempre (incluso cuando haya errores) el fichero . Entre la información incluida en este fichero está el número de productos que necesita la función implementada cada en cada salida. la función lógica implementada en cada salida.DOC con información sobre el programa de la PAL. 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: ===================================================================== Symbol Table ===================================================================== Pin Variable Pol Name --. por ejemplo. ===================================================================== Symbol Table ===================================================================== Pin Variable Pol Name --. Programación de Dispositivos Lógicos Programables utilizando WinCUPL DEPECA 9 .

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

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

" ". /** Orden con que se van a introducir y presentar los vectores **/ Order: select.8a Serial# MW-66999998 Copyright (c) 1983.El fichero de salida contendrá. CREATED Wed Apr 14 13:04:41 1999 LISTING FOR SIMULATION FILE: PRAC3. 1996 Logical Devices. Departamento de Electronica. None.c.b. Universidad de Alcala de Henares.A3.d. los valores que tomarán las variables para esas entradas.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. además de la cabecera y el orden de las variables. Ejemplo." ".a..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 DEPECA 12 .e. CIR001. como se puede ver a continuación: CSIM(WM): CUPL Simulation Program Version 4. 01." ". Inc.g.f." ".0.0.B3.. p22v10. 13/3/99.

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

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

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

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

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

4.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 .3.

*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 .

Salida del compilador para el programador (archivo JEDEC .4.JED) (Con simulación) CUPL(WM) 4.4.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 .

*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.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 .4. Documentación de salida (archivo .

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

b.oe => 1 punto.oe => 1 g.oe => 1 ========================================================================== Symbol Table ========================================================================== Pin Variable Pol Name --.oe => 1 c.oe => 1 d.-------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 e.

Simulación de salida (archivo . 13/3/99.d.4.8a Serial# MW-66999998 Copyright (c) 1983.B3.g.a.c..punto.e.f." ".0. 1996 Logical Devices." ". 01. Inc." ". Departamento de Electronica.A3. Ejemplo. None.SO) CSIM(WM): CUPL Simulation Program Version 4.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. Universidad de Alcala de Henares.0. /** 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 . /** Orden con que se van a introducir y presentar los vectores **/ Order: select. p22v10." ". CREATED Wed Apr 14 13:04:41 1999 LISTING FOR SIMULATION FILE: PRAC3.. CIR001.b.6.

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

Sign up to vote on this title
UsefulNot useful