Master 1 VHDL Course

Electronics, Digital Systems Design, VHDL · course

Voir tous les documents en électronique et automatique

Master 1

Electronique

Energie lectrique

Automatique

Conception des syst mes Num riques

CSN

Samuel CRAND

B t 6 ISTIC

T l : 02 23 23 65 04

[email protected]

Partie 2

2

VHDL

De la Sp cification Haut Niveau au Circuit

Samuel CRAND

B t 6 ISTIC

T l : 02 23 23 65 04

[email protected]

0

www.istic.univ-rennes1.fr

Objectifs de ce module

3

. Pr sentation du langage VHDL

. Principes g n raux

. Syntaxe

. Exemples

. VHDL pour la Synth se

. Utilisation du VHDL pour la conception de syst mes num riques

?

Code VHDL

Source : www. altera.com

0

www.istic.univ-rennes1.fr

4

VHDL

Langage de mod lisation de circuits num riques

. VHDL : VHSIC Hardware Description Language

. VHSIC : Very High Speed Integrated Circuit

0

www.istic.univ-rennes1.fr

Plan 5

1. Introduction

2. El ments de base

3. Types

4. Objets

5. Attributs

6. Ex cution parall le et s quentielle

7. Instructions

8. Op rateurs standards

9. Description hi rarchique

10. VHDL et simulation

11. VHDL et synth se

12. Conclusion

13. R f rences bibliographiques

0

www.istic.univ-rennes1.fr

1. Introduction 6

  • Pourquoi le VHDL ?

. Langage non propri taire

. Standardisation pr coce

. Langage adopt par de nombreux outils

. Autre langage : VERILOG

  • Initialement : Le VHDL a t d velopp pour la mod lisation et la simulation
  • Synth se VHDL (synth se logique) li e lessor des CLP

(Circuits Logiques Programmables)

  • Mod lisation et synth se : 2 concepts diff rents

. Mod lisation

. Synth se

-> Le r sultat de la simulation

-> Le r sultat ET la difficult pour y aboutir

0

www.istic.univ-rennes1.fr

1. Introduction 7

  • Les circuits/syst mes concevoir : Taille et complexit
  • Cons quence

. La description au niveau porte devient rapidement difficile g rer

  • N cessit d'une description plus abstraite

. Niveau d'abstraction plus lev D marche descendante

  • Les HDL assimilables aux langages logiciels de haut niveau

. Langage C Assembleur

. HDL

Equations logiques

  • Objectifs des HDL

. Description de l'application au niveau appropri

. Simulation et v rification

. Conception et validation

0

www.istic.univ-rennes1.fr

1. Introduction 8

  • Fin des ann es 70 : lancement du programme VHSIC par

le minist re de la d fense am ricaine

  • 1981 : Premi res r flexions sur le VHDL
  • 1987 : IEEE 1076 : D finition d un langage unique pour

. La description

. La mod lisation

. La simulation

. La synth se

. La documentation

  • 1993 : IEEE 1164 : Normalisation des signaux logiques multivaleurs
  • 1996 : IEEE 1076.3 : Normalisation pour la synth se

. Implantation d un nombre sign

0

www.istic.univ-rennes1.fr

2. Elements de base

9

  • Entity/Architecture : Brique de base de complexit tr s variable

Fonctionnement et/ou structure interne

Interface externe

  • Configuration : Possibilit dassocier plusieurs architectures une seule entit
  • Ex : Une architecture d di e la simulation et une pour la synth se
  • Package :
  • Faciliter une conception modulaire et hi rarchique
  • Faciliter la r utilisation
  • Ex : les entit s/architectures r utiliser : dans des packages
  • Library :
  • Possibilit dutiliser le concept de biblioth ques
  • Biblioth que work : biblioth que de travail
  • Certaines biblioth ques sont implicites , par ex : work et std

0

www.istic.univ-rennes1.fr

2. Elements de base : Entit et Architecture

10

Vue externe : D finition de l'entit

In 1

In 2

In 3

Bloc A

Out 1

Out 2

Vue interne : D finition de l'architecture

Bloc A

In 1

In 2

Bloc B

Bloc C

Out 1

In 3

Bloc D

Bloc E

Out 2

0

www.istic.univ-rennes1.fr

2.1 Entit (Entity)

11

. Port :

. Signal d interface entre lentit et lext rieur

. Chaque port est associ un nom, un mode et un type

. Ordre de la d claration des diff rents signaux : aucune importance

. Ordre conserv lors dune utilisation un plus haut niveau de cette entit

  • Instanciation d'un composant (component)

. Mode :

. D finition du sens du signal

