Beruflich Dokumente
Kultur Dokumente
Process(clk)
Begin
Le langage VHDL
If rising-edge(clk) Ahmed AOUCHAR
Then
C <= c + 1 ;
End if ;
End process ;
1.1. PRÉSENTATION
Vhsic Hardware Description Langage (Vhsic = Very High Speed Integrated Circuit)
est un langage de description de matériel et non un langage software comme le C.
Standardisé en 1987 par l ’IEEE (Institute Of Electrical and Electronics Engineers)
sous la référence IEEE 1076-87. Une mise à jour importante a été faite en 1993 :
IEEE 1076-93 est supportée par tous les outils. Dernière révision en 2008.
Utilisé au début pour la modélisation et la simulation avant d’être adopté pour la
synthèse logique. Toute la syntaxe n’est pas synthétisable !!!
Permet de décrire un système avec un niveau d’abstraction élevé « algorithmique »
ou un niveau proche du matériel « gate level ». Entre les deux se trouve le niveau
RTL « Register Transfert Level » qui décrit le système sous forme de machine
d’états.
C’est le niveau RTL qui est utilisé pour la synthèse car il est moins lourd que le
niveau « gate level » et il est indépendant de la cible. Le niveau « algorithmique »
n’est pas forcément synthétisable.
2
1.2. LA SYNTHÈSE LOGIQUE
Détails technologiques,
description et
simulation fastidieuses
6
2.1. PREMIER EXEMPLE
commentaire
Appel librairies
a x
b portes y
c z
entité
architecture
7
clk
Clk_div div_out
reset
8
PROCESSUS IMPLICITE OU EXPLICITE
Equation logique
(processus implicite)
Début et fin
Bloc « process »
(processus explicite)
Connexion
(processus implicite)
Les commentaires
commencent par un
double tiret « -- » et se
terminent à la fin de la
ligne.
11
C’est ici qu’est défini le type « std_logic » qui est une extension du type « bit ».
Les opérations applicables à ce type sont : and, nand, or, nor, xor, xnor, not.
Le type « std_logic_vector » est un tableau de « std_logic ».
12
AGRÉGATS (RÉUNIONS D’ÉLÉMENTS)
13
14
LA FONCTION « RISING_EDGE »
Cette fonction, définie dans « std_logic_1164 », est très utile pour détecter les
fronts montants d’une horloge.
Elle vérifie bien que le signal part de ‘0’ avant de passer à ‘1’.
Il existe une fonction similaire qui teste les fronts descendants : « falling_edge »
15
C’est ici que sont définis certains types pour représenter les entiers ainsi que les
opérations arithmétiques.
16
STD_LOGIC_UNSIGNED / STD_LOGIC_SIGNED
STD_LOGIC_UNSIGNED :
Dans ce package, les fonctions sont redéfinies pour traiter les nombres de type
« std_logic_vector » comme des entiers non signés.
STD_LOGIC_SIGNED :
Dans ce package, les fonctions sont redéfinies pour traiter les nombres de type
« std_logic_vector » comme des entiers signés.
Le complément à 2 est utilisé pour le représentation des nombres négatifs.
17
A circuit X
B
C Y
18
2.6. LE CHOIX DES NOMS
Chaque élément manipulé par VHDL (signal, constante, bus, …) doit porter un nom.
Celui-ci doit respecter les règles suivantes :
1. Caractères admis : les 26 lettres de l’alphabet, les 10 chiffres décimaux et le
caractère ‘_’.
2. Le 1er caractère doit être une lettre.
3. Le caractère ‘_’ ne doit pas terminer un nom.
4. Un nom ne doit pas être un mot réservé.
5. La longueur d’un nom ne doit pas dépasser une ligne.
19
a x
portes
b y
c z
20
2.8. DÉCLARATIONS / INSTRUCTIONS
21
Affectation inconditionnelle
Affectation conditionnelle
Affectation sélective
22
3.2. SYNTAXE DANS « PROCESS »
Affectation inconditionnelle
Affectation conditionnelle
Affectation sélective
23
24
3.4. FONCTIONNEMENT SÉQUENTIEL
25
ci b a co s
a s
b add2 0 0 0 0 0
co 0 0 1 0 1
ci
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
26
4.2. ADDITIONNEUR (2ÈME FAÇON)
ci b a co s
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
27
ci b a co s
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
28
4.4. ADDITIONNEUR (4ÈME FAÇON)
ci b a co s
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
29
30
DESCRIPTION MODULAIRE = SCHÉMA
s
co
b s(0)
ci a
c_sig
a(0) b(0)
32
4.7. COMPTEUR À N BITS
Variable générique
Signal intermédiaire
Liste de sensibilité
Front montant
Connexion de la sortie
33
34
4.9. COMPTEUR AVEC RESET SYNCHRONE
35
36
À PROPOS DU « RESET »
37
L’algorithme de conversion utilise le fait que tous les chiffres compris entre 0 et 4
produisent un résultat sur un chiffre lorsqu'ils sont multipliés par 2.
Par contre tous les chiffres compris entre 5 et 9 donnent un résultat sur 2 chiffres
lorsqu’ils sont multipliés par 2.
44
4.17.2. APPLICATION DE L’ALGORITHME
0 4 5 9
En décimal : Exemple en décimal : 2 6 12
Nb Nb*2
0 0
1 2
En BCD : ajouter 3 et décaler à
2 4
gauche
3 6
4 8 diz uni
6 0000 0110
En BCD : un décalage à gauche
+3 0000 0011
Nb Nb*2
= 0000 1001
0000 0000
X2 0001 0010
0001 0010
0010 0100
0011 0110
0100 1000
45
46
4.17.4. CONVERSION D’UN MOTS À 8 BITS
Mot binaire
décalage Opération CENT DIZ UNI 7654 3210
START 0000 0000 0000 1111 1111
1 SHIFT 0000 0000 0001 1111 1110
2 SHIFT 0000 0000 0011 1111 1100
3 SHIFT 0000 0000 0111 1111 1000
+3 0000 0000 1010 1111 1000
4 SHIFT 0000 0001 0101 1111 0000
+3 0000 0001 1000 1111 0000
5 SHIFT 0000 0011 0001 1110 0000
6 SHIFT 0000 0110 0011 1100 0000
+3 0000 1001 0011 1100 0000
7 SHIFT 0001 0010 0111 1000 0000
+3 0001 0010 1010 1000 0000
8 SHIFT 0010 0101 0101 0000 0000
2 5 5 47
48
5.1. MACHINE D’ÉTATS
Une machine d’états est un séquenceur qui décrit le fonctionnement d’un système
séquentiel aussi complexe soit-il.
On utilise des symboles : les bulles indiquent les états du système et les arcs
orientés définissent les possibilités d’évolution. Le passage d’un état à un autre est
régi par une condition (transition). Les sorties dépendent de l’état présent.
Etape S1=0
Etat 1
S2=0
a=1
Transition
S1=0 Etat 2 b=0
S2=1
b=1
Actions
S1=1 associées
Etat 3
S2=0
49
Machine de Moore
État futur État présent
Entrées
Combina Bascule Combina Sorties
-toire -toire
clk
Machine de Mealy
Entrées
Combina Bascule Combina Sorties
-toire -toire
clk
50
5.3. EXEMPLE D’UNE PERCEUSE
Arret = 1
Rotation = 0
stop Monte = 0
Descend = 0
Haut = 1 et dcy = 1
Rotation = 1
Monte = 0 down Haut = 1
Descend = 1
Bas = 1
Rotation = 1
up Monte = 1
Descend = 0
51
Process synchrone
sensible aux signaux clk
et arret.
C’est ici qu’évolue le
système vers l’état suivant
52
SUITE CODE VHDL (2 PROCESS)
53
haut
descend
dcy
monte
bas rotation
arret
clk 54
5.4.2. CODE VHDL (1 PROCESS)
55
haut descend
dcy monte
bas rotation
arret
clk 56
6.1. PRINCIPE DU « TESTBENCH »
57
Assert …
Report …
Severity … 64