Master EEA

Ce document présente les concepts fondamentaux des machines à états finis (MEF) synchrones, leur modélisation, leurs caractéristiques et leur implémentation en VHDL. Il s’adresse aux étudiants en électronique numérique et informatique industrielle souhaitant comprendre la conception et la programmation de machines à états pour le contrôle des systèmes numériques.

D'après le document Master EEA

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source

Master EEA

Machine à Etats Finis, VHDL, Systèmes numériques · PDF · 22 pages

Afficher l'aperçu du document

Consulter le document original →

Ce document présente les concepts fondamentaux des machines à états finis (MEF) synchrones, leur modélisation, leurs caractéristiques et leur implémentation en VHDL. Il s’adresse aux étudiants en électronique numérique et informatique industrielle souhaitant comprendre la conception et la programmation de machines à états pour le contrôle des systèmes numériques.

Système numérique : unité de traitement et unité de contrôle

Un système numérique se compose de deux parties principales :

  • Unité de traitement des données : elle réalise des opérations combinatoires (additionneur, comparateur, unité arithmétique et logique - UAL) et séquentielles (registre à décalage, compteur).
  • Unité de contrôle : elle synchronise les tâches à l’aide d’automates, séquenceurs ou machines à états finis, en générant les signaux de contrôle nécessaires.

Les données entrantes sont traitées par l’unité de traitement sous le contrôle de l’unité de contrôle, qui pilote le système via des signaux de commande.

Machines synchrones à états finis

Une machine à états finis (automate) est un opérateur séquentiel qui peut se trouver dans un état parmi un ensemble fini d’états. Le passage d’un état à l’autre se fait généralement sur un front d’horloge (montant ou descendant).

Les machines à états peuvent être classées en deux types principaux :

Machine de MOORE

  • Les sorties dépendent uniquement de l’état interne.
  • Avantages : structure régulière, synchronisme des sorties, filtrage des perturbations sur les entrées.
  • Inconvénient : le temps de réponse est d’un cycle d’horloge.

Les équations caractéristiques sont :

Sortiest = f(Etatst)
Etatst+1 = f(Entréest, Etatst)

Schéma fonctionnel :

  • Un réseau combinatoire traite les entrées et l’état présent pour générer l’état futur.
  • Des bascules D mémorisent l’état présent.
  • Un réseau combinatoire de sorties génère les sorties en fonction de l’état présent.

Machine de MEALY

  • Les sorties dépendent de l’état interne et des entrées.
  • Avantages : simplification des sorties et réduction des temps de réponse.
  • Inconvénient : asynchronisme des sorties, qui ne sont pas toujours synchrones avec l’horloge.

Les équations caractéristiques sont :

Sortiest = f(Etatst, Entréest)
Etatst+1 = f(Etatst, Entréest)

Schéma fonctionnel :

  • Le réseau combinatoire d’entrée calcule l’état futur.
  • Le réseau combinatoire de sortie dépend de l’état présent et des entrées.
  • Les bascules D mémorisent l’état présent.

Diagramme d’états et transitions

La représentation graphique d’une machine à états finis est le diagramme d’états. Chaque état est représenté par un nœud, et les transitions entre états sont conditionnées par des conditions logiques sur les entrées.

  • Transition conditionnelle : prise en compte sur front d’horloge, dépend d’une condition sur les entrées. Il doit y avoir au moins deux transitions conditionnelles à partir d’un état.
  • Transition inconditionnelle : prise en compte immédiatement sur front d’horloge, une seule transition inconditionnelle par état.

Les règles logiques à respecter dans un graphe d’états sont :

  • Loi d’exclusion mutuelle : à partir d’un état, toutes les conditions doivent être définies.
  • Une seule condition doit être vérifiée à la fois, garantissant qu’un seul état est activé.

Exemple : Codeur 1 vers 2 bits

Spécifications :

  • Si din = 0 alors dout = 00
  • Si din = 1 alors dout = 01 ou 10 en alternance

Ce codeur peut être implémenté soit en machine de MEALY soit en machine de MOORE.

Implantation VHDL d’une machine à états finis

La séquentialité est gérée par un process en VHDL. Les états sont représentés par un signal ou une variable :

  • Signal : assignation différée, prise en compte à la fin du process, permet le synchronisme naturel entre état présent et état futur.
  • Variable : assignation immédiate, prise en compte instantanée.

La structure conditionnelle CASE ... IS est utilisée pour gérer les transitions d’états.

Implantation d’une machine de MOORE en VHDL

Exemple avec un seul process :

PROCESS(clk)
BEGIN
  IF rising_edge(clk) THEN
    CASE etat IS
      WHEN etat1 =>
        Sortie <= ...;
        IF entree = ... THEN
          etat <= etat2;
        END IF;
      ...
    END CASE;
  END IF;
END PROCESS;

Cette architecture utilise deux registres, avec un effet de pipeline induisant une latence d’un cycle d’horloge.

Exemple avec deux process :

  • Process synchrone (sur horloge) : gestion des transitions d’états.
  • Process combinatoire (sur état) : génération des sorties.