. 4 modes sont d finis

  • in : Signal dentr e monodirectionnel
  • out : Signal de sortie monodirectionnel
  • inout : Signal dentr e/sortie bidirectionnel
  • buffer : Signal de sortie/entr e monodirectionnel

. Utile pour le rebouclage" (sortie consid r e comme une entr e)

. Peu utilis (remplac par une sortie associ e un signal interne)

0

www.istic.univ-rennes1.fr

. Mode : 4 modes de ports

CS

R/W

Adresse

Donn es

M moire

2.1 Entit (Entity)

12

. In

. Out

. Inout

. Buffer

Busy

Erreur

0

www.istic.univ-rennes1.fr

2.1 Entit (Entity)

13

D claration :

ENTITY nom_entite IS

GENERIC (parametres_generiques : type := valeur_par_defaut);

PORT ( entrees : IN type_entrees;

sorties : OUT type_sorties;

entreessorties : INOUT type_entreessorties;

entreessorties_buffer : BUFFER type_entreessorties_buffer);

END nom_entite;

0

www.istic.univ-rennes1.fr

2.1 Entit (Entity)

14

. Exemple : Un additionneur 8 bits synchrone une horloge

ENTITY adder_pip IS

PORT( clk : IN bit;

a,b : IN bit_vector(7 DOWNTO 0);

cin : IN bit;

s : OUT bit_vector(7 DOWNTO 0);

cout : OUT bit);

END adder_pip;

0

www.istic.univ-rennes1.fr

2.2 Architecture

15

. Sp cification de la fonctionnalit

. Plusieurs architectures peuvent tre d finies pour le m me mod le

D claration :

ARCHITECTURE nomdelarchitecture OF nomdelentit IS

d clarations de proc dures, de types, de constantes,

de composants, de signaux

BEGIN

d finiton de processus

et/ou

d'instances de composants, ...

END nomdelarchitecture;

0

www.istic.univ-rennes1.fr

2.2 Architecture

16

. Exemple

ARCHITECTURE comportementale OF adder_pip IS

BEGIN

PROCESS(clk)

VARIABLE carry : bit;

VARIABLE sum : bit_vector (7 DOWNTO 0);

BEGIN

IF (CLK = '1') THEN

carry := cin;

FOR i IN 0 TO a'length-1 LOOP

sum(i) := a(i) XOR b(i) XOR carry;

carry := (a(i) AND b(i)) OR (a(i) AND carry) OR (b(i) AND carry);

END LOOP;

cout <= carry;

s <= sum;

END IF;

END PROCESS;

END comportementale;

0

www.istic.univ-rennes1.fr

2.2. Architecture

17

. 3 Types de description :

. Description comportementale (behavioural)

  • Description purement fonctionnelle du circuit
  • Description algorithmique

. Description flot de donn es (data flow)

  • Association dop rateurs logiques (Register Transfert Level)
  • Description des signaux (entr es et sorties de ces modules)
  • Traduction dune table de v rit

Publicité

. Description structurelle

  • Traduction dune repr sentation sch matique
  • Utilisation de composants disponibles
  • Description des signaux permettant dassurer les connexions

Remarque : Au sein dune m me architecture, il est possible d utiliser des modules d crits de

mani re comportementale, flot de donn es ou structurelle

0

www.istic.univ-rennes1.fr

2.2.1 Architecture : Description comportementale

18

. Description haut niveau

ARCHITECTURE haut_niveau OF adder IS

BEGIN

S <= A + B;

END haut_niveau;

. Description haut niveau : une bascule D active sur front montant

ENTITY basculed IS

PORT(d,clk : IN bit;

q: OUT bit);

END basculed;

ARCHITECTURE comportementale OF basculed IS

BEGIN

PROCESS(clk)

BEGIN

IF (clk='1') THEN q<=d;END IF;

END PROCESS;

END comportementale;

0

www.istic.univ-rennes1.fr

2.2.2 Architecture : Description flot de donn es

19

. Description flot de donn es (niveau quations logiques)

ARCHITECTURE niveau_equations_logiques OF adder IS

BEGIN

S(0) <= A(0) XOR B(0);

S(1) <= A(0) AND B(0) XOR A(1) XOR B(1);

END niveau_equations_logiques;

. Description flot de donn es (bas niveau)

ARCHITECTURE bas_niveau OF adder IS

BEGIN

S(0) <= '1' WHEN A(0) /= B(0) ELSE '0';

S(1) <= '1' WHEN (

(A(0)/=B(0) AND A(1)/=B(1)) OR

(A(1) =B(1) AND (A(0)='1') AND (B(0)='1') ) OR

(A(1)/=B(1) AND (A(0)='0') AND (B(0)='0') )

) ELSE '0';

END bas_niveau;

0

www.istic.univ-rennes1.fr

