Tutorial introductorio al Lenguaje Abel

Anuncio
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
Tutorial introductorio al Lenguaje Abel ( Advanced Bolean Equations
Language).
1.Lenguaje Abel.
2.Estructura básica de un programa Abel.
2.1 Encabezado.
2.2 Declaraciones.
2.3 Descripción lógica.
2.3.1 Bloques de ecuaciones.
2.3.2 Tablas de verdad.
2.3.3 Diagrama de estados
2.3.3.4 Representación de máquinas secuenciales.
2.4 Vectores de Test.
3.Links y referencias
1. Lenguaje Abel
Abel es un lenguaje de descripción de hardware (HDL) que permite:
1. Describir un circuito digital.
2. Definir vectores de test para comprobar el funcionamiento del código
generado.
3. Generar un archivo .SVF .JEDEC para quemar un dispositivo lógico
programable como son los PLD y CPLD.
A continuación se presenta un compendio de los aspectos más relevantes de este
lenguaje. Esto no pretende ser una discusión completa que permita al lector
profundizar sus conocimientos. Si Usted ya está familiarizado con el lenguaje, este
escrito sólo le servirá como repaso.
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
1
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
2.Estructura básica de un programa Abel.
A continuación se presenta en la tabla 1 la estructura típica de un programa Abel.
Tabla 1
Estructura típica de un
Programa en Abel.
Encabezado
Module module_name
title string
Declaraciones
DeviceID device
deviceType
Declaraciones de pin
otras declaraciones
Descripción lógica
Equations
Ecuaciones
Vectores de Test
test_vectors
vectores de test
end module_name
2.1 Encabezado.
Tiene las siguientes palabras claves.
•
Palabra clave: module.
Esta palabra clave es necesaria pues indica el nombre y el comienzo del módulo.
Debe ir siempre un END al final del modulo. Programas largos pueden tener varios
módulos, cada uno con su propio nombre, título, declaraciones y ecuaciones.
•
Palabra clave: title.
Especifica un string de título que será incluido en los archivos de documentación
generada por el compilador.
•
Los comentarios se agregan comenzando el texto con comillas dobles.
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
2
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
2.2 Declaraciones.
A esta área corresponden los siguientes aspectos.
• Palabra clave: device.
La declaración device es opcional e incluye un identificador y un string que denota
el tipo de dispositivo. El compilador usa el nombre del dispositivo, para verificar que este
soporta las ecuaciones lógicas especificadas en el programa.
•
Palabra clave: pin (pin declaration)
Las declaraciones de pin informan al compilador acerca de los nombres asociados a
los pines del componente. Si el nombre de la señal declarada está precedida por un NOT
(!), entonces en el pin asociado se presentará el complemento de la señal en cuestión.
•
Palabra clave: node.
Se usa para declarar señales que no son conectadas a pines externos.
•
Palabra clave: istype.
Define una lista de atributos de una señal. Se puede usar después de una declaración
de pin o node. En el manual de referencia (pág 51) se encuentra una lista de atributos que
resulta interesante revisar. Un ejemplo es la palabra clave com que define una salida
combinacional.
•
Uso de range.
Un rango de nombre de señales puede definirse con el primer y último nombre de
del rango separados por ..., por ejemplo “L0...L5”.
•
Uso de Set.
Un Set es un conjunto de señales o constantes referenciadas con un solo nombre.
Cada operación aplicadas al Set es aplicada a cada una de las señales que lo componen.
•
También es posible declarar constantes y expresiones que pueden simplificar el
programa.
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
3
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
2.3 Descripción Lógica.
Un diseño lógico puede ser descrito de las siguientes maneras:
1. Bloques de ecuaciones.
2. Tablas de verdad.
3. Diagrama de estados.
2.3.1Bloques de ecuaciones.
Se utiliza la palabra clave equations para comenzar la descripción lógica. Las
ecuaciones se especifican con expresiones lógicas utilizando operadores o bloques “WhenThen-Else”.
Alguno de los operadores son los siguientes:
&
#
!
$
!$
Ejemplo 1.
En este ejemplo
Podemos revisar
algunos conceptos
ya conocidos.
AND
OR
NOT
XOR
XNOR
MODULE V7408
" Quad two input AND gate. Cuatro
ands de dos entradas.
" Declaraciones de señales de entrada
A0, A1, B0, B1, C0, C1, D0, D1 PIN;
" Declaraciones de señales de salida. Se
requiere definir un tipo de salida.
YA, YB, YC, YD PIN istype 'com';
EQUATIONS
YA = A0 &
YB = B0 &
YC = C0 &
YD = D0 &
A1;
B1;
C1;
D1;
END
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
4
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
2.3.2 Tablas de verdad.
Es otra manera de especificar funciones combinaciones lógicas. La forma general
de utilizar esta característica se muestra en la tabla 2.
Tabla 2
Estructura general
de una tabla de verdad
truth_table (input-list -> output-list)
input-value -> output-value;
....
input-value -> output-value;
Como se observa en la tabla 2 la tabla de verdad debe ir precedida por la palabra
clave truth_table. Las palabras input_value y output_value son los nombres de las
señales de entrada y salida de la tabla. En el ejemplo presentado en la tabla 3 se ilustra la
definición de una función mediante tablas de verdad.
Tabla 3
Definición de
una función mediante
tablas de verdad.
" Función de tres variables.
MODULE f3
" entradas
a, b, c PIN;
" salidas
f PIN ISTYPE 'COM';
EQUATIONS
truth_table ( [a, b, c]->f )
[0, 0, 0]-> 0;
[0, 0, 1]-> 1;
[0, 1, 0]-> 0;
[0, 1, 1]-> 1;
[1, 0, 0]-> 0;
[1, 0, 1]-> 0;
[1, 1, 0]-> 1;
[1, 1, 1]-> 1;
Test_vectors ( [a, b, c]->f )
[0, 0, 0]-> 0;
[0, 0, 1]-> 1;
[0, 1, 0]-> 0;
[0, 1, 1]-> 1;
[1, 0, 0]-> 0;
[1, 0, 1]-> 0;
[1, 1, 0]-> 1;
[1, 1, 1]-> 1;
END
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
5
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
2.3.4 Diagramas de estado.
En un sistema secuencial, para poder generar la salida en un tiempo dado, es preciso
conocer valores previos de algunas variables. No bastan los valores presentes de la entrada.
Es decir, debe almacenarse información concerniente a los valores de las entradas pasadas,
para poder generar la salida a partir de la entrada presente y los valores almacenados.
La información anteriormente mencionada, se almacena en estados internos. Los valores
que deben registrarse para recordar la situación, debida a los valores de las entradas
pasadas, se almacena en variables de estado.
En cualquier instante, una máquina secuencial está en uno de un número finito de
estados; éstos quedan determinados por el valor de las variables de estado. En la figura 1
podemos ver un esquemático de lo anterior.
2.3.3.4 Representación de máquinas secuenciales
Se entiende por representación, la descripción de cómo se pasa de un estado a otro,
debido a los cambios de las entradas. Las representaciones deben describir en forma precisa
y completa a la máquina.
Modelo de Mealy
Es un modelo secuencial en el cual la salida está asociada a las transiciones entre
estados. Las salidas y el próximo estado cambian instantáneamente con los cambios de las
entradas.
Diagrama de estados: Como muestra la figura 2, los estados se representan mediante
círculos, y por líneas rotuladas y orientadas a las transiciones.
El rótulo indica la entrada y la salida que provoca la transición. Se separan con un slash.
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
6
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
El diagrama de estados de la figura 2 se lee: Estando en el estado y, cuando llega la
entrada x se pasa al estado Y, con salida z.
A continuación se tiene en la figura 3 el diagrama de estados de una máquina
secuencial (Modelo de Mealy) que produce una salida alta cada vez que se detecta la
secuencia 0101 en la entrada; y salida cero en el resto de los casos.
En la tabla 4 se muestra el código en Abel para esta máquina de estrados.
En las declaraciones se emplea el tipo reg, para declarar una salida registrada; es decir, una
salida de un flip-flop D. En el diseño se tienen dos salidas: z es una salida combinacional,
asincrónica; mientras que la salida zs es de tipo sincrónica.
Luego se declara el registro de estado(sreg), en función de las salidas de los flip-flops.
También se efectúa un mapeo de nombres lógicos a físicos. Esto también se denomina
asignación de estados.
El estado inicial, será el estado A; cuyo nombre binario será [0, 0].
En las ecuaciones se indican las señales de entrada que ingresan al reloj(clock), a la
habilitación de la salida(enab, no se usa enable ya que es palabra reservada) y al reseteo
asincrónico de la macrocelda(reset).
Luego se describe el diagrama de estados de sreg, mediante la especificación de cada
estado.
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
7
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
En este se indican las transiciones de acuerdo a los valores de las entradas(esto se indica
con la sentencia if then else); y los valores que deben tomar las salidas(esto se realiza con la
sentencia with).
Debe notarse que las salidas registradas se asignan con :=, y que a las salidas
combinacionales se les asigna un valor con el signo igual. Pueden agruparse acciones,
mediante el uso de paréntesis cursivos{ }.
Finalmente se especifican vectores de prueba. Se emplea la constante .c. para modelar un
pulso de reloj.
Tabla4
Ejemplo de máquina
de estados
MODULE estado1
TITLE 'Diagrama de Estados. Modelo
de Mealy'
"Declaraciones
q1, q0, zs pin istype 'reg';
"Estado y Salida Registrada
clock, enab, reset, x pin ;
"Entradas z pin istype 'com';
"Salida Combinacional.
sreg = [q1,q0];
"Valores de los estados
A= 0; B= 1; C= 2; D= 3;
equations
[q1,q0,zs].clk= clock;
[q1,q0,zs].oe = !enab;
[q1,q0,zs].ar = reset; "Con reset
va a [0, 0](el estado A).
state_diagram sreg;
State A:
zs := 0;
if (!x) then B with z =
with z = 0;
State B:
if (!x) then B with z =
with z = 0;
State C:
if (!x) then D with z =
with z = 0;
State D:
if (!x) then B with z =
with {z = 1; zs := 1;}
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
0; else A
0; else C
0; else A
0; else C
8
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
test_vectors ( [clock,enab,reset, x]->[sreg,zs])
[.c. , 0 , 1 , 0 ]->[A ,0];
[.c. , 0 , 0 , 1 ]->[A ,0];
[.c. , 0 , 0 , 0 ]->[B ,0];
[.c. , 0 , 0 , 1 ]->[C ,0];
[.c. , 0 , 0 , 0 ]->[D ,0];
[.c. , 0 , 0 , 1 ]->[C ,1];
[.c. , 0 , 0 , 1 ]->[A ,0];
[.c. , 0 , 0 , 0 ]->[B ,0];
[.c. , 0 , 0 , 0 ]->[B ,0];
[.c. , 0 , 0 , 1 ]->[C ,0];
[.c. , 0 , 0 , 1 ]->[A ,0];
END
Como observamos el diagrama de estado contiene la descripción de estado para el diseño
lógico.
La sintaxis para un diagrama de estados se muestra en la tabla 5.
Tabla 5
Sintaxis de un
diagrama de estados.
•
•
state_diagram state_reg
STATE state_value : [equation;]
[equation;]
:
:
trans_stmt ; ...
La palabra clave state_diagram indica el comienzo de la descripción de una
máquina de estados.
La palabra clave STATE y todas las que se describen a continuación, describen
un estado del diagrama de estados. En particular STATE da al estado un nombre
o valor
• state_reg: es un identificador que define la señal que determina el
estado de la máquina.
• state_value: puede ser una expresión, un valor o un nombre
simbólico del estado.
• equation: define las salidas de la máquina de estado.
• tran_stmt: define el próximo estado.
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
9
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
Modelo de Moore
Modelo secuencial en el cual la salida sólo está asociada al estado presente. Las
salidas cambian sólo en cantos de sincronización del reloj.
El diagrama de estados asociado a este modelo se presenta en la figura 4.
Estando en estado y, con salida z; cuando ocurre la entrada x se pasa al estado Y,
con salida z2. La salida no cambia en la transición. Por esta razón, las salidas se asocian a
los estados.
A continuación se presenta un reconocedor de un patrón finito. Modelo de Moore
Sean: entrada x y salida z. La salida se activa cada vez que se presenta la secuencia 010, y
mientras que la secuencia 100 no se haya presentado, en cuyo caso la salida se desactiva
permanentemente. El diagrama de estados está representado en la figura 5.
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
10
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
El diseño queda implementado por el programa Abel ilustrado la tabla 5.
Tabla 5
MODULE fsm010
TITLE 'fsm010'
"Activa Z cada vez que llega 010 y
mientras no llegue 100.
"si llega 100 se activa Y, y permanece
en ese estado.
"Declaraciones
"Pines de entrada
clk, Xin, RESET pin;
"Pines de Salida
Q0, Q1, Q2 pin istype 'reg';
Z, Y pin istype 'com';
"Registro de Estado
SREG = [Q0, Q1, Q2];
"Definicion de Estados
S0 = [0,0,0]; " Estado Inicial.
state)
S1 = [0,0,1]; " secuencias tipo
S2 = [0,1,0]; " secuencias tipo
S3 = [0,1,1]; " secuencias tipo
S4 = [1,0,0]; " secuencias tipo
S5 = [1,0,1]; " secuencias tipo
S6 = [1,1,0]; " secuencias tipo
(Reset
...0
...01
...010
...1
...10
...100
equations
[Q0,Q1,Q2].clk= clk;
[Q0.ar, Q1.ar, Q2.ar] = RESET; "Con
Reset va a S0
" Z=!Q0&Q1&Q2; Y=Q0&Q1&!Q2;
"Modelo de Moore
state_diagram SREG
state S0: Z=0; Y=0; if Xin then S4 else
S1;
state S1: if Xin then S2 else S1;
state S2: if Xin then S4 else S3;
state S3: Z=1; if Xin then S2 else S6;
state S4: if Xin then S4 else S5;
state S5: if Xin then S2 else S6;
state S6: Y=1; goto S6;
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
11
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
test_vectors ([clk, RESET, Xin] -> [Z,Y])
[.C.,1,.X.] ->[0,0]; "reset
[.C.,0, 0] -> [0,0];
"secuencia 00101010010
[.C.,0, 0] -> [0,0];
[.C.,0, 1] -> [0,0];
[.C.,0, 0] -> [1,0];
[.C.,0, 1] -> [0,0];
[.C.,0, 0] -> [1,0];
[.C.,0, 1] -> [0,0];
[.C.,0, 0] -> [1,0];
[.C.,0, 0] -> [0,1];
[.C.,0, 1] -> [0,1];
[.C.,0, 0] -> [0,1];
END fsm010;
2.4 Vectores de prueba
Como se ha observado en muchos de los ejemplos entregados. Abel posee un
sistema opcional de vectores de prueba. El formato general de los vectores de test es similar
a las tablas de verdad y se muestra en la tabla 5.
Tabla 6
Estructura general
de los vectores de prueba
test_vectors (input-list -> output-list)
input-value -> output-value;
...
input-value -> output value;
Como se observa en la tabla 6 la tabla de vectores de test debe ir precedida por la
palabra clave test_vectors. Las palabras input_value y output_value dan los nombres a
las señales de entrada y salida de los vectores de prueba.
Para profundizar un poco más en la gran utilidad de estos vectores de prueba,
volvamos al ejemplo 1 de la pág. 4. Para este ejemplo podríamos escribir el siguiente
conjunto de vectores de prueba.
Test_vectors
( [A1, A0 ]
[0, 0]
[0, 1]
[1, 0]
[1, 1]
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
-> [YA])
->[ 0 ];
->[ 0 ];
->[ 0 ];
->[ 1 ];
12
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA
DEPARTAMENTO DE ELECTRONICA
ELO212 Laboratorio de Sistemas Digitales
Cada renglón define un vector, asignando valores a las entradas y salidas. La
primera línea, entre paréntesis redondos, muestra los identificadores de las señales de
entrada a la izquierda de la asignación; y la o las señales de salida a la derecha. Luego
vienen los valores de las entradas que se desea probar y la o las correspondientes salidas
que se desean verificar.
La simulación funcional aplica en las entradas los estímulos y calcula mediante las
ecuaciones o tablas de verdad los valores de las salidas; y revisa que éstos coincidan con las
salidas asignadas a cada uno de los vectores. Al final resume si las diferentes pruebas
pasaron o no.
AA Y
0 1 A
V0001
V0002
V0003
V0004
4
0
1
0
1
0
0
1
1
L
L
L
H
out of 4 vectors passed.
Efectuada la simulación temporal puede obtenerse la forma de onda de la salida (figura 6),
para los estímulos descritos en los vectores, las cuales muestran el retardo de propagación
del canto de subida de la señal de salida(YA):
3. Links y referencias.
•
Referencias
•
•
•
•
Xilinx-ABEL Design Software Reference Manual, Data I/O Corp., 1993.
The ABEL Hardware Design Language , 1999 by John F. Wakerly.
ABEL-HDL Reference Manual, Data I/O Corporation., 1999.
Links
•
•
http://www.elo.utfsm.cl/~lsb/elo211/aplicaciones/Pennsylvania/HDLABEL%20Primer.htm#State
http://www.elo.utfsm.cl/~lsb/elo211/elo211.html
Laboratorio de Sistemas Digitales.
Prof. Leopoldo Silva Bijit.
30-12-2002
13
Descargar