instruction process description vhdl des bascules

26
Copyright ©2008 EMI, REDS@HEIG-VD Bascules, p 1 Unit Unité d’ enseignement : Base de syst enseignement : Base de systè mes logiques (BSL) mes logiques (BSL) Instruction Instruction process process Description VHDL des bascules Description VHDL des bascules Etienne Messerli Mise à jour le 12 décembre 2008 Bascules, p 2 Copyright ©2008 EMI, REDS@HEIG-VD D D é é roulement concurrent et s roulement concurrent et s é é quentiel quentiel Dans un langage informatique classique : Les instructions ont un déroulement séquentiel Dans un circuit : Toutes les portes fonctionnent simultanément Tous les signaux évoluent de manière concurrente Le langage VHDL dispose d'instructions concurrentes pour décrire le comportement des circuits réels (matériel)

Upload: others

Post on 18-Jun-2022

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Instruction process Description VHDL des bascules

Copyright ©2008 EMI, REDS@HEIG-VD Bascules, p 1

UnitUnitéé dd’’enseignement : Base de systenseignement : Base de systèèmes logiques (BSL)mes logiques (BSL)

Instruction Instruction processprocessDescription VHDL des basculesDescription VHDL des bascules

Etienne Messerli

Mise à jour le 12 décembre 2008

Bascules, p 2Copyright ©2008 EMI, REDS@HEIG-VD

DDééroulement concurrent et sroulement concurrent et sééquentielquentiel

• Dans un langage informatique classique :Les instructions ont un déroulement séquentiel

• Dans un circuit :Toutes les portes fonctionnent simultanément

Tous les signaux évoluent de manière concurrente

• Le langage VHDL dispose d'instructions concurrentes pour décrire le comportement des circuits réels (matériel)

Page 2: Instruction process Description VHDL des bascules

Bascules, p 3Copyright ©2008 EMI, REDS@HEIG-VD

Processus concurrents ...Processus concurrents ...

• Toutes les portes d’un circuit sous tension fonctionnent continuellement → un programme principal VHDL est constitué d’un

ensemble de processus concurrents

• L’ordre dans lequel les processus apparaissent dans le listing est indifférent

D <= not C;

C <= A and B;

C <= A and B;

D <= not C;est identique à

Bascules, p 4Copyright ©2008 EMI, REDS@HEIG-VD

……processus concurrents ...processus concurrents ...

• Des processus simples peuvent être déclarés de façon implicite, en les décrivant avec une affectation simple, conditionnelle ou sélectionnée

-- une affectation simple,

-- hors d’une declaration de process

A <= B or C ;

process (B,C) begin

A <= B or C ;

end process;

revient au même que :

Page 3: Instruction process Description VHDL des bascules

Bascules, p 5Copyright ©2008 EMI, REDS@HEIG-VD

……processus concurrents ...processus concurrents ...

process (B,C)begin -- ATTENTION :if B=’1’ then -- la structure conditionnelleA <= ’1’; -- if then else ne peut etre

elsif C=’1’ then -- utilisee qu’a l’interieurA <= ’1’; -- d’une declaration de process

else -- (strictement sequentielle)A <= ’0’;

end if;end process;

A <= ’1’ when B=’1’ else

’1’ when C=’1’ else ’0’;

-- ATTENTION : l’affectation conditionnelle avec when else

-- ne peut etre utilisee qu’a l’exterieur d’une declaration

-- de process (instruction strictement concurrente)

revient au même que :

Bascules, p 6Copyright ©2008 EMI, REDS@HEIG-VD

……processus concurrentsprocessus concurrents

Comme une porte logique, une instruction concurrente(processus auto déclaré) :

• s’active lorsqu’un des signaux d'entrées (droite de l'expression) change de valeur,

• et se rendort lorsque la sortie (bit ou vecteur) a atteint un état stable

Page 4: Instruction process Description VHDL des bascules

Bascules, p 7Copyright ©2008 EMI, REDS@HEIG-VD

L'instruction L'instruction processprocess ……

• Le langage VHDL dispose d'une instruction processdont la syntaxe est :

process (Liste_De_Sensibilité)--zone de déclaration

begin

--Zone pour instructions-- séquentielles ....

end process;

Bascules, p 8Copyright ©2008 EMI, REDS@HEIG-VD

…… instruction instruction processprocess ……

un process

• s’active lorsqu’un des signaux de sa liste de sensibilité(ses entrées) change de valeur,