2.2.3 Architecture : Description structurelle

20

. Traduction d'une repr sentation sch matique

A(0)

B(0)

A(1)

B(1)

A(0)

B(0)

S(0)

VHDL

S(1)

ARCHITECTURE structurelle OF adder IS

COMPONENT xor2

port(e1,e2 : in bit; s : out bit); end COMPONENT

COMPONENT and2

port(e1,e2 : in bit; s : out bit); end COMPONENT

SIGNAL inter1,inter2 :bit;

BEGIN

u1 : xor2 PORT MAP (e1=>A(0),e2=>B(0),s=>S(0));

u2 : xor2 PORT MAP (e1=>A(1),e2=>B(1),s=>inter1);

u3 : and2 PORT MAP (e1=>A(0),e2=>B(0),s=>inter2);

u4 : xor2 PORT MAP (e1=>inter1,e2=>inter2,s=>S(1));

0

end structurelle;

www.istic.univ-rennes1.fr

2.2.3 Architecture : Description mixte

. Au sein d'une m me architecture, il est possible d'utiliser

du comportemental et du structurel

21

reset

D

S_inter

clk

b

a

Adder

s

ENTITY integration IS PORT(

a : IN bit_vector(0 to 1);

reset, clk : IN bit;

s : OUT bit_vector(0 to 1));

END integration;

ARCHITECTURE mixte OF integration IS

SIGNAL b,s_inter :bit_vector(0 to 1);

COMPONENT adder

PORT(a,b : IN bit_vector(0 to 1);

s : OUT bit_vector(0 to 1)); END COMPONENT;

VHDL

BEGIN

PROCESS(clk)

BEGIN

IF clk = '1' THEN

IF reset = '1' THEN b <= ''00'';

ELSE b <= s_inter;

END IF;

END IF;

END PROCESS;

u1 : adder PORT MAP (a=>a,b=>b,s=>s_inter);

s <= s_inter;

0

END mixte;

www.istic.univ-rennes1.fr

3. Types

22

. Types :

. VHDL interdit lassociation de 2 signaux de type diff rent

. Types disponibles

  • Scalaires (Scalar)

. Entiers (integer)

. Flottants (Real)

. Enum r s (Enumerated)

. Physiques (Physical)

  • Compos s (Composite)

. Tableaux (Array)

  • Collection dobjets de m me type

. Enregistrements (Record)

  • Collection dobjets de type diff rent
  • Access et File

. Types pour la manipulation de fichiers ou sur les pointeurs

0

www.istic.univ-rennes1.fr

3. Types

23

. Sous-types :

. Restrictions :

SUBTYPE chiffre IS integer RANGE 0 TO 9;

SUBTYPE octet IS bit_vector(0 TO 7);

. 2 sous-types pr d finis

SUBTYPE natural IS integer RANGE 0 TO higher_integer;

SUBTYPE positive IS integer RANGE 1 TO higher_integer;

. Association dun sous-type au type partir duquel il a t d fini : autoris

. Association entre 2 sous-types diff rents issus du m me type : autoris

0

www.istic.univ-rennes1.fr

3.1 Types : Scalaires

24

. Types entiers (INTEGER)

-231 + 1 entier 231 - 1

TYPE chiffre_ascendant IS RANGE 0 TO 9;

TYPE chiffre_descendant IS RANGE 9 DOWNTO 0;

Notations de valeurs

-154

147

2#01010111# (binaire)

16#3FFF# hexad cimal

. Types flottants (REAL)

Approximation discr te de l'ensemble des r els dans un intervalle donn

TYPE real IS RANGE -1.0E38 TO 1.0E+38;

0

www.istic.univ-rennes1.fr

3.1 Types : Scalaires

25

. Types num r s :

Ensemble de valeurs d sign es par des identificateurs ou des caract res

TYPE boolean IS (false, true);

TYPE bit IS ('0','1');

TYPE std_logic IS ('U', X', O', 1' Z', W', L', H' , -');

TYPE jour IS (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche);

Remarques :

. Chaque caract re ou cha ne de caract res au sein d'un m me type

doit tre distinct

. Possibilit d'utiliser le m me caract re dans 2 types distincts

0

www.istic.univ-rennes1.fr

3.1 Types : Scalaires

26

. Types physiques :

Valeurs num riques de quantit s physiques

TYPE time IS RANGE -2 147 483 647 TO 2 147 483 647

UNITS

ps = 1000 fs;

ns = 1000 ps;

us = 1000 ns;

ms = 1000 us;

sec = 1000 ms;

min = 60 s;

hr = 60 min;

END UNITS;

0

www.istic.univ-rennes1.fr

3.2 Types : Compos s

27

. Types tableaux

