3a. CUPL_ok(curso 2016L).pdf

download 3a. CUPL_ok(curso 2016L).pdf

of 97

Transcript of 3a. CUPL_ok(curso 2016L).pdf

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    1/97

    Metodología de diseño de un

    sistema digital

    Dr. Enr ique Guzmán Ramírez 

    Universidad Tecnológica de la M ixteca 

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    2/97

    Herramientas EDA

    • Todas las herramientas, hardware o software, empleadasen el diseño de sistemas electrónicos reciben el nombre deHerramientas para la “Automatización del DiseñoElectrónico”, EDA (Electronic Design Automation).

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    3/97

    Herramientas CAD para el diseño dehardware.

    • Diseño asistido por computadora, CAD(Computer Aided Design).

    • Herramientas EDA-CAD para CDC:

     –  Modelado o descripción. –  Simuladores.• Simulación funcional.• Simulación temporal.

     –  Implementación.

    • Compilación.• Síntesis.• Mapeo.• Ruteo.

     –  Programación.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    4/97

    Ciclo de desarrollo de un sistemadigital usando SPLD´s

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    5/97

    Ciclo de desarrollo - SPLD

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    6/97

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    7/97

    • En la “metodología de diseño” se analiza el sistema y sedefine como se abordara su modelado, existen dos

     paradigmas principales: –  No jerárquica

    • FLAT.

     –  Se describe el diseño en un sólo paso, en un único bloque.

     –  Adecuada para diseños pequeños.

     –  Jerárquica• Se describe el circuito como un esquema jerárquico de bloques

    Interconectados.

    • Adecuada para diseños grandes.• Dos metodologías principales:

    Metodología de diseño

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    8/97

    • Metodología “ bottom-up” (ascendente)

     –  El diseño se basa en componentes básicos (llamados primitivas, normalmente pre-diseñados), agrupados enlibrerías.

     –  Los componentes son agrupados en módulos, éstos a su vezen otros módulos hasta llegar a uno solo que representa elsistema.

    Metodología de diseño

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    9/97

    • Metodología “top-down” (descendente) –  El modelado de un sistema comienza con un nivel de abstracción

    alto. –  Después, el sistema es dividido en sub-sistemas.

    Metodología de diseño

    Los sub-sistemas sonnuevamente divididos.

    La finalidad es que en cadadivisión el nivel deabstracción disminuya.

    Se considera que un sub-sistema llego a su nivel más

     bajo cuando Puede ser representado por

    las primitivas que laherramienta de diseñoofrece.

    Puede ser descrito porelementos estrechamenterelacionados con hardware

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    10/97

    • Definida la metodología de diseño, y usada para

    determinar los elementos que formaran parte delsistema, se debe decidir cuál “tipo de modelado” seráempleado en la descripción de cada elemento.

    • Existen diversas formas de modelar un diseño digital

    sobre un CDC: –  Esquemático.

     –  Diagramas de máquinas de estado.

     –  Lenguajes Descriptores de Hardware (HDL, Hardware Description Languages).

    • Para un SPLD solo existe uno, los HDLs.

    Tipo de modelado

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    11/97

    • ¿Qué es un HDL?

    “Un HDL es un lenguaje especializado para modelar odescribir y/o simular la estructura o el comportamientode un sistema digital utilizando un enfoque de

    software”.

    Modelado mediante HDL

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    12/97

    • La descripción con un HDL de un circuito puede ser la

    entrada de una herramienta de simulación.• La herramienta de simulación permite verificar el

    comportamiento de un sistema y/o experimentar con

    diferentes descripciones antes de su implementaciónfísica.

    Modelado mediante HDL

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    13/97

    • La descripción con un HDL de un circuito puede ser laentrada de una herramienta de compilación.

    • La herramienta de compilación transforma ladescripción HDL a una representación que puede serimplementada físicamente en un dispositivo (a nivel de

    compuerta).

    Modelado mediante HDL

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    14/97

    • Cuando se modela un sistema digital mediante un

    HDL, se debe definir el “nivel de abstracción” queserá utilizado.

    • Los HDL usados para modelar sobre SPLDs, ofrecenlos siguientes niveles de abstracción:

     –  Nivel de compuertas. – Algorítmico, funcional o de comportamiento.

    Nivel de abstracción

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    15/97

    if clk =

    if updown = 1

    Q=Q+1;

    else

    Q=Q-1;

    end;end;

    Entradas

    Salidas

    • Utilizando un HDL y de acuerdo al nivel de abstracciónelegido, un sistema digital se puede describir mediante su: –  Estructura.

     –  Comportamiento.

    Nivel de abstracción

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    16/97

    Ejemplo diseño descendente

    • Especificación del sistema a modelar. –  Se desea diseñar un sistema digital que permita el definir la

    velocidad y dirección de un motor de CD. –  Se requieren 8 diferentes velocidades. –  El sistema debe ser compatible con procesadores.

    • Debe tener un bus de datos.• La selección de la velocidad y dirección (envió de datos) es

    actualizada por el procesador mediante una señal de control( strobe signal ).

    • Esta información debe ser retenida hasta la llegada de unanueva.

    • Una vez capturados los datos (velocidad y dirección), elsistema debe indicarlo a través de una señal de salida(acknowledge signal ).

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    17/97

    • El modelado del sistema empieza con una descripciónconceptual abstracta.

    Ejemplo diseño descendente

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    18/97

    Ejemplo diseño descendente

    • Primera división en 4 módulos.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    19/97

    Ejemplo diseño descendente

    • Módulo de retención de datos.

    Modelado:

    C0:=D0*Int+C0*/Int;

    C1:=D1*Int+C1*/Int;

    C2:=D2*Int+C2*/Int;

    C3:=D3*Int+C3*/Int;

    [C3..0].clk=CLK 

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    20/97

    Ejemplo diseño descendente

    • Módulo de control de velocidad y dirección.

    Modelado:

    Dir1=C3*Comp;Dir2=/C3*Comp;

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    21/97

    Ejemplo diseño descendente

    • Módulo de control de respuesta.

    Modelado:Ack := Int;

    Ack.clk=CLK 

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    22/97

    Ejemplo diseño descendente

    • Módulo PWM

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    23/97

    Ejemplo diseño descendente

    • Módulo contador de corrida libre ascendente de 3 bits.

    Modelado:

    (q2,q1,q0)

    s0: goto s1;

    s1: goto s2;

    s2: goto s3;

    s7: goto s0;

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    24/97

    Ejemplo diseño descendente

    • Módulo comparador de 3 bits.

    Modelado:

    D=[C0,C1,C2]

    Count=[q0,q1,q2]

    Comp=D

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    25/97

    Ejemplo diseño descendente

    • Integración de los componentes

    Dir1=C3*Comp;

    Dir2=/C3*Comp;

    Ack := Int;

    (q2,q1,q0)

    s0: goto s1;

    s1: goto s2;

    s2: goto s3;

    …s7: goto s0;

    D=[C0,C1,C2]

    Count=[q0,q1,q2]

    Comp=D

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    26/97

    CUPL(Universal Compiler for Programmable Logic)

    Lenguaje Descriptor de Hardware

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    27/97

    CUPL

    • Información: – Documentos

     – CUPL ver 5.30.4

    www.atmel.com

    http://www.atmel.com/default.asp?source=global_navhttp://www.atmel.com/default.asp?source=global_nav

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    28/97

    CUPL

    • CUPL es un HDL (herramienta EDA-CAD) creado por

    la compañía Logical Devices. Inc.• Se trata de un compilador lógico que es utilizado para

    el diseños lógico sobre SPLD´s.

    • Tiene por función generar un archivo programable(JEDEC, Joint Electronic Device Engineering CouncilStandard ) a partir del modelado de un sistema digital:archivo.jed 

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    29/97

    Flujo de modelado para un SPLD

    mediante CUPL

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    30/97

    CUPL

    • La herramienta EDA-CAD CUPL estáconstituida por: – Compilador (CUPL). Este módulo permite

    sintetizar una descripción lógica escrita con lasintaxis del CUPL; además permite asignarla aun dispositivo lógico específico.

     – Simulador (CSIM). Permite visualizar elcomportamiento del sistema modelado.

     – Administrador de librerías (CBLD). Permitemanejar las librerías del programa.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    31/97

    CUPL, características

    • Las características básicas que ofrece elCUPL son:

     – Aplicabilidad Universal. – Modelar usando un enfoque de software.

     – Documentación Flexible.

     – Simplificador. – Simulador.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    32/97

    CUPL, estructura de archivos

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    33/97

    CUPL

    • CUPL permite especificar formalmente unsistema digital mediante:

     – Ecuaciones. – Tabla de verdad.

     – Maquinas de estado.

     – Elementos de diseño abstracto de hardware. – Cualquier combinación de éstas.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    34/97

    CUPL

    q0.d = !q0;

    q1.d = q1&!q0#!q1&q0;

    q2.d = q2&!q0#!q1&q2#!q2&q1&q0;

    SEQUENCE qm{

    present 0If ema&asc next 1;

    If emd&des next 7;

    If hol next 0;

    default next 0;

    present 1If ema&asc next 2;

    If emd&des next 0;

    If hol next 1;

    default next 1;

    table x,cont => [q2,q1,q0].d{

    'b'1000 => 1;'b'1001 => 2;

    'b'1010 => 3;

    'b'1011 => 4;

    'b'1100 => 5;

    'b'1101 => 6;'b'1110 => 7;

    'b'1111 => 0;

    }

    o0 = sel:'h'0 & ctr:'h'4;o1 = sel:'h'1 & ctr:'h'4;

    o2 = sel:'h'2 & ctr:'h'4;

    o3 = sel:'h'3 & ctr:'h'4;

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    35/97

    Sintaxis del CUPL

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    36/97

    CUPL, notación

    • Comentarios. Permiten documentar elmodelado del diseño.

    /* Forma de añadir

    cometarios, varias líneas */// Comentarios, una línea o segmento de línea

    • Las líneas de comando, como en 'C', debenestar separadas por punto y coma ';'

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    37/97

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    38/97

    CUPL, notación

     – Definición de variables no indexadas:[up,down,hold,rst]

     –  No puede usarse palabras reservadas.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    39/97

    CUPL, notación

    •  Números. – Los números pueden ser representados en:

     – La base por default es la Hex.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    40/97

    CUPL, notación

     – Definición de rangos, únicamente en númerosoct, bin y hex.

    'h'[3F00..3FFF] 'o' [12..15] 'b' [000..011] –  Números expresados en bin, oct o hex pueden

    tener valores no importa:'O'0X6 'B'11X1 'H'1XX0

    'H'[1,3,7,E];

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    41/97

    CUPL, comandos de preprocesado

    • Comandos de preprocesado.• Son comandos especiales cuya función es facilitar

    la escritura del modelado del diseño. – Ejemplos:

    $define

    $repeat$macro

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    42/97

    CUPL, operadores

    • El CUPL maneja 4 tipos de operadores: – Operadores de asignación.

     – Operadores lógicos.

     – Operador relacional

     – Operadores aritméticos.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    43/97

    CUPL, operadores

    • Operadores de asignación“=”

    Usado en casi cualquier asignación:

    • Pines, Fields.• Ecuaciones, (asignar una expresión a una señal).

    “=>”

    Usado únicamente en tablas de verdad.

    Estos operadores tienen la prioridad más baja.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    44/97

    CUPL, operadores

    • Operadores lógicos.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    45/97

    CUPL, operadores

    • Operador relacional (operador de igualdad).“ : ” Este operador:

    • Permite determinar si existe igualdad entre un conjuntode variables (FIELD) y una constante.

    • Permite definir expresiones intermedias.• En algunos casos, facilita la escritura de ecuaciones.

    •  No permite comparar conjuntos de variables entre sis = a:b; /* s = !b0 & b1 & !b2 */

    s = a:b:c; /* ERROR */s = (a:b):c; /* ERROR */

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    46/97

    CUPL, operadores

    • Operadores aritméticos.

    CUPL d

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    47/97

    CUPL, operadores

    • Operadores aritméticos. – Su finalidad es facilitar el modelado de un

    sistema. – Únicamente pueden ser usados como parte de

    los comandos de preprocesado $REPEAT y$MACRO.

     – Deben aparecer entre { }, sintaxis:{ x operador y }

    {i+i}{2*i}{(i+1)%8}

    Pin [2,3]=[a,b]

    {a+b}{a*i}{(b+1)%8}

    CUPL d

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    48/97

    CUPL, operadores• Prioridad de los operadores.

     –  Para la prioridad sólo se consideran los operadores deasignación y lógicos.

     –  No se consideran los operadores relacional ni losaritméticos.

     –  La prioridad determina en que orden serán evaluadosdentro de una expresión.

     –  Los operadores de igual prioridad serán evaluadossegún su orden de aparición en la ecuación de izquierdaa derecha.

     –  Los “( )” pueden emplearse para cambiar el orden deevaluación de la expresión, las sub-expresiones dentrode los paréntesis son evaluadas primero.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    49/97

    CUPL, estructura del lenguaje

    • La estructura del lenguaje CUPL estácompuesta por las siguientes secciones:

     – Encabezado – Declaraciones o definiciones

     – Cuerpo de programa (Cuerpo de Modelado)

    • Ecuaciones• Tabla de verdad

    • Diagramas de estado

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    50/97

    CUPL, “Encabezado”

    • Sección que permite definir: – El vínculo con un proyecto.

     – La documentación general del diseño.

     – Definir el dispositivo que se utilizará en eldiseño.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    51/97

    CUPL, “Encabezado”

    • Ejemplo:

    Name cont0059 ;PartNo 00 ;Date 02/07/2008 ;Revision 01 ;Designer Engineer ;Company Atmel ;Assembly None ;

    Location ;Device g22v10 ; /* Device virtual ; */

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    52/97

    CUPL, “Declaraciones”

    • En la sección de DECLARACIONES se puede:

     – Asignar etiquetas a pines de entrada y salida. – Declarar señales tipo “Buried”.

     – Declarar “constantes”.

     – Declarar “conjuntos de señales” (Field). – Definir subexpresiones.

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    53/97

    CUPL, “Declaraciones”

    • Definición de pines. Permite definir: – Un identificador para una señal. – A cuál pin del dispositivo se le asignara cada

    señal del diseño.PIN #_pin = [!]identificador;

    PIN 2 = rst;PIN 3 = !oe;Pin [2,3,4,5] = [b, c, d, e];Pin [2,6,10] = [f,g,!h];

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    54/97

    CUPL, “Declaraciones”

    PIN 16 = q0;PIN 17 = q1;PIN 18 = q2;PIN 19 = q3;PIN [19..16] = [q3..q0];PIN [16..19] = [q0..q3];PIN [19..16] = [q3..0];

    PIN [16..19] = [q0..3];

    Pin [16..19] = ![q3..q0];Pin [16..19] = [q3,!q2,q1,!q0];

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    55/97

    CUPL, “Declaraciones”

    • Definición de Nodos. – Usados para definir señales tipo buried.

     – Usados para dispositivos que contienen

    macroceldas sin pin asociado, macroceldas E-S-B o macroceldas S-B.

     – Existen dos comandos para definir nodos:

    PINNODE [nodo o pin] = [!]identificador;

    NODE = [!]identificador;

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    56/97

    CUPL, “Declaraciones”

    PINNODE 34 = bur_1;

    PINNODE = !bur_2;

    PINNODE [34,44,31] = ![bur_2,bur_1,bur_0];

    PINNODE = [bur_2,bur_1,bur_0];

    NODE = reg_bur1;

    NODE = ![bur_2,bur_1,bur_0];

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    57/97

    CUPL “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    58/97

    CUPL, “Declaraciones”

    • Declaración de “conjuntos de señales”.

    • Lista de elementos que pueden ser tratados como unasola entidad. Usadas para: –  Definir variables de más de un bit. –  Permite referenciar a un grupo de variables por un mismo

    nombre. –  Se usa el comando FIELD, sintaxis:

    Field nom = [nom_var1, nom_var2, nom_var3];

    Field datos = [d0,d1,d2,d3];

    Field datos = [d0..3];Field control = [!cs,rd,wr];Field control = ![cs,rd,wr];Field direc1 = [ad6..3];

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    59/97

    CUPL, “Declaraciones”

    • Declaración de “conjuntos de señales” FIELD – Variables indexadas. DATOS.

    FIELD p=[q3..0]; FIELD p=[q3,q2,q1,q0];

    FIELD p=[q0..3]; FIELD p=[q0,q1,q2,q3]; – Variables no indexadas. CONTROL.

    field ctr=[cs,rd,wr]; – Tamaño máximo de una variable FIELD : 32 bits. – Se puede definir un FIELD dentro de otro FIELD

    Field y=[y0..2];Field j=[m,y];

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    60/97

    CUPL “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    61/97

    CUPL, Declaraciones

    • Operaciones entre FIELDS.

     – Operador de igualdad “ : “. – El operador de igualdad permite comparar, bit a bit,

    un conjunto de variables y una constante.

     – Sintaxis:[var1, var2, ...varn]:constante;

    field_var:constante;

    OK = [Q3,Q2,Q1,Q0]:’d’9;

    OK = [Q3,Q2,Q1,Q0]:[D3,D2,D1,D0];

    CS = D:’h’3F; //field D=[D3..0];

    OK = Q:’d’9; //field Q =[Q3..0];

    CUPL “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    62/97

    CUPL, “Declaraciones”

     – Rangos.

     – La operación de rango es similar a la operación deigualdad, excepto que la constante es ahora un rangode valores.

     – Sintaxis:

    [var1, var2, ...varn]:[cons1..cons2];field_var:[cons1..cons2];

    OK = Q:’h’[9..B]; // field Q =[Q3..0];

    CS = [D0..3]:’h’[C..F];Var1 = ctr:'b'[010..101]; //field ctr=[a,b,c];Var2 = ctr:'b'1XX;Var3 = ctr:'b'1X0;

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    63/97

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    64/97

    CUPL, “Declaraciones”

     Reglas para operaciones entre un FIELD  y

    una variable de 1 bit:

    1. Operaciones relacionales de este tipo generan

    un “funcionamiento erroneo”.2. El resultado de una operación lógica entre un

    FIELD y una variable de 1 bit genera unFIELD con el mismo número de elementos

    del FIELD involucrado en la operación.[a2..0] & m = [a2&m, a1&m, a0&m];

    [a0..2] & m = [a0&m, a1&m, a2&m];

    CUPL “D l i ”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    65/97

    CUPL, “Declaraciones”

     Reglas para operaciones entre FIELD ́      s y

    números:1. 5 = [1,0,1], 8 = [1,0,0,0]2. Si el número de elementos del FIELD es mayor

    que el número de bits que representan al número,

    éste es extendido con ceros a su izquierda.[b2..0]:'b'01; /* 'b'01 se extiende a 'b'001 */[b2..0]#'b'01 = [b2#0, b1#0, b0#1]

    3. Si el número de elementos del FIELD es menor

    que el número de bits que representan al número,éste es cortado a su izquierda.

    [b2..0]:'b'1001; /* 'b'1001 se corta a 'b'001 */[b2..0]#'d'9 = [b2#0, b1#0, b0#1]

    CUPL “D l i ”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    66/97

    CUPL, “Declaraciones”

     Reglas de asignación de FIELD ´      s:

    1. El resultado de una operación lógica entre FIELD´sdebe ser asignada a un FIELD.

    [c2..0] =[a2..0]&[b2..b0];

    [c2..0] =[a2..0]&[x,y,z];

    2. Si una variable binaria es asignada a un FIELD, elvalor de la variable será asignada a cada elemento

    del FIELD.[c2..0] = x[c1..0] = [a2..0]:'b'010;

    CUPL “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    67/97

    CUPL, “Declaraciones”

    • Ejemplos:

    a=[a2..0]; b=[b0..2]; z=[z2..0]

    1. z=a; :

    z=b; :2. z = a&b;

    a=[a2..0]; b=[b2..0]; z=[z2..0]:

    a=[a2..0]; b=[b2..0]; z=[z0..2]:a=[a0..2]; b=[b2..0]; z=[z2..0]:

    a=[a2..0]; b=[b0..2]; z=[z2..0]:

    Asignación por posición

    CUPL “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    68/97

    CUPL, “Declaraciones”

    a=[a2..0]; b=[b2..0]; c=[c2..0]; d=[d2..0]; z=[z2..0],sal0 y sal1 son variables de 1 bit:

    3. sal0 = a:b; :

    4. sal1 = a:b:c; :sal1 = (a:b):c; :

    5. z = a&b:c&d; :z = (a&b):(c&d); :sal1 = a&b:c&d; :

    sal0 => !a0 & a1 & !a2;

    CUPL “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    69/97

    CUPL, Declaraciones6. z = ni;

    z=[z2..0]; ni=[m,n,p]:

    z=[z0..2]; ni=[m,n,p]:

    7. z = ni & a;a=[a2..0]; z=[z2..0]; ni=[m,n,p]:

    a=[a2..0]; z=[z0..2]; ni=[m,n,p]:a=[a0..2]; z=[z0..2]; ni=[m,n,p]:a=[a0..2]; z=[z2..0]; ni=[m,n,p]:

    8. z = a & m;a=[a2..0]; z=[z2..0]:a=[a0..2]; z=[z2..0]:a=[a0..2]; z=[z0..2]:a=[a2..0]; z=[z0..2]:

    Asignación por posición

    CUPL, “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    70/97

    CUPL, Declaraciones

    9. z = 'b'100;

    z=[z2..0]:z=[z0..2]:

    10. z = a & 'b'100;a=[a2..0]; z=[z2..0]:

    a=[a0..2]; z=[z2..0]:a=[a0..2]; z=[z0..2]:a=[a2..0]; z=[z0..2]:

    11. z = a:'b'100;a=[a2..0]; z=[z0..2]:a=[a0..2]; z=[z2..0]:a=[a0..2]; z=[z0..2]:a=[a2..0]; z=[z2..0]:

    Operación lógica y asignación por peso, respecto a variable desalida “z”;

    Asignación por peso

    Evaluación por peso

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    71/97

    CUPL “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    72/97

    CUPL, Declaraciones

    • Sub-expresiones. – Una sub-expresión es la asignación de una expresión

    lógica o relacional a una “variable intermedia”.

     – Una “variables intermedia” es aquella que no tienen

    asociado un pin del dispositivo. – Tienen por objetivos:

    • Facilitar la escritura de las ecuaciones lógicas.

    • Ayudar a definir las transiciones en un diseño con maquinas

    de estado.

     – Se puede añadir variables intermedias en cualquier parte del programa.

    CUPL “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    73/97

    CUPL, Declaraciones

    • Ejemplos de declaración de variablesintermedias.PIN 2 = x;

    PIN 3 = y;

    CUPL “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    74/97

    CUPL, Declaraciones

    • Ejemplos de declaración de variablesintermedias.PIN 2 = x;

    PIN 3 = y;

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    75/97

    CUPL, “Cuerpo del programa”

    • Esta sección contiene el modelado odescripción del diseño y está formada por 1

    o más bloques, los cuales pueden ser: – Bloque de Ecuaciones.

     – Bloque de Tabla de Verdad.

     – Bloque de Maquina de Estado.

     – Elementos de diseño abstracto de hardware.

    CUPL “Cuerpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    76/97

    CUPL, Cuerpo del programa

    • Bloque de ecuaciones.• Formado por expresiones lógicas, sintaxis:

    [!]var[.ext] = exp;

    Z1 = s1 $ s2;Z2 = !s1 & s2 & s0 # s1 # s2 # Z3;!Z3 = (!s1 # s2) & (s0 # s1 # s2) & (a # b);q0.d = !q0;

    • El bloque de ecuaciones define el tipo de señal.

    CUPL “C erpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    77/97

    CUPL, “Cuerpo del programa”

    q0 = !q0;

    q1 = (q1&!q0)#(!q1&q0);

    q2 = (q2&!q0)#(!q1&q2)#(!q2&q1&q0);

    q2 = (q2&!q0)#(!q1&q2)#(!q2&q1&q0);

    q0 = !q0;q1 = (q1&!q0)#(!q1&q0);

    CUPL “Cuerpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    78/97

    CUPL, Cuerpo del programa

    • Polaridad de la señal.

    • Una señal puede ser definida para tener: –  Polaridad negativa (Activa en bajo). –  Polaridad positiva (Activa en alto).

    • La polaridad de la señal depende de dos factores: –  La definición de la señal en el bloque de declaraciones. –  La definición de la señal en el bloque de ecuaciones.

    CUPL, “Cuerpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    79/97

    , p p g

    PIN [2..3] = [e0..1];

    PIN [17,18,19,20] = [s0,!s1,s2,!s3];

    s0 = e0&e1; s1 = e0&e1;

    !s2 = e0&e1; !s3 = e0&e1;----------------------------------------------------------------PIN [2,3,4,5] = [e0,!e1,e2,!e3];PIN [17,18] = [s0,s1];

    s0 = e0#e1;s1 = !e2&!e3;

    CUPL “Cuerpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    80/97

    CUPL, Cuerpo del programa

    • Uso de subexpresiones. Facilitan la escritura de las

    ecuaciones.

    PIN [2..5] = [e0..3];PIN [17,18,19,20] = [s0,s1,s2,s3];

    varint1 = e1#e2;

    1. s0 = e0 & varint1 & e3;2. s1 = e0 # !varint1 # e3;

    1. Evalúa la sub-expresión; 2. Substituye;

    3. Evalúa la expresión

    -> ¿?-> ¿?

    CUPL “Cuerpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    81/97

    CUPL, “Cuerpo del programa”

    • Sentencia APPEND.•  Normalmente, sólo una expresión puede serasignada a una variable.

    • La sentencia APPEND permite asignar múltiples

    expresiones a una misma variable; sintaxis:APPEND[!]var[.ext] = exp;

    Y = A0 & A1;Y = B0 & B1;

    Y = C0 & C1;

    APPEND Y = A0 & A1;APPEND !Y = B0 & B1;

    APPEND Y = C0 & C1;!Y = A0 & A1 # B0 & B1 # C0 & C1;

    APPENDAPPEND

    APPEND

    Y = A0 & A1 # B0 & B1 # C0 & C1;

    CUPL, “Cuerpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    82/97

    , p p g

    • Ejemplos con APPEND:

    3. append Y=a0&b0;

    append Y=a1&b1;

    append Y=c0#c1&c2;

    4. Y=a0&b0;append Y=c0$c1;

    1. append Y=a0&b0;

    append Y=a1&b1;

    append Y=c0#c1;

    2. Y=a0&b0;append Y=a1&b1;

    append Y=c0#c1;

    1. Substituye - une; 2 Evalúa.

    CUPL, “Cuerpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    83/97

    CUPL, Cuerpo del programa

    • El operador de igualdad “ : ” también puede ser

    usado para facilitar la escritura de algunas expresiones

    s = [a2,a1,a0]:& ->s = [a2..a0]:# ->

    s = [a2,a1,a0]:$ ->

    s = a2 & a1 & a0;s = a2 # a1 # a0;

    s = a2 $ a1 $ a0;

    Field a=[a2..0];

    s = a:#; ->s = a:&; ->s = a:$; ->

    s = a2 # a1 # a0;s = a2 & a1 & a0;s = a2 $ a1 $ a0;

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    84/97

    CUPL, “Cuerpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    85/97

    , p p g

    • También se puede usar el comando de preprocesado

    $REPEAT.$repeat índice=[rango]Expresiones

    $repend

    field a=[a1..0];field b=[b1..0];field s=[s1..0];

    $repeat i=[0..1]s{i} = a{i} & b{i};

    $repend

    CUPL, “Cuerpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    86/97

    p p g

    • El comando de preprocesado $MACRO puede ser empleadoen la escritura de ecuaciones; sintaxis:

    $macro id_macro var_i1,var_i2,…,var_in

    expresiones /* declaración de la macro */$mend

    id_macro (var1,var2,…,varn) /* llamado de la macro */--------------------------------------------------------------------------------------------

    PIN [2..4]=[a0..2];PIN 14 = s0;

    $macro and e0 e1 e2 sal;sal = e0 & e1 & e2;$mend

    and(a0,a1,a2,s0);

    CUPL, “Cuerpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    87/97

    PIN [2..4]=[a0..2];PIN [5..7]=[b0..2];PIN [14..16] = [s0..2];

    field a=[a2..0];

    $macro and e0 e1 e2 sal;sal = e0 & e1 & e2;

    $mend

    1. and(a0,a1,a2,!s0);and(!b0,b1,b2,s1);and(!b0,a1,!a2,s2);

    2. c=a1&b1;

    and(a0,b0,c,s2);

    3. c=a1#b1;and(a0,b0,c,s2);

    4. c=a1$b1;and(a0,b0,c,s2);

    5. and(a0,a1,a2,s0);

    and(b0,b1,s0,s1);

    6. and(a0,a1,a2,c);and(b0,b1,c,s1);

    1. Evalúa; 2. Substituye.

    CUPL, “Cuerpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    88/97

    1. PIN 2=a0;PIN 5=b0;

    PIN [8,9]=[f,g];PIN 22=c;PIN 14 = s0;

    $macro and e0 e1 e2 sal;

    sal = e0 & e1 & e2;$mend

    and(a0,b0,c,s2);

    TABLA DE VERDAD {implementac=f#g;

    }

    2. PIN 2=a0;PIN 5=b0;PIN [8,9]=[f,g];PIN 14 = s0;

    $macro and e0 e1 e2 sal;

    sal = e0 & e1 & e2;$mend

    and(a0,b0,c,s2);

    TABLA DE VERDAD{implementa

    c=f#g;}

    CUPL, “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    89/97

    ,

    • Extensiones. Pueden ser usadas en señales – Permiten acceder a funciones específicas

    asociadas a una macrocelda.

     – Extensiones disponibles en el CUPL:

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    90/97

    CUPL, “Declaraciones”

     – En un bloque de ecuaciones si se omitenextensiones en las variables de salida, se tratade un diseño combinacional.

    q0 = !q0;

    q1 = q1&!q0#!q1&q0;

    q2 = q2&!q0#!q1&q2#!q2&q1&q0;

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    91/97

    CUPL, “Declaraciones”

     – Para modelar un sistema secuencial se debe haceruso de algunas extensiones sobre las variables desalida.

    q0.d = !q0;

    q1.d = q1&!q0#!q1&q0;

    q2.d = q2&!q0#!q1&q2#!q2&q1&q0;

    CUPL “D l i ”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    92/97

    CUPL, “Declaraciones”

    com = aa & bb;

    sec.d = aa & bb;

    CUPL “D l i ”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    93/97

    CUPL, “Declaraciones”

    com = aa & bb;

    sec.d = aa & bb;

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    94/97

    CUPL, “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    95/97

    CUPL, Declaraciones

    • Algunas extensiones de uso común en las

    salidas:

    Y.AP = pin;Y.AR = pin1 & pin2;

    Y.SP = retro;Y.AR = retro1 # retro2;Y.SP = retro1 & pin1

    # retro2 & pin2;

    CUPL, “Declaraciones”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    96/97

    CUPL, Declaraciones

    CUPL “Cuerpo del programa”

  • 8/18/2019 3a. CUPL_ok(curso 2016L).pdf

    97/97

    CUPL, Cuerpo del programa

    • Algunas extensiones de uso común en lasentradas:

    PIN 2 = A;

    PIN 3 = B;

    S = B & A.LQ;

    PIN 2 = A;

    PIN 3 = B;

    S = A.DQ & B.LQ;