• et se rendort lorsque toutes les instructions séquen-tielles ont été évaluées une fois (end process)

Page 5: Instruction process Description VHDL des bascules

Bascules, p 9Copyright ©2008 EMI, REDS@HEIG-VD

……instruction instruction processprocess ……

• L’exécution des instructions à l’intérieur d’un processest séquentielle

• Le temps simulé est stoppé durant l’exécution d’un process, donc

• les affectations des signaux ne prennent effet qu’après l’endormissement du process (fin de l’exécution de l’algorithme)

Bascules, p 10Copyright ©2008 EMI, REDS@HEIG-VD

……instruction instruction processprocess ……

• Une description avec un process sert à décrire les relations entre sorties et entrées sous une forme informatique: algorithme à exécution séquentielle

• Les descriptions de forme informatique requièrent souvent l’utilisation de variables (au sens informatique)

Page 6: Instruction process Description VHDL des bascules

Bascules, p 11Copyright ©2008 EMI, REDS@HEIG-VD

Syntaxe de l'instruction processusSyntaxe de l'instruction processus

Elément puissant du langage VHDL

[Label:] process (Liste_De_Sensibilité)-- ↑ Signaux_activant_le_processus

--zone de déclarationbegin

--Zone pour instructions-- séquentielles ....

end process;

Bascules, p 12Copyright ©2008 EMI, REDS@HEIG-VD

Processus : zone de dProcessus : zone de dééclarationclaration

• Déclaration de variables et de constantes

• Pour utilisateurs expérimentés :déclarations de types et de sous-types

déclaration de variables

déclaration de fonctions et de procédures

• Déclaration de signaux ou de composants interditedans un processus

Page 7: Instruction process Description VHDL des bascules

Bascules, p 13Copyright ©2008 EMI, REDS@HEIG-VD

Processus et liste de sensibilitProcessus et liste de sensibilitéé ......

Avec liste de sensibilité :Utilisé pour les descriptions synthétisables

Description utilisée dans le cadre de l'unité BSL

Sans liste de sensibilité :Utilisé pour fichiers de simulation & spécification

Ne sera pas étudié dans le cadre de l'unité BSL

Bascules, p 14Copyright ©2008 EMI, REDS@HEIG-VD

…… processus et liste de sensibilitprocessus et liste de sensibilitéé

• Avec liste de sensibilité :utilisé pour les descriptions synthétisablesprocessus activé uniquement lorsqu'un signal de la liste de sensibilité changeprocessus endormi à la fin (end process)instruction wait interditepermet de décrire :→système combinatoire ou

→éléments mémoires (bascules) ou

→système séquentiel ou

→description avec algorithme

Page 8: Instruction process Description VHDL des bascules

Bascules, p 15Copyright ©2008 EMI, REDS@HEIG-VD

Les instructions sLes instructions sééquentiellesquentielles

Les instructions séquentielles doivent êtreplacées à l'intérieur d'un processus• Affectation ( Y <= A and C; )

le signal Y sera actualisé à la fin du processus

• Affectation de variable ( Var1 := D and X; )la variable sera actualisée immédiatement

• Instruction de test ( if ... then else )

• Instruction de choix ( case ... is when )

Bascules, p 16Copyright ©2008 EMI, REDS@HEIG-VD

Instruction dInstruction d’’affectation d'un signalaffectation d'un signal

Affectation d'un signal :

Le signal sera affecté à l'endormissement du processus (end process ou wait ...)

Remarque :L'affectation avec condition (..<= ..when..) n'est pas utilisable à l'intérieur d'un process. Ce n'est pas une instruction séquentielle

Signal <= Sign_A fonct_logique Sign_B;

Page 9: Instruction process Description VHDL des bascules

Bascules, p 17Copyright ©2008 EMI, REDS@HEIG-VD

Instruction dInstruction d’’affectation d'une variableaffectation d'une variable

• Affectation d'une variable :

• Exemple :

La variable est actualisée immédiatement

L'utilisation des variables est possible seulement à l'intérieur del'instruction process

Variable1 := Var2 fonct_logique Var3;

Temp := Var0 or Var1 or Var3;

Bascules, p 22Copyright ©2008 EMI, REDS@HEIG-VD

Syntaxe de lSyntaxe de l’’instruction conditionnelleinstruction conditionnelle

if Condition1 then

--ZoneInstructions_1

elsif Condition2 then

--ZoneInstructions_2

.....

else

--ZoneInstructions_n

end if;

Page 10: Instruction process Description VHDL des bascules

