Sie sind auf Seite 1von 26

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


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.

A3-A0 S3-S0
BCD
MUX
B3-B0 7 Seg

Selecció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.

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


Especificación formal Descripción utilizando un
- Diagrama de bloques Lenguaje de Descripción
Problema Hardware (CUPL)
de diseño - Tabla de verdad
- Funcionas lógicas
- Circuito Ficheros ASCII

Simulador Compilador

Grabador Fichero
PALCE22V10
de PLDs .JED

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.

A3 A3 I1 (2)
a (15) I/O1 a
A2 A2 I2 (3)
b (16) I/O2 b
A1 A1 I3 (4)
c (17) I/O3 c
A0 A0 I4 (5)
d (18) I/O4 d
B3 B3 I5 (6)
e (19) I/O5 e
B2 B2 I6 (7)
f (20) I/O6 f
B1 B1 I7 (8)
g (21) I/O7 g
B0 B0 I8 (9)
Punto (14) I/O0 Punto
Selección Selección I9 (10)

(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

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


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 o
l s 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:

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

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

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

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


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.

A3-A0 S 3 = Select ⋅ A3 + Select ⋅ B 3


MUX S3-S0 S 2 = Select ⋅ A2 + Select ⋅ B2
B3-B0
S1 = Select ⋅ A1 + Select ⋅ B1
Selección
S 0 = Select ⋅ A0 + Select ⋅ B0

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:

/* 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);

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


S3 S2 S1 S0 a b c d e f g Punto
0 0 0 0 0 0 0 0 0 0 1 1
0 0 0 1 1 0 0 1 1 1 1 1
0 0 1 0 0 0 1 0 0 1 0 1
0 0 1 1 0 0 0 0 1 1 0 1
0 1 0 0 1 0 0 1 1 0 0 1
a-f
0 1 0 1 0 1 0 0 1 0 0 1
S3-S0 BCD 0 1 1 0 1 1 0 0 0 0 0 1
7 Seg 0 1 1 1 0 0 0 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 1
Punto 1 0 0 1 0 0 0 1 1 0 0 1
1 0 1 0 1 1 1 1 1 1 1 0
1 0 1 1 1 1 1 1 1 1 1 0
1 1 0 0 1 1 1 1 1 1 1 0
1 1 0 1 1 1 1 1 1 1 1 0
1 1 1 0 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1 1 1 0
(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.

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


/* 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;
}

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:

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


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.

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


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

=====================================================================
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

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:

=====================================================================
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

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

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


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:

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;

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

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

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


valores que deseemos probar en el orden adecuado:

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


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

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


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.

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


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

< PLD
JEDEC File
BUFFER

LECTURA
pasos de la figura 11:
Figura 10. Proceso de grabación de la PAL.

Elegir Dispositivo
(circuito comercial)

Editar buffer: Leer desde fichero


escribimos en él

Cargar buffer

Volcar en circuito

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:

Disp seleccionado

Programar Disp: Volcar Buffer Borrar Dispositivo (E2 PLD)

Figura 12. Pantalla del WACCESS tras elegir el dispositivo.

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


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.

Fichero Fichero
.PLD .SI

Ficheros ASCII
Compilador Simulador

Fichero Fichero Fichero Fichero


.ABS .DOC Fichero .SO .WO
.JED

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.

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


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;
}

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


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

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


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 Fusible 896 Fusible 896+28=924
*G0
*F0
*L00896 00000000000000000000000000001111
*L00928 11111111111111111111111111111111
*L00960 11111111111101111011101111111111
*L00992 11111111111110111111111111111111
*L01024 11111111101110110111111101111111
Se indica los fusibles de la PAL que se
*L01056 11111011101101111111111111111111 funden:
*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


*L02496 10110111111100000000000000000000 *L05280 11111111111111111111011110111011
*L02880 00000000000000000000000011111111 *L05312 11110111111100000000000000000000
*L02912 11111111111111111111111111111111 *L05344 00000000000000000000000011111111
*L02944 11111111101110111111101111111111 *L05376 11111111111111111111111111111111
*L02976 11111111101111111111111111111111 *L05408 11111111111111111111111101110111
*L03008 11111011101111111011011111111111 *L05440 10111111011111111111111111111111
*L03040 10111011101110111011101110111011 *L05472 11110111111101111111011111111111
*L03072 11111111111101111011101110111111 *L05504 01111111011111111111111111111111
*L03104 11111111111110111111111110111011 *L05536 10111111111101110111101111111111
*L03136 01110111111111111111111110111111 *L05568 11111111111110111111000000000000
*L03168 11111111111111111111101110110111 *L05792 00000000000000000000010101010101
*L03200 01110111111111111011011110110111 *L05824 0101
*L03232 11111111111111111011111111111111 *C85D0
*L03264 11111111111110110111101101110111 * CF19
*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

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


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

*L02368 10111111111111111111111111111011
CUPL(WM) 4.8a Serial# MW- *L02400 01110111101101111111111110110111
66999998 *L02432 01111011111111111111111110111111
Device p22v10 Library DLIB-h- *L02464 11111111111111111111011110111011
37-17 *L02496 10110111111100000000000000000000
Created Wed Apr 14 12:53:02 1999 *L02880 00000000000000000000000011111111
Name Prac3 *L02912 11111111111111111111111111111111
Partno CIR001 *L02944 11111111101110111111101111111111
Revision 01 *L02976 11111111101111111111111111111111
Date 13/3/99 *L03008 11111011101111111011011111111111
Designer Ejemplo *L03040 10111011101110111011101110111011
Company Departamento de *L03072 11111111111101111011101110111111
Electronica *L03104 11111111111110111111111110111011
Assembly None *L03136 01110111111111111111111110111111
Location Universidad de Alcala de *L03168 11111111111111111111101110110111
Henares *L03200 01110111111111111011011110110111
*QP24 *L03232 11111111111111111011111111111111
*QF5828 *L03264 11111111111110110111101101110111
*QV24 *L03296 11111111111111111111111110110111
*G0 *L03328 01111011011111111111101101110111
*F0 *L03360 10111111111111111111101111111111
*L00896 00000000000000000000000000001111 *L03392 11111111111111110111101110111011
*L00928 11111111111111111111111111111111 *L03424 01111111000000000000000000000000
*L00960 11111111111101111011101111111111 *L03648 00001111111111111111111111111111
*L00992 11111111111110111111111111111111 *L03680 11111111111111111111011110111011
*L01024 11111111101110110111111101111111 *L03712 11111111111111111111101111111111
*L01056 11111011101101111111111111111111 *L03744 11111111111111110111101110111111
*L01088 11111011111111111011011110111111 *L03776 01111111111110111011101110111011
*L01120 11111111111111111011111111111111 *L03808 10111011101111111111111110110111
*L01152 11111111111110110111101111110111 *L03840 01111011111111111111111110111111
*L01184 11111111111111111111111110110111 *L03872 11111011111101110111111111111111
*L01216 01111011011111111111101101110111 *L03904 11111011111111111111111111111111
*L01248 10111111111111111111101111111111 *L03936 10111111011101110111111111111011
*L01280 11111111111111110111101110111111 *L03968 11111011111111111111111111111011
*L01312 01111111000000000000000000000000 *L04000 11111111111111111111111110111111
*L01472 00000000000000000000000011111111 *L04032 10111111011111111111111111111111
*L01504 11111111111111111111111111111111 *L04064 11111011011101111011011111110000
*L01536 11111111101111111011101111111111 *L04288 00000000000000000000000011111111
*L01568 11111111101111111111111111111111 *L04320 11111111111111111111111111111111
*L01600 11111011111110111011011111111111 *L04352 11111111011110111011111111111111
*L01632 10111011101110111011101110111011 *L04384 11111111101111111111111111111111
*L01664 11111111111101111011101111111111 *L04416 11110111101110111111011111111111
*L01696 11111111111110111111111110110111 *L04448 10111011101110111011101110111011
*L01728 10110111111111111111111110111111 *L04480 11111111111111111111111111111011
*L01760 11111111111111111111101101111011 *L04512 10111111111101111111111110111011
*L01792 01110111111111111111111111111111 *L04544 11111111111111111111111110111111
*L01824 10110111011110110111111111111011 *L04576 11111011011110111011111111111111
*L01856 01110111101111111111111111111011 *L04608 11111011111111111111111111111111
*L01888 11111111111111111111111101111011 *L04640 10110111101110110111111111111111
*L01920 10111111011111110000000000000000 *L04672 11111111111110110111011101110111
*L02144 00000000000011111111111111111111 *L04704 11111111101101110111011111111111
*L02176 11111111111111111111111111111011 *L04736 11111111101111110000000000000000
*L02208 10111111101111111111111111111011 *L04864 00000000000000000000111111111111
*L02240 11111111111111111111111110111011 *L04896 11111111111111111111111111111111
*L02272 11111011011111111111101110111011 *L04928 11111011101111111011111111111111
*L02304 10111011101110111011111111111111
*L02336 01111011101110111111111111111111

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


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

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


22
!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

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


23
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

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


24
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

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


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

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


26

Das könnte Ihnen auch gefallen