. Bornes fix es la d finition du type

TYPE octet IS ARRAY (7 DOWNTO 0) OF bit;

TYPE memoire IS ARRAY (0 TO 255) OF octet;

. Bornes fix es chaque d claration d'un objet de type tableau

TYPE vecteur IS ARRAY (integer RANGE <>) OF std_logic;

SIGNAL mon_vecteur : vecteur(1 TO 20)

. L'indice peut- tre un type entier d fini par d claration

TYPE adresse IS RANGE 0 TO 255;

TYPE memoire IS ARRAY (adresse) OF octet;

. Tableaux pr d finis

TYPE std_logic_vector IS ARRAY (natural RANGE <>) OF std_logic;

TYPE string IS ARRAY (positive RANGE <>) OF character;

0

www.istic.univ-rennes1.fr

3.2 Types : Compos s

28

. Types enregistrements

. Ensemble d' l ments nomm s avec des types pouvant tre diff rents

TYPE instruction IS

RECORD

code_operatoire : operation;

addresse : octet;

operande1, operande2 : integer RANGE 0 TO 15;

END RECORD;

. Acc s un champ particulier

instruction.code_operatoire <= soustraction;

0

www.istic.univ-rennes1.fr

3.3 Types : Classes

29

. Types et sous-types :

. 3 classes

  • Types pr d finis

. Standard VHDL initial IEEE.1076

  • Types compl mentaires

. Standard VHDL initial IEEE.1164

  • Types d finis par lutilisateur

0

www.istic.univ-rennes1.fr

3.3 Types : Classe - les Pr d finis

30

Pr d finis

Integer

bit

Boolean

Real

Time

Natural

Positive

Bit_vector

Publicité

Remarque : Synth se logique

  • time : non
  • real : non
  • integer : Favoriser les entiers born s

0

www.istic.univ-rennes1.fr

3.3 Types : Classe - les compl mentaires

31

. Standard IEEE 1164 - les signaux multivaleurs (package std_logic_1164)

  • std_ulogic et std_ulogic_vector

. Std_ulogic se caract rise par 9 valeurs

  • U : non initialis
  • X : niveau inconnu (conflit fort)
  • 0 : niveau bas
  • 1 : niveau haut
  • Z : haute imp dance
  • W : niveau inconnu (conflit faible)
  • L : niveau bas
  • H : niveau haut
  • - : niveau quelconque

. Std_logic : SUBTYPE std_logic IS RESOLVED std_ulogic;

  • VHDL interdit la connexion de 2 sorties entre elles
  • Introduction des signaux "r solus" (Resolved Signal)
  • Possibilit d'interconnecter plusieurs sorties ensemble

0

. IEEE 1076.3 - la synth se logique et les traitements arithm tiques

www.istic.univ-rennes1.fr

  • signed et unsigned

32

X 0

1 Z W L

TYPE stdlogic_table IS ARRAY(std_ulogic, std_ulogic) OF std_ulogic;

-------------------------------------------------------------------

-- resolution function

-------------------------------------------------------------------

