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               .

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 R9 R10
                                                */
nor    =   !(a   # b);         /*     nor gate */10k
                                              10k

xor    =   a $   b;            /*     exclusive or gate */
                                                       U1
xnor   =   !(a   $ b);         /*     exclusive nor1 gate */
                                                     2
                                                        CLK/I0
                                                                         19
                                    DSW1                   I1      IO0
                                                      3                  18
                                    OFF    ON              I2      IO1
                                6               1     4                  17
                                                           I3      IO2
                                5               2     5                  16
                                                           I4      IO3
                                4               3     6                  15
                                                           I5      IO4
                                                      7                  14
                                                           I6      IO5
                                    DIPSW_3           8                  13
                                                           I7      IO6
                                                      9                  12
                                                           I8      IO7
                                                     11
                                                           OE/I9
                                                          AM16V8

                                          R11
                                          10k
                                                                              R1    R2    R3    R4         R5     R6      R7      R8
                                                                              330   330   300   330        330    330     330     330




                                                                              A'    B'    AND   NAND       OR     NOR    XOR      XNOR




Ing. Rafael Durán Campoamor                                                                                                     Página 8

Ejemplos de win cupl

  • 1.
    Universidad del Vallede 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 . 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
  • 2.
    Universidad del Vallede 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
  • 3.
    Universidad del Vallede 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
  • 4.
    Universidad del Vallede 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
  • 5.
    Universidad del Vallede 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
  • 6.
    Universidad del Vallede 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
  • 7.
    Universidad del Vallede 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
  • 8.
    Universidad del Vallede 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 R9 R10 */ nor = !(a # b); /* nor gate */10k 10k xor = a $ b; /* exclusive or gate */ U1 xnor = !(a $ b); /* exclusive nor1 gate */ 2 CLK/I0 19 DSW1 I1 IO0 3 18 OFF ON I2 IO1 6 1 4 17 I3 IO2 5 2 5 16 I4 IO3 4 3 6 15 I5 IO4 7 14 I6 IO5 DIPSW_3 8 13 I7 IO6 9 12 I8 IO7 11 OE/I9 AM16V8 R11 10k R1 R2 R3 R4 R5 R6 R7 R8 330 330 300 330 330 330 330 330 A' B' AND NAND OR NOR XOR XNOR Ing. Rafael Durán Campoamor Página 8