Header Ads

Header ADS

LANGAGE VHDL Spécificités du langage vhdl partie 3




LANGAGE VHDLSpécificités du langage vhdl partie 3


LA PREMIERE PARTIE :        (Cliquez Ici)
DEUXIÈME PARTIE:    (Cliquez Ici)
LA TROISIEME PARTIE :    

XI.Attributs :

       Se sont des instructions qui permettent d'extraire des informations additionnelles d'un
       signal; d'une variable ou d'un type et qui ne sont pas liées à leurs valeurs.
       Il existe deux grandes classes:
·         La classe prédéfinie dans le standard 1076.
·         La classe développée par le concepteur.


1. Attribut prédéfinies :

     Il existe cinq catégories fondamentales organisées selon le résultat retourné.
     Les attributs ont la syntaxe suivante:

Préfixe' attribut :

   Préfixe représente une variable, un signal, un type, une architecture ou une entité.

**Attributs de type Valeur**

Ø Left : Retourne la borne gauche.
Ø Right : Retourne la borne droite.
Ø Hight : Retourne la borne supérieure.
Ø Low : Retourne la borne inférieure.
Ø Length : Retourne la taille d'un tableau.
Ø Ascending : Retourne la valeur true si croissant.
Ø Structure :   Retourne true si le préfixe, qui doit être une architecture,          contient un component.
Ø Behavior Retourne true si le préfixe, qui doit être une architecture, ne contient pas un component.
Ø Simple_name : Retourne une chaine de caractère correspondant au préfixe qui doit être une entité.
Ø Instance_name :  Retourne une chaine de caractère correspondant au chemin complet du préfixe qui doit être une entité, cette chaine contient toutes les entités de la conception.
Ø Path_name : Retourne une chaine de caractère correspondant au chemin complet du préfixe qui doit être une entité.



Exemple :

ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
TYPE VECT1 IS ARRAY (15 DOWNTO 0) OF BIT;
TYPE VECT2 IS ARRAY ( 0 TO 31) OF BIT;
TYPE VECT3 IS ARRAY ( 31 DOWNTO 0) OF BIT;
BEGIN
PROCESS
VARIABLE ZO: INTEGER :=VECT1'LEFT;       --ZO=15
VARIABLE HE: INTEGER :=VECT1'RIGHT;      --HE=0
VARIABLE IR: INTEGER :=VECT2'HIGTH;      --IR=31
VARIABLE SE: INTEGER :=VECT2'LOW;        --SE=0
VARIABLE TT: INTEGER :=VECT1'LENGTH;      --TT=16
VARIABLE AF: BOOLEAN :=VECT2'ASCENDING;  --AF=TRUE
VARIABLE K: BOOLEAN :=VECT3'ASCENDING;  --K=FALSE
-- AUTRE DECLARATIONS
BEGIN
-- CORPS DU PROCESS
END PROCESS;
-- CORPS DE L'ARCHITECTURE
END ARCHITECTURE_NAME;

  --"ZO","HE","IR","SE","TT","AF"  JUSTE DES NOMS

**Attributs de type fonction**


Ø Pos(valeur) : Retourne la position de "valeur".
Ø Val(valeur) : Retourne une valeur qui correspond à la position de "valeur".
Ø Succ(valeur) : Retourne une valeur qui correspond à la position qui succède "valeur".
Ø Pred(valeur) : Retourne une valeur qui correspond à la position qui précède "valeur".
Ø Leftof(valeur) : Retourne une valeur qui correspond à la position gauche de "valeur".

Ø Rightof : Retourne une valeur qui correspond à la position droite de "valeur".

Ø Left(valeur) : Appliqué à un tableau, retourne l'index qui correspond à la borne gauche de "valeur".

Ø Right(valeur) : Appliqué à un tableau, retourne l'index qui correspond à la borne droite de "valeur".
Ø High (valeur) : Appliqué à un tableau, retourne l'index qui correspond à la borne supérieur de "valeur".
Ø Low(valeur) : Appliqué à un tableau, retourne l'index qui correspond à la borne inférieure de "valeur".
Ø Event : Appliqué à un signal, retourne true si le signal change de valeur.
Ø Active : Appliqué à un signal, retourne true pour toute transaction (évènement programmé) sur le signal.
Ø Last_event : Appliqué à un signal, retourne le temps écoulé depuis le dernier évènement.
Ø Last_active : Appliqué à un signal, retourne le temps écoulé depuis la dernière transaction sur un signal.
Ø Last_value : Appliqué à un signal, retourne valeur du signal avant le dernier évènement.
Ø Image(expression) : Retourne une représentation sous formes chaine de caractère de "expression" qui doit avoir un type correspondant au préfixe.
Ø Value(string) : Retourne la valeur, pour le type spécifié par le préfixe, correspondantau "string".