CONSTANT resolution_table : stdlogic_table := (

---------------------------------------------------------

--

| U

--

---------------------------------------------------------

--

'U',

( 'U',

'X',

( 'U ,

'X',

( 'U',

'X',

( 'U',

'X',

( 'U',

'X',

( 'U',

'X',

( 'U',

( 'U',

'X',

( 'U', X',

'U' ),

'U',

'X' ),

'X',

'X' ),

'0',

'X' ),

'1',

'X' ),

'H',

'X' ),

'W',

'W',

'X' ),

'H', X' ),

'X' ));

'X',

'U',

'X',

'X',

'1',

'1',

'1',

'1',

'1',

'X',

'U',

'X',

'0',

'1',

'L',

W',

'L',

'W',

'X',

'U',

'X',

'0',

'1',

'W',

'W',

'W,

'W,

'X',

'U',

'X',

'0',

'1',

'Z',

'W',

'L',

'H',

'X',

'U',

'X',

'0',

'X',

'0',

'0',

'0',

'0',

'X',

  • |

H

-- | U |

-- | X |

-- | 0 |

-- | 1 |

-- | Z |

-- | W |

-- | L |

-- | H |

-- | - |

FUNCTION resolved(s : std_ulogic_vector ) RETURN std_ulogic IS

VARIABLE result : std_ulogic := 'Z'; -- weakest state default

BEGIN

IF (s'LENGTH = 1) THEN RETURN s(s'LOW);

ELSE

FOR i IN s'RANGE LOOP

result := resolution_table(result, s(i));

END LOOP;

END IF;

RETURN result;

END resolved;

0

www.istic.univ-rennes1.fr

3.3 Types : Classe - les d finis par l'utilisateur

33

. Types d finis une application dun type ou dun sous-type

TYPE memoire IS ARRAY (integer RANGE<> ) OF octet;

VARIABLE ma_memoire : memoire (15 DOWNTO 0);

. Types d finis une application dun sous-type

SUBTYPE octet IS std_logic_vector (7 DOWNTO 0 );

SIGNAL adresse : octet;

0

www.istic.univ-rennes1.fr

4. Objets : Constantes, Variables, Signaux

34

. Utilisation des constantes et des variables : proche des langages traditionnels

. Utilisation des signaux : sp cification au langage de description du mat riel

. Constantes (Constant)

. Objets internes valeurs fixes et d finitives

. Synth se : Mise VCC ou au GND Surface nulle

. D claration : constant nom : type := valeur;

. Exemple :

CONSTANT modulo : integer := 17 ;

. Variables (Variable)

. Objets permettant de conserver une valeur pendant un certain temps

. Utilisable qu'au sein d'un processus (d finition dans le process)

. Exemple:

VARIABLE octet1 : std_logic_vector(0 TO 7) := "00000001";

0

www.istic.univ-rennes1.fr

4. Objets : Constantes, Variables, Signaux

35

. Variable

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity synthese_var is

Port ( a : in STD_LOGIC;

b : in STD_LOGIC;

c : in STD_LOGIC;

clk : in STD_LOGIC;

y : out STD_LOGIC);

end synthese_var;

architecture Behavioral of synthese_var is

BEGIN

PROCESS(clk)

VARIABLE tmp : STD_LOGIC;

BEGIN

if rising_edge(clk) then

tmp := a and b;

y <= tmp or c;

end if;

END PROCESS;

end Behavioral;

a

b

c

clk

Synth se

y

0

www.istic.univ-rennes1.fr

4. Objets : Constantes, Variables, Signaux

36

. Signaux (signal)

. Utilisation en mode concurrent et s quentiel

. D claration dans une "zone" concurrente

. Signaux internes, temporaires

. Synth se (repr sentation mat rielle : un fil ou une m moire)

. Absence de mode

. Synth se d'une VARIABLE Synth se d'un SIGNAL

. Une valeur courante

. Une valeur future

0

www.istic.univ-rennes1.fr

4. Objets : Constantes, Variables, Signaux

37

. Signaux (signal)

. Synth se d'une VARIABLE Synth se d'un SIGNAL

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity synthese_signal is

Port ( a : in STD_LOGIC;

b : in STD_LOGIC;

c : in STD_LOGIC;

clk : in STD_LOGIC;

y : out STD_LOGIC);

end synthese_signal;

architecture Behavioral of synthese_signal is

SIGNAL tmp : STD_LOGIC;

BEGIN

PROCESS(clk)

BEGIN

if rising_edge(clk) then

tmp <= a and b;

y <= tmp or c;

end if;

END PROCESS;

end Behavioral;

a

b

clk

c

Synth se

tmp

y

Synth se

www.istic.univ-rennes1.fr

0

5. Attributs

38

. Informations suppl mentaires sur les types et objets

. Utilisation : T'att avec T un objet ou un type et att un attribut

. Attributs d'un scalaire

Publicité

T'left

T'right

T'low

T'high

-> Limite gauche de T

-> Limite droite de T

-> Limite basse de T

-> Limite haute de T

. Attributs d'un ensemble discret

-> Num ro de la position de X dans T

T'pos(X)

T'val(N)-> Valeur la position N dans T

T'leftof(X)

T'rightof(X)

T'pred(X)

-> Valeur une position gauche de X dans T

-> Valeur une position droite de X dans T

-> Valeur une position au dessous de X dans T

T'succ(X)

-> Valeur une position au dessus de X dans T

0

www.istic.univ-rennes1.fr

5. Attributs

39

. Exemples - Attributs d'un type scalaire

Type adr is integer range 7 downto 0;

adr'left = 7

adr'right = 0

adr'low = 0

adr'high = 7

. Exemples - Attributs d'un type ensemble discret

Type MVL4 is ('U', '0', '1', 'Z');

MVL4'pos('1') = 2

MVL4'val(0) = 'U'

MVL4'rightof('1') = 'Z'

MVL4'leftof('1') = '0'

MVL4'succ(2) = 'Z'

MVL4'prec(2) = '0'

0

www.istic.univ-rennes1.fr

5. Attributs

40

. Attributs d'un tableau

Limite gauche de l'intervalle des indices de la dim. N de A

Limite droite de l'intervalle des indices de la dim. N de A

Limite basse de l'intervalle des indices de la dim. N de A

Limite haute de l'intervalle des indices de la dim. N de A

Intervalle des indices de la dim. N de A

A'left(N)

A'right(N)

A'low(N)

A'highof(N)

A'range(N)

A'reverse_range(N) Intervalle inverse des indices de la dim. N de A

Longueur de l'intervalle des indices de la dim. N de A

A'length(N)

. Attributs d'un signal

S'stable(t) Renvoie une valeur bool enne true si S est constant

depuis au moins t

S'event Renvoie une valeur bool enne true si S a chang depuis

le dernier cycle de simulation

0

www.istic.univ-rennes1.fr

5. Attributs

41

. Exemples : Attributs d'un tableau

type word is bit_vector(31 downto 0);

type memory is array(7 downto 0) of word;

variable mem : memory;

mem'left = 7

mem'left(3) = 31

mem'right = 0

mem'low = 0

mem'high = 7

mem'high(5) = 31

mem'range = 7 downto 0

mem'range(3) = 31 downto 0

mem'reverse_range = 0 to 7

mem'length = 8

mem'length(3) = 32

0

www.istic.univ-rennes1.fr

6. Ex cution parall le et s quentielle

42

. Particularisme du VHDL : Ex cution parall le ou s quentielle

. Ex cution parall le

. Ex cution par d faut

. Les instructions au sein d'une architecture sont ex cut es en

parall le ou de mani re concurrente

. Ex cution concurrente = Ex cution combinatoire

. Chaque op ration dans une architecture est ex cut e chaque instant

. Ex cution s quentielle

. N cessit d'utiliser un PROCESS

. Le process est activ chaque fois qu'un signal d clar dans

sa liste de sensibilit change de valeur.

. Les instructions sont ex cut es s quentiellement

. Les modifications des signaux (signal) sont effectives la fin du process

0

www.istic.univ-rennes1.fr

6. Ex cution parall le et s quentielle

43

. Ex cution mixte

. Possibilit d'associer dans une m me architecture des modules

ex cution parall le et s quentielle

. Exemple : Comparateur synchrone une horloge clk

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY comp_synch IS PORT (

a, b, clk, reset : IN bit;

qs : OUT bit);

END comp_synch;

ARCHITECTURE archi_mixte OF comp_synch IS

SIGNAL q : bit;

BEGIN

q<='1 WHEN a=b ELSE '0';

PROCESS(clk, reset)

BEGIN

Synth se

a

b

Comparateur

qs

q

clk

Reset

IF reset='0' THEN qs<='0';

ELSIF (clk'event AND clk='1') THEN qs <= q;

END IF;

END PROCESS;

END archi_mixte;

www.istic.univ-rennes1.fr

0

7. Instructions

44

. Deux types d'ex cution : Deux familles d'instructions

. Instructions r serv es au mode d'ex cution parall le ou concurrente

  • Toutes les op rations sont ex cut es simultan ment
  • L'ordre d' criture n'a aucune importance

I1

I2

I3

. Instructions r serv es au mode d'ex cution s quentielle

  • Chaque op ration est effectu e l'une apr s l'autre
  • L'ordre d' criture a une grande importance

0

www.istic.univ-rennes1.fr

I1

I2

I3

7.1 Instructions de type parall le

45

. Assignation inconditionnelle

. Assignation conditionnelle

signal <= {expression WHEN condition} ELSE expression

ARCHITECTURE flot_de_donnees OF xor IS

BEGIN

c <= '0' WHEN a = '0' AND b = '0' ELSE

'1' WHEN a = '0' AND b = '1' ELSE

'1' WHEN a = '1' AND b = '0' ELSE

'0' WHEN a = '1' AND b = '1' ELSE

'0';

END flot_de_donnees;

0

www.istic.univ-rennes1.fr

7.1 Instructions de type parall le

46

. Assignation s lective

WITH s lecteur SELECT

signal <= {expression WHEN valeur_s lecteur,

expression WHEN OTHERS};

ARCHITECTURE flot_de_donnees OF mux IS

SIGNAL selection : std_logic_vector(0 TO 1);

SIGNAL a,b,c,d,s : std_logic_vector(0 TO 7);

BEGIN

WITH selection SELECT

s <= a WHEN "00";

b WHEN "01";

c WHEN "10";

d WHEN OTHERS;

END flot_de_donnees;

0

www.istic.univ-rennes1.fr

7.1 Instructions de type parall le

47

. Assignation d'un composant

label : nom_du_composant PORT MAP (association des ports)

ARCHITECTURE arch_full OF full_adder IS

SIGNAL inter : bit;

COMPONENT half_adder PORT (a,b,cin : IN bit;

cout,s : OUT bit);

END COMPONENT;

BEGIN

u1 : half_adder PORT MAP (a=>a(0),b=>b(0),cin=>cin,cout=>inter,s=>s(0));

u2 : half_adder PORT MAP (a=>a(1),b=>b(1),cin=>inter,cout=>cout,s=>s(1));

END arch_full;

. Instruction GENERATE

label : FOR variable_boucle IN val_iniale TO val_finale GENERATE

{instructions parall les}

END GENERATE label

0

www.istic.univ-rennes1.fr

48

7.1 Instructions de type parall le

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY mod_gen IS

GENERIC(N : integer := 4);

PORT(

a,b : IN std_logic_vector(N DOWNTO 1);

cin : IN std_logic;

s : OUT std_logic_vector(N DOWNTO 1);

cout : OUT std_logic);

END mod_gen

ARCHITECTURE structurel OF mod_gen IS

COMPONENT ADDER PORT(a,b,cin : IN std_logic;s,cout : OUT std_logic); END COMPONENT

SIGNAL carry : std_logic_vector(N-1 DOWNTO 1);

BEGIN

gene : FOR I IN 1 TO N GENERATE

ls_bit : IF i=1 GENERATE

ls_cell : adder PORT MAP(a(1),b(1),cin,s(1), carry(1));

END GENERATE ls_bit;

middle_bit : IF i>1 and i<N GENERATE

middle_cell : adder PORT MAP(a(i),b(i),carry(i-1),s(i), carry(i));

END GENERATE middle_bit;

ms_bit : IF i=N GENERATE

ms_cell : adder PORT MAP(a(N),b(N),carry(N-1),s(N), cout);

END GENERATE ms_bit;

END GENERATE gene;

END structurel;

0

www.istic.univ-rennes1.fr

7.1 Instructions de type parall le

49

. Instruction PROCESS

  • Toutes les instructions comprises dans le PROCESS sont ex cut es

s quentiellement

  • Instruction concurrente : possibilit d'en utiliser plusieurs
  • Tous les PROCESS sont ex cut s en parall le
  • Activation d'un PROCESS : 2 possibilit s

: PROCESS(liste_signaux)

: PROCESS

-- Partie d clarative du process

-- Partie d clarative du process

BEGIN

-- Corps du process

Publicité

END PROCESS

BEGIN

WAIT UNTIL (liste_signaux)

-- Corps du process

END PROCESS

0

www.istic.univ-rennes1.fr

7.1 Instructions de type parall le

50

. Instruction PROCESS : Attribut event

. But : Savoir si le signal auquel il est associ a t modifi

. Tr s utile dans un PROCESS d clenchable par plusieurs signaux distincts

. Exemples :

IF CLK'event THEN ex cution; END IF;

  • Ex cution si CLK passe 0 ou 1

IF CLK'event AND CLK='1' THEN ex cution; END IF;

  • D clenchement sur front montant

. Standard IEEE 1164 : D finition de deux fonctions

rising_edge(CLK) et falling_edge(CLK)

0

www.istic.univ-rennes1.fr

7.2. Instructions de type s quentiel

51

. Ces instructions sont uniquement utilis es dans un Process

. Assignation inconditionnelle de variables et de signaux

M me traitement que pour le mode parall le

SIGNAL sig : integer;

PROCESS(clk)

VARIABLE var : integer := 0;

BEGIN

sig <= sig + 1;

var := var + 1;

END PROCESS;

. Instruction IF

IF expresssion_booleenne THEN

instructions_sequentielles

END IF;

IF up_down = '1' THEN

s <= s + 1;

ELSE

END IF;

s <= s - 1;

0

www.istic.univ-rennes1.fr

7.2. Instructions de type s quentiel

52

. Instruction CASE

CASE expresssion is

{WHEN valeur_expression => instructions_sequentielles};

{WHEN OTHERS => instructions_sequentielles};

END CASE;

CASE selection IS

WHEN '0' => s <= a;

WHEN '1' => s <= b;

WHEN OTHERS => NULL;

END CASE;

. Instruction LOOP

instruction_pour_iteration LOOP

instructions_sequentielles

END LOOP;

VARIABLE indice,resultat : INTEGER := 0;

Boucle1 : WHILE indice < 10 LOOP

indice := indice + 1;

resultat := resultat + adresse(indice);

END LOOP boucle1;

VARIABLE indice,resultat : INTEGER;

Boucle2 : FOR indice IN 0 TO 9 LOOP

resultat := resultat + adresse(indice);

0

END LOOP boucle2;

www.istic.univ-rennes1.fr

7.2. Instructions de type s quentiel

53

. Instruction NEXT

NEXT label_boucle WHEN condition

VARIABLE indice,resultat : integer := 0;

Boucle1 : WHILE indice < 10 LOOP

indice := indice + 1;

NEXT boucle1 WHEN indice = 5;

resultat := resultat + adresse(indice);

END LOOP boucle1;

VARIABLE indice,resultat : integer;

Boucle2 : FOR indice IN 0 TO 9 LOOP

NEXT boucle2 WHEN indice = 5;

resultat := resultat + adresse(indice);

END LOOP boucle2;

. Instruction EXIT

EXIT label_boucle WHEN condition

VARIABLE indice,resultat : integer := 0;

Boucle1 : WHILE indice < 10 loop

indice := indice1 + 1;

EXIT boucle1 WHEN indice = 5;

resultat := resultat + adresse(indice);

END LOOP boucle1;

VARIABLE indice,resultat : integer;

Boucle2 : FOR indice IN 0 to 9 LOOP

EXIT boucle2 WHEN indice = 5;

resultat := resultat + adresse(indice);

END LOOP boucle2;

0

www.istic.univ-rennes1.fr

7.2. Instructions de type s quentiel

54

. Instruction NULL

Instruction sans aucun effet

CASE commande_moteur IS

WHEN avant => marche_avant;

WHEN arriere => marche_arriere;

WHEN statuquo => NULL;

END CASE;

. Instruction ASSERT

V rification d'une condition sp cifique

Information d'une ventuelle violation de cette condition

ASSERT condition REPORT message SEVERITY {note/warning/error/Failure}

PROCESS(clk)

BEGIN IF clk='1' THEN

ASSERT d'STABLE(15 ns);

REPORT "setup non respect " SEVERITY warning;

&

END IF;

END PROCESS;

www.istic.univ-rennes1.fr

0

7.3. Instructions : Exemple

55

. Multiplexeur 8 bits : 4 vers 1

1 re phase : d finition des entr e/sorties (ENTITY)

Entr es

Multiplexeur 8 bits

4 vers 1

Sorties

Entree1

Entree2

Entree3

Entree4

8

8

8

8

Multiplexeur 8 bits

4 vers 1

8

Sortie

Sel

0

www.istic.univ-rennes1.fr

7.3. Instructions : Exemple

56

. Multiplexeur 8 bits : 4 vers 1

2 me phase : d finition du fonctionnement ou de la structure

(ARCHITECTURE)

  • Solution 1 : Instruction IF
  • Solution 2 : Instruction CASE

0

www.istic.univ-rennes1.fr

7.3. Instructions : Exemple

57

. Multiplexeur 8 bits : 4 vers 1

  • Solution 1 : Instruction IF

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY mux41 IS

PORT(entree1,entree2,entree3,entree4: IN std_logic_vector(0 TO 7);

sel: IN std_logic_vector(0 to 1);

sortie : OUT std_logic_vector(7 DOWNTO 0));

END mux41;

ARCHITECTURE comportementale OF mux41 IS

BEGIN

PROCESS(sel)

BEGIN

IF (sel="00") THEN sortie<=entree1;

ELSIF (sel="01") THEN sortie<=entree2;

ELSIF (sel="10") THEN sortie<=entree3;

ELSE sortie<=entree4;END IF;

END PROCESS;

END comportementale;

www.istic.univ-rennes1.fr

0

7.3. Instructions : Exemple

58

. Multiplexeur 8 bits : 4 vers 1

  • Solution 2 : Instruction CASE

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY mux41 IS

PORT(entree1,entree2,entree3,entree4: IN std_logic_vector(0 TO 7);

sel: IN std_logic_vector(0 to 1);

sortie : OUT std_logic_vector(7 DOWNTO 0));

END mux41;

ARCHITECTURE comportementale OF mux41 IS

BEGIN

PROCESS(sel)

BEGIN

CASE sel IS

WHEN "00" => sortie<=entree1;

WHEN "01" => sortie<=entree2;

WHEN "10" => sortie<=entree3;

WHEN OTHERS => sortie<=entree4;

END CASE;

END PROCESS;

END comportementale;

0

www.istic.univ-rennes1.fr

8. Op rateurs standards

59

. Remarque : Le VHDL est un langage d velopp initialement pour la

mod lisation et la simulation, par cons quent certains op rateurs sont

d conseiller en synth se

. Op rateurs logiques

Nom

Type op randes

Signification

And

Nand

Or

Nor

Xor

Xnor

Not

Boolean

Bit ou Bit_vector

Et

Non et

Ou

Non ou

Ou exculsif

Egal

Non

0

www.istic.univ-rennes1.fr

8. Op rateurs standards

60

. Op rateurs logiques

. Exemple 1

SIGNAL a,b,c : bit_vector(0 TO 1);

c <= a AND b;

Synth se

. Exemple 2

SIGNAL d, e, f, g : bit;

g <...