🔄 Logique Séquentielle - S5

Année: 2022-2023 (Semestre 5)
Crédits: 3 ECTS
Type: Électronique Numérique


PART A: PRÉSENTATION GÉNÉRALE

Objectifs du cours

Le cours de Logique Séquentielle approfondit la conception de circuits numériques dont l’état dépend de l’historique des entrées. Il couvre les machines à états finis (FSM), la conception synchrone et asynchrone, ainsi que les méthodes systématiques de conception de systèmes séquentiels complexes. Ce cours est fondamental pour concevoir des contrôleurs numériques, des protocoles de communication et des systèmes embarqués.

Compétences visées

Organisation


PART B: EXPÉRIENCE, CONTEXTE ET FONCTION

Contenu pédagogique

1. Éléments de Mémorisation

Bascules et Latches:

Les circuits séquentiels utilisent des éléments mémoire pour stocker l’état.

Latch SR (Set-Reset):

S R | Q  Q'
----|-------
0 0 | Q  Q'  (mémorisation)
0 1 | 0  1   (reset)
1 0 | 1  0   (set)
1 1 | X  X   (interdit)

Bascule D (Data):

La plus utilisée en conception synchrone.

Équation caractéristique: Q(t+1) = D(t)

Bascule JK:

J K | Q(t+1)
----|--------
0 0 | Q      (mémorisation)
0 1 | 0      (reset)
1 0 | 1      (set)
1 1 | Q'     (toggle)

Bascule T (Toggle):

Quand T=1, la sortie bascule: Q(t+1) = Q’(t)

Contraintes temporelles:

2. Machines à États Finis (FSM)

FSM de Moore:

Les sorties dépendent uniquement de l’état courant.

Structure:

Exemple: Détecteur de séquence “101”

Diagramme d’états Moore:

S0 (init, out=0) --[1]--> S1 (out=0)
S1 --[0]--> S2 (out=0)
S2 --[1]--> S3 (out=1)  // Séquence détectée!
S3 --[x]--> ...

FSM de Mealy:

Les sorties dépendent de l’état ET des entrées.

Avantage: souvent moins d’états que Moore.

Comparaison:

3. Méthodologie de Conception

Étapes de conception d’une FSM:

  1. Spécification: définir le comportement souhaité
  2. Diagramme d’états: représentation graphique
  3. Table d’états: forme tabulaire
  4. Minimisation: réduire le nombre d’états
  5. Codage d’états: assigner codes binaires
  6. Équations logiques: dériver next-state et output logic
  7. Implémentation: bascules + portes logiques

Exemple: Contrôleur de feu tricolore

États:

Entrées: timer, capteur véhicule Sorties: LED_V, LED_O, LED_R

Table d’états simplifiée:

État actuel | Timer | État suivant | Sorties
------------|-------|--------------|----------
VERT        | 0     | VERT         | V=1,O=0,R=0
VERT        | 1     | ORANGE       | V=1,O=0,R=0
ORANGE      | 0     | ORANGE       | V=0,O=1,R=0
ORANGE      | 1     | ROUGE        | V=0,O=1,R=0
ROUGE       | 0     | ROUGE        | V=0,O=0,R=1
ROUGE       | 1     | VERT         | V=0,O=0,R=1

4. Codage d’États

Binaire naturel:

One-Hot:

Gray:

Exemple 4 états:

État | Binaire | One-Hot | Gray
-----|---------|---------|------
S0   | 00      | 0001    | 00
S1   | 01      | 0010    | 01
S2   | 10      | 0100    | 11
S3   | 11      | 1000    | 10

5. Conception Synchrone

Règles de conception synchrone:

Fréquence maximale:

fmax = 1 / (tpd_logic + tsu + tskew)

où:

Stratégies de reset:

Reset asynchrone:

if (reset = '1') then
    state <= S0;
elsif rising_edge(clk) then
    state <= next_state;
end if;

Avantage: réinitialisation immédiate Inconvénient: peut causer métastabilité

Reset synchrone:

if rising_edge(clk) then
    if (reset = '1') then
        state <= S0;
    else
        state <= next_state;
    end if;
end if;

Avantage: synchronisé avec horloge Inconvénient: délai d’un cycle

6. Compteurs Avancés

Compteur modulo-N:

Compte de 0 à N-1 puis revient à 0.

Compteur décimal BCD: Compte de 0 à 9 (0000 à 1001).

Compteur up/down:

Entrée DIR: 1=up, 0=down

Exemple 3 bits up/down:

UP:   000 -> 001 -> 010 -> 011 -> 100 -> 101 -> 110 -> 111 -> 000
DOWN: 111 -> 110 -> 101 -> 100 -> 011 -> 010 -> 001 -> 000 -> 111

Compteur avec préchargement:

Entrée LOAD: charge valeur initiale Utilité: division de fréquence précise

7. Aspects Temporels

Métastabilité:

Phénomène lorsque setup/hold time violés. La bascule peut rester dans état indéterminé.

Solution: Synchroniseur à 2 étages

Entrée asynchrone -> [FF1] -> [FF2] -> Sortie synchrone
                       CLK      CLK

Réduit probabilité de métastabilité à ~10^-12.

Analyse de chemin critique:

Identifier le chemin logique le plus long entre deux bascules.

Exemple:

FF1 --[tpd=2ns]--> NAND --[tpd=3ns]--> XOR --[tpd=4ns]--> FF2
                                                          [tsu=1ns]

Délai total: 2 + 3 + 4 + 1 = 10ns Fréquence max: 1/10ns = 100MHz

Supports de cours: Cours Logique Séquentielle


PART C: ASPECTS TECHNIQUES

Exercices de TD

TD1: Conception de FSM

Exercice: Concevoir un détecteur de séquence “1011” (non chevauchant).

Solution:

États nécessaires:

Table de transition:

État | Entrée 0 | Entrée 1 | Sortie
-----|----------|----------|--------
S0   | S0       | S1       | 0
S1   | S2       | S1       | 0
S2   | S0       | S3       | 0
S3   | S0       | S4       | 0
S4   | S0       | S1       | 1

TD2: Codage et équations

Pour 4 états codés en binaire:

Dériver équations next-state avec Karnaugh.

TD3: Analyse temporelle

Calculer fréquence maximale d’un circuit avec:

Solution: Période minimale = 5 + 15 + 3 + 1 = 24ns fmax = 1/24ns = 41.67MHz

Applications Pratiques

Contrôleur UART (émetteur):

États:

Décodeur de protocole I2C:

FSM détectant:

Contrôleur de distributeur automatique:

Entrées: pièces insérées (5c, 10c, 25c) Sortie: produit délivré si montant atteint

États représentent le crédit accumulé.

Outils de Conception

Simulateurs:

Langages de description:

VHDL exemple (FSM Moore):

process(clk, reset)
begin
    if reset = '1' then
        state <= S0;
    elsif rising_edge(clk) then
        case state is
            when S0 =>
                if input = '1' then
                    state <= S1;
                end if;
            when S1 =>
                -- transitions...
        end case;
    end if;
end process;

-- Logique de sortie Moore
output <= '1' when state = S3 else '0';

Verilog exemple (FSM Mealy):

always @(posedge clk or posedge reset) begin
    if (reset)
        state <= S0;
    else
        state <= next_state;
end

// Logique next_state et output (combinatoire)
always @(*) begin
    case (state)
        S0: begin
            if (input)
                next_state = S1;
            output = 1'b0;
        end
        // ...
    endcase
end

PART D: ANALYSE ET RÉFLEXION

Compétences acquises

Techniques:

Méthodologiques:

Applications professionnelles

La logique séquentielle est utilisée dans:

Connexions avec autres cours

Évolution et Perspectives

Outils modernes:

Tendances:

Applications émergentes:

Recommandations

  1. Toujours partir du diagramme d’états: visualisation essentielle
  2. Vérifier tous les cas: états non utilisés, transitions manquantes
  3. Prévoir état par défaut: robustesse face aux erreurs
  4. Documenter clairement: noms d’états explicites
  5. Simuler avant implémentation: éviter erreurs coûteuses
  6. Respecter contraintes temporelles: setup/hold critiques

Pièges à éviter:

En conclusion, la logique séquentielle est au cœur de tout système numérique complexe. La maîtrise des FSM et des techniques de conception synchrone est indispensable pour développer des contrôleurs fiables et performants, que ce soit en ASIC, FPGA ou microcontrôleurs.