Vous êtes sur la page 1sur 100

Universit de Rennes 1

Master 1

VHDL De la Spcification Haut Niveau au Circuit


Institut dElectronique et de Tlcommunications de Rennes CNRS - UMR 6164 Tl : 02 23 23 65 04 E-mail : samuel.crand@univ-rennes1.fr

Universit de Rennes 1

Master 1

Objectifs du cours
. Prsentation du langage VHDL
. Principes gnraux . Syntaxe . Exemples

. VHDL pour la Synthse


. Utilisation du VHDL pour la conception

Universit de Rennes 1

Master 1

VHDL
Langage de modlisation de circuits numriques
. VHDL : VHSIC Hardware Description Language . VHSIC : Very Hardware Speed Integrated Circuit

Universit de Rennes 1

Master 1

Plan
1. Introduction 2. Elments de base 3. Types 4. Objets 5. Attributs 6. Excution parallle et squentielle 7. Instructions 8. Oprateurs standards 9. Description hirarchique 10. Modlisation des dlais 11. VHDL et simulation 12. VHDL et synthse 13. Conclusion 14. Rfrences bibliographiques
4

Universit de Rennes 1

Master 1

1. Introduction Pourquoi le VHDL ?

. Langage non propritaire . Standardisation prcoce . Langage adopt par de nombreux outils Initialement : Le VHDL a t dvelopp pour la modlisation et la simulation Synthse VHDL (synthse logique) lie lessor des CLP

Modlisation et synthse : 2 concepts diffrents

. Modlisation . Synthse

-> Le rsultat de la simulation -> Le rsultat ET la difficult pour y aboutir


5

Universit de Rennes 1

Master 1

1. Introduction Taille et complexit

Consquence

. -

La description au niveau porte devient rapidement difficile grer

Ncessit d'une description plus abstraite

. Niveau d'abstraction plus lev . Langage C . HDL Objectifs des HDL -> -> Assembleur

->

Dmarche descendante

HDL assimilable aux langages logiciels de haut niveau Equations logiques

. Description de l'application au niveau appropri . Entres des outils de simulation et de vrification . Codesign hardware/Software
6

Universit de Rennes 1

Master 1

Historique Fin des annes 70 : lancement du programme VHSIC par le ministre de la dfense amricaine 1981 : Premires rflexions sur le VHDL 1987 : IEEE 1076 : Dfinition d un langage unique pour

. La description . La modlisation . La simulation . La synthse . La documentation

1993 : IEEE 1164 : Normalisation des signaux logiques multivaleurs 1996 : IEEE 1076.3 : Normalisation pour la synthse

. Implantation d un nombre sign


7

Universit de Rennes 1

Master 1

2. Elements de base - Entity/Architecture : Brique de base de complexit trs variable


Fonctionnement interne Interface externe

- Configuration : Possibilit dassocier plusieurs architectures une seule entit


- Une architecture ddie la simulation et une pour la synthse

- Package :
- Pour une conception modulaire et hirarchique - Les entits/architectures rutiliser sont places dans des packages

- Library :
- Possibilit dutiliser le concept de bibliothques - Bibliothque work : bibliothque de travail - Les bibliothques work et std sont implicites
8

Universit de Rennes 1

Master 1

2. Elements de base : Entit et Architecture


In 1 In 2 In 3 Out 1

Bloc A
Out 2 Vue externe : Dfinition de l'entit Bloc A

In 1 In 2

Bloc B

Bloc C

Out 1

In 3

Bloc D

Bloc E

Out 2

Vue interne : Dfinition de l'architecture

Universit de Rennes 1

Master 1

2.1 Entit (Entity) . Port :

. Signal d interface entre lentit et lextrieur . Chaque port est associ un nom, un mode et un type . Ordre de la dclaration des diffrents signaux : aucune importance . Ordre conserv lors dune utilisation un plus haut niveau de cette entit
- Instanciation d'un composant (component)

. Mode :

. Dfinition du sens du signal . VHDL interdit lassociation de deux ports de mode contre nature . 4 modes sont dfinis

- in : Signal dentre monodirectionnel - out : Signal de sortie monodirectionnel - inout : Signal dentre/sortie bidirectionnel - buffer : Signal de sortie/entre monodirectionnel . Utile lorsquil y a rebouclage (sortie considre comme une entre) . Peu utilis (remplac par une sortie associe un signal interne)
10

Universit de Rennes 1

Master 1

2.1 Entit (Entity) . Mode : 4 modes de ports


CS

. . . .

In Out Inout Buffer

R/W Adresse Donnes

Mmoire

Busy Erreur

11

Universit de Rennes 1

Master 1

2.1 Entit (Entity) . Dclaration :

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;

12

Universit de Rennes 1

Master 1

2.1 Entit (Entity) . 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;

13

Universit de Rennes 1

Master 1

2.2. Architecture . Spcification de la fonctionnalit . Plusieurs architectures peuvent tre dfinies pour le mme modle . Dclaration
ARCHITECTURE nomdelarchitecture OF nomdelentit IS dclarations de procdures, de types, de constantes, de composants, de signaux BEGIN dfiniton de processus et/ou d'instances de composants, ... END nomdelarchitecture;

14

Universit de Rennes 1

Master 1

. Exemple
BEGIN PROCESS(clk)

2.2. Architecture

ARCHITECTURE comportementale OF adder_pip IS

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;
15

Universit de Rennes 1

Master 1

2.2. Architecture .3
Types de description :

