Post on 18-Jun-2015
Universidad del Valle de México Campus Cuernavaca Dispositivos lógicos secuenciales
PRÁCTICAS PROPUESTAS PARA GALS primer programa en WinCUPL.
¿Que es WinCUPL?
Es un potente compilador lógico para diseños realizados en Dispositivos Lógicos Programables específicos, simples y complejos. El Universal Compiler Programmable Logic tiene una IDE (Integrated Development Enviroment) y un Simulador llamado WinSIM creados para la edición, el diseño y comprobación de programación de dispositivos (como PLD y FPGA).
¿Como crear mi primer programa?
Primero necesitamos tener algo que resolver, en este caso una función lógica dada por F (a ,b , c )=ab+ac.
Empecemos:
Una vez instalada la aplicación, buscamos el programa ejecutable en mis programas en ATMEL WINCUPL dando click en WinCUPL.
Ing. Rafael Durán Campoamor Página 1
Universidad del Valle de México Campus Cuernavaca Dispositivos lógicos secuenciales
A continuación se abrirá la siguiente
ventana.
Abrimos un nuevo proyecto en File y se
abre el siguiente cuadro de dialogo y
en nombre escribimos primero.
Ing. Rafael Durán Campoamor Página 2
Universidad del Valle de México Campus Cuernavaca Dispositivos lógicos secuenciales
Despues aparecerán 3 ventanas en el siguiente orden: pins de entrada, pins de salida y pinnodess, en ellos detallaremos el número de entradas a utilizar, así como su salida correspondiente.
Como tenemos 3 variables, seleccionamos 3
Entradas.
Como solo contamos con una salida,
Escribimos 1.
En pinnodess podemos dar 0 y continuar.
Ing. Rafael Durán Campoamor Página 3
Universidad del Valle de México Campus Cuernavaca Dispositivos lógicos secuenciales
Una vez completado el procedimiento anterior, aparece ya mi ventana de edición con los datos proporcionados anteriormente.
Ing. Rafael Durán Campoamor Página 4
Universidad del Valle de México Campus Cuernavaca Dispositivos lógicos secuenciales
Declaramos los pines del GAL 16v8a que contiene la siguiente configuración:
1 clk/in0; 2 a 9 input in1 a in8; 11 OE´; 12-19 IO0 a IO7; 10 gnd y 20 Vcc.
Como solo necesitamos 3 entradas y una salida, seleccionamos 1,2 y 3 como entradas a,b y c respectivamente, y 12 como salida.
La función de salida f se escribe como sigue:
f= (!a & b) # (a & !c); en donde ! es la not, & es la and y # es la or.
Ing. Rafael Durán Campoamor Página 5
Universidad del Valle de México Campus Cuernavaca Dispositivos lógicos secuenciales
Ahora basta compilar el programa para un dispositivo definido seleccionado en menú Options.
Se deberá crear un archivo con extensión .jed o jedec dependiendo de la aplicación y este será el que carguemos en el programador.
Ing. Rafael Durán Campoamor Página 6
Universidad del Valle de México Campus Cuernavaca Dispositivos lógicos secuenciales
Ahora unos ejemplo de cómo generar todas las funciones lógicas básicas con ese mismo GAL 16V8A.
Name Gates;Partno CA0001;Revision 04;Date 9/12/89;Designer G. Woolhiser;Company Logical Devices, Inc.;Location None;Assembly None;Device g16v8a;
***************************************************************//* * Inputs: define inputs to build simple gates from */
Pin 1 = a;Pin 2 = b;
/* * Outputs: define outputs as active HI levels*/
Pin 12 = inva;Pin 13 = invb;Pin 14 = and;Pin 15 = nand;Pin 16 = or;Pin 17 = nor;Pin 18 = xor;Pin 19 = xnor;
Ing. Rafael Durán Campoamor Página 7
Universidad del Valle de México Campus Cuernavaca Dispositivos lógicos secuenciales
/* * Logic: examples of simple gates expressed in CUPL */
inva = !a; /* inverters */invb = !b;and = a & b; /* and gate */nand = !(a & b); /* nand gate */or = a # b; /* or gate */nor = !(a # b); /* nor gate */xor = a $ b; /* exclusive or gate */xnor = !(a $ b); /* exclusive nor gate */
Ing. Rafael Durán Campoamor Página 8
CLK/I01
I12
I23
I34
I45
I56
I67
I78
I89
OE/I911
IO019
IO118
IO217
IO316
IO415
IO514
IO613
IO712
U1
AM16V8
A'
R1330
OFF ON 123
654
DSW1
DIPSW_3
R2330
R3300
R4330
R5330
R6330
R7330
R8330
B' AND NAND OR NOR XOR XNOR
R910k
R1010k
R11
10k