cours vhdl 10 partie2 structure programme

46
VHDL – Logique programmable Partie 2 – La structure d’un programme VHDL © D.Giacona 1/46 VHDL - Logique programmable Partie 2- La structure d’un programme VHDL Denis Giacona ENSISA École Nationale Supérieure d'Ingénieur Sud Alsace 12, rue des frères Lumière 68 093 MULHOUSE CEDEX FRANCE Tél. 33 (0)3 89 33 69 00

Upload: mohamed-narumoh

Post on 13-Nov-2015

32 views

Category:

Documents


4 download

DESCRIPTION

VHDL

TRANSCRIPT

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    1/46

    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

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    2/46

    1. Prambule ...................................................................................................................................................................................................................... 4

    1.1. Les objectifs de la programmation VHDL pour un circuit FPGA ............................................................................................................... 41.2. Quelques caractristiques du langage ............................................................................................................................................................. 51.3. La porte des instructions ................................................................................................................................................................................. 61.4. Quelques rgles adopter ................................................................................................................................................................................. 7

    1.4.1. Indenter les instructions ............................................................................................................................................................................. 71.4.2. Appliquer une rgle de dnomination des identificateurs ................................................................................................................ 8

    2. Aperu de la programmation VHDL ..................................................................................................................................................................... 93. lments fondamentaux du langage VHDL ...................................................................................................................................................... 15

    3.1. Les commentaires ............................................................................................................................................................................................... 153.2. Les identificateurs ......................................................................................................................................................................................... 153.3. Les objets donnes : signal, constante, variable .................................................................................................................................... 163.4. Les types des objets donnes ...................................................................................................................................................................... 17

    3.4.1. Les types prdfinis par tous les compilateurs ................................................................................................................................ 173.4.2. Les types complmentaires .................................................................................................................................................................... 183.4.3. Conversions de type ................................................................................................................................................................................. 193.4.4. Usage courant du type integer ............................................................................................................................................................. 203.4.5. Les littraux .............................................................................................................................................................................................. 21

    3.5. Les oprateurs ................................................................................................................................................................................................ 223.5.1. Oprateurs de construction dexpressions ....................................................................................................................................... 223.5.2. Oprateurs dassignation et dassociation ......................................................................................................................................... 23

    3.6. Les dclarations et les assignations des signaux vecteurs .................................................................................................................. 243.7. Surcharge doprateurs ................................................................................................................................................................................ 253.8. Les attributs ................................................................................................................................................................................................... 26

    4. Rle de l'entit ...................................................................................................................................................................................................... 284.1. Description dune entit non gnrique ........................................................................................................................................................ 28

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    3/46

    4.2. Description dune entit gnrique ............................................................................................................................................................. 314.3. Les modes des ports ...................................................................................................................................................................................... 34

    5. Rle du corps d'architecture ............................................................................................................................................................................. 365.1. Syntaxe ................................................................................................................................................................................................................ 365.2. Dclarations dans larchitecture ................................................................................................................................................................ 375.3. Instructions concurrentes ........................................................................................................................................................................... 39

    5.3.1. Proprits .................................................................................................................................................................................................. 395.3.2. Classification des styles de description ............................................................................................................................................ 405.3.3. Exemple 1 : architecture comportant trois styles diffrents ..................................................................................................... 435.3.4. Exemple 2 : comparatif de deux styles pour un mme bloc logique ............................................................................................ 455.3.5. Exemple 3 : style description structurelle ................................................................................................................................. 46

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    4/46

    1. Prambule

    1.1. Les objectifs de la programmation VHDL pour un circuit FPGA

    Logiciel de simulation

    Logiciel de synthse (configuration de circuits logiques programmables)

    Des instructions pour dcrire les signaux de test

    Des instructions pour dcrire le comportement du systme - fonctions combinatoires - fonctions squentielles

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    5/46

    1.2. Quelques caractristiques du langage

    Syntaxe complexe o pour aider le concepteur, les outils de dveloppement proposent des modles

    (templates) et des convertisseurs de schmas en code VHDL Langage strict par rapport aux types et aux dimensions des donnes

    o avantage : limination dun grand nombre derreurs de conception ds la compilation Trs bonne portabilit

    o condition d'crire un code indpendant de la technologie Plusieurs styles de description

    o tous les styles ne conviennent pas toutes les applications o toutes les instructions ne sont pas synthtisables

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    6/46

    1.3. La porte des instructions

    Les instructions modlisent un cblage matriel lorsquelles sont destines la configuration dun circuit CPLD/FPGA ou la ralisation dun ASIC.

    Les instructions ressemblent celles dun langage impratif, mais pour bon

    nombre dentre elles, lordre na pas dimportance ; dans ce cas, elles modlisent naturellement le paralllisme.

    Le style de code et les types dinstructions influent sur les niveaux logiques des circuits ; utiliser : certains oprateurs, clock enable, one hot encoding (grosses FSM), shift registers ddis, I/O regsters ddis,

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    7/46

    1.4. Quelques rgles adopter

    1.4.1. Indenter les instructions 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) begin if clk'event and clk = '1' then if en = '1' then if count_i < x"9" then count_i

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    8/46

    1.4.2. Appliquer une rgle de dnomination des identificateurs Donner des noms qui ont une signification Anglais, minuscules et undescore Quelques suggestions :

    o Horloge : clk o Reset synchrone (mise 0) : rst, sr o Set synchrone (mise 1) : set, sp o Read/write actif l'tat haut : rw o Dcodeur 1 parmi 8 : dec1of8 o Multiplexeur 2 vers : mux2to1 o Registre de mmorisation 4 bits : reg4 o Registre dcalage 4 bits : shift_reg4 o Compteur 8 bits (binaire naturel) : count8, cnt8 o Entre incrmentation dun compteur 8 bits : up_count8, up_cnt8 o Sortie retenue dun compteur 8 bits : co_count8, co_cnt8 o Compteur BCD : cntbcd, bcdcnt o Compteur (signal interne) : count_int o tiquette de processus de comptage : count_proc

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    9/46

    2. Aperu de la programmation VHDL Imaginer un schma-bloc (tape importante)

    Cahier des charges Spcifications

    fonctionnelles Spcifications

    technologiques Systme

    A C

    B

    Dcomposition hirarchique du systme en un bloc principal et des sous-blocs (qui peuvent leur tour tre dcomposs).

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    10/46

    Exemple de dcomposition

    tempo1ms

    control clk

    cnt10 en cnt(9:0) rst clk

    a up_cnt10 rst_cnt10

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

    cnt10(9:0) max_cnt10

    clk

    t

    Signal interne

    Signal externe

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    11/46

    Comment passer du schma-bloc au code VHDL ?

    Cas : on dispose dun diteur de schma Au niveau le plus lev (top

    level), le schma est converti automatiquement en code VHDL dans un style appel description structurelle .

    Cas : on dispose uniquement dun diteur de texte On crit soi-mme le code

    VHDL en choisissant un ou plusieurs styles de codage (parmi 3)

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    12/46

    Aperu des styles de codage

    Style description structurelle Les 3 sous-blocs A, B et C sont dcrits en premier, par 3 couples (entity, architecture) dans 3 units de compilation.1 Larchitecture de chaque sous-bloc est dcrite dans un style au choix du concepteur. Le bloc principal Systme est dcrit ensuite, galement par un couple (entity, architecture). Larchitecture comporte 3 instructions dinstanciation de composants (les 3 sous-blocs).

    1 Les units de compilation peuvent, par dfinition, tre compiles sparment.

    entity -- entres sorties du bloc A end ; architecture -- description des fonctions du bloc A end ; entity -- entres sorties du bloc B end ; architecture -- description des fonctions du bloc B end ; entity -- entres sorties du bloc C end ; architecture -- description des fonctions du bloc C end ; entity -- entres sorties du bloc Systme end ; architecture -- instructions dinstanciation des blocs A, B et C end ;

    Unit de compilation 1

    Unit de compilation 2

    Unit de compilation 3

    Unit de compilation 4

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    13/46

    Autres styles

    Le bloc principal Systme est obligatoirement dcrit par un couple (entity, architecture). Larchitecture est dcrite dans un style au choix du concepteur.

    entity -- entres sorties du bloc Systme

    end ; architecture

    -- description des fonctions des blocs A, B et C end ;

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    14/46

    La description VHDL du bloc principal tempo1ms comporte obligatoirement deux parties :

    une dclaration dentit qui dfinit les entres-sorties une architecture qui dtermine le comportement

    -- dclaration des entres-sorties entity tempo1ms is

    ... end tempo1ms; -- description du comportement architecture arch_tempo1ms of tempo1ms is

    ... begin -- description du compteur cnt10_proc: process (rst,clk) -- description du contrleur control_proc: process (rst, clk) -- description du comparateur compare: max_cnt10

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    15/46

    3. lments fondamentaux du langage VHDL

    3.1. Les commentaires -- Un commentaire commence par deux tirets conscutifs et s'arrte la fin de la ligne /* Ici commence un bloc de commentaire. Autoris uniquement avec la norme VHDL-2008 */

    3.2. 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)

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    16/46

    3.3. Les objets donnes : signal, constante, variable

    signal count : std_logic_vector(3 downto 0) := 0000;

    Les signaux portent les informations des liaisons dentre, des liaisons de sortie et des liaisons internes. Lassignation initiale de certains signaux internes est conseille pour une synthse.

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

    Les constantes reoivent leur valeur dfinitive au moment de leur dclaration.

    variable temp : integer range 0 to 999 := 0 ;

    Les variables ne sont dclares et utilises que dans les processus, les fonctions et les procdures. Lassignation initiale est facultative.

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    17/46

    3.4. Les types des objets donnes

    3.4.1. Les types prdfinis par tous les compilateurs

    integer : entier ngatif ou positif natural : entier positif ou nul positive : entier positif bit : numr dont les deux seules valeurs possibles sont 0 et 1 bit_vector : composite tableau reprsentant un vecteur de bits boolean : numr dont les deux valeurs possibles sont false et true real : flottant compris entre -1.0E38 et 1.0E38

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    18/46

    3.4.2. Les types complmentaires

    std_logic -- 9 valeurs dcrivant tous les tats dun signal logique U : non initialis (uninitialized, unconnected)2 X : niveau inconnu (unknown)3 0 : niveau bas 1 : niveau haut Z : haute impdance W : niveau inconnu, forage faible (weak unknown)1 L : niveau bas, forage faible (weak low) H : niveau haut, forage faible (weak high) - : indiffrent (dont care)

    std_logic_vector -- vecteur de std_logic Pour autoriser lusage de ces types, il faut inclure les directives suivantes avant la dclaration dentit.

    library ieee; use ieee.std_logic_1164.all;

    2 Interdit pour la synthse, destin la simulation uniquement 3 En synthse, trait comme dont care

    Ce sont les types quil faut utiliser de prfrence dans toutes les dclarations des ports dentre-sortie.

    Ils sont compatibles pour la simulation et la synthse.

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    19/46

    3.4.3. Conversions de type Les environnements de dveloppement fournissent en gnral des paquetages comportant des fonctions de conversion de type. Par exemple, la bibliothque de Xilinx ISE contient : conv_integer (a)

    o pour convertir un std_logic_vector a en un integer conv_unsigned (x,n)

    o pour convertir un std_logic_vector, integer, unsigned ou signed x en un unsigned de n bits (ralise un changement de taille)

    conv_signed (x,n) o pour convertir un std_logic_vector, integer, signed ou unsigned x en un signed de n bits

    (ralise un changement de taille) conv_std_logic_vector (x,n)

    o 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_arith de la bibliothque ieee

    library ieee ; use ieee. std_logic_arith.all;

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    20/46

    3.4.4. Usage courant du type integer

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

    pour une variable servant d'indice pour un std_logic_vector

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    21/46

    3.4.5. Les littraux

    Les entiers dcimaux 1234 1_520_473 -- pour amliorer la lisibilit

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

    Les vecteurs de bits 1010 -- reprsentation binaire O12 -- reprsentation octale XA -- reprsentation hexadcimale

    Les caractres a

    Les chanes de caractres ERREUR, ERREUR & N

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    22/46

    3.5. Les oprateurs 3.5.1. Oprateurs de construction dexpressions

    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

    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

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    23/46

    3.5.2. Oprateurs dassignation et dassociation

    Assignation de variable nom_variable := expression ;

    o lintrieur dun processus Assignation de signal (dynamique) nom_signal nom_signal_effectif ;

    o connecteur de signaux dans une instanciation de composant

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    24/46

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

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    25/46

    3.7. Surcharge doprateurs

    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

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    26/46

    3.8. Les attributs 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

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    27/46

    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)

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    28/46

    4. Rle de l'entit La dclaration dentit dcrit une interface externe unique. La dclaration 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 possdant un nom, un mode et un type.

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

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    29/46

    tempo1ms

    control clk

    cnt10 en cnt(9:0) rst clk

    a up_cnt10 rst_cnt10

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

    cnt10(9:0) max_cnt10

    clk

    t

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    30/46

    entity tempo1ms is

    port (

    clk : in std_logic; a : in std_logic; t : out std_logic);

    end tempo1ms;

    Nom de lentit

    Nom du signal

    Mode du signal

    Type de signal

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    31/46

    4.2. Description dune entit gnrique

    entity nom_entit is

    generic ( nom_paramtre {,nom_paramtre} : type_paramtre [:= expression_statique] {; nom_paramtre {,nom_paramtre} : type_paramtre [:= expression_statique]} ); port ( [signal] nom_signal {,nom_signal} : [mode] type_signal

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

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    32/46

    Exemple : calcul de loppos arithmtique

    Schma de principe pour une fonction de dimension 3

    HA s a co b

    HA s a co b

    HA s a co b

    x(0)

    x(1)

    x(2)

    y(0)

    y(1)

    y(2)

    inverse c(0)

    c(1)

    c(2)

    opposite_3

    a(0)

    a(1)

    a(2)

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    33/46

    entity opposite_n is generic (n : integer := 3); port ( x : in std_logic_vector(n-1 downto 0); inverse : in std_logic; y : out std_logic_vector (n-1 downto 0)); end opposite_n;

    Paramtre gnrique

    Valeur par dfaut

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    34/46

    4.3. Les modes des ports VHDL dfinit quatre modes qui dterminent le sens de transfert dune donne au travers du port :

    in Lentit lit un signal dentre fourni par lextrieur (ex : load, reset, clock, donnes unidirectionnelles) out 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 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. Ne pas utiliser le mode buffer pour une synthse : peut provoquer des erreurs !!

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    35/46

    Buffer

    In

    In

    In

    Out

    Inout

    Out

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    36/46

    5. Rle du corps d'architecture

    Le corps darchitecture dcrit le fonctionnement interne du bloc logique

    5.1. Syntaxe

    architecture nom_architecture of nom_entit is { dclaration_de_composant | dclaration_de_constante | dclaration_de_signal_interne | 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];

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    37/46

    5.2. Dclarations dans larchitecture

    HA s a co b

    HA s a co b

    HA s a co b

    x(0)

    x(1)

    x(2)

    y(0)

    y(1)

    y(2)

    inverse c(0)

    c(1)

    c(2)

    opposite_3

    a(0)

    a(1)

    a(2) msb

    lsb

    Composant half adder

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    38/46

    architecture behavioral of opposite_3 is

    -- dclaration de composant component ha port( a, b : in std_logic; co, s : out std_logic); end component; -- dclaration des signaux internes signal a, c : std_logic_vector(n-1 downto 0); -- dclaration dalias

    alias lsb : std_logic is y(0) ; alias msb : std_logic is y(n-1) ;

    begin ... end behavioral ;

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    39/46

    5.3. Instructions concurrentes

    5.3.1. Proprits Lordre dcriture des instructions na pas dimportance (cest le paralllisme)

    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

    Le corps darchitecture est dcrit dans un ou plusieurs styles Le style nest pas impos par le type de logique (combinatoire ou squentielle) ou le type de

    traitement des donnes (parallle ou squentiel) Le style est choisi pour apporter concision ou par prfrence personnelle

    Trois styles peuvent coexister au sein dune mme architecture

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    40/46

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

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    41/46

    Description structurelle : instructions concurrentes dinstanciation de composant 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

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    42/46

    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 instructions_squentielles end process; Lordre dcriture des instructions dappel de processus est quelconque Un processus contient des instructions squentielles qui ne servent qu traduire simplement et

    efficacement, sous forme dun algorithme, le comportement dun sous-ensemble matriel Des instructions squentielles (un algorithme) peuvent dcrire un systme combinatoire ; a

    contrario, une instruction concurrente peut dcrire un systme squentiel !! lintrieur dun processus, trois types dinstruction dassignation de signaux et deux types

    dinstruction ditration :

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    43/46

    5.3.3. Exemple 1 : architecture comportant trois styles diffrents Conception schmatique laide dun diteur de schmas (par exemple Active-HDL)

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    44/46

    Conception directe VHDL laide dun diteur de texte

    entity systeme is port(... architecture arch_systeme of systeme is signal x,y ... -- dclaration des signaux internes ... begin -- B1 (Description par flot de donnes) -- B2 (Description comportementale) -- B3 (Description structurelle) end arch_systeme;

    -- Instruction concurrente dassignation de signalB1 : x

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    45/46

    5.3.4. Exemple 2 : comparatif de deux styles pour un mme bloc logique

    -- Style flot de donnes architecture archmux of mux4_1 is begin x

  • VHDL Logique programmable Partie 2 La structure dun programme VHDL

    D.Giacona

    46/46

    5.3.5. Exemple 3 : style description structurelle begin a(0)