. Description comportementale
- Description purement fonctionnelle du circuit - Portabilit, lisibilit, maintenance, volutivit - Description flot de donnes pour traduire une table de vrit

. Description structurelle
- Traduction dune reprsentation schmatique - Efficacit, compacit, clart

. Description mixte

- Au sein dune mme architecture, il est possible d utiliser des modules dcrits de manire comportementale ou structurelle

16

Universit de Rennes 1

Master 1

. Description

2.2.1 Architecture : Description comportementale


haut niveau
ARCHITECTURE haut_niveau OF adder IS BEGIN S <= A + B; END haut_niveau;

. Description

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

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;

17

Universit de Rennes 1

Master 1

2.2.1 Architecture : Description comportementale . Exemple : Description


comportementale d'une bascule D sur niveaux

LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all;

D 0 1 X

H 1 1 0

Q 0 1 Q-1

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;
18

Universit de Rennes 1

Master 1

. Traduction d'une reprsentation schmatique


A(0) B(0) A(1) B(1) A(0) B(0) S(1) S(0) VHDL

2.2.2 Architecture : Description structurelle

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)); end structurelle;
19

Universit de Rennes 1

Master 1

. Au sein d'une mme architecture, il est possible d'utiliser du comportemental


et du structurel
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; 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,b,s_inter); s <= s_inter; END mixte;
20

2.2.3 Architecture : Description mixte

reset
S_inter

D b a

clk VHDL

Adder

Universit de Rennes 1

Master 1

3. Types . Types :

. VHDL interdit lassociation de 2 signaux de type diffrent . Types disponibles


- Scalaires (Scalar)
. Entiers (integer) . Flottants (Real) . Enumrs (Enumerated) . Physiques (Physical)

- Composs (Composite)
. Tableaux (Array) - Collection dobjets de mme type . Enregistrements (Record) - Collection dobjets de type diffrent - Access et File . Types pour la manipulation de fichiers ou sur les pointeurs
21

Universit de Rennes 1

Master 1

3. Types . Sous-types :

. Restrictions :
SUBTYPE chiffre IS integer RANGE 0 TO 9; SUBTYPE octet IS bit_vector(0 TO 7);

. 2 sous-types prdfinis
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 dfini : autoris . Association entre 2 sous-types diffrents issus du mme type : autoris

22

Universit de Rennes 1

Master 1

3.1 Types : Scalaires . Types


entiers : -231 + 1 entier 231 - 1 TYPE chiffre_ascendant IS RANGE 0 TO 9; TYPE chiffre_descendant IS RANGE 9 DOWNTO 0; Notations de valeurs 147 -154 2#01010111# (binaire)

16#3FFF# hxadcimal

. Types

flottants : Approximation discrte de l'ensemble des rels dans un intervalle donn TYPE tension IS RANGE 0 TO 5; -1E38 Flottant 1E38
23

Universit de Rennes 1

Master 1

3.1 Types : Scalaires . Types


numrs :

Ensemble de valeurs dsignes par des identificateurs ou des caractres 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 caractre ou chane de caractres au sein d'un mme type doit tre distinct . Possibilit d'utiliser le mme caractre dans 2 types distincts
24

Universit de Rennes 1

Master 1

3.1 Types : Scalaires . Types


physiques : Valeurs numriques de quantits physiques

TYPE resistance IS RANGE 0 TO 1E8; UNITS ohms kohms = 1000 ohms; Mohms = 1E6 ohms; END UNITS;

25

Universit de Rennes 1

Master 1

. Types

3.2 Types : Composs


tableaux

. Bornes fixes la dfinition du type TYPE octet IS ARRAY (7 DOWNTO 0) OF bit; TYPE memoire IS ARRAY (0 TO 255) OF octet; . Bornes fixes chaque dclaration d'un objet de type tableau TYPE vecteur IS ARRAY (integer RANGE <>) OF real; - dclaration : vecteur(1 TO 20) . L'indice peut-tre un type entier dfini par dclaration TYPE adresse IS RANGE 0 TO 255; TYPE memoire IS ARRAY (adresse) OF octet; . Tableaux prdfinis TYPE std_logic_vector IS ARRAY (natural RANGE <>) OF std_logic; TYPE string IS ARRAY (positive RANGE <>) OF character;
26

Universit de Rennes 1

Master 1

3.2 Types : Composs . Types


enregistrements

. Ensemble d'lments nomms avec des types pouvant tre diffrents TYPE instruction IS RECORD code_operatoire : operation; addresse : octet; operande1, operande2 : integer RANGE 0 TO 15; END RECORD;

. Accs un champ particulier instruction.code_operatoire := soustraction;

27

Universit de Rennes 1

Master 1

3.3 Types : Classes .

Types et sous-types :

3 classes - Types prdfinis . Standard VHDL initial IEEE.1076 - Types complmentaires . Standard VHDL initial IEEE.1164 - Types dfinis par lutilisateur

28

Universit de Rennes 1

Master 1

3.3 Types : Classe - les Prdfinis


Prdfinis

Integer

bit

Boolean

Real

Time

Natural

Positive

Bit_vector

Remarque : Synthse logique


- time : non - real : non - integer : Favoriser les entiers borns
29

Universit de Rennes 1

Master 1

3.3 Types : Classe - les complmentaires

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


- std_ulogic et std_ulogic_vector

. Std_ulogic se caractrise par 9 valeurs


-U: -X: -0: -1: - Z : - W : -L: -H: --:

non initialis niveau inconnu (conflit fort) niveau bas niveau haut haute impdance niveau inconnu (conflit faible) niveau bas niveau haut niveau quelconque