Bascules, p 23Copyright ©2008 EMI, REDS@HEIG-VD

Syntaxe de lSyntaxe de l’’instruction conditionnelleinstruction conditionnelle

process (Sel, Enable)begin

if Enable = '1' then if Sel = "00" then

Sorties <= "0001";elsif Sel = "01" then

Sorties <= "0010";elsif Sel = "10" then

Sorties <= "0100";else

Sorties <= "1000";end if;

end if;end process;

Démultiplexeur

Exemple avecerreur

Bascules, p 24Copyright ©2008 EMI, REDS@HEIG-VD

Syntaxe de lSyntaxe de l’’instruction conditionnelleinstruction conditionnelle

process (Sel, Enable)begin

Sorties <= "0000"; --valeur par défautif Enable = '1' then

if Sel = "00" thenSorties(0) <= '1';

elsif Sel = "01" thenSorties(1) <= '1';

elsif Sel = "10" thenSorties(2) <= '1';

elseSorties(3) <= '1';

end if;end if;

end process;

Démultiplexeur

Page 11: Instruction process Description VHDL des bascules

Bascules, p 25Copyright ©2008 EMI, REDS@HEIG-VD

Syntaxe de lSyntaxe de l’’instruction de choixinstruction de choix

case Expression is

when Valeur1 => instructions1;

when Valeur2 => instructions2;

...

...

when others => instructionsN;

end case;

Bascules, p 26Copyright ©2008 EMI, REDS@HEIG-VD

Syntaxe de lSyntaxe de l’’instruction de choixinstruction de choix

process(adresse)

begin

CS_A <= '0'; --Valeur par defaut

CS_B <= '0'; --Valeur par defaut

case Adresse is

when "000"|"001"|"010" => CS_A <= '1';

when "011"|"100" => null;

when "101"|"110"|"111" => CS_B <= '1';

when others => CS_A <= 'X';CS_B <= 'X';

end case;

end process;

Exemple de décodeur d'adresse :

Page 12: Instruction process Description VHDL des bascules

Bascules, p 27Copyright ©2008 EMI, REDS@HEIG-VD

Description SLC avec un Description SLC avec un processprocess(SLC : Syst(SLC : Systèème Logique Combinatoire) me Logique Combinatoire)

• Toutes les entrées du SLC doivent être dans la liste de sensibilité.

• Toutes les sorties du SLC doivent être initialisées au début du processus.ou

Toutes les sorties du SLC doivent êtres affectées dans toutes les branches des instructions séquentielles.

• Interdit d'utiliser, dans le process, les sorties générée par celui-ci ! (Si nécessaire utiliser une variable dans le process)

IMPORTANTIMPORTANT

Bascules, p 28Copyright ©2008 EMI, REDS@HEIG-VD

Description VHDL des basculesDescription VHDL des bascules

• Objectif : le synthétiseur doit reconnaître la bascule d’après la description→ utilisez les descriptions standard→ pas de fantaisies→ les synthétiseurs refusent les boucles

asynchrones, sauf s’ils reconnaissent une bascule

Page 13: Instruction process Description VHDL des bascules

Bascules, p 29Copyright ©2008 EMI, REDS@HEIG-VD

Comportement par dComportement par dééfaut du VHDLfaut du VHDL

Lors de l'utilisation d'instructions séquentielles :

Cas non traité ⇒ VHDL maintien l'état du signal

• Cette fonctionnalité servira de base pour écrire les éléments mémoires

• Cette fonctionnalité sera aussi un piège par l'obtention de latchs non désirés

Bascules, p 30Copyright ©2008 EMI, REDS@HEIG-VD

Bascule RS asynchrone :Bascule RS asynchrone :

• Symbole CEI :

SSet

Reset

Q

R

Page 14: Instruction process Description VHDL des bascules

Bascules, p 31Copyright ©2008 EMI, REDS@HEIG-VD

Bascule RS asynchrone : Bascule RS asynchrone : entityentity

library IEEE;use IEEE.Std_Logic_1164.all;

entity Bascule_RS_Async isport( S_i : in Std_Logic ;

-- entree de mise a '1'R_i : in Std_Logic ;

-- entree de mise a '0'Q_o : out Std_Logic

-- sortie de la bascule);

end Bascule_RS_Async;

Bascules, p 32Copyright ©2008 EMI, REDS@HEIG-VD

Bascule RS asynchrone : architecture Bascule RS asynchrone : architecture

architecture Comport of Bascule_RS_Async is

begin

