CHPITR3
CHPITR3
CHPITR3
Faculté de la Technologie
Département des systèmes d‟ingénierie électrique
Spécialité: Instrumentation Biomédicale
Powerpoint Templates
OBJECTIFS
Donc,
En décrivant la fonction du schéma en langage haut niveau ( = facile à comprendre),
nous pouvons la simuler avant sa fabrication. Cela nous permet de détecter les erreurs de
conception.
Entity mon_circuit is
Port( Mon_circuit: Identificateur utilisé par
l‟utilisateur pour nommer l‟entité.
);
End mon_circuit;
End;
Eléments lexicaux et Syntaxe
les identifiants, les mots réservés, les symboles et les littéraux spéciaux.
Syntaxe :
5.L‟apprentissage à développer nos Combinaison des
propres descriptions VHDL pour éléments lexicaux
décrire une conception dont nous
voulons travaillons: Ceci est la partie
créative de la modélisation, ensuite si Apprentissage de la
nous sommes à l‟aise, nous pouvons sémantique
améliorer grandement nos
compétences en conception.
Créativité pour le
développement d‟un
modèle de circuit digital
VHDL ...comme tout langage de programmation
1. Eléments Lexicaux 2. Types de Données et Objets
Commentaires Type Entier
Identificateurs Type Physique
Nombres Type Réel
Caractères Type Enuméré
Chaine de caractères: Strings Vecteurs
Enregistrement
3. Expressions et Opérateurs Sous Type
Déclaration d‟Objet
4. Assignation Séquentielle
Attributs
Assignation de Variable 5. VHDL décrit le comportement d‟un circuit digital
Déclaration If Déclaration d‟Entité
Déclaration Case Déclaration d‟Architecture
Déclaration Loop Déclaration de Signal
Déclaration Null Assignation de Signal
Assignation Concurrente de Signal
Process
Déclaration de Composant
1. Eléments Lexicaux
Commentaire Est considéré comme tel après deux tirets consécutifs “--”.
Identificateur Est utilisé pour donner un nom aux différents objets du langage.
Nombre Est considéré dans la base 10, mais on peut admettre d‟autres bases
en utilisant le symbole # : 2#11000100#
Caractère Soit une lettre ou un caractère mis entre apostrophes simples: „3‟, „t‟.
Dans e1
l‟Entité e2[3:0] BOITE_NOIRE
s1
clk q[3:0]
Traduction:
L‟affectation d‟une valeur à un signal est tout simplement la connexion de la
sortie d‟un opérateur à l‟équipotentielle correspondante.
Exemples
A <= B and C;
ou bien,
A <= Max(F,G); - - Ici Max représente une fonction;
OBJET de TYPE: Importance d‟un Signal
Les signaux sont utilisés pour communiquer entres les composants du système.
Les Signaux peuvent être des réels, entiers, chaines de caractères ou physiques.
Certains délais peuvent accompagnés l‟assignation du signal.
Exemples:
Syntaxe:
- - se place dans la partie déclarative d‟un processus, d‟une procédure ou d‟une
fonction
variable nom1 , nom2 : type [:= expression];
Exemples:
VARIABLE opcode : BIT_VECTOR(3 DOWNTO 0) := "0000";
VARIABLE freq : INTEGER;
Traduction:
Importance:
Cependant,
On notera qu‟il est possible d’affecter la valeur d’une variable à un
signal, et inversement, pourvu que les types soient compatibles.
Exemple:
BEGIN
PROCESS (a, b, c)
VARIABLE a,b,c,out_3,out_4: BIT;
BEGIN
out_3 := a NAND b;
out_4 := out_3 XOR c;
END PROCESS;
END;
OBJET de TYPE: Constantes
Les constantes sont des objets dont la valeur est fixée une fois
pour toute.
Syntaxe :
constant identifier_1 : type[ := := valeur_de_la_constante ] ;
1. Types prédéfinis
2. Types définis par l’utilisateur.
LES TYPES DE DONNEES
TYPES de DONNEES
Les Types sont exigés pour tout La déclaration du Type de données peut
Signal être dans :
Variable
Constante PACKAGE
Paramètre d‟une Fonction ENTITÉ
Résultat d‟une Fonction ARCHITECTURE
SOUS-PROGRAMMES
PROCESS
LES TYPES DE DONNEES: LE TYPE SCALAIRE
Types de données prédéfinis
énuméré tel que : bit („0‟ ou „1‟)
integer
real
time (type physique)
SYNTAXE
Exemples
L‟ENTIER
Integer
Un signal ou une variable déclaré comme type entier et qui doit être synthétisé
en éléments logiques, doit être limité par un range.
Natural -- INTEGERS ≥ 0
LES TYPES DE DONNEES: LE TYPE SCALAIRE:
LE RÉEL
REAL
Le domaine de variation de ce type est:
Exemples
4- TYPE STD_LOGIC IS (
„U‟ , -- Uninitialized
„X‟ , -- Forcing Unknown
„0‟ , -- Forcing 0
„1‟ , -- Forcing 1
„Z‟ , -- High Impedance
„W‟ , -- Weak Unknown
„L‟ , -- Weak 0
„H‟ , -- Weak 1
„-‟ , -- Don`t Care
);
LES TYPES DE DONNEES: LE TYPE SCALAIRE
STD_LOGIC
STD_LOGIC
Tableau (ARRAYS)
et Enregistrement (RECORDS).
TYPES DE DONNÉES: LE TYPE STRUCTURE
Exemples
TYPE word Is Array ( 0 To 7) of Bit;
TYPE word_16 Is Array ( 31 DownTo 0) of Bit;
VECTEUR DE 1D
VECTEUR DE 1D X 1D
X(3) <= „0'; X(2) <= „1'; X(1) <= „0'; X(0) <= „1';
Y(3) <= „1'; Y(2) <= „0'; Y(1) <= „1‟; Y(0) <= „0';
TYPES DE DONNÉES: LE TYPE STRUCTURE:VECTEURS
Écrire un type énuméré avec les valeurs : est, sud, nord, ouest.
Type direct is ( est, sud, nord, ouest) ;
Ecrire un type booléen constitué d‟un vecteur unidimensionnel non
restreint.
Type t_bool is array (natural range <>) of Boolean;
Créer un signal du type précédent ayant 10 éléments.
Bus(5 downto 4) <=A(0 to 1); VRAI. BUS(5) EST CONDUIT PAR A(0)
Un tableau sans contraintes est celui qui n‟est pas délimité par un
rang entier spécifique.
EXEMPLE
TABLEAUX CONTRAINTS :
SPÉCIFIER LE SENS DE VARIATION DES INDICES
1 to 15 / 15 downto 1
type mot is array (15 downto 0) of bit;
type memoire is array (0 to 255) of mot;
Dimensions Multiples
CONCATÉNATION
AGGRÉGAT
S i g n a l X , Y, Z , T: s t d _ l o g i c _ v e c t o r ( 3 d o w n t o 0 ) ;
Signal A, B, C : std_logic;
ATTRIBUT ≠VALEUR
UN OBJET A UNE SEULE VALEUR MAIS PEUT AVOIR PLUSIEURS ATTRIBUTS.
ATTRIBUTS – PRÉDÉFINIS - UTILISATION
ATTRIBUTS DE TABLEAUX
Attribut 1 pour la
variable A
Attribut 2 pour la
variable A
ATTRIBUTS – PRÉDÉFINIS ( QUELQUES UNS)
ATTRIBUTS DE SIGNAUX
BOOLEAN.
TRUE SI UN ÉVÉNEMENT VIENT D‟ARRIVER SUR S PENDANT LE CYCLE DE
SIMULATION EN COURS.
BOOLEAN
TRUE LORSQU‟IL SE PRODUIT UNE TRANSACTION (AFFECTATION) SUR LE SIGNAL
DURANT UN TEMPS T.
BOOLEAN
TRUE LORSQU‟IL N‟Y A PAS D'ÉVÉNEMENTS SUR LE SIGNAL S PENDANT LE TEMPS T.
SIGNAL
C‟EST UN SIGNAL IDENTIQUE À S MAIS RETARDÉ DE T
ATTRIBUTS – PRÉDÉFINIS - UTILISATION
„Event retourne une valeur booléene « true » s‟il y a un événement ( changement de valeur) dans
le signal clk.
UTILISATION DES ATTRIBUTS DE SIGNAUX
Renvoie «vrai» après le changement qui a conduit l'horloge à la valeur «1» ( d'une valeur de '0„)
LISTE DES OPÉRATEURS LOGIQUES: NOT, AND, OR, XOR, NAND, NOR
OPÉRATEUR
SLL DÉCALAGE LOGIQUE À GAUCHE
SRL DÉCALAGE LOGIQUE À DROITE
SLA DÉCALAGE ARITHMÉTIQUE À GAUCHE
Décalent les bits d‟un vecteur n fois à la gauche sll ou à la droite srl,
introduisant des zéros sur les lieux restant libres.
EXEMPLE
Décalent les bits d‟un vecteur n fois à la gauche sla ou à la droite sra,
introduisant des zéros aux lieux restants libres, mais en conservant le
signe.
EXEMPLE
Les deux opérandes doivent être de même type; par contre différentes tailles (ranges)
sont permises.
Restreints aux opérations avec des données numériques.
Pour réaliser des opérations avec les types non numériques ( (std_logic et
std_logic_vector), on utilise les packages IEEE:
Opérations sans signe ---> package STD_LOGIC_UNSIGNED
Opérations avec signe ---> package STD_LOGIC_SIGNED
DESCRIPTION DE FLOT DE DONNÉES
DÉFINITION
INSTRUCTIONES CONCURRENTES
CARACTÉRISTIQUES
Le choix de la valeur à affecter à un signal se fait à partir des valeurs possibles d‟une
expression. WITH EXPRESSION SELECT
DÉFINITION
INSTRUCTIONS SÉQUENTIELLES
PROCESS
STRUCTURES D’EXÉCUTION SÉQUENTIELLE
DIFFÉRENCE ENTRE SIGNAUX ET VARIABLES
PROCESS
Contient:
Zone de Déclarations ( Les objets déclarés sont locaux dans ce
PROCESS)
Instructions séquentielles (assignation simple du signal ou de la
variable, IF, CASE, LOOP , etc. )
SYNTAXE [ETIQUETTE :] PROCESS ( LISTE DE « SENSIBILITÉ »)
BEGIN
Architecture P1 of exemple is
Liste de
Begin Sensibilité
PROCESS (i1)
Partie
Déclarative du
variable a: std_logic;
Process
BEGIN Instructions
Séquentielles
a:= not i1;
o1 <= a;
END PROCESS; Le PROCESS est déclenché lorsque la valeur i1 change.
End; Dans ce cas, on dit que le PROCESS est actif.
PROCESS sans liste de sensibilité
ARCHITECTURE P2 OF exemple IS
WAIT remplace la LISTE DE
BEGIN
SENSIBILITÉ
PROCESS
VARIABLE a: BIT;
BEGIN
a := NOT i1; -- Instruction séquentielle
o1 <= a; -- Instruction séquentielle
WAIT ON i1; -- Instruction séquentielle
END PROCESS;
END ;
Lorsque:
1. se produit un événement dans un des signaux de la liste
de sensibilité
2. ou bien s‟accomplissent les conditions de
déclenchement de l‟instruction WAIT.
IF CONDITION_1 THEN
GROUPE 1 D‟INSTRUCTIONS SÉQUENTIELLES
ELSE
GROUPE 2 D‟INSTRUCTIONS SÉQUENTIELLES
END IF;
IF CONDITION_1 THEN
GROUPE 1 D‟INSTRUCTIONS SÉQUENTIELLES
ELSIF CONDITION_2 THEN
GROUPE 2 D‟INSTRUCTIONS SÉQUENTIELLES
ELSIF CONDITION_N THEN
GROUPE N D‟INSTRUCTIONS SÉQUENTIELLES
END IF;
STRUCTURES D‟EXÉCUTION SÉQUENTIELLE
CASE
Sélectionne une des possibles branches en accord avec la valeur de
l‟expression.
Toutes les valeurs possibles de l‟expression devront avoir une option
dans la branche de case. On utilise le mot reservé others pour englober les
autres cas.
Il est préférable d‟utiliser case au lieu de if.
Utile pour spécifier les tables de vérité et les machines d‟états finis.
CASE EXPRESSION IS
END CASE;
STRUCTURES D‟EXÉCUTION SÉQUENTIELLE
BOUCLES
EXEMPLE COMPTEUR := 0;
RESULTAT_TMP := 0;
WHILE COMPTEUR > 0 LOOP
COMPTEUR := COMPTEUR - 1;
RESULTAT_TMP:= RESULTAT_TMP+DATA_IN;
END LOOP;
RESULTAT <= RESULTAT_TMP;
STRUCTURES D‟EXÉCUTION SÉQUENTIELLE
[ÉTIQUETTE:] LOOP
SYNTAXE SÉQUENCE D‟INSTRUCTIONS
END LOOP [ÉTIQUETTE];
LIEN1: LOOP
EXEMPLE a <= c and b;
END LOOP LIEN1;
EXEMPLE
ARCHITECTURE comportemental OF multiplexeur IS
BEGIN
PROCESS (selec, a, b, c, d)
BEGIN
selec_int := to_integer(selec);
CASE selec_int IS
WHEN 0 => sortie <= a ;
WHEN 1 => sortie <= b ;
WHEN 2 => sortie <= c ;
WHEN 3 => sortie <= d ;
WHEN OTHERS => NULL;
END CASE;
END PROCESS;
END comportemental;
SIGNAL VS VARIABLE:
CODE BASÉ SUR L’UTILISATION DES SIGNAUX
Entity signaux is
port (
Clk, d: in std_logic;
Q: inout std_logic_vector ( 3 downto 0));
End signaux;
Architecture bev of signaux is
Begin
Process(clk)
Begin
If clk‟event and clk=„1‟ then
Q(0) <= d;
Q‟1) <= q(0);
Q(2) <= q(1);
Q(3) <= q(2);
End if;
End process;
End;
SIGNAL VS VARIABLE:
CODE BASÉ SUR L’UTILISATION DES VARIABLES
Entity variables is
port (
Clk, d: in std_logic;
Q: inout std_logic_vector ( 3 downto 0));
End variables;
Architecture bev of variables is
Begin
Process(clk)
Variable s: std_logic_vector(3 downto 0));
Begin
If clk‟event and clk=„1‟ then
s(0) := d;
s‟1) := s(0);
s(2) := s(1);
s(3) := s(2);
Q<=s;
End if;
End process;
End;
SIGNAUX & VARIABLES
Signal Variable
Le signal est global dans une La variable est locale à un PROCESS.
architecture.
Les signaux peuvent être assignées à Les variables peuvent être assignées
des variables. aux signaux.
Quand une valeur d‟une variable a besoin d‟être accédée à l‟extérieur d‟un
PROCESS, on doit l‟assigner à un signal.
DESCRIPTIONS STRUCTURELLES
COMPOSANTS
INSTANTIATION DE COMPOSANTS
AFFECTATION DE GÉNÉRATION
Structure Hiérarchisée
Half_adder
HIÉRARCHIQUE.