. Std_logic : SUBTYPE std_logic IS RESOLVED std_ulogic;

- VHDL interdit la connexion d'une entre plusieurs sorties - Introduction des signaux "rsolus" (Resolved Signal) - Possibilit d'interconnecter plusieurs sorties ensemble

. IEEE 1076.3 - la synthse logique et les traitements arithmtiques


- signed et unsigned
30

Universit de Rennes 1
TYPE stdlogic_table IS ARRAY(std_ulogic, std_ulogic) OF std_ulogic; -------------------------------------------------------------------- resolution function ------------------------------------------------------------------CONSTANT resolution_table : stdlogic_table := ( ----------------------------------------------------------| U X 0 1 Z W L H | | ---------------------------------------------------------( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ), -- | U | ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ), -- | X | ( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X' ), -- | 0 | ( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X' ), -- | 1 | ( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X' ), -- | Z | ( 'U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X' ), -- | W | ( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X' ), -- | L | ( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X' ), -- | H | ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ));-- | - | 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;

Master 1

31

Universit de Rennes 1

Master 1

3.3 Types : Classe - les dfinis par l'utilisateur

. Types dfinis

une application dun type ou dun sous-type

TYPE memoire IS ARRAY (integer <RANGE> ) OF octet; VARIABLE ma_memoire : memoire (15 DOWNTO 0);

. Types dfinis

une application dun sous-type

SUBTYPE octet IS std_logic_vector (0 TO 7); adresse : IN octet;

32

Universit de Rennes 1

Master 1

4. Objets : Constantes, Variables, Signaux

. Utilisation des constantes et des variables : proche des langages


traditionnels

. Utilisation des signaux : spcification au langage de description du


matriel

. Constantes

. . . . . . . .

(Constant) Objets internes valeurs fixes et dfinitives Synthse : Mise VCC ou au GND -> Surface nulle Dclaration : constant nom : type := valeur; Exemple : CONSTANT pi : real:=3.141592 ; (Variable) Objets permettant de conserver une valeur pendant un certain temps Utilisable qu'au sein d'un processus (dfinition dans le process) Peu utilis en synthse logique Exemple: VARIABLE octet1 : std_logic_vector(0 TO 7) := "00000001";

. Variables

33

Universit de Rennes 1

Master 1

. Variable

4. Objets : Constantes, Variables, Signaux

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; 34

Synthse

Universit de Rennes 1

Master 1

4. Objets : Constantes, Variables, Signaux . Signaux


(signal)

. Utilisation en mode concurrent et squentiel . Dclaration dans une "zone" concurrente . Signaux internes, temporaires . Synthse (reprsentation matrielle : un fil ou une mmoire) . Absence de mode . Synthse d'une VARIABLE Synthse d'un SIGNAL . Des valeurs passes . Une valeur courante . Une valeur future
35

Universit de Rennes 1

Master 1

. Signaux

4. Objets : Constantes, Variables, Signaux

. Synthse d'une VARIABLE Synthse d'un SIGNAL

(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;

Synthse

Synthse

36

Universit de Rennes 1

Master 1

5. Attributs

. Informations supplmentaires sur les types et objets . Utilisation : toto'att avec toto un objet ou un type et att un attribut
. Attributs
d'un scalaire -> Limite gauche de T -> Limite droite de T -> Limite basse de T -> Limite haute de T T'left T'right T'low T'high

. Attributs

d'un ensemble discret -> Numro de la position de X dans T -> Valeur la position N dans T -> 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 -> Valeur une position au dessus de X dans T
37

T'pos(X) T'val(N) T'leftof(X) T'rightof(X) T'pred(X) T'succ(X)

Universit de Rennes 1

Master 1

5. Attributs . Exemples - Attributs


adr left = 7 adr right = 0 adr low = 0 adr high = 7 d'un scalaire Type adr is integer range 7 downto 0;

. Exemples - Attributs

d'un 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
38

Universit de Rennes 1

Master 1

5. Attributs .
Attributs d'un tableau

A'left(N) -> Limite gauche de l'intervalle des indices de la dim. N de A A'right(N) -> Limite droite de l'intervalle des indices de la dim. N de A A'low(N) -> Limite basse de l'intervalle des indices de la dim. N de A A'highof(N) -> Limite haute de l'intervalle des indices de la dim. N de A A'range(N) -> Intervalle des indices de la dim. N de A A'reverse_range(N) -> Intervalle inverse des indices de la dim. N de A A'length(N) -> Longueur de l'intervalle des indices de la dim. N de A

. Attributs
S'stable(t) S'event

d'un signal -> Renvoie une valeur boolenne true si S est constant depuis au moins t -> Renvoie une valeur boolenne true si S a chang depuis le dernier cycle de simulation
39

Universit de Rennes 1

Master 1

5. Attributs .
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

40

Universit de Rennes 1

Master 1

6. Excution parallle et squentielle . Particularisme . Excution


du VHDL : Excution parallle ou squentielle

parallle Excution par dfaut

Les instructions au sein d'une architecture sont excutes en parallle ou de manire concurrente

. .

. Excution concurrente = Excution combinatoire . Chaque opration dans une architecture est excute chaque instant
. Excution
squentielle

. Ncessit d'utiliser un PROCESS . Le process est activ chaque fois qu'un signal dclar dans
sa liste de sensibilit change de valeur.

. Les instructions sont excutes squentiellement . Les modifications des signaux (signal) sont effectives la fin du process
41

Universit de Rennes 1

Master 1

6. Excution parallle et squentielle . Excution mixte . Possibilit d'associer dans une mme architecture des modules
excution parallle et squentielle

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 IF reset='0' THEN qs<='0'; ELSIF (clk'event AND clk='1') THEN qs <= q; END IF; END PROCESS; END archi_mixte;

a
b
Comparateur

q clk Reset

qs

42

Universit de Rennes 1

Master 1

7. Instructions . Deux
types d'excution : Deux familles d'instructions

. Instructions rserves au mode d'excution parallle ou concurrente


- Toutes les oprations sont excutes simultanment - L'ordre d'criture n'a aucune importance

I1

I2

I3 I1

. Instructions rserves au mode d'excution squentielle


- Chaque opration est effectue l'une aprs l'autre - L'ordre d'criture a une grande importance

I2

I3

43

Universit de Rennes 1

Master 1

7.1 Instructions de type parallle

. 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;

44

Universit de Rennes 1

Master 1

7.1 Instructions de type parallle


. Assignation slective WITH slecteur SELECT signal <= {expression WHEN valeur_slecteur, 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;

45

Universit de Rennes 1

Master 1

7.1 Instructions de type parallle .


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(1),b(1),inter,cout,s(1)); END arch_full;

. Instruction GENERATE label : FOR variable_boucle IN val_iniale TO val_finale GENERATE

{instructions parallles} END GENERATE label


46

Universit de Rennes 1

Master 1

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;
47

7.1 Instructions de type parallle

Universit de Rennes 1

Master 1

7.1 Instructions de type parallle . Instruction


PROCESS

- Toutes les instructions comprises dans le PROCESS sont excutes squentiellement - Instruction concurrente : possibilit d'en utiliser plusieurs - Tous les PROCESS sont excuts en parallle - Activation d'un PROCESS : 2 possibilits

[label] : PROCESS(liste_signaux)

[label] : PROCESS

-- Partie dclarative du process


BEGIN

-- Partie dclarative du process


BEGIN WAIT UNTIL (liste_signaux)

-- Corps du process
END PROCESS [label]

-- Corps du process
END PROCESS [label]
48

Universit de Rennes 1

Master 1

7.1 Instructions de type parallle . Instruction


PROCESS : Attribut event

. But : Savoir si le signal auquel il est associ a t modifi . Trs utile dans un PROCESS dclenchable par plusieurs signaux distincts . Exemples :
IF CLK'event THEN excution; END IF;

- Excution si CLK passe 0 ou 1


IF CLK'event AND CLK='1' THEN excution; END IF;

- Dclenchement sur front montant

. Standard IEEE 1164 : Dfinition de deux fonctions


rising_edge(CLK) et falling_edge(CLK)

49

Universit de Rennes 1

Master 1

7.2. Instructions de type squentiel .


Ces instructions sont uniquement utilises dans un Process . Assignation inconditionnelle de variables et de signaux Mme traitement que pour le mode parallle
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 s <= s - 1; END IF;
50

Universit de Rennes 1

Master 1

7.2. Instructions de type squentiel

. 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); END LOOP boucle2;
51

Universit de Rennes 1

Master 1

7.2. Instructions de type squentiel

. Instruction NEXT

NEXT label_boucle WHEN condition


VARIABLE indice,resultat : integer; Boucle2 : FOR indice IN 0 TO 9 LOOP NEXT boucle2 WHEN indice = 5; resultat := resultat + adresse(indice); END LOOP boucle2;

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;

. Instruction EXIT

EXIT label_boucle WHEN condition


VARIABLE indice,resultat : integer; Boucle2 : FOR indice IN 0 to 9 LOOP EXIT boucle2 WHEN indice = 5; resultat := resultat + adresse(indice); END LOOP boucle2;
52

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;

Universit de Rennes 1

Master 1

7.2. Instructions de type squentiel

. 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
Vrification d'une condition spcifique 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;
53

Universit de Rennes 1

Master 1

7.3. Instructions : Exemple

. Multiplexeur 8 bits : 4 vers 1

1re phase : dfinition des entre/sorties (ENTITY)

Entres

Multiplexeur 8 bits 4 vers 1

Sorties

Entree1 Entree2 Entree3 Entree4

8 8 8 8 Multiplexeur 8 bits 4 vers 1 8 Sortie

Sel1 Sel2
54

Universit de Rennes 1

Master 1

7.3. Instructions : Exemple

. Multiplexeur 8 bits : 4 vers 1


2me phase : dfinition du fonctionnement ou de la structure (ARCHITECTURE) - Solution 1 : Instruction IF - Solution 2 : Instruction CASE

55

Universit de Rennes 1

Master 1

7.3. Instructions : Exemple

. 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 comportemental;

56

Universit de Rennes 1

Master 1

7.3. Instructions : Exemple

. 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;
57

Universit de Rennes 1

Master 1

8. Oprateurs standards . Remarque :


Le VHDL est un langage dvelopp initialement pour la modlisation et la simulation, par consquent certains oprateurs sont dconseiller en synthse

. Oprateurs

logiques Nom And Type oprandes Signification Et Non et Boolean Bit ou Bit_vector Ou Non ou Ou exculsif Egal Non
58

Nand Or Nor Xor Xnor Not

Universit de Rennes 1

Master 1

8. Oprateurs standards . Oprateurs .


Exemple 1
a(0) b(0) Synthse a(1) b(1) c(0) logiques

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

c(1)

Exemple 2
d e f

SIGNAL d, e, f, g : bit; g <= (d AND e) AND f;

Synthse

59

Universit de Rennes 1

Master 1

8. Oprateurs standards . Oprateurs


relationnels Nom = /= < <= > >= Type oprandes Signification Egal Non gal

Entres : Tout scalaire Sortie : Boolean

Infrieur Infrieur ou gal Suprieur Suprieur ou gal a0 a1 !b0 a0 !b1 !b0 a1 !b1
60

Exemple

SIGNAL a,b : bit_vector(1 DOWNTO 0); SIGNAL s : bit; IF a > b THEN s <= "1"; END IF;

Synthse

Universit de Rennes 1

Master 1

8. Oprateurs standards . Oprateurs


Nom Sll Srl Rol Ror Bit_vector de dcalages Type oprandes Signification A gauche A droite Circulaire gauche Circulaire droit a0 a1 Synthse a2 a3 '0' clk
61

Exemple

ENTITY sll_example IS PORT(sel: IN bit; a : IN bit_vector(3 DOWNTO 0); b : OUT bit_vector(3 DOWNTO 0)); END sll_example; ARCHITECTURE comportementale OF sll_example IS BEGIN PROCESS(sel) BEGIN if sel='1' then b <= a sll 1;end if; END PROCESS; END comportementale;

b0 b1 b2 b3

Universit de Rennes 1

Master 1

8. Oprateurs standards . Oprateurs


Nom + * / abs ** mod rem Integer Integer, Real arithmtiques Type oprandes Signification Incrmentation de 1 ou addition Dcrmentaion de 1 ou soustraction Multiplication Division Valeur absolue Exponentiel Modulo Reste

. Autres

oprateurs Nom & Type oprandes Bit, Bit_vector Signification Concatnation


62

Universit de Rennes 1

Master 1

8. Oprateurs standards . Exemple


: addition
A B C A B C S CC : 3

S = (A + B) + (C - 1) T = ((A + B) + C - 1)

Synthse

-1

-1

Exemple : multiplication

. Opration de multiplication "*" permet d'utiliser le type INTEGER


. Diffrents rsultats de synthse
- Contraintes - Nature des entres (puissance de 2) - Bibliothques de composants disponibles (Package standard de synthse)
63

Universit de Rennes 1

Master 1

8. Oprateurs standards . Oprateur


de concatnation Type oprandes Bit, Bit_vector Signification Concatnation Nom &

ENTITY concatenation_example IS PORT(a : IN bit_vector(3 DOWNTO 0); b : IN bit; c : OUT bit_vector(5 DOWNTO 0)); END concatenation_example; ARCHITECTURE comportementale OF concatenation_example IS BEGIN C <= not B & "101" & not A(2 DOWNTO 1); END comportementale;

A(1) A(2) VDD GND VDD B

C(0) C(1) C(2) C(3) C(4) C(5)


64

Universit de Rennes 1

Master 1

9. Description hirarchique

. Descriptions plus simples . Rapidit de simulation et donc rapidit de mise au point . Fiabilit accrue . Rutilisation de sous-ensembles . Concepts : COMPONENT, GENERIC, PACKAGE, . . Utilisation d'un objet dcrit l'extrieur de la description utilisatrice . Compilation distincte :
- 2 fichiers VHDL distincts - le composant - l'entit utilisatrice de ce composant PROCEDURE ET FONCTION LIBRARY, CONFIGURATION Amlioration de la modularit

. Entit compile : Stockage dans la bibliothque WORK


65

Universit de Rennes 1

Master 1

9.1 Description hirarchique : Component


. Description structurelle . Utilisation de composants 2 phases : - Dclaration - Instanciation

Adder2.vhd

Adder1.vhd
ENTITY half_adder IS PORT( a,b,cin : IN bit; cout,s : OUT bit); END half_adder; ARCHITECTURE arch_half OF half_adder IS BEGIN s <= a xor b XOR cin; cout <= (a AND b) OR (a AND cin) OR (b AND cin); END arch_half;

ENTITY full_adder IS PORT( a,b : IN bit_vector(1 DOWNTO 0); cin : IN bit; cout : OUT bit; s : out bit_vector(1 DOWNTO 0)); END full_adder; 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(0),b(0),cin,inter,s(0)); u2:half_adder PORT MAP (a(1),b(1),inter,cout,s(1)); END arch_full;
66

Universit de Rennes 1

Master 1

9.2 Description hirarchique : Generic

. Possibilit d'utiliser un mme objet plusieurs fois avec des tailles diffrentes . Paramtres dfinir lors de l'instanciation . Possibilit d'instancier des entits/architectures fonctionnellement identiques
mais de taille diffrente
ENTITY adder is GENERIC (largeur : integer :=8); -- valeur par dfaut PORT( a,b: IN signed_vector(largeur-1 DOWNTO 0); s : OUT signed_vector(largeur DOWNTO 0); END adder; ARCHITECTURE arch_adder OF adder IS BEGIN s <= a + b; END arch_adder;

Dclaration d'un additionneur

Instanciation avec une largeur de 16 bits

U0 : adder GENERIC MAP (16) PORT MAP (a,b,s);


67

Universit de Rennes 1

Master 1

9.3 Description hirarchique : Package

. Regroupement d'objets divers :


- types - sous-types - constantes - sous-programmes - composants,

. Accessibilit ou visibilit : le package se nomme mon_package et a t


compil et stock dans la bibliothque librairie1 LIBRARY librairie1 USE librairie1.mon_package.all

. Possibilit d'utiliser plusieurs packages dans une mme description . Les standards IEEE 1164 et IEEE 1076.3 sont accessibles via des packages
68

Universit de Rennes 1

Master 1

9.3 Description hirarchique : Package


File
maxplus2.vhd megacore.vhd std1164.vhd std1164b.vhd lpm_pack.vhd arith.vhd arithb.vhd

Package
maxplus2 megacore std_logic_1164

Library Contents:
altera altera ieee MAX+PLUS II primitives, macrofunctions, and selected megafunctions supported by VHDL. Pre-tested megafunctions consisting of several different design files. Standard for describing interconnection data types for VHDL modeling, and the STD_LOGIC and STD_LOGIC _VECTOR types. LPM megafunctions supported by VHDL. SIGNED and UNSIGNED types, arithmetic and comparison functions for use with SIGNED and UNSIGNED types, and the conversion functions CONV_INTEGER, CONV_SIGNED, and CONV_UNSIGNED. Functions that allow MAX+PLUS II to use STD_LOGIC _VECTOR types as if they are SIGNED types types as if they are SIGNED types. Functions that allow MAX+PLUS II to use STD_LOGIC_VECTOR types as if they are UNSIGNED types.0

lpm_components std_logic_arith

lpm ieee

signed.vhd signedb.vhd unsigned.vhd unsignedb.vhd

std_logic_signed

ieee

std_logic_unsigned

ieee

69

Universit de Rennes 1

Master 1

9.5 Description hirarchique : Library . Les programmes objets sont placs dans des bibliothques . Elments d'une bibliothque :
. Dfinitions de types, constantes, procdures PACKAGE . Architecture de circuits ARCHITECTURE . Associations composants/architectures CONFIGURATION

. Chaque bibliothque
. Un nom . Un rpertoire (sous unix)

. 2 types de bibliothque
. Bibliothque de l'utilisateur (user library) . Bibliothque systme

. Utilisation d'une bibliothque

LIBRARY ieee; LIBRARY work; USE ieee.std_logic_1164.ALL; USE defdetypes.ALL;


70

Universit de Rennes 1

Master 1

9.5 Description hirarchique : Library


. Bibliothque WORK - En ralit : Un espace de travail - Tous les lments crs par l'utilisateur au sein d'un mme projet y sont rangs - Ces lments sont rutilisables tout instant dans le projet aprs les avoir dclars . Exemple d'utilisation d'un package issu de la bibliothque WORK - L'utilisateur a cr un package operateur_arithmetique dans WORK - Pour y avoir accs USE WORK.operateur_arithmetique.ALL

- Pour utiliser l'lment mult de ce package FOR ALL : multiplieur USE ENTITY WORK.mult(comportementale)
71

Universit de Rennes 1

Master 1

10. Modlisation des dlais


. Pourquoi dfinir la notion de temps ? - Temps de retard intrinsque tout circuit - > Possibilit de prendre en compte ces retards ds la spcification VHDL - Utile la simulation -> Ecriture des vecteurs de test . Limitation de cette notion de temps - Synthse : Cette notion n'existe pas -> Utilisation du nombre de cycles d'horloge, par exemple

72

Universit de Rennes 1

Master 1

10. Modlisation des dlais


. Type physique pr-dfini cod sur 64 bits TYPE time IS RANGE -9 223 372 036 854 775 808 TO 9 223 372 036 854 775 807 UNITS fs; ps = 1000 fs; ns = 1000 ps; us = 1000 ns; ms = 1000 us; sec = 1000 ms; min = 60 s; hr = 60 min; END UNITS;

. Dlai delta : Toute affectation n'est pas immdiate signal_A <= '0' Dlai delta non nul variable_A := '0' Dlai delta nul
73

Universit de Rennes 1

Master 1

10. Modlisation des dlais


. Dlai inertiel : modlisation d'une constante de temps RC (filtre) somme <= A XOR B AFTER 10 ns Impulsion filtre A B A XOR B AFTER 0 ns A XOR B AFTER 10 ns

74

Universit de Rennes 1

Master 1

10. Modlisation des dlais


. Dlai de transfert : Retard dans une porte somme <= TRANSPORT A XOR B AFTER 10 ns

A B

Impulsion retarde

A XOR B AFTER 0 ns TRANSPORT A XOR B AFTER 10 ns

75

Universit de Rennes 1

Master 1

11. VHDL et Simulation


. Simulation complte et non redondante . Optimisation de la dure de simulation de la description VHDL et du test du circuit . Portabilit de la description des vecteurs de test ou stimuli (Testbench)

76

Universit de Rennes 1

Master 1

11. VHDL et Simulation


. Solution 1 : - Description non chronologique - Manque de clart - Faible rutilisation

77

Universit de Rennes 1

Master 1

11. VHDL et Simulation


. Solution 2 : - Description chronologique - Rfrence temporelle : temps t0

78

Universit de Rennes 1

Master 1

11. VHDL et Simulation


. Solution 3 : - Description chronologique - Rfrence temporelle : dernier vnement

79

Universit de Rennes 1

Master 1

11.1 VHDL et Simulation : Vecteurs de test

Module de test

Module tester

Stockage des signaux

80

Universit de Rennes 1
ENTITY exemple_test IS END exemple_test; ARCHITECTURE behavior OF exemple_test IS COMPONENT exemple port ( x: in std_logic_vector(3 downto 0); clk: in std_logic; reset: in std_logic; sortie: out std_logic); END COMPONENT; signal x : std_logic_vector(3 downto 0):="0000"; signal clk,reset; : std_logic:='0'; signal sortie: std_logic:='0'; begin exemple_inst:exemple PORT MAP(x => x, clk => clk, reset => reset, sortie => sortie); generation_horloge: process begin clk <= '0'; wait for 20 ns; clk <= '1'; wait for 20 ns; end process ; generation_test: process begin for i in 1 to 2 loop wait until clk = '0' and clk'event; end loop; reset <= '0'; for i in 1 to 5 loop wait until clk = '0' and clk'event; end loop; reset <= '1';x<=0011; for i in 1 to 5 loop wait until clk = '0' and clk'event; end loop; reset <= '0'; end process; end behavior;

Master 1

81

Universit de Rennes 1

Master 1

11. VHDL et Simulation


Vrification automatique de la valeur d'une sortie erreur <= S XOR "011";

Avec erreur : std_logic_vector(0 TO 2) Si erreur = "000", la sortie S correspond la valeur souhaite Si erreur = "100", le MSB de la sortie n'est pas gale la valeur souhaite

82

Universit de Rennes 1

Master 1

12. VHDL et Synthse


- Modlisation dun dispositif matriel numrique - Autres applications . Preuve formelle . Comparaison de deux descriptions de deux niveaux diffrents . Utiles en synthse haut niveau pour la traduction dune description d un niveau lautre . Documentation . Description dun systme . Explication des choix dimplantation . Spcification

. Description haut niveau . Description comportementale . Description structurelle . Contraintes temporelles


. Synthse
83

Universit de Rennes 1

Master 1

La synthse ?
Comportement Structure

Transformations

Contraintes

Ralisation Physique

Buts . Rduction du temps de conception . Mise disposition d'un large espace de conception . Rduction de lespace de conception chaque tape successive . Documentation du processus de conception . Dmocratisation de la conception

84

Universit de Rennes 1

Master 1

12. VHDL et Synthse


VHDL Simulation

Compilation

Implantation

Vux : tout code peut tre implant

. Preuve : il peut tre simul


Ralit : solution non optimale ou ne rpondant pas aux spcifications fonctionnelles
85

Universit de Rennes 1

Master 1

12. VHDL et Synthse

O p t i m i s a t i o n

VHDL comportemental G n r i c i t

Niveau algorithmique

VHDL flot de donnes

Niveau RTL

VHDL structurel

Niveau portes logiques

86

Universit de Rennes 1

Master 1

12.1 Restrictions du VHDL pour la synthse . Types


. Std_logic . Attention aux initialisations

. '-'

: trs utile pour les simplifications logiques

. Physical, real : non accepts

. Notions temporelles . Notions inexistantes (AFTER, TRANSPORT, WAIT FOR) . Priode de l'horloge : inconnue avant la synthse globale de l'application . Notion de Back-annotation : utilisation d'informations issues du
placement/routage un haut niveau

87

Universit de Rennes 1

Master 1

12.1 Restrictions du VHDL pour la synthse . Instructions . Certains termes dcoulant de la simulation ne sont pas accepts
(ASSERT, FILE ACCESS, ...) . Boucles bornes

Entit

. Chaque type doit tre born . Attention aux valeurs par dfaut . Architecture . Utilisation d'une seule architecture par entit . Process . Squentiel . Combinatoire -> Dpendant de toutes les entres
88

Universit de Rennes 1

Master 1

12.1 Restrictions du VHDL pour la synthse . Tableaux . Synthse d'un tableau muti-dimensionnel : impossible
- Solutions : Utilisation d'un systme de codage Utilisation de tableaux disponibles dans certaines bibliothques

. Les tableaux doivent tre borns


- Bornes statiques (non dpendantes d'un signal d'entre par exemple)

. Process . Instructions contenues dans le process sont excutes squentiellement . Oprateurs arithmtiques . Les rsultats de synthse dpendent principalement des bibliothques
mises la disposition du concepteur

. Partage de ressources . Un oprateur pour un certain nombre d'oprations de mme type


89

Universit de Rennes 1

Master 1

12.2 Exemple : process


ENTITY jk_ff IS PORT(clk, rst, j, k : IN std_logic; q : OUT std_logic; END jk_ff;

ARCHITECTURE first OF jk_ff IS SIGNAL q_tmp : std_logic; BEGIN PROCESS VARIABLE jk_var : std_logic_vector(1 DOWNTO 0); BEGIN WAIT UNTIL clk = '1' AND clk'event jk_var := (j & k) ; Lecture des entres avant le dcodage de l'tat IF rst = '1' THEN q_tmp <= '0'; q_tmp <= q_tmp ELSE CASE jk_var IS rst WHEN "00" => q_tmp <= q_tmp; j q WHEN "01" => q_tmp <= '0'; WHEN "10" => q_tmp <= '1'; WHEN "11" => q_tmp <= not q_tmp; WHEN others => q_tmp <= 'x'; k END CASE; END IF; END PROCESS; q <= q_tmp, clk END first; 90

Synthse SANS implantation de bascules supplmentaires

Universit de Rennes 1

Master 1

12.2 Exemple : process


ENTITY jk_ff IS PORT( clk, rst, j, k : IN std_logic; q : OUT std_logic; END jk_ff;

Synthse AVEC implantation de bascules supplmentaires

ARCHITECTURE first of jk_ff is SIGNAL q_tmp : std_logic; BEGIN PROCESS VARIABLE jk_var : std_logic_vector(1 DOWNTO 0); BEGIN WAIT UNTIL clk = '1' AND clk'event q_tmp <= q_tmp IF rst = '1' THEN rst q_tmp <= '0'; j q ELSE CASE jk_var IS WHEN "00" => q_tmp <= q_tmp; WHEN "01" => q_tmp <= '0'; k WHEN "10" => q_tmp <= '1'; WHEN "11" => q_tmp <= not q_tmp; WHEN OTHERS => q_tmp <= 'x'; END CASE; END IF; clk jk_var := (j & k) ; END PROCESS; Lecture des entres aprs le dcodage de l'tat q <= q_tmp, END first;

Retour

91

Universit de Rennes 1

Master 1

12.2 Exemple : partage de ressources


a Resultat

b
IF condition THEN resultat <= a + b; ELSE resultat <= b + c; END IF;

c condition a c c condition Retour


92

Resultat

Universit de Rennes 1

Master 1

12.2 Exemple : Signal et Variable Dclaration d'une donne transitoire . Dclaration comme variable
ENTITY adder8 IS port (a, b, c : integer RANGE 0 TO 255; clock : bit; q : integer RANGE 0 TO 255); END adder8; ARCHITECTURE arch1 OF adder8 IS Synthse BEGIN PROCESS VARIABLE inter : integer RANGE 0 TO 255; BEGIN WAIT UNTIL clock='1' AND clock'event; inter := a+b; q <= inter +c; END PROCESS; END arch1;

comme signal ou comme variable

c inter

clk q
93

Universit de Rennes 1

Master 1

12.2 Exemple : Signal et Variable Dclaration d'une donne transitoire . Dclaration comme signal
comme signal ou comme variable

ENTITY adder8 is PORT (a, b, c : integer RANGE 0 TO 255; clock : bit; q : integer RANGE 0 TO 255); END adder8; ARCHITECTURE arch1 OF adder8 IS SIGNAL inter : integer RANGE 0 TO 255; Synthse BEGIN PROCESS BEGIN WAIT UNTIL clock='1' AND clock'event; inter <= a+b; q <= inter +c; END PROCESS; END arch1;

c clk inter

clk q
94

Universit de Rennes 1

Master 1

12.2 Exemple : Mmoire Implicite . Avantage et inconvnient Simplification d'criture Introduction de mmorisation non souhaite

. Les causes - Un signal a une valeur courante et une valeur prochaine - Le passage de l'une l'autre est dfinie par une commande d'assignation - Pour une instruction conditionnelle non vrifie, les signaux associs
conservent leur valeur courante

95

Universit de Rennes 1

Master 1

12.2 Exemple : Mmoire implicite


Simplification d'criture
Bascule D1
PROCESS(clk) IF rising_edge(clk) THEN q <= d; q_not <= not d; ELSE q <= q; q_not <= q_not; END IF; END PROCESS;

Bascule D2

PROCESS(clk) IF rising_edge(clk) THEN q <= d; q_not <= not d; END IF; END PROCESS;

Comportement identique
. Description de la bascule D1 est plus simple que celle de la bascule D2
96

Universit de Rennes 1

Master 1

12.2 Exemple : Mmoire Implicite


Mmorisations supplmentaires
Spcifications : "C" prend la valeur de "B" quand "A" = 1 sinon n'importe quoi 1 re solution C <= B WHEN A = '1'; 2 me solution C <= B WHEN A = '1' ELSE '-'; Synthse Synthse Equivalent C <= B WHEN A = '1' ELSE C; Synthse Synthse Synthse Synthse

B A ou B A

B A

C Retour
97

Universit de Rennes 1

Master 1

12.3 Rgles pour la description VHDL en vue de la synthse . Description hirarchique . Dfinition de modules, de sous-modules, . Favoriser la rutilisation . Rduire le temps de dveloppement . Attitude visionnaire . VHDL pour la synthse et non pour la simulation . Prvoir les attitudes et optimisations du synthtiseurs
. Simplicit

. Plus les descriptions (constructions conditionnelles, boucles) sont


simples, plus les optimisations seront rapides et surtout fiables

. Description comportementale . Favoriser la rutilisation et la comprhension . Piges . Mmorisations implicites . Optimisations . Simulations compltes avant et aprs synthse

98

Universit de Rennes 1

Master 1

13. Conclusion . Verilog . Langage de description du matriel . Editeurs graphiques . Machine tats finis . Flot de donnes . Codesign . Implantation matrielle et/ou logicielle . VHDL-AMS . Modlisation analogique et mixte (analogique/numrique) . Modlisation, simulation et validation de systmes complets
- Capteurs : analogique - Traitement : numrique - Actionneur : analogique

99

Universit de Rennes 1

Master 1

14. Rfrences bibliographiques


. Livres
- P. Larcher, " VHDL (Introduction la synthse logique)", Eyrolles, 1997 (BU) - J. Weber et M. Meaudre, "VHDL : du langage au circuit, du circuit au langage", Masson, 1997, (BU) - R. Airiau, J.M. Berge et V. Olive, "Circuit Synthesis with VHDL", Kluwer, 1993 (BU) - J. P. Calvez, "Spcification et conception de systmes : une mthode", Masson, 1991 - P. J. Ashenden, "The VHDL cookbook", University of Adelaide, 1990 - D. Houzet et L. Barrandon " Conception de circuits en VHDL et VHDL-AMS" , Eyrolles, 2005

. De nombreux Sites web (Cours, FAQ, Exemples,...)


http://www.vhdl.org http://tech-www.informatik.uni-hamburg.de/vhdl/ http://electron.toulouse.iufm.fr/iufm/cours/vhdl/cours_vhdl_acc.htm http://www.stefanvhdl.com/ http://www.ece.msstate.edu/~reese/EE8993/
100

Vous aimerez peut-être aussi