Vous êtes sur la page 1sur 29

M. C.

Felipe Santiago Espinosa Semestre 2012 - A

WinCUPL
Software desarrollado por Atmel Corporation. CUPL: Compilador universal para lgica programable (genera

archivos para programar o simular SPLDs).

WinCUPL es una versin para windows de CUPL. Con CUPL es posible describir circuitos combinacionales o

secuenciales.

Un circuito combinacional se describe con su tabla de verdad o

con ecuaciones booleanas.

Para los circuitos secuenciales lo mas conveniente es el empleo

de Mquinas de Estados Finitos.

Los archivos con las descripciones tienen extensiones .PLD,

el compilador de WinCUPL genera los archivos siguientes:


Un archivo JEDEC (filename.JED) para descargarse con un

programador o emplarse con un simulador. Un archivo absoluto (filename.ABS) para usarse por CSIM, el mdulo de simulacin de CUPL. Un archivo de lista (filename.LST) que muestra los errores en el archivo fuente original. Un archiv0 de documentacin (filename.DOC) que contiene ecuaciones lgicas expandidas, tablas de smbolos, trminos productos e informacin del mapa de fusibles. Un archivo en formato PLA (filename.PLA) para ser usado por otros mdulos o programas tcnicos.
3

Ecuaciones booleanas
Pueden emplearse los 4 operadores lgicos fundamentales:

NOT, AND, OR y XOR:


Operador ! &
# $

Descripcin NOT AND


OR XOR

Ejemplo !A A&B
A#B A$B

Precedencia 1 2
3 4

Una ecuacin lgica tiene la forma:

[ ! ] var [ .ext ] = exp;


4

Donde: Var es una variable o lista de variables indexadas o no indexadas. Si se trata de una lista, la expresin se aplica a los diferentes elementos de la lista. .ext es una extensin a las variables que las vincula con las caractersticas de los dispositivos programables. Exp es una expresin, que es una combinacin de variables y operadores. = el operador de asignacin que se aplica a una variable o a un conjunto de variables ! El operador de complemento.

EXTENSIONES DE LAS VARIABLES EN WINCUPL

Circuito que ilustra el uso de las extensiones de las variables

Las variables son indexadas si finalizan con un nmero,

referido como ndice, pueden usarse para representar buses, por ejemplo, para: A0 A1 A2 A3 A4 A5 A6 A7
Puede usarse A0..7. El ndice es un nmero entre 0 y 31,

siendo el bit 0 el menos significativo.


Un operador puede aplicarse igualmente a un conjunto de

variables, por ejemplo, las expresiones: [A3, A2, A1, A0] : & A3 & A2 & A1 & A0 [B3 .. B0] : # B3 # B2 # B1 # B0 [C3, C2, C1, C0] : $ C3 $ C2 $ C1 $ C0
8

Con la palabra reservada FIELD se hace referencia a un

grupo de variables (indexadas o no) para tratarlas como una sola con varios bits, por ejemplo: FIELD address = [ A3..0]; FIELD modo = [ini, asc, des ];
Una descripcin en WinCUPL debe iniciar con:
Encabezado: Se indica el nombre del programa, el

dispositivo a ser programado, el autor, la fecha y otros datos. Asignacin de terminales: Se asignan las terminales de entrada y salida del dispositivo.
9

Ejemplo 1: Circuito combinacional


Se describir mediante CUPL el siguiente circuito:
x2 f x3 x1

La ecuacin para el circuito es:

Con la notacin de CUPL:

10

Se utilizar una GAL22V10, como entradas se utilizarn las

terminales 1, 2 y 3, para x1, x2 y x3 respectivamente. Y la salida f estar en la terminal 23.

11

Simulacin en WinCUPL
1. 2. 3. 4. 5.

Iniciar un nuevo archivo de simulacin a partir del archivo PLA Agregar seales al espacio de simulacin Agregar vectores Definir los valores de las entradas Ejecutar la simulacin

Simulacin en ISIS de Proteus


1. Definir el circuito 2. Cargar el archivo JED en el PAL 3. Ejecutar la simulacin
12

Tablas de verdad
Es otra manera de describir circuitos combinacionales,

CUPL reserva a la palabra TABLE para estas descripciones. Primero se define un campo (FIELD) para las variables de entrada y otro para las variables de salida (si es mas de una). Despus se especifican una a una las asignaciones de las salidas ante las diferentes entradas. Condiciones no importa pueden considerarse para las entradas pero no para las salidas. Una lista de valores de entrada se puede considerar para generar la misma salida.
13

FIELD input = [in3..0]; /* Nmero en binario */ FIELD output = [out7..0]; /* Nmero en BCD */ TABLE input => output { 0=> 00; 1=>01; 2=>02; 3=>03; 4=>04; 5=>05; 6=>06; 7=>07; 8=>08; 9=>09; A=>10; B=>11; C=>12; D=>13; E=>14; F=>15; }
Con excepcin de las terminales de los dispositivos y la

definicin de las variables indexadas, que siempre se definen en decimal, para otras operaciones CUPL maneja los nmeros en hexadecimal, a menos que se especifique otra base utilizando el prefijo correcto.
14

