ENSSAT 1997 Dan Truong
Langage AHDL
Apperçu de la syntaxe et des mots clés du langage.
/% note: un module par fichier. Le nom du module doit être le même que le nom du fichier /%
SUBDESIGN nomModule (signaux,... : INPUT; vecteur[],signaux,... : OUTPUT)
VARIABLE
fil : NODE;
/% déclare un fil intermédiaire %/bascule : DFF;
/% Bascule D "D-Flip-Flop" %/vbasc[0..3] : DFF;
/% Vecteur de bascules D %/...
/% Note: une bascule a des e/s de controle registre.clk,d,clrn /%
nomMach : MACHINE OF BITS ( ) WITH STATES( etat1...);
/% Note: une machine a etat a plusieurs e/s de controle: nomMach.clk,reset.
Optionnel: on peut déclarer les bascules utilisées pour coder les états. Dans ce cas, les états doivent être décrit en fonction de la valeur des bascules, par exemple ...(Q1,Q0) WITH STATES(etat1=00,...); /%
BEGIN
/% Ecriture des équations logiques, assignation des signaux de sortie du module et lecture des signaux d'entrée, lecture/écriture de bascules... /%
signaux = signaux & signaux;
vbascule[] = ...
vbascule[2..3] = ...
/% IMPORTANT: les assignations sont exécutées de manière concurentielles. Si il y a 2 assignations à une même variable, le compilateur fait un OU bit à bit /%
...
/% Définition d'une machine à état %/
CASE nomMach IS
WHEN etat1 =>
IF signal == signal
THEN nomMach= etat2;
ELSIF signal >= signal
THEN nomMach= etat3;
ELSE nomMach= etat1;
WHEN ... =>
...
END CASE;
END;
Opérateurs bit à bit:
= Assignation == Test d'égalité
| OU =! Test de différence
& ET
# OU-Exclusif
+ Addition binaire
! NOT