inf3500 : conception et implémentation de systèmes numériques pierre langlois cours #6...

53
INF3500 : Conception et implémentation de systèmes numériques http://creativecommons.org/licenses/by-nc- sa/2.5/ca/ Pierre Langlois Cours #6 Conception d’unités de contrôle

Upload: gorlois-gregoire

Post on 04-Apr-2015

111 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

http://creativecommons.org/licenses/by-nc-sa/2.5/ca/

Pierre Langlois

Cours #6Conception d’unités de contrôle

Page 2: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Plan pour aujourd’hui

• Retour sur l’évaluation formative du cours• Rappel – circuits séquentiels: section 6.1• Analyse d’un circuit séquentiel synchrone: section 6.2• Machines à états en VHDL: section 6.3• Conception de machines à états: section 6.4• Conception de processeurs: section 6.5• Exemples

2

+ Parenthèses sur VHDL, des précisions

sur les notes de cours, des tru

cs pour

utiliser A

ctive-HDL, et des exemples!

Page 3: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Rappel: exemple de la machine distributrice

3Source: Wikipédia

Page 4: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Machine distributrice

4

ProcesseurClavier

senseur de pièces

MM

MM

Moteurs des plateaux

actuateurs pour rendre la monnaie

affichages

ÉtatGérer l’argentGérer l’inventaire

L’unité de contrôle détermine dans quel ordre les différentes actions doivent se produire, et génère les signaux de contrôle correspondants pour les chemin des données et pour les sorties.

Page 5: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Parties d’un processeur

• Un processeur est composé de deux parties:– Le chemin des données (datapath) traite les données. Il inclut:

• des registres;• des unités fonctionnelles (comme une unité arithmétique et logique)• un mécanisme de commutation pour transférer et manipuler les données.

– L’unité de contrôle (control unit) est responsable du séquençage des opérations à exécuter par le chemin de données selon des entrées externes et le résultat des opérations.

5

(notes, section 5.1)

Chemin des données

Unité de contrôle

Contrôle État

Sortie des données

Sorties de contrôle

Entrée des données

Entrées de contrôle

Page 6: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 6

Circuits séquentiels synchrones

• Un circuit séquentiel comporte:– une partie combinatoire; et– des éléments à mémoire.

• Les éléments à mémoire entreposent l’état présent du circuit.• La partie combinatoire calcule le prochain état du système ainsi que ses sorties.• Un circuit séquentiel a normalement des entrées et des sorties.• Un circuit séquentiel est mené par un signal d’horloge et devrait avoir un signal

de réinitialisation. Ces signaux sont des entrées ‘spéciales’.circuit combinatoire

prochain état état présent

horloge

entrées sorties

éléments à mémoire

(notes, section 6.1)

Page 7: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 7

Circuits séquentiels synchrones

(notes, section 6.1)

• Un circuit séquentiel comporte:– des éléments à mémoire, qui entreposent l’état présent du circuit;– un circuit combinatoire, qui calcule:

• le prochain état du circuit; et,• les sorties du circuit.

circuit combinatoire

prochain état

état présent

horloge

entrées

sorties de Moore

sorties de Mealy

fonction de sortie (Moore)

fonction de sortie (Mealy)

calcul du prochain étatéléments à mémoire

Page 8: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 8

Compétences à avoir en INF3500concernant les circuits séquentiels synchrones

Code VHDL

Schéma du circuit

Implémentation sur FPGA

Spécification textuelle

Diagramme d’états

Page 9: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 9

Analyse d’un circuit séquentiel synchrone

• On analyse un circuit pour en comprendre le fonctionnement.• Analyser un circuit séquentiel synchrone en quatre étapes:

1. identifier les variables d’états;2. écrire les équations d’états et les équations de sortie;3. dresser le tableau d’états; et,4. dessiner le diagramme d’états.

(notes, section 6.2)

2.A+ = A xor B;B+ = B’ or X;Z = A nor B;

1.{A, B}

X

D

CLK

Q

reset

D

CLK

Q

reset

Z

A

B

Page 10: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 10

Analyse d’un circuit séquentiel synchrone(suite)

(notes, section 6.2)

3. Tableau d’états:

état présent entrée état prochain sortie

A B X A+ B+ Z

0 0 0 0 1 10 0 1 0 1 10 1 0 1 0 00 1 1 1 1 01 0 0 1 1 01 0 1 1 1 01 1 0 0 0 01 1 1 0 1 0

4. Diagramme d’états:

état 0: AB = « 00 »état 1: AB = « 01 »état 2: AB = « 10 »état 3: AB = « 11 »

État 3