Mem:process(S_i,R_i)begin

if S_i = '1' then -- Set prioritaireQ_o <= '1'; -- mise à '1'

elsif R_i = '1' thenQ_o <= '0'; -- mise à '0'

-- else implicite : maintien par defautend if;

end process;

end Comport;

Page 15: Instruction process Description VHDL des bascules

Bascules, p 33Copyright ©2008 EMI, REDS@HEIG-VD

Bascule RS asynchrone : vue RTLBascule RS asynchrone : vue RTL

• Pourquoi la synthèse fait-elle apparaître un latch ?

• Pourquoi S_i connecté directement sur l'entrée S du latchet pas R_i ?

Bascules, p 34Copyright ©2008 EMI, REDS@HEIG-VD

…… LATCH D LATCH D ……

• Symbole CEI :

1DD

G

Q

G1

Page 16: Instruction process Description VHDL des bascules

Bascules, p 35Copyright ©2008 EMI, REDS@HEIG-VD

LatchLatch D : D : entityentity

library IEEE;use IEEE.Std_Logic_1164.all;

entity D_Latch is

port( D_i : in Std_Logic ;

-- Entree D

G_i : in Std_Logic ;

-- Enable

Q_o : out Std_Logic

-- sortie de la bascule

);

end D_latch ;

Bascules, p 36Copyright ©2008 EMI, REDS@HEIG-VD

LatchLatch D : architectureD : architecture

architecture Comport of D_Latch isbegin

Mem: process(G_i,D_i)begin

if (G_i = '1') thenQ_o <= D_i ;

-- else implicite => maintien par defautend if;

end process ;

end Comport;

Page 17: Instruction process Description VHDL des bascules

Bascules, p 37Copyright ©2008 EMI, REDS@HEIG-VD

LatchLatch D : vue RTLD : vue RTL

Bascules, p 38Copyright ©2008 EMI, REDS@HEIG-VD

... flip... flip--flop D (DFF) flop D (DFF) ……

Table des transitions : Symbole CEI :

1DD

Horloge

Q

C1

D Q+

0 0

1 1

Horloge

D Q+

0 0

1 1

