You are on page 1of 28

ABEL

Advanced Boolean Equation Language

Gnralits
ABEL est un langage de programmation
de PLD.
Cest un langage HDL (Hardware
Description Language) moins puissant que
VHDL.
ABEL: applications de petites et
moyennes importances implmenter
dans les PAL,GAL FPGA et CPLD.

Description du Langage
module mod_name [ ;]
[title string] [ ;]
[deviceID device deviceType ;]
[declaration] [ ;]
pin declarations ;

other declarations ;
equations [ ;]
equations

[" commentaires]
truth_table (entree >sortie)[ ;]
table de vrit ;
state_diagram etat[ ;]
diagramme dtat ;
[Test_Vectors (entree->sortie)] [ ;]
vecteurs de tests ;
end mod_name [ ;]

Exemple
Half Adder
module Addition;
title 'addition 2 bits'
Addition device 'P16H8';
matriel cible : PAL16P8

A
B

Half Adder

SUM
CARRY

// optionnel, information complmentaire


// optionnel, permet de spcifier le type de

" input pins


A, B pin 3, 5;
// la spcification du numro de broches
est optionnelle
" output pins
SUM, Carry_out pin 15, 18 istype 'com'; // le compilateur fait la diffrence
entre broches dentres et de sortie par le terme istype
equations
SUM = (A & !B) # (!A & B) ;
des entres
Carry_out = A & B;
end

; Addition

// gnration des sorties en fonction

lments syntaxiques
Module : en rgle gnrale le nom du
module a le nom du fichier source *.abl
(pour certains compilateurs cest mme
obligatoire). Il peut y avoir plusieurs
modules dans un source.
Title : permet de prciser la fonction
du module (optionnel).

lments syntaxiques
Device : optionnel. Cela permet dassocier au module
un circuit associ (le module sera implmenter dans le
circuit spcifi). Cependant pour garder le module
indpendant du circuit (pour pouvoir rutiliser le module
dans un autre circuit) il est prfrable de ne pas utiliser
cette directive. Il sera possible au niveau de la
compilation de prciser le PLD cible.

Exemple :
Mon_decod device 'P16V8'; // cible PAL16V8

dclarations
Pin : permet de prciser le nom des entres et des sorties
[!]pin_id pin [pin#] [istype 'attributes'] ;
On peut spcifier plusieurs noms sur une seule ligne :
[!]pin_id , pin_id, pin_id pin [pin#,
[pin#, [pin#]]] [istype 'attributes'];

Exemple :
IN1, IN2, A1 pin 2, 3, 4; // entres avec numro de
broche spcifi
OUT1 pin 9 istype 'reg';
// sortie de bascule active
ltat haut
ENABLE pin;
// entres dont le numro de broche
nest pas spcifier ( faire au niveau du compilateur)
!Chip_select pin 12 istype 'com'; // sortie combinatoire
active ltat bas.
!S0..!S6 pin istype 'com';
// sorties
combinatoires actives ltat bas

dclarations
Autres dclarations :
Il est possible de prciser des valeurs de
constantes , de macros ou densembles :
A = 21;
C=2*7;
ADDR = [1,0,11];
LARGE = B & C;
D = [D3, D2, D1, D0];
D = [D3..D0];

Les nombres
La reprsentation des nombres peut tre
binaire, octale, dcimale ou hexadcimale.
Si rien nest prcis, le compilateur adopte
la base dcimale.

Bases
Binaire (base 2)
Octal (base 8)
Hexadcimal (base 16)
Dcimal (base 10)

Symboles
^b
^o
^h
^ d ou rien

Exemples
^ b1101
^ o15
^ hD
13

Les oprateurs
Les oprateurs logiques :

Oprateurs
!
&
#
$
!$

Descriptions
Complment 1
ET (AND)
OU (OR)
OU exclusif (XOR)
NON OU exclusif

Exemples
^ b0010 = !^ b1101
10=15&10
12=8#4
15=10$5
0=10 !$5

Les oprateurs
Les oprateurs arithmtiques :

Oprateurs
+
*
/
%
<<
>>

Description
Ngation ou soustraction
Addition
Multiplication
Division
Reste de la division
A<<B Dcalage gauche (de B bits)
A>>B Dcalage droite (de B bits)

Les oprateurs
Les oprateurs relationnels :
Les oprateurs relationnels donnent des
rsultats vrais (-1) ou faux (0).
Oprateurs
==
!=
<
<=
>
>=

Descriptions
Egalit
Diffrent
Infrieur
Infrieur et gal
Suprieur
Suprieur et gal

Exemples
A==B or 3==5 (false)
A!=B or 3 != 5 (true)
A<B or 3 < 5 (true)
A<=B or 3 <= 5 (true)
A>B or -1 > 5 (true)
A>=B or !0 >= 5 (true)

Les oprateurs
Les oprateurs dassignement : 2 types
doprateurs dassignement : combinatoire et
squentiel.
= pour les oprations de logique combinatoire,
dans ce cas le signal prend la valeur donne
sans retard.
:= pour les oprations de logique squentielle,
dans ce cas le signal prendra la valeur aprs le
prochain front dhorloge.

Les oprateurs
Les niveaux de prcdence :

Niveau de priorit
1
2
3
4

Description
- !
& << >> * / %
+ - # $ !$
== != < <= >=

Les constantes
surtout utilises dans les vecteurs de tests
Constantes
.C.
.K.
.D.
.U.
.X.
.Z.

Description
Impulsion dhorloge bas-haut-bas
Impulsion dhorloge haut-bas-haut
Front descendant dun signal dhorloge
Front montant dun signal dhorloge
Indiffrent
sortie haute impdance

Les ensembles
Un ensemble est une collection de signaux ou
de constantes qui constitue un vecteur.
Exemple 1:
Signal = [D2,D1,D0];"dclaration de lensemble signal
Signal = [1,0,1] & [0,1,1];
" rsultat de signal gal [0,0,1]
Exemple 2:
[A,B] = C & D;
A = C & D;
B = C & D;

// Ce qui est quivalent :

Les ensembles (suite)


Exemple 3:

[A1,B1] = [D1,D2] & [C3,C2];


// Ce qui est quivalent :
[A1,B1] = [D1 & C3, D2 & C2];

Exemple 4:
X & [A,B,C];
// Ce qui est quivalent :
[X&A, X&B, X&C];
2 & [A,B,C];
//le nombre "2" est dabord remplace par son
//quivalent binaire (0010) .
//On obtient alors :
[0 & A, 1 & B, 0 & C];

Les ensembles (suite)


Exemple 5: Gnration du CS pour la slection des botiers de mmoire
Chip_Sel = !A7 & A6 & A5; //Cas classique
Addr = [A7,A6,A5]; " dclaration dun ensemble Addr
Chip_Sel = Addr == [0,1,1];" mme rsultat quen

Chip_Sel = Addr == 3; " dcimal 3 est gal 011.(mme


rsultat quen )
Ce principe est trs utile pour des variables de 16 bits ou plus.

Les diffrentes solutions


dimplmentation
Combinatoire:
Equations
Table de vrit

Squentiel
Table de vrit
Diagramme dtat

Equations
utiliser le terme Equations avant de
commencer
quations laide des oprateurs
Structure WhenThen Else.
WHEN condition THEN element=expression;
ELSE equation;
Ou
WHEN condition THEN equation;

Equations
Exemples :
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; }

Les tables de vrit


Il existe plusieurs solutions :
// table de vrit combinatoire
TRUTH_TABLE ( in_ids -> out_ids )
inputs -> outputs ;
ou
// table de vrit registre (tat suivant actif sur
front montant dhorloge)
TRUTH_TABLE ( in_ids :> reg_ids )
inputs :> reg_outs ;

Les tables de vrit


ou

// possibilit en plus de prciser les sorties


combinatoires fonctions des tats prsents
TRUTH_TABLE
( in_ids :> reg_ids -> out_ids )
inputs :> reg_outs -> outputs ;

avec "->" pour les sorties combinatoires et ":>" pour les


sorties de bascules.

Les tables de vrit


Les entres peuvent tre des signaux ou
des ensembles de signaux. Un signal non
spcifi est reprsent par la constante
".X.".

Les tables de vrit


Exemple 1 combinatoire: half adder (Cf
exemple donn page 1 dans lexemple)
TRUTH_TABLE ( [ A, B]
[ 0, 0 ] -> [0, 0 ] ;
[ 0, 1 ] -> [1, 0 ]
[ 1, 0 ] -> [1, 0 ]
[ 1, 1 ] -> [1, 1 ]

-> [SUM, CARRY] )


;
;
;

Les tables de vrit


En utilisant un ensembles IN = [A,B]; et OUT = [SUM,
CARRY]; La table de vrit devient plus simple :
TRUTH_TABLE (IN -> OUT )
0 -> 0;
1 -> 2;
2 -> 2;
3 -> 3;

Les tables de vrit


Exemple 2 combinatoire:
On dsire faire un OU exclusif entre 2 variables avec une entre
dactivation (EN). Cet exemple permet dillustrer les sorties non
spcifies (.X.)
TRUTH_TABLE ([EN,
[ 0, .X.,.X.]
[ 1, 0 , 0 ]
[ 1, 0 , 1 ]
[ 1, 1 , 0 ]
[ 1, 1 , 1 ]

A,
->
->
->
->
->

B] -> OUT )
.X.;
0 ;
1 ;
1 ;
0 ;

You might also like