Lenguaje Abel (HDL)
Lenguaje Abel (HDL)
Lenguaje Abel (HDL)
ESTRUCTURA INTERNA
A continuacin se presenta la estructura tpica
de un programa en el lenguaje ABEL :
modulenombre del mdulo
[titlestring]
[deviceIDdevicedeviceType;]
declaraciones de pin
otras declaraciones
equations
ecuaciones
[Test_Vectors]
tested vectores
endnombre de mdulo
Operacin
Lgica
Smbolo
ABEL
Notacin
Booleana
Notacin
ABEL
* AND
&
AB
A&B
+ OR
A+B
A#B
/ NOT
:+: XOR
A"B
A$B
:*: XNOR
!$
A"B
A !$ B
!A
Programacin
Nmeros
Los nmeros pueden estar en cuatro diferentes bases: binario, octal,
decimal y
hexadecimal. La base predeterminada es la decimal. Se usan los
siguientes smbolos (maysculas o minsculas permitidos) par
a especificar la base
.
BASE
Symbol.
Binary
^b
Octal
^o
Decimal
10
^d (default)
Hexadecimal
16
^h
BASE NAME
Ejemplo:
Specified in ABEL
Decimal Value
35
35
^h35
53
^b101
Sets
Un set es una coleccin de seales o constantes
usadas para referenciar un grupo de seales por un
nombre. Un set es conveniente para simplificar
expresiones lgicas. Cualquier operacin que este
aplicada a un set, es aplicada a cada elemento.
[D0,D1,D2,D4,D5]
[D0..D6]
[b6..b0]
[D7..D15]
[b1,b2,a0..a3]
[!S7..!S0]
Operaciones Set
Muchas de las operaciones pueden ser aplicadas a
un set y son ejecutadas en cada elemento del set
de acuerdo a las reglas del lgebra Booleana. Las
operaciones son ejecutadas de acuerdo a
lasprioridades de operacin; los operadores
con la misma prioridad son ejecutados de
izquierda a derecha (al menos que use parntesis).
Ejemplo 6:
[b3,b2,b1,b0] = 2;"es equivalente a
b3=0,b2=0,b1=1,b0=0.
El nmero 2 es convertido a binario y
completado con ceros (0010).
Operadores
Hay cuatro tipos de operadores: lgico, aritmtico,
relacional y de asignacin.
a. Operadores Lgicos
La tabla siguiente muestra operadores lgicos.
Estos son ejecutados bit a bit.
Operador
(default)
Descripcin
Operador
alternado
NOT (complemento a
/
uno)
&
AND
OR
XOR: or exclusiva
:+:
!$
:*:
b. Operadores Aritmticos
La siguiente tabla muestra los operadores
aritmticos. Ntese que los ltimos cuatro
operadores no estn permitidos para los sets. El
signo menos puede tener un significado diferente:
usado entre dos operandos indica substraccin (o
suma a complemento a dos), mientras que usado
con un operador indica el complemento a dos.
Ejemplo
Descripcin
-D1
Complemento a dos
(negacin)
C1-C2
Substraccin
A+B
Adicin
A*B
Multiplicacin
A/B
A%B
<<
A<<B
>>
A>>B
Operador
Los siguientes
operadores no son
usados con los sets:
c. Operadores de Relacin
Estos operadores producen un valor
Booleano de verdadero (-1) o falso (0).
Ejemplo
Descripcin
==
A==B or 3==5
(false)
Igual
!=
<
Menor que
<=
A<=B or 3 <= 5
(true)
Menor o igual
que
>
>=
A>=B or !0 >= 5
(true)
Operador
Mayor o igual
que
d. Operadores de asignacin
Estos operadores son usados en una ecuacin para
asignar el valor de una expresin a una seal de
salida. Hay dos tipos de operadores de asignacin:
combinacionales y de registro. En un operador de
asignacin combinacional ocurre inmediatamente
sin retardo. La asignacin con registro ocurre con el
cambio del pulso de reloj asociado a la salida.
Operador
Descripcin
Asignacin Combinacional
:=
Asignacin de Registro
Descripcin Lgica
Un diseo lgico puede ser descrito
de la siguiente manera.
Ecuaciones
Tablas de la verdad
Descripcin de estados.
Ecuaciones
Usar el comandoequationspara empezar la
descripcin lgica. Equations especifica expresiones
lgicas usando los operadores descritos antes, o por
declaraciones "When-Then-Else".
Las declaraciones "When-Then-Else" son usadas en
ecuaciones para describir funciones lgicas. (Nota: "If
-Then-Else" es usado en la seccin de los diagramas
de estado para describir progresin de estados)
El formato de declaracin "When-Then-Else" es el
siguiente:
WHEN condition THEN element=expression;
ELSE equation;
or
WHEN condition THEN equation;
Tablas de verdad
El commando estruth-tabley la sintaxis es:
TRUTH_TABLE ( in_ids -> out_ids )
inputs -> outputs ;
o
TRUTH_TABLE ( in_ids :> reg_ids )
inputs :> reg_outs ;
o
TRUTH_TABLE
( in_ids :> reg_ids -> out_ids )
inputs :> reg_outs -> outputs ;
en donde "->" es para salidas combinacionales y :> para salidas
registradas. La primera lnea de la tabla de verdad (entre
parntesis) define las seales de entradas y salida. Cada lnea
debe finalizar con punto y coma. Las entradas y salidas pueden ser
simple seales o set's. Cuando se usan set's como entradas o
salidas, se usa la notacin del set normal, ej seales dentro de
corchetes y separadas por comandos. Las condiciones irrelevantes
don't care se representan con X.
Descripcin de estado
La seccin de diagrama de estado contiene la
descricin de estado para el diseo lgico. Esta
seccin usa la sintaxis State_diagram y las
declaraciones "If-Then-Else", "Goto", "Case" y
"With". Usualmente se declara nombres de
estado simblicos en la seccin de Declaracin,
el cual hace que la lectura se ms fcil.
Sintaxis deDeclaracin de estado:
state_id [, state_id ...] STATE ;
Ejemplo 1
Ejemplo 3
Implementar un decodificador de
binario a decimal con la GAL22V10
Name Ejem03 ;
PartNo 00 ;
Date 17/05/2013 ;
Revision 01 ;
Designer Julio ;
Company UNIAJC ;
Assembly None ;
Location ;
Device G22V10 ;
/*Terminales de entrada */
PIN [2..5] = A, B, C, D;
/*Terminales de salida */
PIN [13..20] = sa,sb,sc,sd,se,sf,sg,sdp;
/*Declaraciones */
FIELD entradas = [D,C,B,A];
FIELD salidas = [sdp,sg,sf,se,sd,sc,sb,sa];
/*Ecuaciones booleanas */
TABLE entradas => salidas {
'b'0000 => 'b'00111111;
'b'0001 => 'b'00000110;
'b'0010 => 'b'01011011;
'b'0011 => 'b'01001111;
'b'0100 => 'b'01100110;
'b'0101 => 'b'01101101;
'b'0110 => 'b'01111101;
'b'0111 => 'b'00000111;
'b'1000 => 'b'01111111;
'b'1001 => 'b'01100111;
'b'1010 => 'b'00000000;
'b'1011 => 'b'00000000;
'b'1100 => 'b'00000000;
'b'1101 => 'b'00000000;
'b'1110 => 'b'00000000;
'b'1111 => 'b'00000000
}