}}}
[[PageOutline]]
= 1 Introduction =
Un circuit combinatoire pur ne dispose pas
de registres internes. De ce fait, ses sorties
ne dépendent que de ses entrées primaires.
A l'inverse, un circuit séquentiel synchrone
disposant de registres internes voit ses sorties
changer en fonction de ses entrées mais aussi
des valeurs mémorisées dans ses registres.
En conséquence, l'état du circuit à l'instant t+1
dépend aussi de son état à l'instant t. Ce type
de circuit peut être modélisé par un automate
d'états finis.
FIG. 2 Automate d'états
= 2 Automates de MOORE et MEALY =
L'automate de MOORE voit l'état de ses sorties changer uniquement sur front d'horloge.
Les entrées peuvent donc bouger entre deux fronts sans modier les sorties. Par
contre dans le cas d'un automate de MEALY, la variation des entrées peut modier à
2.3 SYF et VHDL
An de décrire de tels automates, on utilise un style particulier de description
VHDL qui dénit l'architecture "fsm" (finite-state machine).
Le chier correspondant possède également l'extension fsm. A partir de ce chier,
l'outil SYF effectue la synthèse d'automate et transforme cet automate abstrait en un
réseau booléen. SYF génère donc un chier VHDL au format vbe. Comme la plupart
des outils utilisés au laboratoire, il faut positionner certaines variables d'environnement
avant d'utiliser SYF. Pour les connaître, reportez-vous au man de syf.
2.4 Exemple
An de se familiariser avec la syntaxe de description d'un chier .fsm, un exemple
de compteur de trois "1" successifs est présenté. Sa vocation est de détecter par exemple
sur une liaison série une séquence de trois "1" successifs. Le graphe d'états que l'on
cherche à décrire est représenté sur la gure 4.
Le format fsm est également décrit dans une page man. Pensez à la consulter.
E0
E1
E2
E3
o=0
o=1
0
0
0
0 1
1 1
1
reset
reset
reset
o=0
o=0
FIG. 4 Graphe d'états d'un compteur de trois "1" successifs
entity circuit is
port (
ck, i, reset, vdd, vss : in bit ;
o : out bit
) ;
end circuit ;
architecture MOORE of circuit is
type ETAT_TYPE is (E0, E1, E2, E3) ;
signal EF, EP : ETAT_TYPE;
pragma CURRENT_STATE EP
pragma NEXT_STATE EF
pragma CLOCK CK
begin
process (EP, i, reset)
begin
ACSI M2 5
TP2 Synthèse logique et génération de chemin de données
if (reset=’1’) then
EF<=E0;
else
case EP is
when E0 =>
if (i=’1’) then
EF <= E1 ;
else
EF <= E0 ;
end if ;
when E1 =>
if (i=’1’) then
EF <= E2 ;
else
EF <= E0 ;
end if ;
when E2 =>
if (i=’1’) then
EF <= E3 ;
else
EF <= E0 ;
end if ;
when E3 =>
if (i=’1’) then
EF <= E3 ;
else
EF <= E0 ;
end if ;
when others => assert (’1’)
report "etat illegal";
end case ;
end if ;
case EP is
when E0 =>
o <= ’0’ ;
when E1 =>
o <= ’0’ ;
when E2 =>
o <= ’0’ ;
when E3 =>
o <= ’1’ ;
when others => assert (’1’)
report "etat illegal" ;
end case ;
end process ;
process(ck)
begin
if (ck=’1’ and not ck’stable) then
EP <= EF ;
end if ;
end process ;
end MOORE ;
TP2 Synthèse logique et génération de chemin de données
= 5 Travail à effectuer =
Ecrire la description d'un compteur de cinq "un" successifs sous la forme d'un
automate de Moore.
Positionner les variables d'environnement.
Lancer SYF avec les options de codage -a, -j, -m, -o, -r et en utilisant les options
-CEV.
>syf -CEV -a -
Un chier Makele vous est fourni pour vous faciliter la vie !
répertoire : ~trncomun/TP/2006/TP2/Fichiers/Fournis/Compteur5/. Utilisez ce Make
le à compléter.
Visualiser les chiers .enc.
Ecrire un chier de vecteurs de test et simuler sous ASIMUT.
Que se passe-t-il si le reset n'est pas positionné en début de pattern ? Pourquoi ?
TP2 Synthèse logique et génération de chemin de données
3 Automate pour digicode
2.5 Travail à effectuer
Ecrire la description d'un compteur de cinq "un" successifs sous la forme d'un
automate de Moore.
Positionner les variables d'environnement.
Lancer SYF avec les options de codage -a, -j, -m, -o, -r et en utilisant les options
-CEV.
>syf -CEV -a -
Un chier Makele vous est fourni pour vous faciliter la vie !
répertoire : ~trncomun/TP/2006/TP2/Fichiers/Fournis/Compteur5/. Utilisez ce Make
le à compléter.
Visualiser les chiers .enc.
Ecrire un chier de vecteurs de test et simuler sous ASIMUT.
Que se passe-t-il si le reset n'est pas positionné en début de pattern ? Pourquoi ?
3 Automate pour digicode
L'exemple qui suit servira dans toute la suite du TP. On veut réaliser une puce
pour digicode dont le clavier est représenté sur la gure 5. Les spécications sont les
suivantes :
0
1 2 3
4 5 6
7 8 9
A B
O
FIG. 5 Clavier
Les chiffres de 0 à 9 sont codés en binaire naturel sur
la manière suivante :
A : 1010
B : 1011
Le digicode fonctionne en deux modes :
Mode Jour : La porte s'ouvre en appuyant sur "O"
Mode Nuit : La porte ne s'ouvre que si le code est
Pour distinguer les deux cas un "timer" externe calcule
entre 8h00 et 20h00 et '0' sinon.
Le digicode commande une alarme dès qu'un des chiffres
L'automate du digicode revient dans son état d'attente clavier
au bout de 5 secondes ou si l'alarme a sonné pendant
Pour cela il reçoit un signal reset du timer externe.
La puce fonctionne à une fréquence de 10MHz.
Toute pression d'une touche du clavier est accompagn
Celui-ci signale à la puce que les données en sortie
signal est à 1 durant un cycle d'horloge.
Le code est 53A17
L'interface de l'automate est le suivant :
in ck
in reset
in jour
in jour
in i[3 :0]
in O
in press_kbd
out porte
out alarm
ACSI M2 8
TP2 Synthèse logique et génération de chemin de données
3.1 Travail à effectuer
Dessiner le graphe d'états de l'automate. (Les corrections seront distribuées)
Le décrire au format .fsm .
Le synthétiser avec SYF en utilisant les options de codage -a, -j, -m, -o, -r et en
utilisant les options -CEV.
>syf -CEV -a -
Ecrire le chier .pat de vecteurs de test.
Simuler avec ASIMUT toutes les vues comportementales obtenues.
Adaptez le Makele (répertoire : ~trncomun/TP/2006/TP2/Fichiers/Fournis/digicode/)
pour qu'il couvre tous les encodages possibles.
Quelles sont vos remarques concernant la complexité des expressions (i.e temps)
et le nombre de registres (i.e surface) des descriptions comportementales suivant
les encodages ? En déduire les deux groupes d'encodage.
Comparer aussi leurs nombres de littéraux.
ACSI M2 9
TP2