Sortie: 0

État 2

Sortie: 0

État 1

Sortie: 0

État 0

Sortie: 1

-

0 0

1

-

reset(état

initial)

1

X

D

CLK

Q

reset

D

CLK

Q

reset

Z

A

BC’est une machine de Moore, la sortie ne dépend que de l’état présent.

Page 11: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 11

Description d’une machine à états en VHDL1. à partir d’un schéma

• Approche adéquate:– quand on désire modéliser un circuit pour lequel on a le schéma– quand on a les équations d’états et de sortie

(notes, section 6.3)

library IEEE;use IEEE.std_logic_1164.all;

entity cctsequentielex1 isport (

reset : in STD_LOGIC;CLK : in STD_LOGIC;X : in STD_LOGIC;Z : out STD_LOGIC

);end cctsequentielex1;

architecture arch1 of cctsequentielex1 issignal A : STD_LOGIC; -- bascule A (en haut)signal B : STD_LOGIC; -- bascule B (en bas)begin

process(CLK, reset) isbegin if (reset = '0') then

A <= '0'; B <= '0';

elsif (rising_edge(CLK)) thenA <= A xor B;B <= x or not(B);

end if;end process;

-- signal de sortiez <= not(A or B);

end arch1;

Deux bascules dans un seul processus

Sortie décrite par un énoncé concurrent à l’extérieur du processus (pas de registre).

Réinitialisation asynchrone.

X

D

CLK

Q

reset

D

CLK

Q

reset

Z

A

B

Page 12: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 12

Description d’une machine à états en VHDL2. i. à partir d’un diagramme d’états, encodage numérique

• Approche beaucoup plus puissante:– identifier les états, les conditions de transition et les sorties pour chaque état– pas besoin d’équations d’états– plus lisible, robuste, facile à maintenir

(notes, section 6.3)

architecture arch2 of cctsequentielex1 istype type_etat is range 0 to 3; signal etat : type_etat := 0;begin

process(CLK, reset) isbegin

if (reset = '0') thenetat <= 0;

elsif (rising_edge(CLK)) thencase etat is

when 0 =>etat <= 1;

when 1 =>if x = '0' then etat <= 2; else etat <= 3; end if;

when 2 =>etat <= 3;

when 3 =>if x = '0' then etat <= 0; else etat <= 1; end if;

end case;end if;

end process;

z <= '1' when etat = 0 else '0';

end arch2;

Type spécial pour l’état.Ici: encodage numérique.

Processus avec énoncé case pour les transitions entre états.

Signal de sortie à l’extérieur du processus.

État 3

Sortie: 0

État 2

Sortie: 0

État 1

Sortie: 0

État 0

Sortie: 1

-

0 0

1

-

reset(état

initial)

1

Page 13: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 13

architecture arch3 of cctsequentielex1 is

type type_etat is (Etat0, Etat1, Etat2, Etat3);signal etat : type_etat := Etat0;

beginprocess(CLK, reset) isbegin

if (reset = '0') thenetat <= Etat0;

elsif (rising_edge(CLK)) thencase etat is

when Etat0 =>etat <= Etat1;

when Etat1 =>if x = '0' then etat <= Etat2; else etat <= Etat3; end if;

when Etat2 =>etat <= Etat3;

when Etat3 =>if x = '0' then etat <= Etat0; else etat <= Etat1; end if;

end case;end if;

end process;

z <= '1' when etat = Etat0 else '0';

end arch3;

Description d’une machine à états en VHDL2. ii. à partir d’un diagramme d’états, encodage symbolique• Lors de la conception, on préfère souvent un encodage symbolique à l’encodage

numérique des états.

(notes, section 6.3)

Type spécial pour l’état.Ici: encodage symbolique avec un type énuméré.

État 3

Sortie: 0

État 2

Sortie: 0

État 1

Sortie: 0

État 0

Sortie: 1

-

0 0

1

-

reset(état

initial)

1

Page 14: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Parenthèse: types énumérés en VHDL

• Un type peut être défini avec une énumération d’éléments dans une liste.• L’ordre d’énumération définit un indice pour chaque élément à partir de 0.• Les opérateurs relationnels s’appliquent entre les éléments selon cet ordre.• Exemples: définitions dans le package standard, disponible dans le manuel de

référence du langage VHDL, norme 1076-2002 (section 14.2).

14

(notes, section 2.5.6)

package STANDARD is

type BOOLEAN is (FALSE, TRUE);

type BIT is ('0', '1');

