Sie sind auf Seite 1von 26

LENGUAJE ABEL(HDL)

ABEL es una marca registrada de Data I/O


Corporation y es el acrnimo de Advanced Boolean
Expression Language, permite implementar diseos
lgicos en dispositivos lgicos programables. Puede
ser utilizado para programar cualquier tipo de PLD y,
por tanto, es un lenguaje independiente del
dispositivo. El lenguaje ABEL se ejecuta en un
computador conectado a un programador de
dispositivos, independiente del lenguaje, en el que
se inserta el PLD.

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

La directiva@ALTERNATEle dice al compilador que


reconozca un conjunto alterno de smbolos para denotar las
operaciones lgicas; los cuales se presentan a continuacin:

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

Ej:Y= (!A # B # !E # D) & (A # B # E)

AsignacinDe Terminales, Variables Y


Constantes
Son lasinstruccionesque se utilizan para definir y
asignar terminales avariables, o asignar a variables
operaciones con variables o constantes.

Ejemplos de asignaciones de terminales:


PIN2 = a;/*asigna al terminal 2 la variable a*/
PIN2 = !a;/*asigna al terminal 2 la variable a
negada*/
PIN[2,3,4,5,6,7,8,9]=[A0,A1,A2,A3,A4,A5,A6,A7];
PIN[2..9] = [A0,A1,A2,A3,A4,A5,A6,A7];
PIN[2..9] = [A0..A7];
Ejemplos de asignaciones con variables
intermedias:Las variables intermedias no tiene
terminales asignados y sontilespara simplificar
las ecuaciones que generan las salidas.
X0 = A0&A1 # A1&A2;

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]

" rango incrementado

[b6..b0]

" rango decrementado

[D7..D15]
[b1,b2,a0..a3]

" rango entre un set ms largo

[!S7..!S0]

"rango decrementado de seales


activas-bajas

Indexando o accesando a un set


indexado permite acceder a elementos dentro de un
set. Usando valores numricos para indicar el set
index. Los nmeros refieren a la posicin del bit en el
set de inicio con 0 para el bit menos significativo del
set. Aqu se presentan algunos ejemplos.
D1 = [D15..D0]; "declaracin set
X2 = [X3..X0]; "declaracin 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]
Para acceder a un elemento del set, se usa la siguiente
sintaxis:
OUT = (X[2] == 1);

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

:+:

!$

XNOR: nor 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

Divisin de enteros sin signo

A%B

Mdulos: residuo de A/B

<<

A<<B

Intercala A a la izquierda por B


bits

>>

A>>B

Intercala A a la derecha por B


bits

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

!=

A!=B or 3 != 5 (true) Diferente

<

A<B or 3 < 5 (true)

Menor que

<=

A<=B or 3 <= 5
(true)

Menor o igual
que

>

A>B or -1 > 5 (true) Mayor 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

Implementar una compuerta OR y una


compuerta AND de dos entradas en una
GAL22V10.
Name
Ejem02 ;
PartNo 00 ;
Date
17/05/2013 ;
Revision 01 ;
Designer Julio ;
Company UNIAJC ;
Assembly None ;
Location ;
Device G22V10 ;

/*Terminales de entrada de la compuerta


AND*/
PIN 2 = A0 ;
PIN 3 = A1;
/*Terminales de entrada de la compuerta OR*/
PIN 4 = B0;
PIN 5 = B1;
/*Terminales de salida para las compuertas*/
PIN 23 = S0; /*Salida compuerta AND*/
PIN 22 = S1 ;/*Salida compuerta OR*/
/*Operaciones Logicas*/
S0 = A1&A0; /*Compuerta AND*/
S1 = B1#B0; /*Compuerta OR*/

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
}

Das könnte Ihnen auch gefallen