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)

Instruction process Description VHDL des bascules

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

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