From: Subject: Syntaxe VHDL Date: Tue, 3 Mar 2009 22:57:17 +0100 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01C99C53.669577E0" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C99C53.669577E0 Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Content-Location: http://amouf.chez.com/syntaxe.htm Syntaxe VHDL

=20








=

A

ABS, AFTER, AND, ARCHITECTURE,= ASSERT, ATTRIBUTS.

Abs

Voir les op=E9rateurs.

After

AFTER sp=E9cifie un temps de r=E9ponse d'un signal par = rapport =E0 son=20 =E9v=E9nement.
Deux modes de d=E9lai sont possibles INERTIAL = (d=E9faut) ou TRANSPORT.=20 Le mode INERTIAL ne propage pas les impulsions plus courtes que le temps = de=20 propagation.

Syntaxe

Exemple

    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    ENTITY nor2 IS
      PORT (a,b : IN std_logic;
      z : OUT std_logic);
    END=20 nor2;

    ARCHITECTURE behavior OF nor2 IS
    BEGIN
      dly0: PROCESS(a,b)
      BEGIN
        z <=3D a NOR b AFTER 10 ns; -- temps de propagation est de=20 10ns
      END PROCESS dly0;
    END = behavior;
And

Voir les op=E9rateurs.

Architecture

D=E9clare une architecture comportementale ou = structurelle d'une=20 entit=E9. Ceci permet de d=E9finir les relations entre les = entr=E9es/sorties d'une=20 fonction.=20

Syntaxe

Exemple

    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    ENTITY fulladd = IS
      PORT (x,y,cin : IN bit;
      sum, cout : OUT bit);
    END=20 fulladd;

    ARCHITECTURE behavior OF fulladd IS
    BEGIN
      sum <=3D x XOR y XOR cin;
      cout <=3D (x AND y) OR (x AND = cin) OR (y=20 AND cin);
    END behavior;

Assert

ASSERT est une instruction de d=E9boggage.
Test si = une=20 condition est TRUE. Dans le cas contraire, reporte un message sur = l'=E9cran du=20 simulateur.
ASSERT est tr=E8s utile pour v=E9rifier les violations de = timing.
L'option de SEVERITE permet de d=E9finir le niveau = d'importance de=20 l'alerte. Voici la liste des niveaux :
NOTE, WARNING, ERROR, FAILURE. = Le=20 dernier niveau arr=EAte normalement la simulation.

    Guide des niveaux de s=E9v=E9rit=E9 :
      Note : utilis=E9 pour information seulement
        "Note : Chargement de donn=E9es d'un fichier"
      Warning : = utilis=E9=20 pour fournir une information sur une erreur en instance
        "Warning : D=E9tection d'un pic"
      Error : utilis=E9 pour = information=20 seulement
        "Error : Violation du temps d'initialisation"
      Failure : = raporte=20 une grosse erreur
        "Failure : Ligne RESET instable"

Syntaxe

    ASSERT condition
      [REPORT string] [SEVERITY severity_level];

