Programacion de SPLDs con WinCUPL PDF

Title Programacion de SPLDs con WinCUPL
Author M. Miguel Sánchez
Pages 29
File Size 682.5 KB
File Type PDF
Total Downloads 178
Total Views 836

Summary

Electrónica Digital II M. C. Felipe Santiago Espinosa Octubre de 2014 WinCUPL  Software desarrollado por Atmel Corporation.  CUPL: Compilador universal para lógica programable (genera archivos para programar o simular SPLDs).  WinCUPL es una versión para windows de CUPL.  Con CUPL es posible com...


Description

Electrónica Digital II

M. C. Felipe Santiago Espinosa Octubre de 2014

WinCUPL

 Software desarrollado por Atmel Corporation.  CUPL: Compilador universal para lógica programable (genera

archivos para programar o simular SPLDs).

 WinCUPL es una versión 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 más conveniente es el empleo

de máquinas 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 módulo de simulación de CUPL. Un archivo de lista (filename.LST) que muestra los errores en el archivo fuente original. Un archiv0 de documentación (filename.DOC) que contiene ecuaciones lógicas expandidas, tablas de símbolos, términos productos e información del mapa de fusibles. Un archivo en formato PLA (filename.PLA) para ser usado por otros módulos o programas técnicos.

Ecuaciones booleanas  Pueden emplearse los 4 operadores lógicos fundamentales:

NOT, AND, OR y XOR: Operador

Descripción

Ejemplo

Precedencia

!

NOT

!A

1

&

AND

A&B

2

#

OR

A#B

3

$

XOR

A$B

4

 Una ecuación lógica 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 expresión se aplica a los diferentes elementos de la lista.  .ext es una extensión a las variables que las vincula con las características de los dispositivos programables.  Exp es una expresión, que es una combinación de variables y operadores.  = el operador de asignación 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 número,

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 número 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 descripción en WinCUPL debe iniciar con:  Encabezado: Se indica el nombre del programa, el

dispositivo a ser programado, el autor, la fecha y otros datos.  Asignación 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 ecuación para el circuito es:  Con la notación de CUPL:

 Se utilizará una GAL22V10, como entradas se utilizarán las

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

Simulación en WinCUPL 1. 2. 3. 4. 5.

Iniciar un nuevo archivo de simulación a partir del archivo PLA Agregar señales al espacio de simulación Agregar vectores Definir los valores de las entradas Ejecutar la simulación

Simulación en ISIS de Proteus 1. Definir el circuito 2. Cargar el archivo JED en el PAL 3. Ejecutar la simulación

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. Después 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]; /* Número en binario */ FIELD output = [out7..0]; /* Número 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 excepción de las terminales de los dispositivos y la

definición de las variables indexadas, que siempre se definen en decimal, para otras operaciones CUPL maneja los números en hexadecimal, a menos que se especifique otra base utilizando el prefijo correcto.

Ejemplo

Valor (decimal)

Prefijo

Base

B

Binario (2)

B

13

O

Octal (8)

O

83

D

Decimal (10)

D

872

(

Hexadecimal (16)

(A

162

 En binario, octal o hexadecimal pueden utilizarse

condiciones no importa X , por ejemplo: b X O X h AX

Ejemplo 2: Decodificador de 3 a 8 Es un circuito con 3 entradas y 8 salidas, de las cuales sólo 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

 Las entradas estarán en las

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

FIELD ent = [A2..0]; FIELD sal = [Y7..0]; TABLE ent => sal { => b ; => b ; => b ; => b ; => b ; => b ; => b ; => b ; }

Funciones en WinCUPL

 Si se requieren tareas repetitivas, es posible el uso de

funciones. Por ejemplo, una función 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_ Bit X , Y , b' , C ; /* El acarreo inicial es b' */ 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 */

Máquinas 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 también 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

máquina es síncrona por que los flip-flops cambian su estado en cada flanco de reloj.

Máquina de Mealy

Máquina de Moore

 Para definir una máquina de estados en CUPL, primero se

determinan los bits con los que se representarán los estados válidos, esto se realiza con la palabra FIELD. FIELD state_var_list = [Qn..0]; [Qn..0] son terminales de salida, su tamaño depende del número de estados.

 Es posible una definición con nombres simbólicos para los

estados, se realiza con la palabra $define $define state_n b ... $define state_n b … ... $define state_nn b …

 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 asignación de estados.ar y de estados.sp es por que los flip-flops de salida cuentan con un reset asíncrono (ar) y un preset síncrono (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 semáforos (sugerencia: Usar una señal de reloj con una frecuencia baja. El color Amarillo que encienda durante 1 ciclo de reloj, el color Verde durante 2 ciclos). 8. Control automático de una bomba de agua 9. Seguidor de línea con dos motores independientes 10. Control de una puerta automática 1. 2. 3. 4. 5. 6. 7....


Similar Free PDFs