abell;
DESCRIPTION
llTRANSCRIPT
-
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 A B
SUM
CARRY Half Adder
module Addition; title 'addition 2 bits' // optionnel, information complmentaire Addition device 'P16H8'; // optionnel, permet de spcifier le type de matriel cible : PAL16P8 " 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) ; // gnration des sorties en fonction des entres Carry_out = A & B; end ; Addition
-
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 Symboles Exemples
Binaire (base 2) ^b ^b1101
Octal (base 8) ^o ^o15
Hexadcimal (base 16) ^h ^hD
Dcimal (base 10) ^d ou rien 13
-
Les oprateurs
Les oprateurs logiques :
Oprateurs Descriptions Exemples
! Complment 1 ^b0010 = !^ b1101
& ET (AND) 10=15&10
# OU (OR) 12=8#4
$ OU exclusif (XOR) 15=10$5
!$ NON OU exclusif 0=10 !$5
-
Les oprateurs
Les oprateurs arithmtiques :
Oprateurs Description
- Ngation ou soustraction
+ Addition
* Multiplication
/ Division
% Reste de la division
>B Dcalage droite (de B bits)
-
Les oprateurs
Les oprateurs relationnels :
Les oprateurs relationnels donnent des
rsultats vrais (-1) ou faux (0).
Oprateurs Descriptions Exemples
== Egalit A==B or 3==5 (false)
!= Diffrent A!=B or 3 != 5 (true)
< Infrieur A= Suprieur et gal 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 Description
1 - !
2 & > * / %
3 + - # $ !$
4 == != < =
-
Les constantes
surtout utilises dans les vecteurs de tests
Constantes Description
.C. Impulsion dhorloge bas-haut-bas
.K. Impulsion dhorloge haut-bas-haut
.D. Front descendant dun signal dhorloge
.U. Front montant dun signal dhorloge
.X. Indiffrent
.Z. 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; // Ce qui est quivalent :
A = C & D;
B = C & D;
-
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] -> [SUM, CARRY] )
[ 0, 0 ] -> [0, 0 ] ; [ 0, 1 ] -> [1, 0 ] ; [ 1, 0 ] -> [1, 0 ] ; [ 1, 1 ] -> [1, 1 ] ;
-
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, A, B] -> OUT )
[ 0, .X.,.X.] -> .X.; [ 1, 0 , 0 ] -> 0 ; [ 1, 0 , 1 ] -> 1 ; [ 1, 1 , 0 ] -> 1 ; [ 1, 1 , 1 ] -> 0 ;