Table des transitionssynchrones (sans l'horloge)

Page 18: Instruction process Description VHDL des bascules

Bascules, p 39Copyright ©2008 EMI, REDS@HEIG-VD

FlipFlip--flop D : flop D : entityentity

library IEEE;use IEEE.Std_Logic_1164.all;

entity DFF isport(Horloge_i : in Std_Logic ;

-- Entree de commandeReset_i : in Std_Logic ;

-- Mise a zero asynchroneD_i : in Std_Logic ;

-- Entree de donneeQ_o : out Std_Logic

-- sortie de la bascule);

end DFF ;

Bascules, p 40Copyright ©2008 EMI, REDS@HEIG-VD

FlipFlip--flop D : architectureflop D : architecture

architecture Comport of DFF isbegin

Mem: process (Reset_i, Horloge_i)begin

if (Reset_i = '1') then-- comportement asynchrone prioritaire

Q_o <= '0' ;elsif Rising_Edge(Horloge_i) then-- comportement synchrone

Q_o <= D_i ;-- else implicite => maintien par defautend if;

end process ;

end Comport ;

Page 19: Instruction process Description VHDL des bascules

Bascules, p 41Copyright ©2008 EMI, REDS@HEIG-VD

FlipFlip--flop D : vue RTLflop D : vue RTL

Bascules, p 42Copyright ©2008 EMI, REDS@HEIG-VD

Type de bascule ?Type de bascule ?

Library IEEE;use IEEE.Std_Logic_1164.all;

entity Bascule isport (D : in Std_Logic;

Com : in Std_Logic;Q : out Std_Logic);

end Bascule;

architecture Comport of Bascule isbeginprocess(Com)beginif Com = '1' then

Q <= D;end if;

end process;end Comport;

D

Com

Q

?

Page 20: Instruction process Description VHDL des bascules

Bascules, p 43Copyright ©2008 EMI, REDS@HEIG-VD

SynthSynthèèse de cette basculese de cette bascule

• Cette description est ambiguë.

• Deux informations se contredissent :

le processus ne réagit que sur Com => action dynamique => flip-flop

la condition du test spécifie un niveau (=)=> action sur un niveau => latch

Bascules, p 44Copyright ©2008 EMI, REDS@HEIG-VD

Type de bascule ?Type de bascule ?

• Compréhension par le simulateur, inter- prétation stricte de la description VHDL:

une seule réponse : ....................................

• Compréhension par le synthétiseur qui va traduire la description VHDL en logique:

priorité à la liste de sensibilité : ...................

priorité à la condition de test : ...................

Page 21: Instruction process Description VHDL des bascules

Bascules, p 45Copyright ©2008 EMI, REDS@HEIG-VD

RRéésultat de la simulation sultat de la simulation ((ModelSimModelSim))

Le comportement correspond bien a celui d'un flip-flop D

Bascules, p 46Copyright ©2008 EMI, REDS@HEIG-VD

SynthSynthèèse avec Lse avec Lééonardoonardo

Le résultat de la synthèse est un flip-flop

Page 22: Instruction process Description VHDL des bascules

Bascules, p 47Copyright ©2008 EMI, REDS@HEIG-VD

Synthesizing work.bascule.comport

@W:"f:\en_cours\synplify\bascule.vhd":30:2:30:8Incomplete sensitivity list - assumingcompleteness

@W:"f:\en_cours\synplify\bascule.vhd":33:10:33:10Referenced variable d is not in sensitivity list

Post processing for work.bascule.comport

@W:"f:\en_cours\synplify\bascule.vhd":32:4:32:5Latch generated from process for signal q, probably caused by a missing assignment in an if or case stmt

@END

SynthSynthèèse avec se avec SynplifySynplify : : 3 3 WARNINGWARNING

Bascules, p 48Copyright ©2008 EMI, REDS@HEIG-VD

SynthSynthèèse avec se avec SynplifySynplify

Le résultat de la synthèse est un LATCH

Com

Page 23: Instruction process Description VHDL des bascules

Bascules, p 49Copyright ©2008 EMI, REDS@HEIG-VD

Conclusion sur cette descriptionConclusion sur cette description

• Le comportement en simulation peut-être différent du matériel obtenu

• Matériel obtenu dépend du synthétiseur,résultat pas identique

Cette description est NON SYNTHETISABLE

Interdit par la norme IEEE 1076.6-1999

Bascules, p 50Copyright ©2008 EMI, REDS@HEIG-VD

Exe: Description d'Exe: Description d'ééllééments mments méémoiresmoires

Pour chaque exercice:

• Etablir la description synthétisable

• Compiler la description, puis

• Synthétiser la description avec Precision et vérifier le matériel obtenu (vue RTL).

• Simuler avec le fonctionnement avec Top_Sim

Page 24: Instruction process Description VHDL des bascules

Bascules, p 51Copyright ©2008 EMI, REDS@HEIG-VD

Exercice 1 : Exercice 1 : LatchDLatchD

• Etablir la description VHDL du latch D suivant :

Quel est le type d'action des signaux suivants :

- G, Reset

R

Reset

1DD

G

Q

G1

Bascules, p 52Copyright ©2008 EMI, REDS@HEIG-VD

Exercice 2 : Exercice 2 : DFFbDFFb

• Etablir la description VHDL du flip-flop D suivant :

Quel est le type d'action des signaux suivants :

- Horloge, Reset

1DD

Horloge

Q

C1

R

Reset

nQ

Page 25: Instruction process Description VHDL des bascules

Bascules, p 53Copyright ©2008 EMI, REDS@HEIG-VD

Exercice 3 : DFFEExercice 3 : DFFE

• Concevoir le schéma logique, puis établir la description VHDL du flip-flop D avec enable suivant :

• Ce flip-flop est souvent nommé DFFE :

Table des transitionssynchrones : 1DD

Horloge

Q

C1

R

Reset

ENEn

En D Q+

0 x Q

1 0 0

1 1 1

Bascules, p 54Copyright ©2008 EMI, REDS@HEIG-VD

Exercice 4 : Exercice 4 : Flipflop_TFlipflop_T

• Concevoir le schéma logique, puis établir la description VHDL du flip-flop T suivant :

1TT

Horloge

Q

C1

R

Reset

Table des transitionssynchrones :

T Q+

0 Q

1 not Q

Page 26: Instruction process Description VHDL des bascules

Bascules, p 55Copyright ©2008 EMI, REDS@HEIG-VD

Exercice 5 : Exercice 5 : Flipflop_JKFlipflop_JK

• Concevoir le schéma logique, puis établir la description VHDL du flip-flop JK suivant :

Table des transitionssynchrones :

1JJ

Horloge

Q

1KK

C1

J K Q+

0 0 Q

0 1 0

1 0 1

1 1 not Q

RReset

Q