Document

Anuncio
BLOQUE 2
TEMA 2: Herramientas de Descripción de Circuitos a Bajo Nivel
2.1 Introducción
2.2 Entrada de Esquemáticos
2.2.1 Conceptos y definiciones
2.2.2 Jerarquización del Diseño
2.2.3 Uso de Buses
2.2.4 Necesidad de HDL’s: Un problema real
2.3 Descripción de Funciones Booleanas
2.3.1 Definiciones
2.3.2 Descripción de Funciones para Espresso
2.3.3 El formato ABEL
1 Smith: “Application-Specific Integrated Circuits”, Capítulo 9
2 Katz: “Comtemporary Logic Design”,
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
INTRODUCCIÖN
Especificación
librerías
HDL
captura de
esquemas
síntesis
netlist
-------------------
El propósito de la Entrada de Diseño es
describir el circuito a una serie de herramientas de automatización y validación
-------------------
netlist: versión ASCII o binaria de una
descripción estructural de un circuito
La entrada de diseño puede ser:
- una vista esquemático del sistema
- lenguajes de descripción de hardware (HDL)
generan directamente el netlist mediante el uso de herramientas de síntesis.
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ENTRADA DE ESQUEMÁTICOS
ESQUEMÁTICO
Captura de
Esquemas
--------------------------------------------------------------------------------------------------------------------------------------------
NETLIST
El esquemático es un dibujo donde se muestran
los componentes del diseño asi como sus conexiones (contiene toda la información necesaria para describir el sistema)
Un dibujo no significa nada para las herramientas de diseño, se necesita una
herramienta (captura de esquemas) que transforme el esquemático en un fichero ASCII o una versión binaría del mismo
A este fichero se le llama netlist, y lleva la misma información que el esquemático
en la forma adecuada para la herramienta de diseño
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ENTRADA DE ESQUEMÁTICOS
Objetos de un esquématico i
Los componentes se eligen de una librería de celdas
módulo
celda primitiva
instancia, nombre de instancia
símbolo, símbolo generado
cable (wire, net, nudo)
pin
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ENTRADA DE ESQUEMÁTICOS
Objetos de un esquématico ii
Conexión entre “wires” (dot o solder dot),
conexión por nombre, nodos globales
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ENTRADA DE ESQUEMÁTICOS
Jerarquización de Diseño i
generación de símbolos
esquematico (padre)
subesquemático (hijo, niño)
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ENTRADA DE ESQUEMÁTICOS
Jerarquización de Diseño iii
esquemático plano (a), esquemáticos jerárquicos (b), (c), (d)
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ENTRADA DE ESQUEMÁTICOS
BUSES
BUS: “wire” especial que lleva información sobre más de una señal
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ENTRADA DE ESQUEMÁTICOS
a En general una herramienta de “captura de esquemas” permite
P editar esquemáticos
colocar las componentes y conectarlas
asignar propiedades o atributos a las instancias
dar nombres a instancias y nodos
P generar símbolos para esquemáticos
P editar símbolos: dibujar símbolos a medida
P chequear (analizar) esquemáticos: identificar errores simples
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ENTRADA DE ESQUEMÁTICOS
Necesidad de HDLs
aDificultad de introducir cambios una vez concluido
el esquemático y generado su símbolo
EJEMPLO: Incorporar una señal adicional de reset a nuestro circuito
Nos puede obligar a retocar la posicion de todas las celdas instanciadas en el esquemático
Nos obliga a hacer un símbolo nuevo
Si el bloque es usado en un diseño jerarquizado las celdas a modificar son todas aquellas que usen la celda que ha sido modificada
Ejemplo catastrófico: Incluir una señal adicional de SET en unos
biestables usados como bloques básicos de un micro-controlador
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
HDLs DE BAJO NIVEL
a Los HDLs nos permiten la generación del netlist de un circuito sin
necesidad de pasar por la vista esquemático a partir de una descripción
comportamiento del mismo y haciendo uso de Herramientas de Síntesis
Ejemplo: Descripción de un MUX de 8b en HDL (VHDL).
entity Mux8 is
generic (TPD: TIME:= 1ns);
port (A, B: in BIT_VECTOR (7 downto 0);
Sel : in BIT:= ‘0’ ; Y : out BIT_VECTOR (7 downto 0));
end;
architecture Behave of Mux8 is
begin
Y <= A after TPD when Sel = ‘1’ else B after TPD;
end;
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
Descripción de Funciones Booleanas
HDLs DE BAJO NIVEL
Definiciones:
Teoremas:
#1: Mintérmino Término producto fundamental
= xy + xy = m 11 + m 00
#1: Una función lógica está descrita de
= ∑ m ( 0, 3 ) . forma unívoca si se especifican su ONSET, OFF-SET y DC-SET.
#2: ON-SET Conjunto de mintérminos
para los que la función es “1”.
#3: OFF-SET Conjunto de mintérminos para los que la función es “0”.
#2: ON-SET, OFF-SET y DC-SET no
pueden tener ningún mintérmino en
común.
#2: ON-SET, OFF-SET y DC-SET cubren por completo el espacio en que
#4: DC-SET Conjunto de mintérminos
está definida la función.
para los que la función está inespecificada “-”.
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
Descripción de Funciones Lógicas para ESPRESSO
.i 4
.o 1
.type f
.p 5
1000 1
0101 1
0000 1
0010 1
1101 1
.e
HDLs DE BAJO NIVEL
#1 Dando el ON-SET de manera que DC-SET= ∅ y
OFF-SET=not(ON-SET)
a).type f (en el fichero de entrada).
b)con el modificador -f en linea de com.
∪ y DC-SET; OFF-SET=not(ON#2 Dando el ON-SET
SET ∪ DC-SET)
a).type fd (en el fichero de entrada).
b)con el modificador -fd en linea de com.
#3 Dando el ON-SET y OFF-SET; DC-SET=not(ONSET ∪ OFF-SET)
a).type fr (en el fichero de entrada)
b)con el modificador -fr en linea de com.
#4 Dando el ON-SET, DC-SET y OFF-SET
a).type fdr (en el fichero de entrada)
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
Descripción de Funciones Lógicas para ESPRESSO
Comando
.i [d]
.o [d]
.type [f, fd, fr, fdr]
.phase [s] [s]....[s]
.p [d]
.e (.end)
#
HDLs DE BAJO NIVEL
Significado
Número de Variables de Entrada
Número de Variables de Salida
Tipo de Función de Entrada
Cadena con tantos 1 y 0 como funciones de salida
que define la polaridad a adoptar durante la minimización, 1 para el ON-SET y 0 para el OFF-SET
Número de Términos producto en la función.
Fin del fichero
Comienzo de un comentario.
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
Descripción de Funciones Lógicas para ESPRESSO
HDLs DE BAJO NIVEL
Funciones Multisalida
lista de cubos que tienen parte de entrada y parte de salida
La parte de entrada de cada
cubo representa un término producto mientras que cada posición del cubo es una variable.
0
1
-
El literal aparece complementado en el TP
El literal aparece tal cual en
el TP
El literal no aparece en el TP
Herramientas de Descripción de Circuitos a bajo Nivel
La parte de salida de cada cubo
se interpreta según el tipo de función descrita.
f
1 Pertene al ONfd
1 Pertenece al ON-SET
- Pertenece al DC-SET
fr
1 Pertenece al ON-SET
0 Pertenece al OFF-SET
fd
1 Pertenece al ON-SET
0 Pertenece al OFF-SET
- Pertenece al DC-SET
HDSE
Descripción de Funciones Lógicas para ESPRESSO
#Sumador de números de 2 bits
#sin entrada de acarreo
.i 4
.o 3
.type fr
.par 2 (1 3) (2 4)
.phase 011
00 00 000
00 01 001
00 10 010
00 11 011
01 00 001
01 01 010
01 10 011
01 11 100
10 00 010
10 01 011
10 10 100
10 11 101
11 00 011
11 01 100
11 10 101
11 11 110
.e
Herramientas de Descripción de Circuitos a bajo Nivel
HDLs DE BAJO NIVEL
Esta línea es un comentario
Esta línea es un comentario
Cuatro entradas
Tres salidas
Damos ON-SET y OFF-SET
Creamos 2 pares de variables (1er y 2o número)
La salida más significativa tiene polaridad negativa.
0+0=0
0+1=1
0+2=2
0+3=3
1+0=1
1+1=2
1+2=3
1+3=4
2+0=2
2+1=3
2+2=4
2+3=5
3+0=3
3+1=4
3+2=5
3+3=6
Fin del fichero
HDSE
Descripción de Funciones Lógicas para ESPRESSO
HDLs DE BAJO NIVEL
EJEMPLO DE MINIMIZACIÓN USANDO ESPRESSO:
A
B
C
F1 F2 F3
0
0
0
1
0
0
0
0
1
0
1
1
0
1
0
1
0
0
0
1
1
1
0
1
1
0
0
1
0
0
1
0
1
1
1
1
1
1
0
1
0
1
1
1
1
1
0
1
INPUT (6 términos):
F1 = A + B + !C
F2 = !BC
F3 = C + AB
Salida de ESPRESSO:
.i 3
.o 3
.p 5
1-- 100
11- 001
--0 100
-01 011
-11 101
.e
OUTPUT (5 términos):
F1 = A + BC + !C
F2 = !BC
F3 = BC + AB+!BC
ESPRESSO reduce los seis términos originales a estos cinco
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
ABEL: Advanced Boolean Equation Language
-Permite entrar a una herramienta de diseño la descripción del
comportamiento de un circuito lógico.
-Es un lenguaje de descripción de hardware (HDL) industrial
desarrollado por “Data I/O Corporation” para SPLDs.
-ABEL es mucho más simple que VHDL ó Verilog pero también es capaz
de describir sistemas de gran complejidad.
-ABEL puede usarse para describir el comportamiento de un
sistema en una variedad de formas, incluyendo ecuaciones
lógicas, tablas de verdad, y diagramas de estado, usando sentencias
tipo C.
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
ESTRUCTURA BÁSICA DE UN FICHERO ABEL
Un fichero fuente de ABEL contiene los siguientes elementos:
1-Cabecera: incluye “Module”, “Options” y “Title”.
2-Declaraciones (Declarations): “Pin”, “Constant”, “Node”, “Sets”,
“States”y “Library”.
3-Descripciones Lógicas: “Equations”, “Truth-table” y “State_diagram”.
4-Vectores de Test: “Test_Vectors”.
5-Final: “End”.
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
“Template” típico:
module nombre del módulo
[title string]
[deviceID device tipo_dispositivo;]
pin declarations
other declarations
equations
ecuaciones
[Test_Vectors]
Vectores de test
end nombre del módulo
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
Ejemplo “half adder”:
Modulo
module mi_primer_circuito;
A
SUM
mi_primer_circuito Carry_out
B
title ‘ee200 assignment 1‘
EE200XY
device ‘XC4003E‘;
“pines de entrada
A
B
SUM
Carry_out
0
0
0
0
0
1
1
0
“pines de salida
1
0
1
0
Sum, Carry_out pin 15,18 istype ‘com‘;
1
1
0
1
A,B pin 3, 5;
equations
SUM=(A&!B)#(!A&B);
Carry_out=A&B;
end mi_primer_circuito;
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
Sentencias más importantes
-Module: todos y cada uno de los ficheros fuentes comienza con una sentencia module seguida
del nombre del módulo (identificador). Ficheros fuentes muy largos a menudo están compuestos
por múltiples módulos con su propio título, ecuaciones y sentencias.
-Title: es opcional y puede usarse para identificar el proyecto. El nombre del título debe estar
entre comillas simples. La línea del título es ignorada por el compilador pero se maneja para
documentación.
-String: es una serie de caracteres ASCII encerrados por comas simples. Las “strings” se usan
para TITLE, sentencias de OPTIONS, y en declaraciones de pin, node y atributos.
-Device: esta declaración es opcional y asocia un identificador del dispositivo con un dispositivo
de lógica programable específico. La sentencia device debe finalizar con punto y coma. Cuando
estés usando la herramienta de CAD Xilinx para compilar el diseño, es mejor no poner esta
sentencia en el fichero fuente para mantener tu diseño independiente del dispositivo. Cuando tu
crees un proyecto nuevo en Xilinx especificarás el tipo de dispositivo (este puede cambiarse
también en la ventana de Project Manager usando el botón de Project Information). El formato es
device_id device ‘dispositivo_real‘;
como sigue:
EJEMPLO: Mi_Decodificador device ‘XC4003E‘;
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
-Comments: los comentarios pueden insertarse en cualquier lugar dentro del fichero y
comienzan con una comilla doble y finaliza con otra o al final de la línea, si esta llega primero.
-Pin: las declaraciones de pines que uno da al compilador usando nombres simbólicos, se
asocian con pines del dispositivo externo. El formato es:
[!] identificador_pin pin [#pin] [istype ‘atributos‘];
Se puede identificar más de un pin por línea:
[!] pin_id,pin_id,pin_id pin [#pin,#pin,#pin] [istype ‘atributos‘];
EJEMPLOS:
pin 2,3,4;
OUT1 pin 9 istype ‘reg‘;
ENABLE pin;
!Chip_sect pin 12 istype ‘com‘;
!S0..!S6 pin istype ‘com‘;
IN1,IN2,A1
El comando ! indica que la señal está activa en bajo (estará invertida). El comando
istype es un asignamiento de atributo opcional para un pin. ‘com‘ indica que la salida es una señal
combinacional y ‘reg‘ indica que es una señal registrada con un flip-flop. Este comando es sólo para
pines de salida.
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
-Node: las declaraciones de node tienen el mismo formato que las de pin. Definen señales
internas que no se conectan a pines externos. Ejemplo: tmp1 node [istype ‘com‘];
-Otras declaraciones: nos permiten definir constantes, sets, macros y expresiones para
simplificar el programa. Por ejemplo una declaración de constante tiene el siguiente formato:
id = expr;
Ejemplos:
A = 21;
C = 2*7;
ADDR = [1,0,1,1];
LARGE = B&C;
D = [D3,D2,D1,D0];
D = [D3..D0]; “notación vectorial (siempre que usemos D en una ecuación nos referiremos
al vector [D3,D2,D1,D0] “
-Números: Pueden introducirse en diferentes bases: binaria, octal, decimal y hexadecimal.
La base por defecto es la decimal. Para especificar la base se han de usar los siguientes símbolos:
NOMBRE
BASE
Binaria
Octal
Decimal
Hexadecimal
BASE
2
8
10
16
SÍMBOLO
^b
^o
^d (defecto)
^h
Herramientas de Descripción de Circuitos a bajo Nivel
EJEMPLOS: ABEL
35
^h35
^b101
Valor Decimal
35
53
5
La base por defecto se cambia con el directivo “Radix”.
HDSE
ABEL
HDLs DE BAJO NIVEL
-Directivos: permite la manipulación avanzada del fichero fuente y del proceso. Pueden
ubicarse en cualquier lugar dentro del código:
@ALTERNATE: permiten un conjunto alternativo de operadores lógicos: AND (*), OR (+), NOT (/).
Los operadores alternativos se mantienen efectivos hasta que pongamos el directivo @STANDARD
o lleguemos al final del módulo.
@RADIX expresión: cambia la base por defecto. La base por defecto es la decimal (10). La nueva base
especificada se mantiene vigente hasta que usemos otro directivo radix o hasta llegar al final del
módulo. Ejemplo: @radix 2; “cambia la base por defecto a la binaria
@radix 1010; “regresa desde binaria a decimal
-Sets: un set es un conjunto de señales o constantes que se usa para referirnos a un grupo de
señales por un único nombre. Es muy util para simplificar expresiones lógicas. Cualquier operación
que se aplique a un set se aplica a cada elemento de este.
Un set es una lista de constantes o señales separadas por comas o por el operador .., siempre entre []:
EJEMPLOS:
[D0,D1,D2,D3,D4,D5]
[D0..D5]
[D7..D15]
[b1,b2,a0..a3]
[!S7..!S0] “señales activas en bajo
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
-Accediendo a un set: podemos acceder a los elementos dentro de un set. Se usan valores
numéricos para indicar el índice del set. El número se refiere a la posición del bit en el set
comenzando por cero para el bit menos significativo del set:
D1=[D15..D0]; “declaración de set
X2=[X3..X0]; “declaración de set
X2:=D1[3..0]; “hace X2 igual a [D3,D2,D1,D0]
X2:=D1[7..4]; “hace X2 igual a [D7,D6,D5,D4]
-Operaciones con sets: la mayoría de las operaciones se pueden aplicar a un set y se realizan
sobre cada elemento de este de acuerdo a las reglas del algebra Booleana:
Ejemplo1:
Ejemplo2:
Signal=[D2,D1,D0]; “declaración del set Signal
[A,B]=C&D;
Signal=[1,0,1]&[0,1,1]; “Signal es igual a [0,0,1]
“es equivalente a dos sentencias
A=C&D;
B=C&D;
Ejemplo3:
[A1,B1]=[D1,D2]&[C3,C2];
Ejemplo4:
“es equivalente a
X&[A,B,C];
[A1,B1]=[D1&C3,D2&C2];
“es equivalente a
“o equivalente a
[X&A,X&B,X&C]
A1=D1&C3;
“sin embargo consideramos la siguiente expresión
A2=D2&C2;
2&[A,B,C];
“tenemos que convertir el número “2” a representación binaria (010)
[0&A,1&B,0&C];
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
Operadores de Relación
Operadores Lógicos
Operador
(defecto)
Descripción
Operador
Alternativo
&
AND
*
#
OR
+
!
NOT
/
$
XOR
:*:
Operadores Aritméticos
Operador
Descripción
a-b
Resta
a+b
Suma
>>
Desplaz. izda.
<<
Desplaz. dcha.
Herramientas de Descripción de Circuitos a bajo Nivel
Operador
Descripción
==
Igual
!=
Distinto
<
Menor
>
Mayor
<=
Menor o igual
>=
Mayor o igual
HDSE
ABEL
HDLs DE BAJO NIVEL
DESCRIPCIÓN LÓGICA
Un diseño lógico se puede describir de varias formas:
-Ecuaciones.
-Tabla de Verdad.
-Descripción de Estado.
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
Método I: Usando Ecuaciones
-Equations: usa la clave equations para comenzar las descripciones lógicas.
Equations especifica expresiones lógicas usando los operadores antes definidos o la sentencia
condicional “When-Then-Else”.
La sentencia “When-Then-Else” se usa en equations para describir una función lógica. Su formato es:
When condición THEN elemento=espresión;
When condición THEN ecuación;
Ejemplo de ecuaciones:
SUM = (A&!B)#(!A&B);
A0 := EN&!D1&D3&!D7;
WHEN (A==B) THEN D1_out=A1;
ELSE WHEN (A==C) THEN D1_out=A0;
WHEN (A>B) THEN {X1:=D1; X2:=D2;}
when (a != b) then
c:= mi_entrada ;
else
c:= mi_nodo_reg ;
c.clk = mi_reloj ;
Herramientas de Descripción de Circuitos a bajo Nivel
El signo = se usa para asignaciones combinacionales
El signo := se usa para asignaciones secuenciales.
Ejemplo:
Equations
mi_nudo_registro := mi_entrada
;
HDSE
ABEL
Método II: Usando Tablas
Están limitadas por la palabra
clave TRUTH_TABLE
El signo -> se usa para asignaciones combinacionales
El signo :> se usa para asignaciones secuenciales.
Ejemplo1:
TRUTH_TABLE
([control] -> [salida])
[0]
-> [dato_A] ;
[1]
-> [dato_B] ;
Herramientas de Descripción de Circuitos a bajo Nivel
HDLs DE BAJO NIVEL
Ejemplo2: Semi-Sumador
TRUTH_TABLE ([A,B] -> [Sum, Carry_out])
[0,0]
-> [0,0] ;
[0,1]
-> [1,0] ;
[1,0]
-> [1,0] ;
[1,1]
-> [0,1] ;
Ejemplo3: Semi-Sumador
“Definimos un set
IN=[A,B]; OUT=[Sum.Carry_out]:
TRUTH_TABLE (IN -> OUT)
0
-> 0 ;
1
-> 2;
2
-> 2;
3
-> 1;
HDSE
ABEL
Ejemplo5: Las tablas de verdad se pueden usar
tambien para describir maquinas secuenciales:
Module CNT3;
CLOCK pin; “señal de entrada
RESET pin; “señal de entrada
OUT pin istype ‘com‘; “señal de salida (combinacional) (se activa en al estado de cuenta 111)”
QC,QB,QA pin istype ‘reg‘; “señal de salida (tipo
registro) (salidas de los flip-flops) (estado de cuenta)”
[QC,QB,QA].CLK = CLOCK; “CLOCK es el reloj
de de los FF”
[QC,QB,QA].AR= RESET; “RESET es un reset
asíncrono (en alto el contador se resetea al estado 000)”
TRUTH_TABLE
( [QC,QB,QA] :> [QC,QB,QA] -> OUT )
[0 0 0] :> [0 0 1] -> 0 ;
[0 0 1] :> [0 1 0] -> 0 ;
[0 1 0] :> [0 1 1] -> 0 ;
[0 1 1] :> [1 0 0] -> 0 ;
[1 0 0] :> [1 0 1] -> 0 ;
[1 0 1] :> [1 1 0] -> 0 ;
[1 1 0] :> [1 1 1] -> 0 ;
[1 1 1] :> [0 0 0] ->
1;
end CNT3;
Herramientas de Descripción de Circuitos a bajo Nivel
HDLs DE BAJO NIVEL
Ejemplo4: XOR con dos entradas y un enable
“Se ilustra el uso de inespecificaciones
(.X.)
IN=[A,B]; OUT=[Sum.Carry_out]:
TRUTH_TABLE ([EN,A,B] -> OUT)
[0,.X.,.X.]
-> .X. ;
[1,0,0]
-> 0;
Sintaxis
TRUTH_TABLE (in_ids -> out_ids)
entradas
-> salidas;
TRUTH_TABLE (in_ids :> reg_ids)
entradas
:> salidas_reg;
TRUTH_TABLE
>out_ids)
(in_ids
:>
reg_ids
HDSE
-
ABEL
HDLs DE BAJO NIVEL
Método III: Usando Diagramas de Estado
Están
limitadas
por
la
palabra
clave
Declaración de los bits de estado (se declaran nom-
Sentencias condicionales:
-”IF-THEN-ELSE
-”GOTO”
-”CASE”
para definir el próximo estado
seguidas por un ”WITH”
opcional
bres de estados simbólicos en la sección Declaration).
rojo pin istype ‘reg’ ;
amarillo pin istype ‘reg’ ;
Ejemplo1:
“En la sección Declarations definimos primero los registros de estado “
Declaración de nombre y asignamiento de esta- SREG=[Q1,Q0]; “defininción de los
dos
registros de estado”
luces = [rojo, amarillo, verde] ;
S0=[0,0];
cruzar = [0,0,1];
S1=[1,1];
Definir el reloj para el conjunto
[rojo, amarillo, verde].clk = mi_reloj ;
State_diagram SREG
state S0: OUT1=1;
Definir las transiciones de estados.
if A then S1
else S0;
state S1: OUT2=1;
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
Formato ABEL: Extensiones punto.
.Q ó .FB
.AP
S
.D / T
D/T
nombre_señal.ext
Q
.CLK
Se usan las extensiones punto para
describir el circuito con más precisión. Las extensiones son muy
útiles y proporcionan un mecanismo
para referirnos especificamente a
señales internas y nodos asociados
a señales primarias.
Sintaxis:
.OE
R
.AR
Herramientas de Descripción de Circuitos a bajo Nivel
Algunas Extensiones Punto son de
propósito general (independientes
de la arquitectura o pin-to-pin) y
pueden usarse con una gran variedad de arquitecturas de dispositivos.
Otras Extensiones Punto se usan
para clases específicas de arquitecturas de dispositivos y se llaman
“detalladas”.
HDSE
ABEL
HDLs DE BAJO NIVEL
Comando
Ejemplo
Comentario
Module
module Mi_Módulo
Un diseño puede incluir muchos módulos
Title
title ‘El que queramos’
No es más que un string (importante !! usar las quotes)
Device
mi_dispositivo device ‘p102’ ;
mi_dispositivo es un ID para documentación.
Comment
“los comentarios van entre dobles comillas ”
“salvo si acaban en el fin de la línea
El fin de una línea significa el fin de un comentario, por lo que se puede
prescindir de cerrarlo si llegan hasta el fin de la línea.
@alternate
@alternate “ uso de símbolos alternativos
Operador
AND
OR
NOT
XOR
XNOR
Pin declaration
mi_reloj pin ;
Define mi_reloj como un pin
Equations
equations
out = in1 # in2 ;
Define lógica combinacional
out es el resultado de la Or(in1,in2)
Assignments
mi_salida = / mi_entrada ;
mi_salida es la inversa de mi_entrada
Signal Sets
D = [D0, D1, D2, D4] ;
Esto es un bus para ABEL
Suffix
mi_salida.re = CLR ;
mi_entrada.pr = PRE ;
CLR es un reset para el registro mi_salida
PRE es un preset para el registro mi_entrada
Addition
Count = [D0, D1, D2] ;
Count := Count + 1 ;
No se puede usar @alternate si se usa + para sumar
Enable
ENABLE IO3 = IO2 ;
IO3 = mi_entrada ;
Habilita el uso en un pin tipo tri-estado
Constants
k = [1,0,1] ;
K vale 5
Relational
D == K5 ;
D es igual a K5 (== != > < <= >=)
End
end Mi_Módulo
Se acabó
Herramientas de Descripción de Circuitos a bajo Nivel
Símbolo Alternativo
*
+
/
:+:
:*:
Por Defecto
&
#
!
$
!$
HDSE
ABEL
HDLs DE BAJO NIVEL
Formato ABEL: Vectores de Test
Está limitada por la palabra
clave TEST_VECTORS
Permiten realizar un Test funcional de la descripción lógica.
Los vectores se escriben utilizando el formato de las Tabla de
Verdad.
Señales especiales definidas
Características:
-Los vectores de Test son opcionales.
-Proporcionan un mecanismo para verificar la
operación correcta del circuito.
-Especifican la operación lógica esperada del
dispositivo lógico dando explicitamente las salidas como función de las entradas.
Sintaxis:
Test_vectors [nota]
.C. Pulso positivo
(input -> output)
.Z. Señal Triestado
[in_valores -> out_valores]
.
.
.
.X. Don’t care
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
Ejemplo 1
MODULE ejemplo1
mi_reloj pin; “Mi reloj es un pin de entrada
x7..x0 node istype ‘reg’ ; “x7,6,5,4,3,2,1 son nudos tipo registro
total7..total0 pin istype ‘reg’ ; “total7,6,5,4,3,2,1 son salidas tipo registro
x = [x7..x0]; “Genero un grupo x conteniendo todas las x i
total = [total7..total0]; “Genero un grupo total conteniendo todas las totali
equations “Empieza el módulo de ecuaciones
[x,total].clk = mi_reloj ; “Se asigna el reloj para los grupos x y total
x := x+1 ; “Se implementa un contador para x
total := total + x ; “Se acumula
test_vectors ([mi_reloj] -> [x, total]) “Se define un módulo de test
[.c.] -> [1,0]; “Primer ciclo, acumulado 0
[.c.] -> [2,1]; “Segundo ciclo, acumulado 1
[.c.] -> [3,3]; “Tercer ciclo, acumulado 1+2=3
[.c.] -> [4,6]; “Cuarto ciclo, acumulado 1+2+3=6
[.c.] -> [5,10]; “Quinto ciclo, acumulado 1+2+3+4=10
[.c.] -> [6,15]; “Sexto ciclo, acumulado 1+2+3+4+5=15
[.c.] -> [7,21]; “Séptimo ciclo, acumulado 1+2+3+4+5+6=21
[.c.] -> [8,28]; “...
[.c.] -> [9,36]; “...
END
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
Ejemplo 2
MODULE controlador
clk pin; “clk es un reloj de entrada
reset pin; “reset es un pin de entrada
count4..count0 node istype ‘reg’ ; “count 4,3,2,1 son nudos tipo registro
contador= [count4..count0]; “Genero un grupo contador
rojo pin istype ‘reg’ ; “ rojo es una salida de registro
amarillo pin istype ‘reg’ ; “ amarillo es una salida de registro
verde pin istype ‘reg’ ; “ verde es una salida de registro
luces = [rojo, amarillo, verde ] ; “ Defino el grupo de luces
pasar = [0 , 0 , 1] ; “ Asignamiento de estados
cuidado = [0 , 1, 0] ; “ Asignamiento de estados
parar = [1 , 0 , 0] ; “ Asignamiento de estados
equations “Empieza el módulo de ecuaciones
verde.ap =reset ; “ cuando se resetea se hace un set al verde
rojo.ar =reset ; “ un reset al rojo
amarillo.ar =reset ; “ y un reset al amarillo (Se parte del estado pasar)
contador.ar =reset ; “Se resetea la cuenta.
contador.clk =clk ; “ Se define el reloj del grupo contador
luces.clk = clk ; “ Defino el grupo de luces
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
ABEL
HDLs DE BAJO NIVEL
Ejemplo 2 (cont)
State_Diagram luces
state pasar :
IF (contador < 30) then pasar with
contador := contador + 1 ;
ELSE goto cuidado with
contador := contador + 1 ;
state cuidado :
IF (contador != 0 ) then cuidado with
contador := contador + 1 ;
ELSE goto parar with
contador := contador + 1 ;
state parar:
IF (contador < 30) then parar with
contador := contador + 1 ;
ELSE goto pasar with
contador := 1 ;
END
Herramientas de Descripción de Circuitos a bajo Nivel
HDSE
Descargar