type CHARACTER is (NUL, SOH, STX, ETX, EOT, ENQ, ACK, BEL, BS, HT, LF, VT, FF, CR, SO, SI, DLE, DC1, DC2, DC3, DC4, NAK, SYN, ETB, CAN, EM, SUB, ESC, FSP, GSP, RSP, USP, ' ', '!', '"', '#', '$', '%', '&', ''', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', --- etc.

Page 15: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 15

X

D

CLK

Q

reset

D

CLK

Q

reset

Z

A

B

Modélisation de machine à états - conclusion

(pas dans les notes)

État 3

Sortie: 0

État 2

Sortie: 0

État 1

Sortie: 0

État 0

Sortie: 1

-

0 0

1

-

reset(état

initial)

1

architecture arch1 of cctsequentielex1 issignal A : STD_LOGIC; -- bascule A (en haut)signal B : STD_LOGIC; -- bascule B (en bas)begin

process(CLK, reset) isbegin if (reset = '0') then

A <= '0'; B <= '0';

elsif (rising_edge(CLK)) thenA <= A xor B;B <= x or not(B);

end if;end process;

-- signal de sortiez <= not(A or B);

end arch1;

architecture arch3 of cctsequentielex1 is

type type_etat is (Etat0, Etat1, Etat2, Etat3);signal etat : type_etat := Etat0;

beginprocess(CLK, reset) isbegin

if (reset = '0') thenetat <= Etat0;

elsif (rising_edge(CLK)) thencase etat is

when Etat0 =>etat <= Etat1;

when Etat1 =>if x = '0' then etat <= Etat2; else etat <= Etat3; end if;

when Etat2 =>etat <= Etat3;

when Etat3 =>if x = '0' then etat <= Etat0; else etat <= Etat1; end if;

end case;end if;

end process;

z <= '1' when etat = Etat0 else '0';

end arch3;

Page 16: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 16

circuit combinatoire

prochain état

état présent

horloge

entrées

sorties de Moore

sorties de Mealy

fonction de sortie (Moore)

fonction de sortie (Mealy)

calcul du prochain étatéléments à mémoire

Trois styles de description d’une machine à états en VHDL

• Les trois parties d’une machine à états sont :– les éléments à mémoire qui conservent l’état présent de la machine;– un circuit combinatoire qui calcule le prochain état; et,– un circuit combinatoire qui calcule les sorties de Moore et de Mealy.

• Il y a trois styles principaux de description selon la répartition des trois parties de la machine sur un ou plusieurs processus.

(notes, section 6.3)

Page 17: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 17

Trois styles de description d’une machine à états en VHDL1. Avec un seul processus

• Attention aux sorties:– inférence de registres pour les sorties– spécifier la sortie du prochain état étant donnés un état et une entrée présentes.– si plusieurs conditions résultent en un état donné, il faut spécifier la sortie de Moore

de cet état à chaque fois.

(notes, section 6.3)

architecture unprocessus of cctsequentielex2 istype type_etat is (S1, S2, S3, S4);signal etat : type_etat := S1;begin

process(CLK, reset) isbegin if (reset = '0') then

etat <= S1;sortie <= '1';

elsif (rising_edge(CLK)) thencase etat is

when S1 =>if x = '0' then

etat <= S3;sortie <= '0';

elseetat <= S2;sortie <= '1';

end if;when S2 | S3 =>

etat <= S4;sortie <= '0';

when S4 =>etat <= S1;sortie <= '1';

end case;end if;

end process;end unprocessus;

S2Sortie = 1

S4Sortie = 0

S3Sortie = 0

S1Sortie = 1

X’

X

reset

Page 18: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 18

process(etat)begin

case etat iswhen S1 | S2 => sortie <= '1';when S3 | S4 => sortie <= '0';

end case;end process;

end deuxprocessus;

Trois styles de description d’une machine à états en VHDL2a. Avec deux processus

• Bon compromis entre la flexibilité et la lisibilité du code.• Deux processus:

– un pour le calcul et l’entreposage de l’état– un pour les sorties (peut être remplacé par des énoncés concurrents)

(notes, section 6.3)

S2Sortie = 1

S4Sortie = 0

S3Sortie = 0

S1Sortie = 1

X’

X

reset

architecture deuxprocessus of cctsequentielex2 istype type_etat is (S1, S2, S3, S4);signal etat : type_etat := S1;begin

process(CLK, reset) isbegin if (reset = '0') then

etat <= S1;elsif (rising_edge(CLK)) then

case etat iswhen S1 =>

if x = '0' thenetat <= S3;

elseetat <= S2;

end if;when S2 | S3 =>

etat <= S4;when S4 =>

etat <= S1;end case;

end if;end process;

Machine de Moore …

Page 19: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 19

Trois styles de description d’une machine à états en VHDL2b. Avec deux processus

• Bon compromis entre la flexibilité et la lisibilité du code.• Deux processus:

– un pour le calcul et l’entreposage de l’état– un pour les sorties (peut être remplacé par des énoncés concurrents)

(notes, section 6.3)

architecture arch2 of cctsequentielex1 istype type_etat is range 0 to 3; signal etat : type_etat := 0;begin

process(CLK, reset) isbegin

if (reset = '0') thenetat <= 0;

elsif (rising_edge(CLK)) thencase etat is

when 0 =>etat <= 1;

when 1 =>if x = '0' then etat <= 2; else etat <= 3; end if;

when 2 =>etat <= 3;

when 3 =>if x = '0' then etat <= 0; else etat <= 1; end if;

end case;end if;

end process;

z <= '1' when etat = 0 else '0';

end arch2;

État 3

Sortie: 0

État 2

Sortie: 0

État 1

Sortie: 0

État 0

Sortie: 1

-

0 0

1

-

reset(état

initial)

1

Page 20: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 20

Trois styles de description d’une machine à états en VHDL3. Avec trois processus

• Style qui correspondre exactement au modèle.• Code est très lisible mais moins compact que la version à deux processus.• La liste de sensibilité du processus qui calcule le prochain état inclut le signal qui

entrepose l’état courant ainsi que toutes les entrées.• Le même principe s’applique au processus qui calcule les sorties (pour une

machine de Mealy).

(notes, section 6.3)

circuit combinatoire

prochain état

état présent

horloge

entrées

sorties de Moore

sorties de Mealy

fonction de sortie (Moore)

fonction de sortie (Mealy)

calcul du prochain étatéléments à mémoire

Page 21: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 21

Trois styles de description d’une machine à états en VHDL3. Avec trois processus

(notes, section 6.3)

-- processus pour le calcul du prochain étatprocess(etat, x) isbegin

case etat iswhen S1 =>

if x = '0' thenetat_prochain <= S3;

elseetat_prochain <= S2;

end if;when S2 | S3 =>

etat_prochain <= S4;when S4 =>

etat_prochain<= S1;end case;

end process;

end troisprocessus;

architecture troisprocessus of cctsequentielex2 is

type type_etat is (S1, S2, S3, S4);signal etat : type_etat := S1;signal etat_prochain : type_etat := S1;

begin

-- processus pour garder l'état actuel en mémoireprocess(CLK, reset) isbegin if (reset = '0') then

etat <= S1;elsif (rising_edge(CLK)) then

etat <= etat_prochain;end if;

end process;

-- processus pour les sortiesprocess(etat)begin

case etat iswhen S1 | S2 => sortie <= '1';when S3 | S4 => sortie <= '0';

end case;end process;

Machine de Moore …

Page 22: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 22

Trois styles de description d’une machine à états en VHDLConclusion

• Les trois styles ont chacun leurs mérites et inconvénients.• Cette variété d’options illustre à nouveau la très grande richesse de VHDL.• Cette richesse cause cependant des difficultés parce qu’il n’existe pas une norme

unique pour la description de machines à états.• Il est donc plus difficile de concevoir un synthétiseur qui puisse reconnaître de

façon satisfaisante les intentions du concepteur.• Il est nécessaire de consulter le manuel d’utilisation du synthétiseur utilisé afin

de connaître les styles d’encodage de machines à états reconnus.

(notes, section 6.3)

Page 23: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Parenthèse: résultats différentspour la synthèse et la simulation: comment les éviter

• Attention à la liste de sensitivité– l’absence d’un signal dans la liste de sensitivité est importante pour le simulateur– le synthétiseur suppose (en général) que le concepteur a fait une erreur:

“Declare asynchronous signals in the sensitivity list. Otherwise, XST issues a warning and adds them to the sensitivity list. In this case, the behavior of the synthesis result may be different from the initial specification.” – XST User Guide, v. 11.3, Sept. 2009

• Énoncés after: pas tenus en compte par le synthétiseur.• Quoi faire?

– Surveiller les avertissements du synthétiseur …– Pour les processus décrivant des bascules: placer seulement clk et reset dans la

liste de sensitivité– Pour les processus décrivant de la logique combinatoire: placer tous les signaux

faisant partie d’expressions dans la liste de sensitivité

23

(pas dans les notes)

process(A, B)begin

T1 <= A and B;T2 <= not(T1);

end process;

process (A, B, T1)begin

T1 <= A and B;T2 <= not(T1);

end process;

process(CLK, A)begin

if rising_edge(CLK) thenZ <= A;

end if;end process;

process(CLK)begin

if rising_edge(CLK) thenZ <= A;

end if;end process;

Page 24: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 24

Compétences à avoir en INF3500concernant les circuits séquentiels synchrones

Code VHDL

Schéma du circuit

Implémentation sur FPGA

Spécification textuelle

Diagramme d’états

Page 25: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 25

Conception de machine à étatsPrincipes de base

• La conception d’une machine à états est un processus créatif similaire à la description d’un algorithme dans un langage de programmation:– débuter avec une description de la relation désirée entre les entrées et les sorties;– faire des choix en faisant un compromis entre des contraintes qui ne peuvent toutes

être satisfaites simultanément: performance, précision, complexité, lisibilité, la testabilité et la consommation de puissance;

– considérer les cas spéciaux séparément;– pendant le processus de conception, on réalise souvent que la spécification est

incomplète, ambigüe ou mal comprise;– le système une fois conçu se comporte exactement tel qu’il a été décrit, mais pas

nécessairement comme on voudrait qu’il se comporte;– utiliser un processus itératif aide les choses;– bien documenter toutes les étapes.

(notes, section 6.4)

Page 26: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 26

Conception de machine à étatsProcédure traditionnelle et avec un HDL

Étape Procédure traditionnelle Procédure avec un HDL

Bâtir un diagramme d’états à partir des données du problème. oui oui

Bâtir le tableau d’états à partir du diagramme d’états, en identifiant les états par des symboles. oui non

Réduire le nombre d’états nécessaires en éliminant les états équivalents. oui

pas obligatoirepeut simplifier la documentation

et la clarté du codeAssigner un code binaire à chaque état, et ajouter cette information au tableau d’état. oui par l’outil de synthèse

À partir du tableau d’état complet, obtenir les équations booléennes d’entrée des bascules du type choisi ainsi que les équations booléennes des sorties du système, en simplifiant si possible.

oui par l’outil de synthèse

Donner le diagramme et/ou construire le circuit. oui par l’outil de synthèse

Vérifier, vérifier, vérifier. oui oui

(notes, section 6.4)

Page 27: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 27

Conception de machine à états« Algorithmic State Machines »

• Cette approche n’est plus vraiment utilisée depuis l’adoption des HDL.

(notes, section 6.4)

J.M. Hill, Brief introduction to ASM charts, University of Hartford. Consulté le 5 octobre 2009, tiré de http://uhaweb.hartford.edu/jmhill/suppnotes/AsmChart/index.htm, utilisé avec permission.

Page 28: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 28

Diagrammes d’états: notationMachine de Moore

(pas dans les notes)

État de départ

Condition pour qu’une transition ait lieu.Ici: une seule entrée.

Machine de Moore: la valeur de la sortie est indiquée à l’intérieur de l’état.

Condition sans importance (don’t care):la transition se fait toujours

Chaque état est identifié

Les transitions entre états sont synchronisées avec l’horloge.

Page 29: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 29

Diagrammes d’états: notationMachine de Mealy

(pas dans les notes)

Machine de Mealy:la valeur de la sortie est indiquée sur les transitions.

Ici deux entrées et une sortie.

Les transitions entre états sont synchronisées avec l’horloge.

Page 30: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 30

Conception de machine à étatsBâtir le diagramme d’états

• La représentation graphique offerte par un diagramme d’états est très avantageuse. Certains outils de conception produisent automatiquement du code VHDL à partir d’un diagramme d’états.

• Les principes suivants peuvent grandement aider à obtenir le diagramme d’état.– À partir des données du problème, simuler certaines combinaisons d’entrée et de

sortie pour bien comprendre la nature du problème.– Construire un diagramme partiel menant à une sortie désirée du système.– Ajouter au diagramme les autres chemins menant aux sorties désirées du système.– Vérifier le diagramme pour éviter les états équivalents (deux états qui mènent aux

mêmes prochains états et qui ont les mêmes sorties pour les mêmes entrées).– Compléter le diagramme en ajoutant des transitions pour toutes les entrées

possibles à partir de chaque état.– Identifier toute condition où le circuit doit être réinitialisé à un état de départ, et

annoter le diagramme avec cette information.– Vérifier le diagramme en appliquant des combinaisons d’entrées représentatives.

(notes, section 6.4)

Page 31: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 31

Bâtir un diagramme d’étatsExemple: reconnaître une séquence

• Donner un diagramme d’états pour une machine de Mealy qui doit reconnaître la séquence « 1101 ». Le circuit a une seule entrée sur laquelle la séquence est appliquée. Il a une seule sortie: ‘0’ tant que la séquence n’est pas détectée, et ‘1’ dès que la séquence est détectée.

(notes, section 6.4)

Page 32: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 32

Bâtir un diagramme d’étatsExemple: reconnaître une séquence

• Donner un diagramme d’états pour une machine de Mealy qui doit reconnaître la séquence « 1101 ». Le circuit a une seule entrée sur laquelle la séquence est appliquée. Il a une seule sortie: ‘0’ tant que la séquence n’est pas détectée, et ‘1’ dès que la séquence est détectée.

(notes, section 6.4)

Solution 1: Machine de Mealy4 états, donc 2 bascules

Page 33: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 33

Bâtir un diagramme d’étatsExemple: reconnaître une séquence

• Donner un diagramme d’états pour une machine de Moore qui doit reconnaître la séquence « 1101 »

(notes, section 6.4)

Solution 2: Machine de Moore5 états donc 3 basculesLes états F, G et H sont implicites avec 3 bascules – attention à la façon de les coder.

Page 34: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Parenthèse: génération automatique de code VHDLà partir d’un diagramme d’états dans Active-HDL

34

(pas dans les notes)

Page 35: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 35

Conception de machine à étatsDécomposition de machines à états

• Les circuits séquentiels peuvent parfois être décomposés en blocs simples.• La décomposition peut suivre une approche hiérarchique. Les différentes sous-

machines à états doivent pouvoir communiquer entre elles à l’aide de signaux de contrôle et de données.

(notes, section 6.4)

Machineprincipale

Sous-machine #1

Go1

Sous-machine #2

Go2

Fini1

Fini2

entréessorties

Page 36: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 36

Conception de machine à étatsDécomposition de machines à états

• Exemple : donner un diagramme d’états pour un circuit dont la sortie est 1 quand au moins deux 0 et deux 1 ont été reçus, dans n’importe quel ordre.

(notes, section 6.4)

Solution 1:Une seule machine

Page 37: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 37

Conception de machine à étatsDécomposition de machines à états

• Exemple : donner un diagramme d’états pour un circuit dont la sortie est 1 quand au moins deux 0 et deux 1 ont été reçus, dans n’importe quel ordre.

(notes, section 6.4)

Solution 2:Décomposition en trois machines

Page 38: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 38

Conception de machine à étatsCircuits combinatoires itératifs et circuits séquentiels

• Un circuit combinatoire itératif est un circuit composé de n modules identiques connectés en cascade.

• Les modules ont des entrées principales EP, des sorties principales SP, des entrées de connexion en cascade EC et des sorties de connexion en cascade SC.

(notes, section 6.4)

module

EP

SP

EC SC module

EP

SP

EC SC module

EP

SP

EC SC

EP0 EP1 Epn-1

C-1 C0 C1 Cn-2 Cn-1

SP0 SPn-1SP1

Page 39: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 39

Conception de machine à étatsCircuits combinatoires itératifs et circuits séquentiels - 2

• Exemple de circuit itératif: circuit qui compare l’égalité de deux nombres.

(notes, section 6.4)

Egalitecomp1

X

EGe EGs

X0

1 Y

Y0

comp1

X

EGe EGs

X1

Y

Y1

comp1

X

EGe EGs

Xn-1

Y

Yn-1

EGe

YX

EGs

comp1

Page 40: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques 40

Conception de machine à étatsCircuits combinatoires itératifs et circuits séquentiels - 3

• Si les entrées sont disponibles en format série et que l’on est prêt à accepter les sorties principales en format série aussi, alors il existe une version séquentielle du même circuit qui est très simple et qui nécessite très peu de matériel.

• Exemple pour un comparateur itératif:• Les entrées X et Y sont des entrées série synchronisées avec le signal d’horloge

CLK. L’entrée init doit être activée au début pour fixer le contenu de la bascule à la valeur 1, tel que montré à la Figure 6 9.‑

(notes, section 6.4)

X et Y sont des entrées série synchronisées avec CLK.

L’entrée init doit être activée au début pour fixer le contenu de la bascule à la valeur 1.

YX

comp1

D

CLK

Q

CLK

set

init

Page 41: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Communication entre machines à étatsModèle producteur-consommateur

41

(pas dans les notes)

Page 42: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Conception de processeurs avec l’approche RTL - rappel

• Dans l’approche RTL, le concepteur spécifie les registres du processeur, les transferts de données entre ces registres, les opérations à effectuer et les signaux de contrôle pour gérer ces activités.

• L’approche RTL peut être décomposée en quatre étapes :1. Analyse du problème afin de comprendre le flot des données à travers le processeur.2. Conception du chemin des données, identification des signaux de contrôle et d’état.3. Conception de l’unité de contrôle du processeur à l’aide d’une machine à états

générant des signaux de contrôle.4. Vérification que le processeur résultant rencontre les spécifications.

42

(notes, sections 5.2 et 6.5)

Page 43: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Exemple de conception de processeurCalcul de la Somme des Différences Absolues (SDA)

• Supposons deux blocs de 256 pixels entreposés dans deux mémoires distinctes.• Chaque octet de chaque mémoire contient l’intensité d’un seul pixel sous la

forme d’un nombre non signé entre 0 et 255 inclusivement.• Le signal SDAprete est activé par le module quand le calcul est terminé.• Le signal contrôle go est activé par le reste du système quand les mémoires sont

chargées et que les calculs peuvent débuter.

43

(pas dans les notes)

SDA = 0;SDAprete = vrai;

tantque(vrai) {si(go) {

adresse = 255;SDA = 0;SDAprete = faux;tantque(adresse >= 0) {

SDA = SDA + abs(A[adresse] – B[adresse]);adresse = adresse – 1;

}SDAprete = vrai;

}}

Page 44: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Exemple de conception de processeurCalcul de la Somme des Différences Absolues (SDA)

44

• Donnez un diagramme montrant le chemin des données du processeur.• Indiquez clairement toutes les ressources requises, leur nombre, leur largeur en

bits et leur signaux de contrôle.

SDA

D Q

reset

/8

/8

/8

mémoireA

mémoireB

abs

/16

adresse

(pas dans les notes)

Page 45: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Exemple de conception de processeurCalcul de la Somme des Différences Absolues (SDA)

45

• Donnez une machine à états du processeur.• Identifiez bien chaque état, les actions à prendre dans chaque état, et les

conditions pour les transitions entre les états.

accumuleinit

reset

attente

Go = ‘1’

SDA <= 0; adresse <= 255; fini <= faux

fini <= vrai SDA <= SDA + abs(A[adresse] -

B[adresse]);adresse <= adresse - 1

adresse < 0

(pas dans les notes)

Page 46: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Exemple: joueur de blackjackDescription du jeu de base

• Le jeu oppose des joueurs à un croupier qui joue pour le compte de la banque.• Le but du jeu est d’accumuler plus de points que la banque sans dépasser 21.• Les cartes ont les valeurs suivantes :

– les cartes numérotées ont leur propre valeur (2 à 10);– les figures valent 10; et,– l’as peut valoir 1 ou 11, selon ce qui est le plus avantageux – une main contenant un

as qui peut prendre une des deux valeurs est dite ‘facile’.• Le croupier distribue deux cartes visibles à chaque joueur, puis se donne une

carte visible et une carte cachée. Chaque joueur peut alors tirer une carte ou arrêter, de façon à obtenir la meilleure main possible. Finalement, le croupier révèle sa carte cachée et tire sur un total de 16 ou moins.

• Un joueur gagne sa mise si sa main est meilleure que celle du croupier. Il récupère sa mise si sa main est égale à celle du croupier. Il perd sa mise si son total est supérieur à 21 ou inférieur au total du croupier.

46

(notes, section 6.7)

Page 47: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Exemple de conception d’un processeurJoueur de blackjack

• Faire la conception d’un processeur qui joue au blackjack en suivant les règles de base d’un croupier.

• Le processeur doit minimiser les ressources utilisées – on spécifie que le traitement doit être fait en série.

• Il faut garder la largeur des opérandes variables.• Donner le chemin des données sous la forme d’un schéma et de code VHDL.• Donner la machine à états de l’unité de contrôle sous la forme d’un diagramme

et de code VHDL.

47

(notes, section 6.7)

Page 48: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Exemple: joueur de blackjackInterface

library IEEE;use IEEE.std_logic_1164.all;entity blackjack is

port (clk: in std_logic;reset: in std_logic;carteValide : in std_logic;valeurCarte: in integer range 2 to 11;tirer: out std_logic;depasse: out std_logic;total: out integer range 0 to 31

);end blackjack;

48

(notes, section 6.7)

Page 49: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Exemple: joueur de blackjackChemin des données

49

(notes, section 6.7)

cheminDonnees : process (clk)begin

if rising_edge(clk) thenif initSomme = '1' then

somme <= 0;elsif calculeSomme = '1' then

if moinsDix = '1' thensomme <= somme - 10;

elsesomme <= somme + valeurCarte;

end if;end if;

end if;end process;

somme

additioneur

clk

initSomme

valeurCarte

calculeSomme

-10

moinsDix 0 1

load

reset

Page 50: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Exemple: joueur de blackjackMachine à états

50

(notes, section 6.7)

ajoutesomme <= somme + valeurCarte

valeurCarte = 11 : n_asfacile++

tiretirer <= ‘1’

carteValide = ‘1’

2: somme > 16

reset

1: somme > 21 ET n_asfacile > 0

departsomme <= 0

n_asfacile <= 0

corrigesomme <= somme – 10

n_asfacile--

fini

3: sinon

vérifie

Conditions numérotées 1., 2., 3., … encodeur à prioritéOn peut aussi indiquer les conditions complètement, de façon exclusive.

Page 51: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Exemple: joueur de blackjackCode VHDL de l’unité de contrôle

51

(notes, section 6.7)

-- machine a etats de l'unité de contrôlecontrole : process (CLK, reset)variable n_asfacile : natural := 0;begin

if rising_edge(CLK) thenif reset = '1' then

etat <= depart;else

case etat iswhen depart =>

n_asfacile := 0;etat <= tire;

when tire =>if (carteValide = '1') then

etat <= ajoute;end if;

when ajoute =>if valeurCarte = 11 then

n_asfacile := n_asfacile + 1;end if;etat <= verifie;

when verifie =>if somme > 21 then

if (n_asfacile > 0) thenetat <= corrige;

elseetat <= fini;

end if;elsif somme > 16 then

etat <= fini;else

etat <= tire;end if;

when corrige =>etat <= verifie;n_asfacile := n_asfacile - 1;

when fini =>etat <= fini;

when others =>etat <= depart;

end case;end if;

end if;end process;

-- signaux de sortietotal <= somme;tirer <= '1' when etat = tire else '0';depasse <= '1' when etat = fini and somme > 21 else '0';

-- signaux de contrôleinitSomme <= '1' when etat = depart else '0';moinsDix <= '1' when etat = corrige else '0';calculesomme <= '1' when etat = tire

or etat = corrige else '0';

Page 52: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Exemple: joueur de blackjackCode VHDL – version RTL-implicite

52

(notes, section 6.7)

architecture arch2 of blackjack is

signal somme : integer range 0 to 31;signal calculeSomme : std_logic;signal initSomme : std_logic;signal moinsDix : std_logic;type type_etat is (depart, tire, ajoute, verifie, corrige, fini);signal etat : type_etat;

begin

process (CLK, reset)variable n_asfacile : natural := 0;begin

if rising_edge(CLK) thenif reset = '1' then

etat <= depart;else

case etat iswhen depart =>

n_asfacile := 0;somme <= 0;etat <= tire;

when tire =>if (carteValide = '1') then

etat <= ajoute;end if;

when ajoute =>somme <= somme + valeurCarte;if valeurCarte = 11 then

n_asfacile := n_asfacile + 1;end if;etat <= verifie;

when verifie =>if somme > 21 and n_asfacile > 0 then

etat <= corrige;elsif somme > 16 then

etat <= fini;else

etat <= tire;end if;

when corrige =>somme <= somme - 10;etat <= verifie;n_asfacile := n_asfacile - 1;

when fini =>etat <= fini;

when others =>etat <= depart;

end case;end if;

end if;end process;

-- signaux de sortietotal <= somme;tirer <= '1' when etat = tire else '0';depasse <= '1' when etat = fini and somme > 21 else

'0';

end arch2;

Page 53: INF3500 : Conception et implémentation de systèmes numériques  Pierre Langlois Cours #6 Conception

INF3500 : Conception et implémentation de systèmes numériques

Notions à retenir et maîtriser Importance relative

1. Analyser un circuit séquentiel synchrone à partir de son schéma. - Donner le diagramme d’état qui lui correspond. - Donner son état et la valeur de ses sorties en fonction du temps.

10

2. Donner le code VHDL correspondant au schéma d’un circuit séquentiel. 103. Donner le code VHDL correspondant à un diagramme d’état. - utiliser un encodage numérique et symbolique - utiliser une représentation à 1, 2 ou 3 processus

20

4. Expliquer pourquoi les résultats de la synthèse et de la simulation d’un circuit séquentiel peuvent être différents, et comment écrire le code VHDL pour éviter cela. 10

5. À partir de la description d’un problème, donner un diagramme d’états correspondant.

- problèmes de base - décomposition de machines à états - circuits combinatoires itératifs

25

6. À partir de la description d’un problème, donner le chemin des données et l’unité de contrôle correspondants. 25

Total 100

Résumé: conception d’unités de contrôle

53