PROCESS(clk)
BEGIN
  IF rising_edge(clk) THEN
    CASE etat IS
      WHEN etat1 =>
        IF entree = ... THEN
          etat <= etat2;
        END IF;
      ...
    END CASE;
  END IF;
END PROCESS;

PROCESS(etat)
BEGIN
  CASE etat IS
    WHEN etat1 =>
      sortie <= ...;
    ...
  END CASE;
END PROCESS;

Implantation d’une machine de MEALY en VHDL

Deux process sont également utilisés :

  • Process synchrone : gestion des transitions d’états.
  • Process combinatoire : génération des sorties dépendant de l’état et des entrées.
PROCESS(clk)
BEGIN
  IF rising_edge(clk) THEN
    CASE etat IS
      WHEN etat1 =>
        IF entree = ... THEN
          etat <= etat2;
        END IF;
      ...
    END CASE;
  END IF;
END PROCESS;

PROCESS(etat, entree)
BEGIN
  CASE etat IS
    WHEN etat1 =>
      IF entree = ... THEN
        sortie <= ...;
      ELSIF ... THEN
        ...
      END IF;
    ...
  END CASE;
END PROCESS;

Exemple complet : Codeur 1 vers 2 en VHDL

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY codeur IS
  PORT (
    clk, reset, din : in std_logic;
    dout : out std_logic_vector(0 TO 1)
  );
END;

ARCHITECTURE comp OF codeur IS
  TYPE liste_etat IS (E0, E1, E2, E3);
  SIGNAL etat : liste_etat;
BEGIN
  P1 : process(clk, reset)
  BEGIN
    IF reset = '0' THEN
      etat <= E0;
    ELSIF (clk = '1' AND clk'event) THEN
      CASE etat IS
        WHEN E0 =>
          IF din = '1' THEN etat <= E1; END IF;
        WHEN E1 =>
          IF din = '1' THEN etat <= E3;
          ELSE etat <= E2; END IF;
        WHEN E2 =>
          IF din = '1' THEN etat <= E3; END IF;
        WHEN others =>
          IF din = '0' THEN etat <= E0;
          ELSE etat <= E1; END IF;
      END CASE;
    END IF;
  END PROCESS P1;

  P2 : process(etat)
  BEGIN
    CASE etat IS
      WHEN E0 => dout <= "00";
      WHEN E1 => dout <= "01";
      WHEN E2 => dout <= "00";
      WHEN others => dout <= "10";
    END CASE;
  END PROCESS P2;
END comp;

Protocole de communication entre composants

Les échanges d’informations entre deux composants nécessitent un protocole garantissant la transmission et la réception des données.

  • Composant 1 (Master) : envoie les données data1to2 et doit savoir quand les envoyer et si elles ont été reçues.
  • Composant 2 (Slave) : doit être disponible pour recevoir les données et garantir leur réception.

Signaux de contrôle

  • REQ (Requête) : signal envoyé par le Master pour indiquer l’envoi des données.
  • ACK (Acquittement) : signal envoyé par le Slave pour confirmer la réception des données.

Protocole hand-shake (demande-réponse entrelacée)

  1. L’utilisateur envoie une donnée X et signale l’envoi par REQ = 1.
  2. La machine prend en compte X et signale la réception par ACK = 1.
  3. L’utilisateur constate la prise en compte et remet REQ à 0.
  4. La machine constate que l’utilisateur a vu la prise en compte et remet ACK à 0.

Glossaire des termes clés

  • Automate : opérateur séquentiel pouvant être dans un état parmi un ensemble fini.
  • Machine à états finis (MEF) : système numérique dont le comportement est défini par un nombre fini d’états et de transitions.
  • Machine de MOORE : machine dont les sorties dépendent uniquement de l’état interne.
  • Machine de MEALY : machine dont les sorties dépendent de l’état et des entrées.
  • Bascules D : éléments mémoires synchrones utilisés pour stocker l’état présent.
  • Process VHDL : bloc séquentiel décrivant un comportement synchronisé ou combinatoire.
  • Signal : variable VHDL dont l’assignation est différée, utilisée pour le stockage et la synchronisation.
  • Variable : variable VHDL dont l’assignation est immédiate, utilisée pour les calculs internes au process.
  • REQ (Requête) : signal indiquant une demande d’envoi de données.
  • ACK (Acquittement) : signal confirmant la réception des données.

Points clés à retenir

  • Les machines à états finis sont essentielles pour la synchronisation et le contrôle des systèmes numériques.
  • La machine de MOORE offre un synchronisme des sorties et une meilleure immunité aux perturbations, au prix d’un délai d’un cycle d’horloge.
  • La machine de MEALY permet des sorties plus rapides mais asynchrones, ce qui peut compliquer la conception.
  • Les diagrammes d’états permettent de visualiser clairement les transitions et conditions logiques des machines.
  • En VHDL, les machines sont souvent implémentées avec un ou deux process pour séparer la logique synchrone et combinatoire.
  • Les protocoles de communication entre composants utilisent des signaux REQ et ACK pour garantir la transmission fiable des données.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions