0% encontró este documento útil (0 votos)
757 vistas29 páginas

04 Programacion de SPLDs Con WinCUPL

Este documento describe el software WinCUPL desarrollado por Atmel Corporation para describir circuitos lógicos programables mediante ecuaciones booleanas, tablas de verdad o máquinas de estados finitos. Explica conceptos como variables indexadas, extensiones, funciones y proporciona ejemplos de circuitos como un decodificador 3 a 8 y un contador 0 a 3 implementado como máquina de estados.

Cargado por

asandov
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
757 vistas29 páginas

04 Programacion de SPLDs Con WinCUPL

Este documento describe el software WinCUPL desarrollado por Atmel Corporation para describir circuitos lógicos programables mediante ecuaciones booleanas, tablas de verdad o máquinas de estados finitos. Explica conceptos como variables indexadas, extensiones, funciones y proporciona ejemplos de circuitos como un decodificador 3 a 8 y un contador 0 a 3 implementado como máquina de estados.

Cargado por

asandov
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 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.
2
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:






Una ecuacin lgica tiene la forma:

[ ! ] var [ .ext ] = exp;
Operador Descripcin Ejemplo Precedencia
! NOT !A 1
& AND A & B 2
# OR A # B 3
$ XOR A $ B 4
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.
5
EXTENSIONES
DE LAS VARIABLES
EN WINCUPL
6
Circuito que ilustra el uso de las extensiones de
las variables
7
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
Se describir mediante CUPL el siguiente circuito:





La ecuacin para el circuito es:

Con la notacin de CUPL:


Ejemplo 1: Circuito combinacional
f
x
1
x
2
x
3
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. Iniciar un nuevo archivo de simulacin a partir del
archivo PLA
2. Agregar seales al espacio de simulacin
3. Agregar vectores
4. Definir los valores de las entradas
5. Ejecutar la simulacin


1. Definir el circuito
2. Cargar el archivo JED en el PAL
3. Ejecutar la simulacin
Simulacin en ISIS de Proteus
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
En binario, octal o hexadecimal pueden utilizarse
condiciones no importa (X), por ejemplo:

b110X
O2X3
h12AX



Prefijo Base Ejemplo
Valor
(decimal)
B Binario (2) B1101 13
O Octal (8) O123 83
D Decimal (10) D872 872
H Hexadecimal (16) HA2 162
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 A0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0
1 1 1 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
secuencia de estados, de acuerdo con la siguiente sintaxis:

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;
}
24
estados.ar = 0;
estados.sp = 0;

SEQUENCE estados {
PRESENT S0 NEXT S1;
PRESENT S1 NEXT S2;
PRESENT S2 NEXT S3;
PRESENT S3 NEXT S0;
}

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).
Ejemplo 3: Contador 0 a 3
FIELD estados = [Q1..Q0];

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

25
Ejemplo 4: Maquina de Mealy
26
Ejemplo 5: Maquina de Moore
27
Ejercicios:
1. Multiplexor de 2 a 1.
2. Decodificador de BCD a 7 segmentos.
3. Comparador de datos de 4 bits.
4. Generador de paridad Par/Impar.
5. Contador Up/Down de 3 bits.
6. Registro de corrimiento, entrada serial y salida paralela.
7. 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.

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

También podría gustarte