Sunteți pe pagina 1din 39

VHDL Logique programmable

1/39

Partie 2 La structure dun programme VHDL

VHDL - Logique programmable


Partie 2 La structure dun programme VHDL

Denis Giacona ENSISA cole Nationale Suprieure d'Ingnieur Sud Alsace 12, rue des frres Lumire 68 093 MULHOUSE CEDEX FRANCE Tl. 33 (0)3 89 33 69 00

D.Giacona

VHDL Logique programmable 1.

2/39

Partie 2 La structure dun programme VHDL

lments fondamentaux du langage VHDL ......................................................................................................................................................... 3 1.1. Quelques caractristiques du langage .......................................................................................................................................................... 3 1.2. Quelques conseils ........................................................................................................................................................................................... 4 1.3. Le principe du couple entit - architecture ................................................................................................................................................... 7 1.4. Les commentaires ........................................................................................................................................................................................... 9 1.5. Les identificateurs ........................................................................................................................................................................................... 9 1.6. Les objets donnes : signal, constante, variable ...................................................................................................................................... 10 1.7. Les types des objets donnes ..................................................................................................................................................................... 11 1.7.1. Les types prdfinis par tous les compilateurs ................................................................................................................................... 11 1.7.2. Les types complmentaires (inclus dans la bibliothque IEEE 1164) ............................................................................................... 12 1.7.3. Les types dfinis par lutilisateur .......................................................................................................................................................... 14 1.7.4. Conversion de type ................................................................................................................................................................................. 15 1.7.5. L'usage des objets de type integer .................................................................................................................................................... 16 1.8. Les littraux ................................................................................................................................................................................................... 17 1.9. Les oprateurs ............................................................................................................................................................................................... 18 1.9.1. Oprateurs prdfinis de construction dexpressions........................................................................................................................ 18 1.9.2. Oprateurs dassignation et dassociation........................................................................................................................................... 19 1.10. Les dclarations et les assignations des signaux vecteurs ..................................................................................................................... 20 1.11. Surcharge doprateurs ................................................................................................................................................................................ 21 1.12. Les attributs ................................................................................................................................................................................................... 23 1.12.1. Les attributs prdfinis par le langage ................................................................................................................................................. 23 2. La dclaration d'entit ......................................................................................................................................................................................... 25 2.1. Description dune entit non gnrique ...................................................................................................................................................... 25 2.2. Description dune entit gnrique ............................................................................................................................................................. 27 2.3. Les modes des ports ..................................................................................................................................................................................... 28 3. Le corps d'architecture ....................................................................................................................................................................................... 30 3.1. Syntaxe ........................................................................................................................................................................................................... 30 3.2. Dclaration des signaux internes ................................................................................................................................................................ 31 3.3. Instructions concurrentes ............................................................................................................................................................................ 32 3.3.1. Proprits ................................................................................................................................................................................................ 32 3.3.2. Classification des styles de description ............................................................................................................................................... 33 3.3.3. Exemple 1 : architecture comportant des styles diffrents ................................................................................................................ 36 3.3.4. Exemple 2 : styles diffrents pour un mme bloc logique.................................................................................................................. 38

D.Giacona

VHDL Logique programmable

3/39

Partie 2 La structure dun programme VHDL

1.Elments fondamentaux du langage VHDL


1.1. Quelques caractristiques du langage

Syntaxe complexe o mais les outils de dveloppement fournissent des modles VHDL et des convertisseurs de schmas en code VHDL Langage strict par rapport aux types et aux dimensions des donnes o gros avantage : dtection derreurs Trs bonne portabilit o condition d'crire un code indpendant de la technologie De nombreux styles de description o mais attention, les outils de synthse ne traitent pas toujours efficacement certaines descriptions

D.Giacona

VHDL Logique programmable

4/39

Partie 2 La structure dun programme VHDL

1.2.

Quelques conseils

Une bonne prsentation, c'est tout bnfice sansunpetiteffortceladonneparexemplececi