Exemple

    check_setup: PROCESS (clk, d)
    BEGIN
      IF (clk'EVENT AND clk=3D'1') THEN -- test si front montant de = clk
        ASSERT d'STABLE(setup_time) -- regarde si d est stable pendant=20 setup_time
          REPORT "Setup Violation..." -- affiche un message = d'avertissement si=20 pas de stabilit=E9
          SEVERITY WARNING;
      END = IF;
    END PROCESS=20 check_setup;

Attributs

Les attributs permettent d'ajouter des informations=20 suppl=E9mentaires =E0 un signal, variable ou un composant.

Syntaxe

    object_name'attribut_name

Syntaxe des = attributs pour=20 le type ARRAY ou scalaire
    X'HIGH =E9l=E9ment le plus grand ou borne maximale
    X'LOW = =E9l=E9ment le plus=20 petit ou borne minimale
    X'LEFT =E9l=E9ment de gauche ou borne de=20 gauche
    X'RIGHT =E9l=E9ment de droite ou borne de=20 droite
Syntaxe des attributs pour les objets = d=E9clar=E9s dans un=20 ARRAY ou un SUBTYPE
    x'RANGE =E9l=E9ment range de x
    x'REVERSE_RANGE =E9l=E9ment range = de x dans=20 l'ordre inverse
    x'LENGTH x'HIGH - x'LOW + 1=20 (integer)
Syntaxe des attributs pour = SIGNAL
    x'EVENT retourne TRUE si x change d'=E9tat
    x'ACTIVE retourne TRUE = si x a=20 chang=E9 durant le dernier interval
    x'LAST_EVENT retourne une = valeur=20 temporelle depuis le dernier changement de x
    x'LAST_ACTIVE retourne = une=20 valeur temporelle depuis la derni=E8re transition de x
    x'LAST_VALUE = retourne=20 la derni=E8re valeur de x
Ces attributs cr=E9ent un = nouveau=20 SIGNAL
    x'DELAYED(t) cr=E9e un signal du type de x retard=E9 par = t
    x'STABLE(t)=20 retourne TRUE si x n'est pas modifi=E9 pendant le temps = t
    x'QUIET(t) cr=E9e un=20 signal logique =E0 TRUE si x n'est pas modifi=E9 pendant un temps=20 t
    x'TRANSACTION cr=E9e un signal logique qui bascule lorsque x est = change=20 d'=E9tat
Exemple
    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    ENTITY d_flop = IS
      PORT (d,clk,clr, set : IN std_logic;
            q : OUT std_logic);
    END = d_flop;

    ARCHITECTURE=20 behavior OF d_flop IS -- fonctionnement d'une bascule D
    CONSTANT = clrit:=20 std_logic :=3D '0';
    CONSTANT setit: std_logic :=3D = '1';
    BEGIN
      PROCESS (clk, clr, set) -- liste de sensibilit=E9
      BEGIN
        IF (clk=3D'1') AND (clk'EVENT) THEN -- TRUE sur un front montant = de=20 clk
          IF (clr =3D '0') THEN -- si clr est =E0 0
            q <=3D clrit; -- clr actif, q =E0 0
          ELSIF (set = =3D '0') THEN --=20 si set est =E0 0
            q <=3D setit; -- set actif, q =E0 1
          ELSE
            q <=3D d; -- si ni clr ni set, alors q =3D d
          END=20 IF;
        END IF;
      END PROCESS;
    END=20 behavior;






B








C

CASE, CASSE, COMMENTAIRE, = COMPONENT, CONFIGURATION, CONSTANT. =

Case

On utilise CASE pour permettre le choix entre = plusieurs actions.=20 Cette instruction est tr=E8s utile dans les machines d'=E9tats.
En = fin de liste,=20 on peut ajouter WHEN OTHERS qui permet de donner une action =E0 tous les = choix qui=20 n'ont pu =EAtre trouv=E9s dans la liste.

Syntaxe

Exemple

    LIBRARY ieee;
    USE ieee.std_logic_1164.all;
    ENTITY handshk = IS
      PORT (clk,req : IN std_logic;
          ack : OUT std_logic);
    END = handshk;

    ARCHITECTURE=20 behavior OF handshk IS
    CONSTANT st0 : std_logic_vector(0 TO 1) :=3D = "00";
    CONSTANT st1 : std_logic_vector(0 TO 1) :=3D = "01";
    CONSTANT st2 :=20 std_logic_vector(0 TO 1) :=3D "10";
    CONSTANT st3 : = std_logic_vector(0 TO 1)=20 :=3D "11";
    SIGNAL state : std_logic_vector(0 TO 1) :=3D = "00";
    BEGIN
      checkreq: PROCESS
      BEGIN
        WAIT UNTIL clk =3D '1'; -- attend un front montant de = clk
        CASE state=20 IS -- state est la variable du choix
          WHEN st0 =3D> -- si state =3D st0 soit '00'
            IF req =3D '1' THEN -- si req =3D '1'
              state <=3D st1; -- on incr=E9mente la machine = d'=E9tat
            END=20 IF;
          WHEN st1 =3D> -- si state =3D st1
            state <=3D st2; -- la machine d'=E9tat passe =E0 = st2
          WHEN st2=20 =3D>
            state <=3D st3;
          WHEN st3 =3D>
            state <=3D st0; -- la machine d'=E9tat est boucl=E9e vers = st0
          WHEN OTHERS =3D> NULL;
        END = CASE;
      END PROCESS=20 checkreq;

      ackit: PROCESS (state) -- ce PROCESS g=E8re un bit = de=20 propagation
      BEGIN
        CASE state IS
          WHEN st2 | st3 =3D> -- si state vaut st2 ou st3
            ack <=3D '1'; -- passer ack =E0 1
          WHEN OTHERS = =3D> -- dans=20 tous les autres cas de state
            ack <=3D '0'; -- laisser ack =E0 0
        END = CASE;
      END=20 PROCESS ackit;
    END behavior;

Casse

La casse n'est pas sensible. Il n'y a pas de = diff=E9renciation=20 minuscule/majuscule.

Commentaire

Un commentaire d=E9bute par deux traits (signe moins) = : --=20

Exemple
sum <=3D x XOR y; -- OU EXCLUSIF de x et y.=20

Component

COMPONENT permet d'=E9crire d'un programme sous la = forme=20 structurelle. En effet, il faut d=E9clarer et d=E9finir les composants = de la=20 fonction puis dans le corps de l'architecture, il suffit de les = connecter en=20 suivant un sch=E9ma structurel.
Cette m=E9thode d'=E9criture permet = aussi la=20 description hi=E9rarchique.
Quatre blocs sont =E0 distinguer dans une = telle=20 d=E9finition :

Syntaxe
D=E9claration
    COMPONENT COMPONENT_name
      [local_generic_clause]
      [local_port_clause]
    END = COMPONENT;

D=E9finition du brochage
    instantiation_label: COMPONENT_name
    [GENERIC MAP=20 (local_generic_list)]
    [PORT MAP local_port_list]

    Exemple

    L'exemple propose de synth=E9tiser = le sch=E9ma=20 ci-dessous :

      ENTITY fulladd IS
        PORT (x,y,cin : IN bit; sum,cout : OUT bit);
      END=20 fulladd;


      ARCHITECTURE struct OF fulladd IS -- 1=B0 = rescencement de=20 tous les composants du sch=E9ma

        COMPONENT xor2 -- d=E9claration du OU-EXCLUSIF
          PORT (a, b : IN bit;
              q: OUT bit);
        END = COMPONENT;

        COMPONENT or2 --=20 d=E9claration du OU
          PORT (a, b : IN bit;
              q: OUT bit);
        END = COMPONENT;

        COMPONENT and2 --=20 d=E9claration du ET
          PORT (a,b : IN bit;
              q: OUT bit);
        END COMPONENT;
        SIGNAL in1, = in2, in3:=20 bit;

        BEGIN -- 2=B0 affectation des liaisons du sch=E9ma aux = broches des=20 composants
        u1: xor2
          PORT MAP(x, -- affectation par nom
              y, -- on retrouve les signaux du sch=E9ma et les signaux du=20 composant
              in1);

        u2: or2
          PORT MAP(in2, -- affectation par position
              in3, -- c'est l'ordre de passage qui d=E9termine des=20 connections
              cout);

        u3: xor2
          PORT MAP(a =3D> in1,b =3D> = cin,q=3D>sum);

        u4: and2
          PORT MAP(a =3D> in1,b =3D> = cin,q=3D>in3);

        u5: and2 -- il=20 faut passer tous les composants en revue
          PORT MAP(a =3D> x,b =3D> y, q=3D>in2);
      END = struct;

      CONFIGURATION fulladd_config OF fulladd IS -- 3=B0 = attribution=20 des circuits =E0 leur ENTITY
      FOR struct
        FOR u1,u3: xor2 USE ENTITY WORK.xor2; -- u1 et u3 h=E9ritent du=20 comportement de xor2_arch d=E9fini plus loin
        END FOR;

        FOR = u2: or2=20 USE ENTITY WORK.or2; -- affectation de u2
        END FOR;

        FOR = u4,u5: and2=20 USE ENTITY WORK.and2;-- affectation de u4 et u5
        END = FOR;

      END=20 FOR;
      END fulladd_config;

      -------------------------------- = contenu=20 d'une autre biblioth=E8que

      ENTITY and2 IS
        PORT (a,b : IN bit;q : OUT bit);
      END = and2;

      ARCHITECTURE=20 behv OF and2 IS
      BEGIN
        q<=3Da and b;
      END behv;


      ENTITY or2 IS
        PORT (a,b : IN bit;q : OUT bit);
      END = or2;

      ARCHITECTURE behv=20 OF or2 IS
      BEGIN
        q<=3Da or b;
      END behv;


      ENTITY xor2 IS
        PORT (a,b : IN bit;q : OUT bit);
      END = xor2;

      ARCHITECTURE=20 behv OF xor2 IS
      BEGIN
        q<=3D((not a) and b) or (a and (not b));
      END behv;
      Configuration

      CONFIGURATION s'utilise en combinaison avec COMPONENT.=20

      Syntaxe

        CONFIGURATION configuration_name OF entity_name IS
            FOR architecture_name
              {use_clause}
              {component_configuration}
            END = FOR;
        END=20 [configuration_name];

      Constantes

      Les constantes sont utilis=E9es pour r=E9f=E9rencer = une valeur ou un=20 type sp=E9cifique.
      Elles permettent une meilleur lecture et = maintenance d'un=20 source.
      De tous types, elles sont utilis=E9es dans les entit=E9s, = architectures=20 ou packets.

      Syntaxe

      Exemple

        constant BUS_WIDTH : integer :=3D 8;







      D


      DELAY.

      Delay

      Voir AFTER.







      E

      ENTITY, EXIT.

      Entity

      D=E9clare une entit=E9 visible de l'ext=E9rieur.=20

      Syntaxe

      Exemple

        LIBRARY ieee;
        USE ieee.std_logic_1164.all;
        ENTITY fulladd = IS
          PORT (x,y,cin : IN bit;
          sum, cout : OUT bit);
        END = ulladd;

      Exit

      EXIT se combine avec FOR, WHILE et LOOP pour sortir = d'une boucle.=20

      Syntaxe

        EXIT [loop_label] [WHEN condition];







      F

      FOR, FUNCTION. =

      For

      FOR est une instruction de bouclage. Elle s'utilise = avec LOOP.
      On place la = condition=20 de fin de sortie dans l'instruction m=EAme contrairement au LOOP seul = o=F9 on est=20 oblig=E9 d'avoir recourt =E0 la commande EXIT. On peut toutefois = utiliser EXIT ou NEXT.
      Le bouclage = se fait=20 autant de fois que discrete_range l'indique.

      Syntaxe

        [loop_label:] FOR index_variable IN discrete_range LOOP
            sequence_of_statements
        END LOOP = [loop_label];

      Exemple

        USE ieee.std_logic_1164.all;
        ENTITY clock IS
          PORT (clk1 : INOUT std_logic :=3D '0');
        END = clock;
        ARCHITECTURE=20 behv OF clock IS
        CONSTANT pulse_time : time :=3D 25ns;
        BEGIN
          clkit: PROCESS
          VARIABLE a : integer :=3D 1;
          BEGIN
            loop1: FOR a IN 1 TO 10 LOOP -- la variable de boucle est a de 1 = =E0=20 10
              WAIT FOR pulse_time; -- attend la valeur de pulse_time
              clk1 = <=3D=20 NOT clk1; -- compl=E9mente clk1
            END LOOP = loop1;
          END PROCESS=20 clkit;
        END behv;

      Function

      Les FONCTIONS sont des blocs d'instructions qui = retournent une=20 valeur. Les fonctions peuvent =EAtre appel=E9es de diff=E9rents = endroits.
      Les=20 param=E8tres pass=E9s sont du type IN et les objets de class SIGNAL ou=20 CONSTANT.
      On peut d=E9clarer des variables locales =E0 l'int=E9rieur = d'une=20 fonction. Ces variables perdent leur valeur =E0 chaque sortie de la = fonction et=20 sont initialis=E9es =E0 chaque appel.
      Une fonction peut =EAtre = d=E9clar=E9e dans un=20 PACKAGE ou dans le corps d'une ARCHITECTURE.
      Une fonction autorise = qu'un=20 traitement s=E9quentiel (pas de PROCESS et WAIT) ni d'assignation d'un=20 signal.
      Une fonction doit comporter au moins une instruction = RETURN.
      Voir=20 aussi
      PROCEDURE et PACKAGE.

      Syntaxe
      D=E9claration

        FUNCTION function_name
          {(parameter_list)}
          RETURN type_name;

      Corps = de la=20 fonction
        FUNCTION function_name
          {(parameter_list)}
          RETURN type_name IS
        BEGIN
          [block_statement]
          [generate_statement]
        END=20 [function_name];
      Exemple
        LIBRARY ieee;
        USE ieee.std_logic_1164.all;
        ENTITY nor2 IS
          GENERIC (tphl : time :=3D 10.0ns; -- d=E9claration des temps de=20 propagation
              tplh : time :=3D 15.0ns);
          PORT (a,b : IN = std_logic;
              z : OUT std_logic);
        END = nor2;

        ARCHITECTURE=20 behavior OF nor2 IS
        BEGIN
          dly: PROCESS(a,b)
          VARIABLE newstate : std_logic;
          BEGIN
            newstate :=3D a NOR b;
            z <=3D newstate AFTER delay(a NOR=20 b,tplh,tphl); -- appel de la fonction delay
          END PROCESS=20 dly;
        END behavior;

        LIBRARY ieee; -- d=E9claration de la fonction
        USE=20 ieee.std_logic_1164.all;
        USE work.myfuncs.all; -- on d=E9clare la=20 biblioth=E8que utilisateur myfuncs
        PACKAGE myfuncs IS
          FUNCTION delay(newval : IN std_logic; -- ent=EAte de delay
            delay01 : IN time; -- les param=E8tres n'ont pas le m=EAme nom, = c'est=20 l'ordre qui compte
          delay10 : IN time) RETURN time; -- = retourne un=20 nombre de type time
        END myfuncs;

        PACKAGE BODY myfuncs = IS
          FUNCTION delay(newval : IN std_logic; -- corps de delay
            delay01 : IN time;
          delay10 : IN time) RETURN=20 time;
        BEGIN
          CASE newval IS
            WHEN '0' =3D> RETURN delay01; -- retourne la valeur = delay01
            WHEN=20 '1' =3D> RETURN delay10; -- retourne la valeur delay10
            WHEN = OTHERS=20 =3D> IF (delay01 > delay10) THEN -- retourne la plus grande = valeur
              RETURN delay01;
            ELSE;
              RETURN delay10;
            END IF;
          END CASE;
        END=20 delay;
        END myfuncs;







      G

      GENERIC. =

      Generic

      La section GENERIC_DECLARATIONS dans l'ent=EAte ENTITY = permet de=20 d=E9finir des param=E8tres exploitables dans l'architecture.
      Cette = m=E9thode=20 d'=E9criture permet une maintenance plus ais=E9e.

      Syntaxe

      Exemple

        LIBRARY ieee;
        USE ieee.std_logic_1164.all;
        ENTITY nor2 IS
          GENERIC (tphlmin, tplhmin: time :=3D 3.0ns; -- d=E9claration des = temps de=20 propagation
            tphltyp : time :=3D 8.0ns;
            tplhtyp : time :=3D = 6.5ns;
            tphlmax,=20 tplhmax: time :=3D 13.0ns);
          PORT (a,b : IN std_logic;
            z : OUT std_logic);
        END nor2;

        ARCHITECTURE = behavior OF=20 nor2 IS
        BEGIN
          dly0: PROCESS(a,b);
          BEGIN
            IF a =3D '0' AND b =3D '0' THEN -- il faut r=E9soudre tous les = cas puisque=20 tplhtyp < > tphltyp
              z <=3D '1' AFTER tplhmin;
            ELSIF a =3D '0' AND b =3D = '1' THEN
              z <=3D '0' AFTER tphlmin;
            ELSIF a =3D '1' AND b =3D = '0' THEN
              z <=3D '0' AFTER tphlmin;
            ELSIF a =3D '1' AND b =3D = '1' THEN
              z <=3D '0' AFTER tphlmin;
            END IF;
          END = PROCESS=20 dly0;
        END behavior;







      H








      I

      IF...THEN, INERTIAL. =

      IF ... THEN

      La combinaison IF THEN permet d'effectuer un test = d'une=20 expression logique. La suite du d=E9roulement d=E9pend du = r=E9sultat.
      Deux=20 imbrications sont possibles : ELSIF suivi d'un autre test et ELSE qui = contr=F4le=20 les r=E9sultats FALSE.

      Syntaxe

        Exemple

          LIBRARY ieee;
          USE ieee.std_logic_1164.all;
          ENTITY mux IS
            PORT (a,b,sel : IN std_logic;
                y : OUT std_logic);
          END mux;
          ARCHITECTURE = behavior OF=20 mux IS
          BEGIN
            PROCESS (sel,a,b) -- liste de sensibilit=E9
            BEGIN
              IF sel =3D '0' THEN -- test si sel vaut 0
                y <=3D a; -- si a=3D0 reproduit a sur y
              ELSIF sel = =3D '1' THEN --=20 test si sel vaut 1
                y <=3D b; -- si a=3D1 reproduit b sur y
              ELSE
                y <=3D 'X'; -- si sel n'est ni =E0 1 ni =E0 0, on affecte X = =E0=20 y
              END IF;
            END PROCESS;
          END=20 behavior;
        Exemple
          LIBRARY ieee;
          USE ieee.std_logic_1164.all;
          ENTITY por IS
            PORT (int0,int1 : IN std_logic :=3D '1';
                p1_1,p1_2 : OUT std_logic :=3D '0'
                reset : INOUT std_logic = :=3D=20 '0');
          END por;
          ARCHITECTURE behv OF por = IS
          BEGIN
            pwrit: PROCESS
            VARIABLE init : boolean :=3D true; -- d=E9clare = une=20 variable init initialis=E9e =E0 TRUE
            BEGIN
              IF init =3D true THEN -- teste init
                WAIT FOR 150ns -- si init est TRUE, temporise 150ns
                reset = <=3D=20 '1'; -- positionne reset =E0 1
                init :=3D false; -- apr=E8s le = premier=20 passage, la variable init est pass=E9e =E0 FALSE
              ELSE -- = si init n'est=20 pas TRUE
                WAIT FOR 150ns; -- temporise 150ns
                reset <=3D '0'; -- = met reset=20 =E0 0. On suppose l'initialisation termin=E9e
              END = IF;
            END=20 PROCESS pwrit;

            ckint: PROCESS -- ce PROCESS est d=E9clanch=E9 = suivant la=20 liste d=E9finie par WAIT ON
            BEGIN
              IF reset =3D '1' THEN -- si reset est =E0 1
                IF int0 =3D '1' THEN -- si int0 est =E0 0
                  p1_1 <=3D '1'; -- place p1_1 =E0 1
                ELSIF int1 =3D = '1' THEN --=20 si int1 est =E0 1
                  p1_2 <=3D '1'; -- place p1_2 =E0 1
                END = IF;
              END=20 IF;
              WAIT ON int0, int1, reset; -- attend un changement d'=E9tat = d'un de=20 ces signaux
            END PROCESS ckint;
          END = behv;

        Inertial

        Voir AFTER.







        J







        K







        L

        LIBRARY, LOOP.

        Library

        D=E9clare une liste de biblioth=E8ques. Cette = instruction s'utilise=20 avec USE.
        Ll'instruction LIBRARY doit appara=EEtre au d=E9but du = fichier=20 source.
        Les biblioth=E8ques WORK et STD n'ont pas besoin d'=EAtre = d=E9clar=E9es.=20 Chaque d=E9veloppement incorpore implicitement les lignes suivantes : =

        Syntaxe

          LIBRARY library_name {, library_name};
          USE=20 library_name.package_name.declarative_unit;

        Exemple

          LIBRARY mylib;
          USE mylib.math.all;

        Loop

        LOOP est une instruction de bouclage. Elle peut = s'utiliser seule=20 ou avec FOR ou WHILE.
        Ici, elle = est=20 utilis=E9e seule pour r=E9p=E9ter une s=E9rie d'instructions. Dans ce = cas (lorsqu'elle=20 est utilis=E9e seule), la condition de fin de boucle est pr=E9cis=E9e = par=20 l'instruction EXIT ou NEXT por passer =E0 = l'it=E9ration=20 sauivante.

        Syntaxe

          [loop_label:] LOOP
              sequence_of_statements
          END LOOP = [loop_label];

        Exemple

          PROCESS (a) -- positionne z(a) =E0 1
            VARIABLE i : INTEGER RANGE 0 TO 4; -- d=E9clare une variable = enti=E8re=20 variant de 0 =E0 4
          BEGIN
            z <=3D "0000"; -- positione z =E0 0000
            i :=3D 0; -- = initialise i
            LOOP=20 -- marque le d=E9but de la boucle
              EXIT WHEN i =3D 4; -- condition pour sortir de la boucle
              IF = (a =3D i)=20 THEN -- teste si a =3D i
                z(i) <=3D '1'; -- met z indice i =E0 1
              END IF;
              i = :=3D i + 1;=20 -- incr=E9mente i
            END LOOP; -- fin de la = boucle
          END=20 PROCESS;






        M

        MOD.

        Mod

        Voir les op=E9rateurs.







        N

        NAND, NEXT, NOR, NOT, NULL.

        Nand

        Voir les op=E9rateurs.

        Next

        NEXT se combine avec FOR, WHILE et LOOP pour passer =E0 = l'it=E9ration=20 suivante.

        Syntaxe

          NEXT [loop_label] [WHEN condition];

        Nor

        Voir les op=E9rateurs.

        Not

        Voir les op=E9rateurs.

        Null

        Null est l'instruction qui n'effectue pas d'action.=20

        Syntaxe







        O


        OPERATEURS, OR.

        Op=E9rateurs

        Le tableau suivant r=E9sume les op=E9rateurs VHDL.

        = =
        Classe Symbole Fonction Definit pour
        Op=E9rateurs=20 divers

        Classe de plus haute priorit=E9
        not
        **
        abs
        compl=E9ment
        exponentiel
        valeur absolue
        bit, bool=E9en
        entier, r=E9el
        num=E9rique

        Op=E9rateurs=20 multiplicatifs
        *
        /
        mod
        rem
        multiplication
        division
        modulo
        reste

        num=E9rique

        entier
        Signe
        (unaire)=
        +
        -
        positif
        n=E9gatif

        num=E9rique

        Op=E9rateurs=20 additifs
        (binaire)
        +
        -
        &
        addition
        soustraction
        concat=E9nation

        num=E9rique
        1 dimension

        Op=E9rateurs=20 relationnels
        =3D
        /=3D
        <
        >
        <=3D
        >=3D
        =E9gal
        diff=E9rent
        inf=E9rieur
        sup=E9rieur
        inf=E9rieur = ou=20 =E9gal
        sup=E9rieur ou =E9gal
        tous les types
        retournent un = bool=E9en

        Scalaire
        retourne un=20 bool=E9en

        Op=E9rateurs=20 logiques
        (binaire)

        Classe de plus faible = priorit=E9
        and
        or
        nand
        nor
        xor
        et logique
        ou logique
        et non logique
        ou non = logique
        ou=20 exclusif

        bit
        bool=E9en
        vecteur

        Les op=E9rateurs sont d=E9finis pour des classes particuli=E8res.

        La classe des = op=E9rateurs=20 Divers

        Ces op=E9rateurs permettent la compl=E9mentarit=E9, la = fonction=20 exponentielle et la recherche de la valeur absolue d'un nombre.
        Ils=20 retournent une valeur de m=EAme type.

        La classe des op=E9rateurs = Logiques

        Les op=E9rateurs logiques doivent =E9ffectuer une op=E9ration = sur les types=20 bit, bool=E9en, bit_vector, tableau lin=E9aire de bool=E9ens, std_logic = et=20 std_logic_vector. Ils retournent une valeur de m=EAme type.

        Exemple

        La = classe des=20 op=E9rateurs Relationels

        Les op=E9rateurs =E9galit=E9 et in=E9galit=E9 sont d=E9finis = pour tous les types.=20 Ils retournent un bool=E9en.

        Les autres op=E9rateurs relationels sont d=E9finis pour tous les = types scalaires=20 et pour toutes les dimensions. Ils retournent =E9galement un bool=E9en.

        Exemple

          '0' =3D '0'; -- =E9valu=E9 =E0 TRUE
          "101" < "110"; -- = =E9valu=E9 =E0=20 TRUE

          constant ARR1 :bit_vector :=3D "0011";
          constant ARR2 = :bit_vector=20 :=3D "01";
          -- (ARR1 < ARR2) will return true car la comparaison = s'effectue=20 bit =E0 bit de gauche =E0 droite.
        La classe des op=E9rateurs Additifs

        Les additions et soustractions sont permises pour les = op=E9randes=20 num=E9riques. Les op=E9randes doivent =EAtre de m=EAme type.
        La = concat=E9nation est=20 autoris=E9e pour les tableaux =E0 une dimension.

        Exemple

          CONSTANT s1 : string(1 TO 4):=3D"ABCD";
          CONSTANT s2 : string(1 TO = 4):=3D"EFGH";
          CONSTANT s3 : string(1 TO 8):=3Ds1 & s2; --=20 "ABCDEFGH"
        Exemple
          ENTITY concat IS
            PORT (a,b,c : IN std_logic;
                d : OUT std_logic_vector( 2 DOWNTO 0));
          END=20 concat;
          ARCHITECTURE behav OF concat IS
          BEGIN
            d <=3D NOT(a) & NOT(b) & NOT(c); -- d est un vecteur = form=E9 des=20 compl=E9ments de a, b et c
          END behav;
        La classe Signe

        Cette petite classe permet de sp=E9cifier le signe d'un = op=E9rateur.

        Exemple

          a/-b; -- ill=E9gal
          a/(-b); -- l=E9gal
        La classe des op=E9rateurs Multiplicatifs

        Cette classe permet des op=E9randes de types diff=E9rents. Les = exemples=20 suivants illustrent cette particularit=E9.

        Exemple

          9 ns * 8 =3D 72ns; -- le r=E9sultat est du type physique
          9 ns / 3 = =3D 3; --=20 le r=E9sultat est du type num=E9rique
          9 ns * 8 ns -> = l'op=E9ration provoque=20 une erreur de compilation

        Or

        Voir les op=E9rateurs.







        P

        PACKAGE, PORT, PORT MAP, PROCEDURE, PROCESS. =

        Package

        PACKAGE d=E9clare une fonction ou une = proc=E9dure.
        Le nom d=E9fini=20 par PACKAGE BODY doit =EAtre le m=EAme que celui d=E9clar=E9 par = PACKAGE.
        Voir aussi=20
        FUNCTION et = PROCEDURE.

        Syntaxe
        D=E9claration

          PACKAGE package_name IS
          =
            [type_declaration]
            [subtype_declaration]
            [constant_declaration]=
            .
            .
            [component_declaration]
          END=20 [package_name];

        Corps du PACKAGE

          PACKAGE BODY package_name IS
          =
            [type_declaration]
            [subtype_declaration]
            [constant_declaration]=
            .
            .
            [subprogram_declaration]
          END=20 [package_name];

        Exemple

          PACKAGE math IS -- d=E9claration de l'ent=EAte du = package
          FUNCTION minval=20 (CONSTANT a,b : IN integer)
          RETURN integer;
          FUNCTION maxval = (CONSTANT=20 a,b : IN integer)
          RETURN integer;
          CONSTANT maxint:=20 integer:=3D16#FFFF#;
          END math;

          PACKAGE BODY math IS -- d=E9inition du corp du package
          FUNCTION = minval=20 (CONSTANT a,b : IN integer) RETURN integer IS
          BEGIN

            IF a < b THEN
              RETURN a;
            ELSE
              RETURN b;
            END IF;
          END minval;
          FUNCTION maxval = (CONSTANT=20 a,b : IN integer) RETURN integer IS
          BEGIN
            IF a > b THEN
              RETURN a;
            ELSE
              RETURN b;
            END IF;
          END = maxval;


        Port

        PORT d=E9crit un signal externe et visible d'une = entit=E9. Tous les=20 PORT ont un mode ainsi qu'un type. Les PORT permettent la communication = de=20 l'architecture.
        Le mode par d=E9faut est IN.=20

        Syntaxe

        Exemple

          LIBRARY ieee;
          USE ieee.std_logic_1164.all;
          ENTITY fulladd = IS
            PORT (x,y,cin : IN bit;
            sum, cout : OUT bit);
          END=20 fulladd;


        Port Map

        PORT MAP est utilis=E9 pour associer les broches d'un = COMPONENT avec = les=20 signaux du montage.
        Deux m=E9thodes d'affectation sont possibles = :

        • par l'association des noms ;
        • par l'association des positions (la plus courante).

        Syntaxe

          PORT MAP (pin_name =3D> signal_name
              {, pin_name =3D> signal_name});

          PORT MAP = (signal_name {,=20 signal_name});


        Procedure

        Les PROCEDURES sont des blocs d'instructions qui = permettent=20 d'=E9ffectuer des calculs et qui peuvent =EAtre appel=E9es de = diff=E9rents=20 endroits.
        Les param=E8tres pass=E9s sont du type IN, OUT et INOUT et = les objets=20 de classe SIGNAL, CONSTANT ou VARIABLE. Le mode par d=E9faut du type IN = est de=20 classe CONSTANT. OUT et INOUT sont consid=E9r=E9s comme de classe = VARIABLE. En fait,=20 le param=E8tre CONSTANT IN peut =EAtre associ=E9 avec un signal, = variable, constante=20 ou une expression lorsque la proc=E9dure est appel=E9e.
        Une = proc=E9dure peut =EAtre=20 d=E9clar=E9e dans un PACKAGE ou dans le corps d'une ARCHITECTURE.
        On = peut=20 d=E9clarer des variables locales =E0 l'int=E9rieur d'une proc=E9dure. = Ces variables=20 perdent leur valeur =E0 chaque sortie de la proc=E9dure et sont = initialis=E9es =E0=20 chaque appel.
        Bien qu'une PROCEDURE ne retourne pas de valeur = contrairement =E0=20 une FONCTION, on peut d=E9clarer dans son ent=EAte plusieurs = param=E8tres de type OUT=20 ou INOUT et ainsi r=E9cup=E9r=E9s des valeurs de sortie.
        Une = proc=E9dure peut=20 contenir un WAIT sauf si elle est appel=E9e par un PROCESS avec une = liste de=20 sensibilit=E9 ou depuis une FONCTION.
        Voir aussi FUNCTION
        et PACKAGE.

        Syntaxe
        D=E9claration

          PROCEDURE procedure_name
            {(parameter_list)};

        Corps de la = proc=E9dure
          PROCEDURE procedure_name
            {(parameter_list)}
          BEGIN
            [block_statement]
            [generate_statement]
          END=20 [procedure_name];
        Exemple
          LIBRARY ieee;
          USE ieee.std_logic_1164.all;
          USE = work.myfuncs.all; --=20 on d=E9clare la biblioth=E8que utilisateur myfuncs
          ENTITY = parity_add IS
            PORT (din : std_logic_vector(7 DOWNTO 0);
                douto, doute : OUT std_logic_vector(8 DOWNTO = 0));
          END=20 parity_add;

          ARCHITECTURE behv OF parity_add IS
          BEGIN
            PROCESS(din)
            VARIABLE dintemp : std_logic_vector(7 DOWNTO=20 0);
            VARIABLE dptempo,dptempe : std_logic_vector(8 DOWNTO = 0);
            BEGIN
              dintemp :=3D = din;
              addparity(dintemp,dptempo,dptempe);
              douto <=3D=20 dptempo;
              doute <=3D dptempe;
            END = PROCESS;
          END behv;

          LIBRARY ieee; -- d=E9claration de la proc=E9dure
          USE=20 ieee.std_logic_1164.all;
          PACKAGE myfuncs IS
            PROCEDURE addparity(VARIABLE d : IN std_logic_vector(7 DOWNTO = 0);
              do, de : OUT std_logic_vector(8 DOWNTO 0)); -- les param=E8tres = n'ont=20 pas le m=EAme nom, c'est l'ordre qui compte
          END=20 myfuncs;

          PACKAGE BODY myfuncs IS
            PROCEDURE addparity(VARIABLE d IN std_logic_vector(7 DOWNTO 0); -- = corps=20 de la proc=E9dure
              do, de : OUT std_logic_vector(8 DOWNTO 0)) IS -- do et de sont = les=20 valeurs de sorties de la proc=E9dure
              VARIABLE temp :=20 std_logic;
              BEGIN
                temp :=3D '0';
                loop1: FOR i IN 7 DONWTO 0 LOOP
                  temp :=3D temp XOR d(i);
                END LOOP loop1;
                de :=3D = temp &=20 d;
                do :=3D NOT temps & d;
            END = addparity;
          END=20 myfuncs;

        Process

        Un PROCESS est une d=E9claration concurrente dans une=20 architecture. Un PROCESS peut =EAtre sensible =E0 une liste de signaux = ou =E0 un=20 WAIT.
        Les PROCESS contiennent seulement des d=E9clarations = s=E9quentielles qui=20 sont ex=E9cut=E9es dans l'ordre sp=E9cifi=E9.

        Syntaxe

          [label]: PROCESS [(sensitive_signal_name {, = sensitive_signal_name})]
          =
            [constant_declarations]
            [variable_declarations]
          BEGIN
            [sequential_statements]
          END PROCESS [label];

        Exemple

          LIBRARY ieee;
          USE ieee.std_logic_1164.all;
          ENTITY nor2 IS
            PORT (a,b : IN std_logic:=3D'0';
              qn : OUT std_logic);
          END nor2;

          ARCHITECTURE = proc_behv=20 OF nor2 IS
          BEGIN=20
            ex1: PROCESS(a,b) -- ce PROCESS est d=E9crit avec une liste de=20 sensibilit=E9
            BEGIN=20
              qn <=3D a NOR b;
            END PROCESS ex1;

            ex2: PROCESS = -- ce=20 PROCESS n'a pas de liste de sensibilit=E9
            BEGIN=20
              qn <=3D a NOR b;
              WAIT ON a,b; -- WAIT permet d'attendre un = =E9v=E9nement sur a ou b
            END PROCESS ex2;
          END = proc_behv;=20

        Exemple
          SENSE_PROC: PROCESS (CLK)
          begin
            if CLK'event and CLK=3D'1' then
              Q2 <=3D D2;
            END IF;
          END PROCESS=20 SENSE_PROC;

          WAIT_PROC: PROCESS
          begin
            WAIT UNTIL CLK'event and CLK=3D'1';
            Q1 <=3D D1;
          END = PROCESS=20 WAIT_PROC;







        Q








        R

        REM, RETURN. =

        Rem

        Voir les op=E9rateurs.

        Return

        Voir FUNCTION.







        S

        SELECT, SIGNAL, SUBTYPE. =

        Select

        Dans la fonctionnalit=E9, SELECT est =E9quivalent =E0 = l'instruction CASE. SELECT ne peut = toutefois=20 affecter qu'une seule variable.

        Syntaxe

          [label:] WITH expression SELECT
                target <=3D waveform1 WHEN choices 1
                        {waveform1 WHEN choices N},
                        waveform1 WHEN=20 OTHERS;

        Exemple

          LIBRARY ieee;
          USE ieee.std_logic_1164.all;
          ENTITY mux IS
            PORT (a,b,sel : IN std_logic;
                y : OUT std_logic);
          END mux;
          ARCHITECTURE = behavior OF=20 mux IS
          BEGIN
            muxex: WITH sel SELECT
              y <=3D a WHEN '0',-- y =3D a si sel =3D 0 sinon
                    b WHEN '1', -- y =3D b si sel =3D 1 sinon
                    'X' WHEN = OTHERS; -- y=20 est ind=E9termin=E9
          END = behavior;
        Signal

        SIGNAL d=E9clare un signal permettant la communication = entre les=20 =E9tats concurrents =E0 l'int=E9rieur d'une architecture.
        Dans la = d=E9finition, on=20 doit sp=E9cifier un type au signal et l'on peut attribuer une valeur par = d=E9faut.

        Syntaxe

          SIGNAL sig_name {, sig_name} : signal_type=20 [:=3Dinitial_value];
        On assigne une valeur =E0 un signal en = suivant ce=20 format :
          sig_name <=3D expression;

        Exemple

          LIBRARY ieee;
          USE ieee.std_logic_1164.all;
          ENTITY fulladd = IS
            PORT (x,y,cin : IN bit;
              sum, cout : OUT bit);
          END = fulladd;

          ARCHITECTURE=20 behavior OF fulladd IS
            SIGNAL sum1, cout1, cout2, cout3 : bit;
          BEGIN
            sum <=3D sum1 XOR cin;
            sum1 <=3D x XOR y;
            cout1 = <=3D x AND=20 y;
            cout2 <=3D x AND cin;
            cout3 <=3D y AND cin;
            cout = <=3D cout1=20 OR cout2 or cout3;
          END behavior;

        Exemple

          LIBRARY ieee;
          USE ieee.std_logic_1164.all;
          ENTITY compar2 = IS
            PORT (a1, b1, a2 : IN bit :=3D '0';
              c1 : INOUT bit;
              c2 : OUT bit);
          END=20 compar2;

          ARCHITECTURE behavior OF compar2 IS
          BEGIN
            c1 <=3D a1 XOR b1;
            c2 <=3D c1 XOR a2;
          END=20 behavior;

        Subtype

        SUBTYPE d=E9clare un type qui est la combinaison de = deux autres=20 types.
        Voir aussi
        TYPE.

        Exemple

          TYPE colors IS (red, yellow, blue, green, black);
          SUBTYPE primary = IS=20 colors RANGE red TO blue;

          TYPE integer IS RANGE -2147483647 TO=20 2147483647;
          SUBTYPE absolu IS integer 0 TO 2147483647;

          TYPE = area IS=20 ARRAY (natural RANGE <>, natural RANGE <>)
            OF bit;
          SUBTYPE small_area IS area (0 TO 10, 0 TO=20 10);







        T

        TRANSPORT, TYPE.

        Transport

        Voir AFTER.

        Type

        Les TYPES pr=E9d=E9finis

        Les types pr=E9d=E9finis reconnaissent six objets scalaires = :

        Dans la=20 biblioth=E8que IEEE STD_LOGIC_1164 TYPE les types usuels sont d=E9j=E0 = d=E9clar=E9s.
        Le=20 type std_ulogic contient 9 =E9l=E9ments de base.

          'U' - Unitialized (=E9l=E9ment de plus haute priorit=E9)
          'X' - = Forcing=20 Unknown
          '0' - Forcing 0
          '1' - Forcing 1
          'Z' - High = impedance
          'W' -=20 Weak unknown
          'L' - Weak 0
          'H' - Weak 1
          '-' - Don't care = (=E9l=E9ment de=20 plus basse priorit=E9)

        Ces objets scalaires peuvent =EAtre plac=E9s dans un = contexte=20 diff=E9rent suivant leur d=E9claration.

        Le = TYPE =E9num=E9r=E9

        TYPE permet de d=E9finir un type utilisateur auquel on peut = assigner un=20 objet.
        Tous les objets doivent =EAtre assign=E9s =E0 un type. Chaque = TYPE d=E9clar=E9=20 doit =EAtre unique.

        Syntaxe

          TYPE identifier IS enumeration_type_literals;

        Exemple

          TYPE op_type IS (opadd, opor, opand, opxor);
          TYPE letters IS = ('A', 'a',=20 'R', 'r');
          TYPE std_ulogic IS ('U', 'X', '0', '1', 'Z', 'W', 'L', = 'H',=20 '-');=20

        Le TYPE num=E9rique

        Cette d=E9finition de type doit =EAtre dans une =E9chelle de = valeur.
        La=20 base par d=E9faut est la d=E9cimale.

        Syntaxe

          TYPE identifier IS RANGE implementation_defined;

        Exemple

          TYPE byte IS RANGE 0 to 255; -- byte varie de 0 =E0 255
          TYPE = index IS=20 RANGE 7 DOWNTO 0; -- index varie de 7 =E0 0
          SUBTYPE byte IS INTEGER = RANGE 0=20 TO 255; -- byte est un entier de 0 =E0 255=20

        Le TYPE physique

        Cette d=E9finition de type repr=E9sente une quantit=E9 = physique.
        La base=20 des unit=E9s doit =EAtre sp=E9cifi=E9e. Les valeurs sont calcul=E9es =E0 = partir de cette=20 base.

        Syntaxe

          TYPE identifier IS RANGE implementation_defined;
            UNITS
            =
              base_unit_declaration
              [secondary_unit_declaration]
            END = UNITS;=20

        Exemple

          TYPE time IS RANGE implementation_defined;
            UNITS=20
              fs;
              ps =3D 1000fs;
              ns =3D 1000fs;
              us =3D 1000ns;
              ms = =3D=20 1000us;
              sec =3D 1000ms;
              min =3D 1000sec;
              hr =3D = 1000min;
            END=20 UNITS;

        Le TYPE tableau

        Le type tableau est un groupement de types identiques.
        Les = tableaux=20 peuvent =EAtre multidimentionels.
        Il existe deux sortes de tableaux = :
        Les=20 tableaux avec contrainte (Constrained Array)

          Ces tableaux sont d=E9finis avec des dimensions fig=E9es (rang=E9es=20 colonnes).
        Les tableaux sans contrainte (Unconstrained = Array)
          Ces tableaux sont d=E9finis sans pr=E9ciser les dimensions. Le = tableau est=20 donc dynamique.

        Syntaxe

          TYPE identifier IS ARRAY
          =
            [unconstrained_array_definition];
            [constrained_array_definition];<= BR>

        Exemple

          TYPE data_bus IS ARRAY (0 TO 31) OF bit; -- tableau de 32 = bit
          TYPE bit4=20 IS ARRAY (3 DOWNTO 0) OF bit; -- tableau de 4 bit : bit4(3) =E0=20 bit4(0)

          TYPE string IS ARRAY (positive RANGE <>) OF=20 character;
          TYPE bit_vector IS ARRAY (natural RANGE <>) OF=20 bit;

          TYPE dim2 IS ARRAY (0 TO 7, 0 TO 7) OF bit; -- tableau =E0 = deux=20 dimensions







        U


        USE.

        Use

        Voir LIBRARY.







        V

        VARIABLE. =

        Variable

        Les variables sont utilis=E9es dans un PROCESS, une = PROCEDURE ou=20 une FONCTION.
        On peut leur donner une valeur initiale. Cette valeur = initiale=20 est attribu=E9e =E0 chaque appel de la PROCEDURE ou de la FONCTION. = Elles servent =E0=20 manipuler des variables temporaires/interm=E9diaires pour faciliter le=20 d=E9veloppement d'un algorithme s=E9quentiel.

        Syntaxe

        Exemple

          VARIABLE i : INTEGER RANGE 0 TO 3; -- valeur intiale 0
          VARIABLE x = :=20 std_ulogic; -- valeur intiale 'U'
        Exemple
          FUNCTION parity (x : std_ulogic_vector) -- recherche la parit=E9 = d'un=20 vecteur
                RETURN std_ulogic IS
            variable tmp : std_ulogic = :=3D=20 '0';
          begin
            FOR j IN x'RANGE LOOP
              tmp :=3D tmp XOR x(j);
            END loop; -- fin de la = boucle
            RETURN=20 tmp;
          END parity;







        W


        WAIT, WHEN, WHILE, WITH, WORK.

        Wait

        WAIT est utilis=E9 dans une d=E9claration = s=E9quentielle de type=20 PROCESS ou PROCEDURE.
        WAIT remplace une liste de sensibilit=E9 pour = contr=F4ler=20 l'ex=E9cution et la suspension d'un PROCESS.
        WAIT peut =EAtre plac=E9 = n'importe o=F9=20 dans le PROCESS.
        Sans WAIT ou sans liste de sensibilit=E9, un PROCESS = se boucle=20 ind=E9finiment.

        Il existe trois syntaxes diff=E9rentes autour de = WAIT.

        WAIT ON est =E9quivalent =E0 une liste de sensibilit=E9. La liste des = signaux=20 suit.
        Ainsi :


        est = =E9quivalent =E0=20 :
          process
          begin
            -- sequential statements
            WAIT ON a,b;
          end=20 process;

        La condition test=E9e par WAIT UNTIL d'expression = bool=E9enne=20 doit parvenir =E0 TRUE pour continuer l'ex=E9cution.
          process
          begin
            wait until CLK'event and CLK=3D'1';
            Q1 <=3D D1;
          end=20 process;
        Le temps imparti par WAIT FOR sp=E9cifie la = dur=E9e maximale=20 pendant laquelle le PROCESS reste suspendu.
          STIMULUS: process
          begin
              EN_1 <=3D '0';
              EN_2 <=3D '1';
            wait for 10 ns; = -- attend=20 10ns avant de passer =E0 la ligne suivante
              EN_1 <=3D '1';
              EN_2 <=3D '0';
            wait for 10 = ns;
              EN_1 <=3D '0';
            wait; -- attent = ind=E9finiment
          end process=20 STIMULUS;
        Exemple
          LIBRARY ieee;
          USE ieee.std_logic_1164.all;
          ENTITY upcont = IS
            PORT (i : INOUT integer:=3D1; -- d=E9clare et initialise i =E0 = 1
            clk : IN=20 std_logic:=3D'0';
            count : OUT integer);
          END=20 upcont;

          ARCHITECTURE cpt OF upcont IS
          BEGIN
            sens1: PROCESS
            BEGIN
              i <=3D i+1; -- incr=E9mente i. i vaut 2 apr=E8s le premier=20 passage
              WAIT ON clk; -- attend une transition de clk (front = montant ou=20 descendant)
            END PROCESS sens1;

            sens2: = PROCESS
            BEGIN
              count <=3D i; -- met =E0 jour la sortie count
              WAIT ON i; = -- attend=20 un changement de i
            END PROCESS sens2;
          END cpt;

        When

        WHEN est utilis=E9 dans une liste de s=E9lection avec = l'instruction=20 CASE.
        On le = retrouve=20 aussi lors de l'assignement conditionnel d'un signal. Dans cette = utilisation, il=20 remplace l'=E9criture du IF THEN avantageusement car il permet = l'imbrication des=20 tests.

        Syntaxe

          [label:] target <=3D [options] value_expression [AFTER = time_expression]=20 WHEN condition1
                ELSE
                  [options] value_expression [AFTER time_expression] WHEN=20 condition2;

        Exemple

          LIBRARY ieee;
          USE ieee.std_logic_1164.all;
          ENTITY mux IS
            PORT (a,b,sel : IN std_logic;
                y : OUT std_logic);
          END mux;
          ARCHITECTURE = behavior OF=20 mux IS
          BEGIN
            muxex: y <=3D a WHEN sel =3D '0' ELSE -- y =3D a sir sel =3D 0 = sinon
                  b WHEN sel =3D '1' ELSE -- y =3D b si sel =3D 1 = sinon
                  'X'; -- y est=20 ind=E9termin=E9
          END behavior;

        While

        WHILE est une instruction de bouclage. Elle s'utilise = avec LOOP.
        On place la = condition=20 de fin de sortie dans l'instruction m=EAme contrairement au LOOP seul = o=F9 on est=20 oblig=E9 d'avoir recourt =E0 la commande EXIT. On peut toutefois = utiliser EXIT ou NEXT.
        Le bouclage = se fait=20 tant que la condition reste TRUE.
        Remarque : si la condition est = FALSE d=E8s le=20 d=E9part, la boucle ne sera pas ex=E9cut=E9e une seule fois.

        Syntaxe

          [loop_label:] WHILE condition LOOP
              sequence_of_statements
          END LOOP = [loop_label];

        Exemple

          USE ieee.std_logic_1164.all;
          ENTITY clock IS
            PORT (clk1 : INOUT std_logic :=3D '0');
          END = clock;
          ARCHITECTURE=20 behv OF clock IS
          CONSTANT pulse_time : time :=3D 25ns;
          BEGIN
            clkit: PROCESS
            VARIABLE a : integer :=3D 1;
            BEGIN
              loop1: WHILE (a <=3D 10) LOOP -- la variable de boucle est a=20 inf=E9rieure =E0 10
                WAIT FOR pulse_time; -- attend la valeur de pulse_time
                clk1 = <=3D=20 NOT clk1; -- compl=E9mente clk1
                a :=3D a + 1; -- = incr=E9mentation de=20 a
              END LOOP loop1;
            END PROCESS clkit;
          END = behv;

        With

        Voir SELECT.

        Work

        Voir Library.







        X

        XOR.

        Xor

        Voir les op=E9rateurs.







        Y







        Z






        ?

        +, -, *, **, /, &, =3D, >, <, <=3D, = >=3D

        Voir les op=E9rateurs.

        Index

        ABS, AFTER, AND, ARCHITECTURE,= ASSERT, ATTRIBUTS.
        CASE, CASSE, COMMENTAIRE, = COMPONENT, CONFIGURATION, CONSTANT.
        DELAY.
        ENTITY, EXIT.
        FOR, FUNCTION.
        GENERIC.
        IF...THEN, INERTIAL.
        LIBRARY, LOOP.
        MOD.
        NAND, NEXT, NOR, NOT, NULL.
        OPERATEURS, OR.
        PACKAGE, PORT, PORT MAP, PROCEDURE, PROCESS.
        REM, RETURN.
        SELECT, SIGNAL, SUBTYPE.
        TRANSPORT, TYPE.
        USE.
        VARIABLE.
        WAIT, WHEN, WHILE, WITH, WORK.
        XOR.
        =






        ------=_NextPart_000_0000_01C99C53.669577E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://amouf.chez.com/machine.gif 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 ------=_NextPart_000_0000_01C99C53.669577E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://amouf.chez.com/alphabet.gif R0lGODdhOQGUAfcAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBm ZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/ mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNm zDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP/ /2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZ AGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkA M5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZ ZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswA mcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZ zMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A //8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///M AP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///wAAAA0NDRoaGigoKDU1NUNDQ1BQUF1d XWtra3h4eIaGhpOTk6Ghoa6urru7u8nJydbW1uTk5PHx8f///wAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANcALAAAAAA5AZQB QAj+AK8JHEiw4DUnCBMqXIjQoMOHBJ0cZEiRIsSLGDNq3Mixo8ePIEOKHElSoBNVpJ6RUojRCamU KRN+dLlq1bNVMlvevMmypM+fQIMKHUpUoxOVPHNCPGpT1bOeHF0+c4pT6cOTpFattFq0q9evYMOW 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 yWO2gAAAOw== ------=_NextPart_000_0000_01C99C53.669577E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://amouf.chez.com/line.gif R0lGODlh3gEgAPcAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBm ZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/ mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNm zDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP/ /2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZ AGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkA M5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZ ZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswA mcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZ zMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A //8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///M AP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///wAAAA0NDRoaGigoKDU1NUNDQ1BQUF1d XWtra3h4eIaGhpOTk6Ghoa6urru7u8nJydbW1uTk5PHx8f///wAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAA3gEgAAAI/gAhQIhA sKDBgwgTHhQIQYGCBBATIJiIICJEhw4ZatSIMSKCA9lCZgsQYOJFBQMVMnQIEUEAANqc4PHjR5TN UaNE5RyVqpnPnzhF4aGiYuSBigkyplTIlCPGp1CjQrVItWpSqBuzam34dKvXjUzDRnD61GrErgzF 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 ------=_NextPart_000_0000_01C99C53.669577E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://amouf.chez.com/fulladd.gif R0lGODlhZQLWAPcAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBm ZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/ mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNm zDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP/ /2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZ AGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkA M5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZ ZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswA mcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZ zMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A //8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///M AP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///wAAAA0NDRoaGigoKDU1NUNDQ1BQUF1d XWtra3h4eIaGhpOTk6Ghoa6urru7u8nJydbW1uTk5PHx8f///wAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkIANcALAAAAABlAtYA QAj+AK8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8FNIEEKDLlpIMmSHlOqXMmypcuX MCeGJCiSZs2YODfS2ilwp8+fPWkFFZqzqMuZJk3evIbUqNOnHQFInTq1IdWrUqEixEp1I4CBAAqI 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 EAA7 ------=_NextPart_000_0000_01C99C53.669577E0--