Header Ads

Header ADS

LANGAGE VHDL Spécificités du langage partie 1



LANGAGE VHDL 

Spécificités du langage partie 1


Une définition simple d'une langue VHDL   (Cliquez Ici)


I.                 Signal 
II.              Variable 
III.          Constante 
IV.         Littéraux 
V.             Types et sous-types 
VI.         Opérateurs 
VII.       Type résolu et type non résolu 
VIII.  Conversion de type
IX.          Le standard IEEE 1164 
X.             Mots clés du VHDL
XI.          Attributs
**LA PREMIERE PARTIE**

I.Signal :

Le signal est spécifique à une description matérielle, il sert à modéliser les informations sur les fils, les bus et d'une manière générale la connexion des éléments concurrents tels que les processus et les components, il assure donc la communication,
et les signaux peuvent être déclarés n’importe où dans le programme
sauf à l’intérieur d’un processus.
S’ils sont déclarés au début de l’architecture ils sont communs à toute l’architecture.
 Il est défini par le mot clé signal et il est déclaré :
·          localement dans une architecture.
·          globalement dans un package.

1.    Déclaration locale :

ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
SIGNAL Z:BIT;       -- DECLARATION LOCALE
SIGNAL E:BIT_VECTOR(7 DOWNTO 0); -- DECLARATION LOCALE
BEGIN
    -- CORPS DE L'ARCHITECTURE
END ARCHITECTURE_NAME;

     --"Z" ET "E"  JUSTE DES NOMS

<< Les signaux Z, E ne peuvent pas être utilisés par d'autre architecture >>

2.    Déclaration globale :

PACKAGE PACKAGE_NAME IS
SIGNAL Z : BIT_VECTOR(7DOWNTO 0);      --DECLARATION GLOBALE
END PACKAGE_NAME;

USE WORK.PACKAGE_NAME.Z;
ARCHITECTURE  PACKAGE_NAME_GLOBAL OF ENTITY_NAME IS
BEGIN
-- ON UTILISE Z DANS LE CORPS DE L'ARCHITECTURE
END PACKAGE_NAME_GLOBAL;

--"Z" JUSTE UN NOM

<<   Dans ce cas le signal est déclaré globalement et par défaut dans une bibliothèque dite
WORK, pour l'utilisation du signal Q dans l'architecture on doit insérer l'instruction USE  >>                                                                                  

II.Variable :

Elle est définie par le mot clé variable, elle sert à stocker les informations intermédiaires entre des instructions séquentielles.
Les variables sont toujours LOCALES à un processus: il n'y a pas de variables globalesn, et sont déclarées dans:
·         Les processus
·         Les procédures
·         Les fonctions


ENTITY ENTITY_NAME IS
END ENTITY_NAME;

 ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
 SIGNAL S1 : INTEGER;
 SIGNAL S2 : INTEGER := 5;
 SIGNAL S3 : INTEGER := 10;
BEGIN
PROCESS
VARIABLE V1 : INTEGER;
 VARIABLE V2 : INTEGER := 50;
 BEGIN
 V2 := V2 + 1;
 S3 <= 100;
 S2 <= S3 + V2;
WAIT FOR 4 NS;
 END PROCESS;
 END ARCHITECTURE_NAME;

-- "S1","S2","S3","V1" ET "V2"  JUSTE DES NOMS

<<  valeur modifiable immédiatement par une affectation (:=)  >>

III.Constante :

Elle est définie par le mot clé constant, elle possède une valeur fixe affectée au début de la
déclaration et elle est inchangée, elle peut être déclarée GLOBALEMENT dans un package ou LOCALEMENT dans une architecture.

Exemple :
         CONSTANT  PI  :  REAL  :=  3.1416;  



IV.Littéraux :


Ce sont des valeurs explicites affectées aux objets ou utilisées avec expression.
 Ils représentent alors des valeurs spécifiques mais ne représentent pas toujours un type donné.

1.    Numérique :

  Il  deux types:
·       Integer:  -3,  0,  16,……….
·       Real: 3.16, -2.3, ……………
<< Pour définir un real on doit insérer la partie fractionnaire par exemple 3.0 >>

2.     Caractère:  '&', '@',  '1',……..

3.     Chaine de caractère:  "UNIV_SCIENCE_TECH" ,  "LANGAGE_VHDL"

4.    Chaine de bit:

·       B"1100"      --Binaire
·       O"654"        -- octale
·       X"C300"      --hexadécimale

5.    Physique:

      Pour représenter des quantités physiques telles que le temps,   distance,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               tension,.., il contient la partie numérique et la partie unité de mesure.
·         100ns
·         100ma

V.Types et sous-types :

V.1.  Types :

1. Scalaire:

BIT :  '0', '1'                               -- Défini comme étant un type énuméré.
INTEGER :  -2147483647  à  +2147483647
BOOLEAN :  True, False        --Résultat de toute comparaison, c'est un type énuméré
REAL :  -1.0E38 à +1.0E38
TIME : 300ns                            --Type physique
CHARACTER : 'f', 'k',….
SEVERITY LEVEL : error,faillure, Note, warning     --Type énuméré utilisé dans les rapports de tests

2.Composite :

C'est une collection de plusieurs valeurs de même type ou de types différents.

·         L'enregistrement (Record): défini par le mot clé RECORD, l'enregistrement est la
              collection de plusieurs valeurs de DIFFERENTS TYPES.
·         Tableau (Array): défini par le mot clé ARRAY, c'est un vecteur ou matrice              contenant des valeurs de MEME TYPE.

Exemple :
ARCHITECTURE ARCHITECTURE_NAME OF ENTITY_NAME IS
TYPE VECT1 IS ARRAY (0 TO 7) OF BIT;
TYPE VECT2 IS ARRAY (7 DOWNTO O) OF BIT;
TYPE VECT3 IS ARRAY (NATURAL RANGE < >) OF BIT; -- TABLEAU DE DIMENSION ILLIMITÉE

RECORD
Z: BIT;
E: BIT_VECTOR(0 TO 15);
K: INTEGER RANGE 0 TO 255;
END RECORD;
SIGNAL F:BIT_VECTOR(7 DOWNTO 0);
-- AUTRE DECLARATIONS
BEGIN
-- CORPS DE L'ARCHITECTURE
END ARCHITECTURE_NAME;

   -- "Z","E","K" ET "F" JUSTE DES NOMS
<<Généralement les matrices ne sont pas supportées durant la synthèse.>>  

3.Accès :

     Il joue le même rôle que les pointeurs pour l'allocation dynamique dans les langages
     évolués, mais il n'est pas supporté dans les synthétiseurs actuels.

4.Fichier (file):

utilisé pour stocker les données dans la phase de la vérification (test bench) en utilisant           les instructions:

·         WRITE(nom_fichier, objet): écriture
·         END(nom_fichier): tester la fin d'un fichier: on reçoit la valeur true si on est à la fin du fichier.
·         READ(nom_fichier, objet): lecture

<< D'autre instruction se trouvent dans la norme VHDL 1076-1993>>

V.2. SOUS-TYPES :

      Un sous-type reste compatible avec son type d'origine.
Exemple :
    SUBTYPE  TENSION: INTEGER RANGE 5 TO 12;



DEUXIÈME PARTIE:         (Cliquez Ici)


Aucun commentaire

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