3a. CUPL_ok(curso 2016L).pdf
-
Upload
miguel-angel-lucas-soriano -
Category
Documents
-
view
226 -
download
0
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;