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