Académique Documents
Professionnel Documents
Culture Documents
WinCUPL
Software desarrollado por Atmel Corporation. CUPL: Compilador universal para lgica programable (genera
WinCUPL es una versin para windows de CUPL. Con CUPL es posible describir circuitos combinacionales o
secuenciales.
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:
Ejemplo !A A&B
A#B A$B
Precedencia 1 2
3 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.
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,
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
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
10
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
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
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
dependen de las entradas, sino que tambin dependen de los estados anteriores.
Entrada/Salida: x/y
19
la figura:
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
determinan los bits con los que se representarn los estados vlidos, esto se realiza con la palabra FIELD. FIELD state_var_list = [Qn..0];
23
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
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
26
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
en 6 bits).
29