04 programacion de splds con wincupl

Upload: asandov

Post on 09-Oct-2015

265 views

Category:

Documents


4 download

TRANSCRIPT

  • 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