Prefijo B O D H

Base Binario (2) Octal (8) Decimal (10) Hexadecimal (16)

Ejemplo B1101 O123 D872 HA2

Valor (decimal) 13 83 872 162

En binario, octal o hexadecimal pueden utilizarse

condiciones no importa (X), por ejemplo: b110X O2X3 h12AX

15

Ejemplo 2: Decodificador de 3 a 8
Es un circuito con 3 entradas y 8 salidas, de las cuales slo una est activa a la vez.
A2 A1 0 0
0 0 1 1 1 1

A0 0 1
0 1 0 1 0 1

Y7 0 0
0 0 0 0 0 1

Y6 Y5 Y4 0 0
0 0 0 0 1 0

Y3 0 0
0 1 0 0 0 0

Y2 Y1 Y0 0 0
1 0 0 0 0 0

0 0
1 1 0 0 1 1

0 0
0 0 0 1 0 0

0 0
0 0 1 0 0 0

0 1
0 0 0 0 0 0

1 0
0 0 0 0 0 0
16

Funciones en WinCUPL
Si se requiren tareas repetitivas, es posible el uso de

funciones. Por ejemplo, una funcin para un sumador de 1 bit se define como: function sum_1Bit (X, Y, Cin, Cout) { Cout = Cin & X # Cin & Y # X & Y; /* Carry */ sum_1Bit = Cin $ (X $ Y); /* Suma */ }

17

Funciones en WinCUPL
/* Un sumador de 4 bits, con acarreo */

Z1 = sum_1Bit(X1, Y1, b'0, C1); /* El acarreo inicial es b'0 */ Z2 = sum_1Bit(X2, Y2, C1, C2); Z3 = sum_1Bit(X3, Y3, C2, C3); Z4 = sum_1Bit(X4, Y4, C3, C4); /* En C4 est el acarreo final */

18

Mquinas de Estados Finitos (FSM)


Una FSM es un circuito digital, el cual recorre una

secuencia de estados en un orden predefinido.


El circuito tiene memoria, es decir, sus salidas no solo

dependen de las entradas, sino que tambin dependen de los estados anteriores.
Entrada/Salida: x/y

19

Una FSM se compone de dos bloques, como se muestra en

la figura:

Para los elementos de memoria se emplean flip-flops, la

mquina es sncrona por que los flip-flops cambian su estado en cada flanco de reloj.
20

Mquina de Mealy

21

Mquina de Moore

22

Para definir una mquina de estados en CUPL, primero se

determinan los bits con los que se representarn los estados vlidos, esto se realiza con la palabra FIELD. FIELD state_var_list = [Qn..0];

[Qn..0] son terminales de salida, su tamao depende del nmero de estados.

Es posible una definicin con nombres simblicos para los

estados, se realiza con la palabra $define


$define state_n0 b0...0 $define state_n1 b01 ... $define state_nn b11

23

Con la palabra reservada SEQUENCE se determina la


SEQUENCE state_var_list { PRESENT state_n0 IF (condition1)NEXT state_n1; IF (condition2) NEXT state_n2 OUT out_n0; DEFAULT NEXT state_n0; PRESENT state_n1 NEXT state_n2; . . . PRESENT state_nn statements; }

secuencia de estados, de acuerdo con la siguiente sintaxis:

24

Ejemplo 3: Contador 0 a 3
estados.ar = 0; estados.sp = 0; SEQUENCE PRESENT PRESENT PRESENT PRESENT } estados { S0 NEXT S1 NEXT S2 NEXT S3 NEXT

FIELD estados = [Q1..Q0];

S1; S2; S3; S0;

$define $define $define $define

S0 'b'00 S1 'b'01 S2 'b'10 S3 'b'11

Nota: La asignacin de estados.ar y de estados.sp es por que los flip-flops de salida cuentan con un reset asncrono (ar) y un preset sncrono (ps).
25

Ejemplo 4: Maquina de Mealy

26

Ejemplo 5: Maquina de Moore

27

Ejercicios:
Multiplexor de 2 a 1. Decodificador de BCD a 7 segmentos. Comparador de datos de 4 bits. Generador de paridad Par/Impar. Contador Up/Down de 3 bits. Registro de corrimiento, entrada serial y salida paralela. Sistema con dos semforos (sugerencia: Usar una seal de reloj con una frecuencia baja. El color Ambar que encienda durante 1 ciclo de reloj, el color Verde durante 2 ciclos). 8. Control automtico de una bomba de agua. 9. Seguidor de lnea con dos motores independientes. 10. Control de una puerta automtica.
1. 2. 3. 4. 5. 6. 7.
28

Prcticas de laboratorio
1.

Reconocedor de una secuencia serial de 5 bits (utilizar una seal de reloj en el orden de 1 HZ).

2. Generacin de PWM
3. Manejo de un motor a pasos, con una terminal para

habilitar el movimiento y otra para determinar el sentido.


4. Multiplicador binario de 2 nmeros de 3 bits (resultado

en 6 bits).
29

Vous aimerez peut-être aussi