architecture arch_bcdcnt4_ar_en_comb of bcdcnt4_ar_en_comb is signal count:std_logic_vector(3 downto 0); begin process(clk,rst) begin if ar='1' then count<=(others=>'0'); elsif (clk'event and clk='1') then if en='1' then if count<x"9" then count<=count+1; else count<=x"0"; end if; end if; end if; end process; co<='1' when (count=x"9") else '0'; q<=count; end arch_bcdcnt4_ar_en_comb;

Les compilateurs sont vraiment indulgents mais un lecteur l'est srement moins !
D.Giacona

VHDL Logique programmable

5/39

Partie 2 La structure dun programme VHDL

Le mme code, en appliquant une simple rgle d'indentation (un effort minime !)
architecture arch_bcdcnt4_ar_en_comb of bcdcnt4_ar_en_comb is signal count_i : std_logic_vector(3 downto 0); begin count_proc: process (clk, rst) begin if ar = '1' then count_i <= (others => '0'); elsif (clk'event and clk = '1') then if en = '1' then if count_i < x"9" then count_i <= count_i + 1; else count_i <= x"0"; end if; end if; end if; end process; -- Elaboration du signal carry "co" hors processus(assignation combinatoire) co <= '1' when (count_i = x"9") else '0'; q <= count_i; end arch_bcdcnt4_ar_en_comb;

D.Giacona

VHDL Logique programmable

6/39

Partie 2 La structure dun programme VHDL

Appliquer une rgle de dnomination des identificateurs o Minuscules et caractre _ o Langue anglaise o Quelques exemples :
Reset synchrone : reset, rst, sr Reset asynchrone : areset, ar Reset synchrone actif l'tat bas : reset_l, rst_l, sr_l, nsr Read/write actif l'tat bas : rw_l Registre 4 bits : reg, reg4 Compteur 8 bits : count, count8, cnt, cnt8 Compteur BCD : cnt_bcd, bcdcnt Compteur (signal interne) : count_i, count_int Etiquette de processus de comptage : count_proc

D.Giacona

VHDL Logique programmable

7/39

Partie 2 La structure dun programme VHDL

1.3.

Le principe du couple entit - architecture

Tout bloc logique est dcrit par un couple (entity, architecture).

tempo1ms
t

Signaux externes
control rst ar a inc en clr clk clk clk sr cnt(9:0) ar cnt10_binary

compare count(9..0) count = max (d = max) d(9:0)

Signaux internes

D.Giacona

VHDL Logique programmable

8/39

Partie 2 La structure dun programme VHDL

Le code VHDL correspondant au temporisateur tempo1s comporte deux parties : une dclaration dentit qui dfinit les entres-sorties une architecture qui dfinit le comportement

-- dclaration des entres-sorties Dclaration des signaux externes entity tempo1ms is ... end tempo1ms;

-- description du comportement architecture tempo1ms_arch of tempo1ms is ... -- description du compteur cnt10binary: process (rst,clk) -- description du contrleur et du comparateur control: process (rst, clk) end tempo1ms_arch;
D.Giacona

Dclaration des signaux internes

VHDL Logique programmable

9/39

Partie 2 La structure dun programme VHDL

1.4.

Les commentaires

-- Un commentaire commence par deux tirets conscutifs et s'arrte la de la ligne

1.5.

Les identificateurs

Les identificateurs sont des appellations dobjets du langage (donnes et types).


Ils sont constitus de caractres alphabtiques (26 lettres), numriques (10 chiffres dcimaux) et du caractre soulign _ ; les lettres accentues sont exclues Le premier caractre doit tre une lettre Les lettres majuscules et minuscules sont quivalentes Le dernier caractre doit tre diffrent de _ Deux _ la file sont interdits Le nom ne doit pas tre un mot rserv La longueur dun mot est quelconque (mais une ligne maximum)

D.Giacona

VHDL Logique programmable

10/39

Partie 2 La structure dun programme VHDL

1.6.

Les objets donnes :

signal, constante, variable

Les signaux portent les informations des liaisons dentre, des liaisons de sortie et des liaisons internes signal inc : std_logic;

Les constantes reoivent leur valeur au moment de leur dclaration

constant max : std_logic_vector(9 downto 0) := "1111100111";

Les variables ne sont dclares et utilises que dans les processus, les fonctions et les procdures. Lassignation initiale est facultative variable temp : integer range 0 to 999 := 0 ;

D.Giacona

VHDL Logique programmable

11/39

Partie 2 La structure dun programme VHDL

1.7.

Les types des objets donnes


Les types prdfinis par tous les compilateurs
: entier ngatif ou positif : entier positif ou nul : entier positif : numr dont les deux seules valeurs possibles sont 0 et 1 : composite tableau reprsentant un vecteur de bits : numr dont les deux valeurs possibles sont false et true : flottant compris entre -1.0E38 et 1.0E38

1.7.1.

integer natural positive bit bit_vector boolean real

D.Giacona

VHDL Logique programmable

12/39

Partie 2 La structure dun programme VHDL

1.7.2.

Les types complmentaires (inclus dans la bibliothque IEEE 1164)

std_logic U X 0 1 Z W L H -

: 9 valeurs dcrivant tous les tats dun signal logique : non initialis : niveau inconnu, forage fort : niveau 0, forage fort : niveau 1, forage fort : haute impdance * : niveau inconnu, forage faible : niveau 0, forage faible : niveau 1, forage faible : quelconque (dont care) * : vecteur de std_logic

(*) Utile pour la synthse

std_logic_vector

Pour utiliser ces types il faut inclure les directives suivantes dans le code source.

library ieee; use ieee.std_logic_1164.all;

D.Giacona

VHDL Logique programmable

13/39

Partie 2 La structure dun programme VHDL

Remarques concernant les synthtiseurs


0 et L sont quivalents 1 et H sont quivalents - est trs utile pour la simplification des quations U, X, W sont interdits Les types bit, bit_vector, std_logic et std_logic_vector sont les plus utiliss.

D.Giacona

VHDL Logique programmable

14/39

Partie 2 La structure dun programme VHDL

1.7.3.

Les types dfinis par lutilisateur

Exemple : Description dune table de vrit laide dun tableau

library ieee; use ieee.std_logic_1164.all; entity hexa_to_7seg is port( hexain: in bit_vector(3 downto 0); seg: out bit_vector(0 to 6)); end hexa_to_7seg; architecture arch_hexa_to_7seg of hexa_to_7seg is type segment is (a, b, c, d, e, f, g); type truth_table_4 is array(bit, bit, bit, bit) of bit_vector(a to g); constant hexa_7seg_table : truth_table_4 :=

-- outputs abcdefg (segments) hexa inputs -------------------------------------------(((("1111110", -- 0000 "0110000"), -- 0001 ("1101101", -- 0010 "1111001")), -- 0011 (("0110011", -- 0100 "1011011"), -- 0101 ("1011111", -- 0110 "1110000"))), -- 0111 ((("1111111", -- 1000 "1111011"), -- 1001 ("1110111", -- 1010 "0011111")), -- 1011 (("1001110", -- 1100 "0111101"), -- 1101 ("1001111", -- 1110 "1000111")))); -- 1111 begin seg <= exa_7seg_table(hexain(3),hexain(2),hexain(1),hexain( 0)); end arch_hexa_to_7seg;

D.Giacona

VHDL Logique programmable

15/39

Partie 2 La structure dun programme VHDL

1.7.4.

Conversion de type

Les environnements de dveloppement fournissent en gnral des paquetages comportant des fonctions de conversion de type. Par exemple, Xilinx ISE fournit notamment les fonctions suivantes : conv_integer(a) pour convertir un std_logic_vector a en un integer conv_unsigned(x,n) pour convertir un std_logic_vector, integer, unsigned (changement de taille) ou signed x en un unsigned de n bits conv_signed(x,n) pour convertir un std_logic_vector, integer, signed (changement de taille) ou unsigned x en un signed de n bits conv_std_logic_vector(x,n) pour convertir un integer, unsigned ou signed x en un std_logic_vector de n bits Pour utiliser ces fonctions, il suffit daccder au paquetage STD_LOGIC_UNSIGNED de la bibliothque ieee library ieee ; use IEEE.STD_LOGIC_UNSIGNED.ALL;

D.Giacona

VHDL Logique programmable

16/39

Partie 2 La structure dun programme VHDL

1.7.5.

L'usage des objets de type integer

Signal servant de compteur (logique squentielle synchrone) o En synthse, la valeur courante de comptage doit tre convertie en std_logic_vector avant d'tre applique sur une sortie Variable servant d'indice pour un std_logic_vector

D.Giacona

VHDL Logique programmable

17/39

Partie 2 La structure dun programme VHDL

1.8.

Les littraux

Les littraux sont les reprsentations de valeurs attribues aux objets donnes et aux objets types. Les entiers dcimaux
1234 1_520_473 -- pour amliorer la lisibilit

Les bits
0, 1 U, X, H, L, W, Z, - -- type bit -- type std_logic

Les vecteurs de bits


1010 O12 XA -- reprsentation binaire -- reprsentation octale -- reprsentation hexadcimale

Les caractres
a

Les chanes de caractres


ERREUR ERREUR & N
D.Giacona

VHDL Logique programmable

18/39

Partie 2 La structure dun programme VHDL

1.9.

Les oprateurs
Oprateurs prdfinis de construction dexpressions

1.9.1.

Les oprateurs relationnels permettent de comparer des oprandes de mme type et dindiquer lgalit, lingalit ou leur relation dordre. Ils sont utiliss dans des instructions de test. Ils rendent une valeur boolenne (false ou true). = < <= > >= /= Les oprateurs logiques sont dfinis pour les types boolean, bit, std_logic et les vecteurs correspondants and or not nand nor xor

ATTENTION :

and nest pas prioritaire par rapport or

(utiliser des parenthses)

Les oprateurs arithmtiques sont dfinis pour les types entiers et rels + * / ** mod rem

abs

Les oprateurs de concatnation et dagrgation groupent des lments de mme type & ( , , ) Les oprateurs de dcalage et de rotation sont dfinis sur le type bit_vector sll srl sla sra ror rol

D.Giacona

VHDL Logique programmable

19/39

Partie 2 La structure dun programme VHDL

1.9.2.

Oprateurs dassignation et dassociation

Assignation de variable o lintrieur dun processus nom_variable := expression ;

Assignation de signal o dans la zone dinstructions dune architecture (dynamique) nom_signal <= expression ;

o dans la zone de dclaration dune architecture (statique) signal nom_signal_interne : type_signal := valeur_initiale ; Association o sert de connecteur de signaux dans une instanciation de composant nom_signal_formel => nom_signal_effectif ;

D.Giacona

VHDL Logique programmable

20/39

Partie 2 La structure dun programme VHDL

1.10. Les dclarations et les assignations des signaux vecteurs


signal a : std_logic_vector (0 to 7); signal b : std_logic_vector (7 downto 0); ... ... ... a <= 11110000; b <= 11110000;
MSB LSB

a(0) 1

a(1) 1

a(2) 1

a(3) 1

a(4) 0

a(5) 0

a(6) 0

a(7) 0

MSB b(7) 1 b(6) 1 b(5) 1 b(4) 1 b(3) 0 b(2) 0 b(1) 0

LSB

b(0) 0

La notation downto est la plus conventionnelle pour les applications de synthse.


D.Giacona

VHDL Logique programmable

21/39

Partie 2 La structure dun programme VHDL

1.11. Surcharge doprateurs


Les oprations ne sont pas admises sur des donnes de types diffrents sauf si lon redfinit loprateur (ce procd est appel surcharge).

function + (a: integer; b: bit) return integer is begin if (b = 1) then return a + 1 ; else return a ; end if ; end + ; signal o, t : integer range 0 to 255 ; signal b : bit ; ... t <= o + 5 + b ;

Oprateur + prdfini pour les entiers

Oprateur + dfini par le concepteur

D.Giacona

VHDL Logique programmable

22/39

Partie 2 La structure dun programme VHDL

Les environnements de programmation comportent des paquetages dans lesquels certains oprateurs sont redfinis. Dans loutil Xilinx ISE, laddition (+), la soustraction (-), la multiplication et la division de vecteurs sont dfinies dans le paquetage std_logic_unsigned de la bibliothque ieee.

library ieee ; use ieee.std_logic_unsigned.all ;

A propos de la multiplication et de la division Loprateur de multiplication * est synthtisable (c.--d. que le compilateur est capable de produire une structure matrielle RTL) Loprateur de division / nest pas synthtisable de faon gnrale xint <= conv_integer(a) / 10; x <= conv_std_logic_vector (xint,16); Parce quil sagit dune division par 10, ce code gnre, avec Xilinx ISE, lerreur suivante : Operator <DIVIDE> must have constant operands or first operand must be power of 2 On peut dcrire la division laide dun systme squentiel que lon intgre dans un composant VHDL et que lon range dans une bibliothque.
D.Giacona

VHDL Logique programmable

23/39

Partie 2 La structure dun programme VHDL

1.12. Les attributs


1.12.1. Les attributs prdfinis par le langage

Les attributs sont des proprits spcifiques que lon peut associer aux signaux et aux types. La valeur dun attribut peut tre exploite dans une expression. Attribut valeur sur des types scalaires ou des lments (signaux, constantes, variables) de type scalaire 'left, 'right, 'high, 'low, 'length Attribut fonction sur des types discrets ordonns 'pos, 'val, 'succ, 'pred, 'leftof, 'rightof Attribut fonction sur des signaux 'event Attribut intervalle sur un signal dimensionn 'range, 'reverse_range

D.Giacona

VHDL Logique programmable

24/39

Partie 2 La structure dun programme VHDL

library ieee; use ieee.std_logic_1164.all; entity attributs is port( vector_dwn : in std_logic_vector(15 downto 0); vector_up : in std_logic_vector(0 to 7); x : out std_logic_vector(7 downto 0); y : out std_logic_vector(0 to 11); z : out std_logic_vector(7 downto 0)); end attributs; architecture arch_attributs of attributs is begin x(0) <= vector_dwn(vector_dwn'left); x(1) <= vector_dwn(vector_dwn'right); x(2) <= vector_up(vector_up'left); x(3) <= vector_up(vector_up'right); x(4) <= vector_dwn(vector_dwn'high); x(5) <= vector_dwn(vector_dwn'low); x(6) <= vector_up(vector_up'high); x(7) <= vector_up(vector_up'low); y(vector_up'range) z(vector_up'reverse_range) end arch_attributs; <= "00001111"; <= "00110011";
x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7) y(0) y(1) y(2) y(3) y(4) y(5) y(6) y(7) z(0) z(1) z(2) z(3) z(4) z(5) z(6) z(7) = = = = = = = = = = = = = = = = = = = = = = = = vector_dwn(15) vector_dwn(0) vector_up(0) vector_up(7) vector_dwn(15) vector_dwn(0) vector_up(7) vector_up(0) GND GND GND GND VCC VCC VCC VCC VCC VCC GND GND VCC VCC GND GND

D.Giacona

VHDL Logique programmable

25/39

Partie 2 La structure dun programme VHDL

2.La dclaration d'entit


La dclaration dentit dcrit une interface externe, unique, la manire des entres-sorties dune bote noire Elle comprend o ventuellement, une liste de paramtres gnriques o la dfinition des ports, c.--d. une liste de signaux dentre et de signaux de sortie Chaque signal possde un nom, un mode et un type

2.1.

Description dune entit non gnrique


entity nom_entit is port ( [signal] nom_signal {,nom_signal}: [mode] type_signal {;[signal] nom_signal {,nom_signal}: [mode] type_signal} ); end [entity] nom_entit;

D.Giacona

VHDL Logique programmable

26/39

Partie 2 La structure dun programme VHDL

Exemple : un temporisateur

Mode du signal Nom de lentit

Type de signal

entity tempo1ms is
Nom du signal

port ( a rst, clk t end tempo1ms;

: in : in : out

std_logic; std_logic; std_logic);

D.Giacona

VHDL Logique programmable

27/39

Partie 2 La structure dun programme VHDL

2.2.

Description dune entit gnrique


entity nom_entit is generic ( nom_paramtre {, nom_paramtre }: [ := expression_statique] {; nom_paramtre {, nom_paramtre [ := expression_statique]} port ( [signal] nom_signal {,nom_signal}: {;[signal] nom_signal {,nom_signal}: ); end [entity] nom_entit;

type_paramtre }: type_paramtre

[mode] type_signal [mode] type_signal}

Exemple : une unit arithmtique et logique


Paramtre gnrique

entity alu_gen is Valeur par dfaut generic ( width : integer := 4); port ( op : in STD_LOGIC_VECTOR (1 downto 0); a : in STD_LOGIC_VECTOR (width-1 downto 0); b : in STD_LOGIC_VECTOR (width-1 downto 0); ...

D.Giacona

VHDL Logique programmable

28/39

Partie 2 La structure dun programme VHDL

2.3.

Les modes des ports

VHDL dfinit quatre modes qui dterminent le sens de transfert dune donne au travers du port : in out
Lentit lit un signal dentre fourni par lextrieur (ex : load, reset, clock, donnes unidirectionnelles) Lentit fournit un signal de sortie, mais ne peut pas relire ce signal

buffer Larchitecture de lentit fabrique un signal utilisable en sortie,


qui peut aussi tre relu par lentit comme un signal interne (ex : sorties dun compteur dont ltat doit tre test)

inout

Le signal est bidirectionnel : en sortie, il est fourni par lentit; en entre, il est fourni par lextrieur. Ce mode autorise aussi le bouclage interne (ex : bus de donnes)

Par dfaut, le mode dun port est in.

D.Giacona

VHDL Logique programmable

29/39

Partie 2 La structure dun programme VHDL

In Out

Buffer

In

Inout

In

Out

D.Giacona

VHDL Logique programmable

30/39

Partie 2 La structure dun programme VHDL

3.Le corps d'architecture


Le corps darchitecture dcrit le fonctionnement interne du bloc logique

3.1.

Syntaxe

architecture nom_architecture of nom_entit is { dclaration_de_signal | dclaration_de_constante | dclaration_de_composant | dclaration_de_type | dclaration_d'alias} begin { instruction_concurrente_d'assignation_de_signal | instruction_concurrente_d'instanciation_de_composant | instruction_concurrente_de_processus | instruction_de_gnration} end [architecture] [nom_architecture];

D.Giacona

VHDL Logique programmable

31/39

Partie 2 La structure dun programme VHDL

3.2.

Dclaration des signaux internes


t

control rst a ar inc clr clk clk ar en sr

cnt10_binary

cnt(9:0)

clk compare count = 999 (d = 999) d(9:0)

count(9:0)

-- dclaration internes signal inc signal clr signal count

des signaux : std_logic; : std_logic; : std_logic_vector (9 downto 0);

D.Giacona

VHDL Logique programmable

32/39

Partie 2 La structure dun programme VHDL

3.3.

Instructions concurrentes
Proprits

3.3.1.

Une instruction concurrente dcrit une opration qui porte sur des signaux (entre, interne) pour produire dautres signaux (interne, sortie) Tous les signaux mis en jeu dans larchitecture sont disponibles au mme moment Lordre dcriture des instructions na pas dimportance (cest le paralllisme)

Le corps darchitecture est dcrit dans un ou plusieurs styles choisis non pas en fonction du type de logique (combinatoire ou squentielle) ou du type de traitement des donnes (parallle ou squentiel) choisis pour apporter concision ou par prfrence personnelle Trois styles peuvent coexister au sein dune mme architecture

D.Giacona

VHDL Logique programmable

33/39

Partie 2 La structure dun programme VHDL

3.3.2.

Classification des styles de description

Description flot de donnes : instructions concurrentes dassignation de signal


Description de la manire dont les donnes circulent de signal en signal, ou dune entre vers une sortie Trois types dinstructions : tiquette : <= tiquette : <= when else tiquette : with select <= when Lordre dcriture des instructions dassignation de signaux est quelconque

D.Giacona

VHDL Logique programmable

34/39

Partie 2 La structure dun programme VHDL

Description composant

structurelle

instructions

concurrentes

dinstanciation

de

Interconnexion de composants (components), la manire dun schma, mais sous forme dune liste Dans larchitecture utilisatrice, un composant peut tre considr comme une bote noire Un composant est instanci laide dune instruction dappel de composant : tiquette : nom_composant port map ( liste_des_entres_et_sorties ); Lordre dcriture des instructions dinstanciation de composants est quelconque Par dfinition, un composant est aussi un systme logique (un sous-sytme) ; ce titre, il doit aussi tre dcrit par un couple (entity, architecture) dans lequel sont dfinis ses entres-sorties et son comportement Le corps darchitecture du composant (le comportement) est dcrit selon un ou plusieurs styles ; par exemple, un composant peut faire appel dautres composants Un composant peut tre rang dans une bibliothque

D.Giacona

VHDL Logique programmable

35/39

Partie 2 La structure dun programme VHDL

Description comportementale : instructions concurrentes dappel de processus


Certains comportements peuvent tre dcrits de faon algorithmique ; il faut alors les dfinir comme des processus Dans larchitecture utilisatrice, un processus est considr comme une instruction concurrente Instruction dappel de processus : tiquette: process dclarations begin instructons_squentielles end process; Lordre dcriture des instructions dappel de processus est quelconque Un processus regroupe des instructions squentielles qui ne servent qu traduire simplement et efficacement, sous forme dun algorithme, le comportement dun sousensemble matriel (mme sil est par exemple de nature combinatoire) ; le compilateur traduit lensemble de ces instructions squentielles en netlist Trois types dinstructions lintrieur dun processus : <= if then else case when Lordre dcriture des instructions lintrieur du processus est important
D.Giacona

VHDL Logique programmable

36/39

Partie 2 La structure dun programme VHDL

3.3.3.

Exemple 1 : architecture comportant des styles diffrents

Premire phase de conception : description schmatique Soit manuscrite, avant une transcription textuelle Soit laide dun diteur de schma (outils : Xilinx ISE, ModelSim Designer)
SYSTEME

B1 x B3

B2

Signal interne

D.Giacona

VHDL Logique programmable

37/39

Partie 2 La structure dun programme VHDL

Deuxime phase de conception : description VHDL dans trois styles diffrents


entity systeme is port( ... Fichier systeme.vhd projet device) (dans architecture arch_systeme of systeme is signal x,y ... -- liste des signaux internes ... begin -- B1 (Description par flot de donnes) -- Instructions concurrentes dassignations de -- signaux B1 : x <= a and b; ... -- B2 (Description comportementale) B2 : process (...) -- Instructions squentielles y <= ... end process; -- B3 (Description structurelle) B3 : composant_B3 port map (x, y,...); end arch_systeme; D.Giacona Lien par les noms des signaux

VHDL Logique programmable

38/39

Partie 2 La structure dun programme VHDL

3.3.4.

Exemple 2 : styles diffrents pour un mme bloc logique


architecture archmux of begin x <= a when (s = b when (s = c when (s = d; end archmux; mux4_1 is "00") else "01") else "10") else

architecture archmux of mux4_1 is begin with s select x <= a when "00", b when "01", c when "10", d when others; end archmux;

architecture archmux of mux4_1 is begin x <= (not s(1) and not s(0) or (not s(1) and s(0) or ( s(1) and not s(0) or ( s(1) and s(0) end archmux; architecture arch_mux of mux4_1 is begin process (s, a, b, c, d) begin case s is when "00" => x <= a; when "01" => x <= b; when "10" => x <= c; when others => x <= d; end case; end process; end arch_mux;

and and and and

a) b) c) d);

D.Giacona

VHDL Logique programmable

39/39

Partie 2 La structure dun programme VHDL

Rsultat de compilation Dans cet exemple, quel que soit le style de description employ, les quations gnres par le compilateur sont les mmes. x = d + c + b + a * s(0) * s(1) * /s(0) * s(1) * s(0) * /s(1) * /s(0) * /s(1)

D.Giacona

S-ar putea să vă placă și