Vous êtes sur la page 1sur 3

TP VHDL-ELEC 4

TP n°2

Machines à états finis

Objectifs
L’objectif de ce travail est d’illustrer la description comportementale en langage VHDL de
machines à états finis, autonomies ou comme séquenceur d’un chemin de données.

I Introduction
On rappelle qu’un automate à état fini (Finite State Machine) constitue un modèle
d’architecture des circuits numériques dans lequel un registre interne mémorise l’état courant
du processus, tandis qu’une logique combinatoire permet de calculer l’état suivant à
appliquer, au front d’horloge s’il s’agit d’un système synchrone, ou sur modification d’une
entrée lorsqu’il s’agit d’un système asynchrone. A cette logique de génération des états
suivants s’ajoute la logique de détermination des sorties. Selon que cette dernière dépend ou
non des entrées, on parle de machine de Mealy ou de machine de Moore. Dans le cas de
circuits mettant en œuvre des traitements numériques plus ou moins complexes, une machine
d’état est souvent utilisée comme description du fonctionnement d’une unité de contrôle du
chemin de données. On parle également de séquenceur. Dans ce TP, on se propose d’illustrer
la description de machines à états sous forme algorithmique.

II Contrôle d’une mémoire asynchrone


Il s’agit ici d’illustrer la description de machines à états finis synchrones en VHDL au
travers d’un circuit de contrôle d’une mémoire asynchrone. Le diagramme de contexte du
circuit (figure 3) montre que la mémoire à contrôler est asynchrone (pas de signal de
commande). Le rôle du circuit de contrôle est de générer les signaux de lecture (oe) ou
d’écriture (we) en réponse aux signaux ready et read/write provenant d’un microprocesseur,
par exemple. On parle de handshake. Le principe de fonctionnement est le suivant :

oe
ready
Contrôleur Mémoire
Microprocesseur
read/write de mémoire
we

Figure 1 : Circuit de contrôle d'une mémoire.


Une nouvelle transaction vers la mémoire débute toujours avec l’affirmation du signal
ready. Un cycle d’horloge plus tard, la valeur read_write détermine s’il s’agit d’un cycle de
lecture (read_write=1) ou d’écriture (read_write=0). Un cycle se termine par une nouvelle
affirmation du signal ready. Les sorties (output enable) oe et (write enable) we sont
respectivement vraies (à ‘1’) durant un cycle de lecture et un cycle d’écriture.
Travail demandé
A. A l’aide d’un process unique, synchrone à une horloge comprenant une instruction case
permettant de spécifier l’état des sorties et les états suivants pour chaque état courant,
décrivez le comportement reproduisant celui décrit par le diagramme à états finis de la
Figure 2.

-1-
TP VHDL-ELEC 4
TP n°2
B. Dans un second fichier, définissez un testbench et simulez votre circuit en faisant
apparaitre la variable d’état. Commentez.
C. A la suite de la première description, définissez une nouvelle architecture utilisant 1
process pour mémoriser l’état courant sur front d’horloge et un process combinatoire
générateur des sorties et de l’état suivant. Re-simulez avec cette architecture en modifiant la
configuration dans l’architecture de test. Que remarquez vous ?
ready
oe=0
we=0
idle

ready
ready ready

décision oe=0
we=0
read_write
read_write
write read

ready oe=0 oe=1 ready


we=1 we=0

Figure 2 : Diagramme d'états de la machine de Moore.

III Séquenceur d’un système de mesure


La figure ci-dessous rappelle le chemin de données d’un circuit permettant la mesure d’une
distance par capteur laser, circuit étudié en électronique numérique en ELEC3. Le chemin de
donnée permet d’effectuer diverses opérations (mémorisation, décalages, etc). Dans cette
architecture, on rappelle que le chemin de données est composé d’un bloc séquentiel
permettant d’incrémenter le temps T et d’un bloc séquentiel permettant de mémoriser la
valeur finale correspondant au temps de vol/2. 2 blocs combinatoires complètent cette
description pour détecter une valeur limite de fonctionnement (2048 périodes d’horloge) et
pour décaler la valeur d’une position vers la droite (division par 2).

-2-
TP VHDL-ELEC 4
TP n°2

rst T0/Razd

B L
B

T4/shiftT T1/RazT
S
B
S.Z/ HL
S
HL
T2/L
T3/incT

S. Z
Unité de 
contrôle
Z shiftT RazD
IncT RazT

=2047

raz
raz
ld
inc registre D
Compteur T
avec raz Q >>1 E Q

Chemin de 
H
données

Figure 3: Solution architecturale du circuit de mesure


Dans cette exercice, on ne s’intéresse qu’à la partie séquenceur qui pilote les opérations du
chemin de données en fonction d’entrées externes (b pour la mise en marche de la mesure, s
qui détecte la présence de l’écho du signal L) et de l’indicateur d’état z. Il distribue en retour
les signaux incT,razT,shiftT,razD vers la partie opérative et fournit les signaux HL (hors
limite) et L (signal laser) vers les dispositifs externes.

Travail à réaliser:

A. Donnez une description de l’entité sequenceur en considérant l’ensemble des


signaux de l’interface de type bit.
B. Donnez une description de l’unité de contrôle du circuit à l’aide de deux processus.
C. Développez une entité et une architecture de test du circuit. On considérera 2
scénario (2 architectures de test): un cas de mesure valide (par exemple S vrai au
bout de 15 fronts d’horloge) et un cas de mesure hors limites (Z à vrai au bout des
2048 fronts d’horloge).
D. Simulez en faisant notamment apparaître l’évolution de l’état interne sur le
chronogramme. Vérifiez attentivement le timing des sorties L et HL vis-à-vis des
conditions d’entrées. Que peut-on craindre éventuellement pour HL en tant que sortie
de mealy ?

-3-