LANGAGE VHDL Spécificités du langage partie 1
LANGAGE VHDL
Spécificités du langage partie 1
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;

Aucun commentaire