Exemple 1 :

ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
TYPE UNIV (SCEINCE, TECH, ELECTRO, WILL) ;
Type Etat (init, hold, strobe, read) ;
TYPE VECT IS ARRAY (15 DOWNTO 0) OF BIT;
BEGIN
PROCESS
VARIABLE A: UNIV :=UNIV'POS(WILL);             --A=3 EN COMMENÇANT PAR 0
VARIABLE LL: UNIV :=UNIV'VAL(2);               --LL=ELECTRO
VARIABLE AH: UNIV :=UNIV'SUCC(SCEINCE);        --AH=TECH
VARIABLE O: UNIV :=UNIV'PRED(ELECTRO);         --O=TECH
VARIABLE AK: UNIV :=UNIV'LEFTOF(ELECTRO);      --AK=TECH
VARIABLE BA: UNIV :=UNIV'RIGHTOF(ELECTRO);     --BA=WILL
VARIABLE R: INTEGER :=VECT'LEFT(VECT'RANGE);   --R=15
VARIABLE KI: INTEGER :=VECT'RIGHT(VECT'RANGE); --KI=0
VARIABLE ZA: INTEGER :=VECT'HIGH(VECT'RANGE);  --ZA=15
VARIABLE RO: INTEGER :=VECT'LOW(VECT'RANGE);   --RO=0
   -- AUTRE DECLARATIONS
BEGIN
   -- CORPS DU PROCESS
END PROCESS;
   -- CORPS DE L'ARCHITECTURE
 END ARCHITECTURE_NAME;

Exemple 2 :

ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
BEGIN
PROCESS
VARIABLE A, E:BOOLEAN;
BEGIN
Q <='D' AFTER 10NS;
A:=Q'ACTIVE;     -- A=TRUE
E:=Q'EVENT;      -- E=FALSE
 END PROCESS;



Exemple 3 :

ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
BEGIN
PROCESS (RST,CLK)
BEGIN
IF RST ='1' THEN Q <='0';
ELSIF CLK='1' AND CLK'EVENT THEN Q <='D';     -- TESTER LE FRONT MONTANT
END IF;
END PROCESS;
-- CORPS DE L'ARCHITECTURE
END ARCHITECTURE_NAME;

Exemple 4 :

ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
BEGIN
PROCESS
VARIABLE T:TIME;
BEGIN
Q <='D' AFTER 5NS;
WAIT 10NS;
T:=Q'LASTEVENT;           -- T=5NS
END PROCESS;
-- CORPS DE L'ARCHITECTURE
END ARCHITECTURE_NAME;


Exemple 5 :

ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
BEGIN
PROCESS
VARIABLE T:TIME;
BEGIN
Q <='D' AFTER 30NS;
WAIT 10NS;
T:=Q'LAST_ACTIVE;           -- T=10NS
END PROCESS;
     -- CORPS DE L'ARCHITECTURE
END ARCHITECTURE_NAME;

Exemple 6 :

ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
BEGIN
PROCESS
VARIABLE Z:BIT;
BEGIN
Q <='1';
WAIT 10NS;
Q <='0';
WAIT 10NS;
V:=Q'LAST_VALUE   ;       -- Z=1
END PROCESS;
     -- CORPS DE L'ARCHITECTURE
END ARCHITECTURE_NAME;


**Attributs De Type Signal**


Ø Delayed(temps) : Création d'un signal retardé ayant la même forme que le préfixe.
Ø Stable(temps) : Création d'un signal booléen qui devient true lorsque le signal préfixe est stable pour une période donnée (temps).
Ø Quiet(temps) : Création d'un signal booléen qui devient true lorsqu le signal préfixe ne connait aucune transaction pendant une période donnée (temps).
Ø Transaction : Création d'un signal bit qui change de valeur quand une transaction ou évènement se produit sur le signal préfixe.




Exemple 1 :

ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
BEGIN
PROCESS
VARIABLE Z:BOOLEAN;
BEGIN
WAIT FOR 30NS;
Q <='D' AFTER 30NS;
WAIT 10NS;
A:=Q'QUIET(20);    -- Z=FALSE
WAIT 40NS;
A:=Q'QUIET(20);    -- Z=TREE
END PROCESS;
     -- CORPS DE L'ARCHITECTURE
END ARCHITECTURE_NAME;

Exemple 2 :

ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
BEGIN
 PROCESS           
VARIABLE A:BOOLEAN;
BEGIN
WAIT FOR 30NS;
Q <='D' AFTER 30NS;
WAIT 10NS;
A:=Q'STABLE(20);   -- Z=TRUE
WAIT 30NS;
A:=Q'STABLE(20);   -- Z=FALSE
END PROCESS;
   -- CORPS DE L'ARCHITECTURE
END ARCHITECTURE_NAME;




**Attributs de type range**


Ø Range : Retourne la valeur de la plage de variation d'un tableau.
Ø Reverse- range : Retourne la valeur inversée de la plage de variation d'un  Tableau.

                     **Attribut de type Type**


Base : Retourne le type base pour un type ou sous-type donné.

Exemple  :
ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
TYPE ETAT ('0', '1', 'X', 'Z', 'H', 'L', 'W') ;
SUBTYPE S_ETAT IS ETAT RANGE 'O' TO 'Z' ;
V0: S_ETAT :=S_ETAT'RIGHT;             --V0=Z    (RIGHT)TYPE DE FONCION
V1:ETAT :=S_ETAT'BASE'RIGHT;        --V1=W
   -- AUTRE DECLARATIONS
BEGIN
  -- CORPS DE L'ARCHITECTURE
END ARCHITECTURE_NAME;

2.Attributs personnalisées :


 Se sont des attributs définis par le programmeur pour une utilisation propre.
Pour définir un attribut, on doit suivre les étapes suivantes:

 Déclaration par le MOT CLE attribute.
Spécification en associant l'attribut à un préfixe:

Ø Entite
Ø Architecture
Ø Signal










































Aucun commentaire

Images de thèmes de Petrovich9. Fourni par Blogger.