Sie sind auf Seite 1von 29

Electrnica Digital II

M. C. Felipe Santiago Espinosa


Octubre de 2014

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 compilar descripciones de circuitos

combinacionales o secuenciales.

Un circuito combinacional se describe con su tabla de verdad o

con ecuaciones booleanas.

Para los circuitos secuenciales lo ms 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.

Ecuaciones booleanas
Pueden emplearse los 4 operadores lgicos fundamentales:

NOT, AND, OR y XOR:


Operador

Descripcin

Ejemplo

Precedencia

NOT

!A

&

AND

A&B

OR

A#B

XOR

A$B

Una ecuacin lgica tiene la forma:

[ ! ] var [ .ext ] = exp;

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

Con la palabra reservada FIELD se hace referencia a un

grupo de variables (indexadas o no) para tratarlas como


una sola variable de 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.

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:

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.

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

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

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.

Prefijo

Base

Ejemplo

Valor
(decimal)

Binario (2)

B1101

13

Octal (8)

O123

83

Decimal (10)

D872

872

Hexadecimal (16)

HA2

162

En binario, octal o hexadecimal pueden utilizarse

condiciones no importa (X), por ejemplo:


b110X
O2X3
h12AX

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

Las entradas estarn en las

terminales 1, 2 y 3; mientras
que para las salidas se
utilizarn las terminales de la
16 a la 23.

FIELD ent = [A2..0];


FIELD sal = [Y7..0];
TABLE ent => sal {
0=> b00000001;
1 => b00000010;
2 => b00000100;
3 => b00001000;
4 => b00010000;
5 => b00100000;
6 => b01000000;
7 => b10000000;
}

Funciones en WinCUPL
Si se requieren 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 */
}

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

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

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.

Mquina de Mealy

Mquina de Moore

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

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

Ejemplo 3: Contador 0 a 3
estados.ar = 0;
estados.sp = 0;

FIELD estados = [Q1..Q0];


$define
$define
$define
$define

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

SEQUENCE
PRESENT
PRESENT
PRESENT
PRESENT
}

estados {
S0 NEXT
S1 NEXT
S2 NEXT
S3 NEXT

S1;
S2;
S3;
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 4: Maquina de Mealy

Ejemplo 5: Maquina de Moore

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

Das könnte Ihnen auch gefallen