ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
1/137
Electronique numériqueLe language VHDL
Remacle Matthieu10 mars 2014
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
2/137
Contact
Remacle Matthieu
Par mail : [email protected] : 1.85a
Téléphone : +32 4 366 2617
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
3/137
Outline I
IntroductionPrésentation du coursPrésentation des conceptsPrésentation des outils
Les bases du VHDLExemples introductifsUne différence fondamentale
SyntaxeSyntaxe de baseDéclarations parallèlesDéclarations séquentielles
Logique séquentielleBaseMachines d’état
Optimisation du codeOptimisation sur la vitesseOptimisation sur l’aireOptimisation de la puissance
Notions avancées
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
4/137
Outline II
Domaines d’horlogePièges à éviter
Projet
Bibliographie
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
5/137
Section 1
Introduction
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
6/137
Objectif et organisation du cours
Objectif
I Acquérir les bases nécessaires à la création de circuit digitaux simple,I Se familiariser avec les puces de logique programmable,I Programmer ces puces via VHDL.
2 répétitions :
Répétition 1 : VHDL combinatoire,
Répétition 2 : VHDL séquentiel.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
7/137
Références
VHDL for Programmable Logic [2] The Designer’s Guide to Vhdl [1]
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
8/137
La logique programmable
DéfinitionUn circuit logique programmable, ou réseau logique programmable, est un circuitintégré logique qui peut être reprogrammé après sa fabrication. Il est composé denombreuses cellules logiques élémentaires librement assemblables.
I Différent d’un processeur,I Peut représenter n’importe quel circuit digital,I Peut être reprogrammer un grand nombre de fois pour représenter des
circuits différents.
On retrouve :I PALI CPLDI FPGAI Dérivés...
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
9/137
La logique programmablePAL
Les puces les plus anciennes et les plus simples, en voie d’extinction.I Réseau de portes assemblées sous la forme d’une grilleI Ensemble de flip-flopI Sorties
Les Flips-flops sont juste avant les sorties, il n’est donc pas possible de leschaîner !
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
10/137
La logique programmableCPLD
Ensemble de PAL connectées entre elle.Avantages
I Programmation en dur de la configuration,I Petites puces, donc moins cher,I Rapides
InconvénientI Complexité des fonctions implémentable réduite.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
11/137
La logique programmableCPLD
Vue globale de l’architecture
IOE
IOE
IOE IOE
IOE
IOE
IOE IOE IOE IOE
LogicElement
LogicElement
LogicElement
LogicElement
LogicElement
LogicElement
LogicElement
LogicElement
LogicElement
LogicElement
LogicElement
LogicElement
Interconnect
Interconnect
Logic ArrayBlock (LAB)
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
12/137
La logique programmableCPLD
Zoom sur une LAB
LAB
LE6
Logic Element
Row Interconnect
Column Interconnect
Connection to IOEConnection to IOEDirect link to adjacentLAB or IOEDirect link to adjacent
LAB or IOE
Direct link to adjacentLAB or IOE
Direct link to adjacentLAB or IOE
LE1LE2LE3LE4LE5
LE7LE8LE9
LE0
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
13/137
La logique programmableCPLD
Zoom sur une LE
Register Feedback
sload sclear aload
DirectLink
DirectLink
LocalRouting
LUT Chainconnection
RegisterChain output
clockenaaclr
data2data3
cin
data4
4-inLUT
addnsub
Registerchain connection
ENA
ALD/PREADATAD
CLRN
Qdata1
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
14/137
La logique programmableFPGA
Puces beaucoup plus grosse et complexe qu’une CPLD.Avantages
I Possibilités énormes en terme de fonctions implémentables,I Optimisation de certaines fonctions pour plus de rapidité,
InconvénientI Plus lente,I Nécessite (parfois) une EEPROM externe pour la programmation.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
15/137
Utilité ?
CPLD : I Petits circuit,I Glue logique,I Conversion de données, etc...
FPGA : I Simulation de processeur,I Tâche massivement parallèle (filtrage, encodage vidéo,
etc...)I Co-processeur,I Remplacement d’ASIC, etc...
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
16/137
Le VHDL
WikipediaVHDL est un langage de description de matériel destiné à représenter lecomportement ainsi que l’architecture d’un système électronique numérique. Sonnom complet est VHSIC1 Hardware Description Language.
Language de programmation : au même titre que le C, Java, PHP, etc...
Description matérielle : description physique.
Descritpion du comportement et architecture : description du fonctionnement dumatériel.
De plus, le VHDL permet de générer du code exécutable :I il peut être simulé,I il peut être traduit en schéma de portes logiques.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
17/137
Le language permet donc deux opérations :I simulation,I implémentation.
A ce titre, certaines instructions sont réservées à la simulation. De plus, la notionfondamentale de séquentiel peut trouver deux significations suivant le contexte :
I le code simulé va être exécuté, instructions par instructions, les unes aprèsles autres,
I le code implémenté va être conçus grâce à de la logique combinatoire, et/ou,de la logique séquentielle.
ConclusionUne description d’un gros circuit combinatoire pourra prendre plusieursinstructions à être exécuté en simulation, mais sera réalisé en un temps depropagation une fois implémenté !
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
18/137
AlternativesUn autre language : le Verilog
I Syntaxe différente (Vérilog plus proche du C, l’autre de l’ADA)I Difficulté différenteI Même but et résultat
En Europe, on utilise plutôt le VHDL, tandis qu’outre atlantique, c’est le Verilog.
RéférencePour une liste objective des différences entre ces deux language, voir [3]
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
19/137
AlternativesUne autre philosophie : le schématique
I Très simple d’apprentissage,I Très bas niveau,I Très rapide.
En revanche, il y a plusieurs problèmes conséquents :I Pas interopérable,I Pas forcément pérène,I Pas facile à débuger,I Pas gérable sur de gros projets.
RemarqueIl est toutefois possible de mixer le VHDL avec le schématic, ce qui peut danscertain cas être pertinent.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
20/137
Outils
Outils de base :I Un éditeur de texte,I Un simulateur,I Un place and route.
Beaucoup de logiciel permettent de gérer le workflow de A à Z :I Xillinx ISEI Altera QuartusI Lattice ISP LeverI Altium DesignerI etc...
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
21/137
Section 2
Les bases du VHDL
Subsection 1
Exemples introductifs
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
22/137
EntitéDéclaration
1 library IEEE;2 use IEEE.std_logic_1164.all ;3
4 entity reg4 is5 port ( d0, d1, d2, d3, en, clk : in std_logic
;6 q0, q1, q2, q3 : out std_logic ) ;7 end reg4;
q0q1q2q3
d1d2d3
enclk
reg4
d0
I Déclaration d’une librairieI Déclaration d’une entité reg4
I Déclaration des ports de cette entitéI Déclaration du type des ports
EntitéL’entité correspond à la vue externe du composant.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
23/137
EntitéParticularité
I La déclaration des Entrées/Sorties (port) reprend toujours le nom du signalet le mode :
in : un port d’entrée,out : un port de sortie,
inout : un port bidirectionnel,buffer : un port de sortie mais aussi utilisé en interne,
I Un programme VHDL comprends toujours une entité et une architecture.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
24/137
Architecture comportementaleDéclaration
1 architecture behav of reg4 is2 begin3 storage : process ( clk )4 variable s0, s1, s2, s3 : std_logic ;5 begin6 if en = ’1’ then7 s0 := d0;8 s1 := d1;9 s2 := d2;
10 s3 := d3;11 end if ;12 q0 <= s0 after 5 ns;13 q1 <= s1 after 5 ns;14 q2 <= s2 after 5 ns;15 q3 <= s3 after 5 ns;16 end process storage;17 end architecture behav;
I Affectation d’une variable etd’un signal,
I Déclaration d’unearchitecture behav,
I Déclaration d’un processstorage, via un processstatement,
I Déclaration de variablesinternes,
I Description du process viaune suite de sequentialstatements,
I Utilisation de signalassignment,
UtilitéUne architecture comportementale décrit la façon dont le système doit fonctionner.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
25/137
Architecture comportementaleParticularité
I Ce type d’architecture nécessite un process, qui comprends :Nom : permettant d’identifier de manière unique le process,
Liste de sensibilité : permettant d’identifier les signaux qui ont un impactsur le process. Tout changement dans ces signauxprovoque la réévaluation du processus,
Liste d’instructions : qui, à la manière d’un programme C sont exécutées demanière séquentielles.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
26/137
Architecture flot de donnéeDéclaration
1 architecture flow of mux41 is2 begin3 O <= ((not S0) and (not S1) and E0) or4 (S0 and (not S1) and E1) or5 (( not S0) and S1 and E2) or6 (S0 and S1 and E3);7 end flow;
S0 S1
E0
E1
E2
E3
O
I Pas d’utilisation de process,I Description du fonctionnement via des équations booléennes.
UtilitéUne architecture flot de donnée décrit le fonctionnement du système par deséquations, ou des formes conditionnelles.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
27/137
Architecture structurelleDéclaration
1 architecture struct of reg4 is2 signal int_clk : std_logic ;3 begin4 bit0 : d_ff5 port map (d0, int_clk , q0);6 bit1 : d_ff7 port map (d1, int_clk , q1);8 bit2 : d_ff9 port map (d2, int_clk , q2);
10 bit3 : d_ff11 port map (d3, int_clk , q3);12 gate : and213 port map (en, clk , int_clk ) ;14 end architecture struct ;
clk
clk
clk
clk
b
d0
d1
d2
d3
q0
q1
q2
q3
bit0d_ff
d q
bit1d_ff
d q
bit2d_ff
d q
bit3d_ff
d qgate
and2a y int_clk
I Utilisation d’éléments déjà configurés,I Description d’interconnexion via les port map,I Définition de signal,
UtilitéUne architecture structurelle décrit les interconnexion entre différents blocs
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
28/137
Architecture comportementaleParticularité
I Ce type d’architecture instancie des éléments déjà décrit. Une instanciationest formée comme suit :
Un nom : pour identifier l’instanciation,Un composant : qui est instancié,Des connexions : effectuées grâce à l’opération port map, qui indique
comment interconnecter les éléments.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
29/137
Section 2
Les bases du VHDL
Subsection 2
Une différence fondamentale
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
30/137
Simulation vs Synthèse
Une simulation est décomposée en deux étapes :I Analyse du code, avec exécution de celui-ci. Chaque signaux voit alors des
transaction programées,I Application des transactions.
Ainsi, les transactions ne sont jamais effectuées immédiatement, puisqu’elles sonteffectuées après l’analyse complète du code !
Lors de la synthèse, en revanche, tout est exécuté en parallèle. Il peut donc yavoir une différence entre le circuit qu’on imagine, et la simulation de celui-ci. Ilconvient donc d’avoir les règles ci-dessus en tête, afin de bien faire comprendreau compilateur ce que vous voulez !
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
31/137
Section 3
Syntaxe
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
32/137
Exécution séquentielle et parallèle
Fondamental
I A l’extérieur d’un process, les instructions s’exécutent en parallèleI A l’intérieur d’un process, elle s’exécutent séquentiellement
I Ainsi, certaines instructions sont plus spécifiques à une exécution parallèle,telles que les instructions de choix :Si une variable vaut x , alors une autre variable vaudra yCe genre d’instruction peut être exécutée en parallèle puisque on peutvérifier cette phrase à tout moment.
I En revanche, une instruction du type :Une variable vaut x , puis si une autre variable change, alors elle vaudra yNe peut pas s’exécuter en permanence puisqu’elle attend des changement.
I Les instructions plus spécifiques parallèle peuvent être aussi dans desprocess, puisqu’elle ne prenne qu’un temps d’exécution !
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
33/137
Subsection 1
Syntaxe de base
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
34/137
Syntaxe de base
Fonction Exemple ou règle
Commentaire −− Commentaire sur une ligneentity reg4 is −− Déclaration de l’entité
Identificateurs
I Caractères alphabétiques, chiffre ouunderscores
I Doit démarrer avec un caractèrealphabétique
I Ne peut se terminer avec ununderscore
I Ne peut contenir deux underscoresuccessifs
I Insensible à la casse ;
Mots réservés
I and, or, nor, etc...I if, else, elsif, for, etc...I entity, architecture, etc...
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
35/137
Fonction Exemple ou règle
Nombres
Real literal : 0, 23, 2E+4, etc...
Integer literal : 23.1, 42.7, 2.9E-3, etc...
Base literal : 2#1101#, 8#15#,10#13#, 16#D#, etc...
Underscore : 2_867_918,2#0010_1100_1101#
Caractères et chaînes
’A’ −− caractère"A string " −− Chaîne de caractère"A string in a " "A string " " . "B"0100011" −− Chaîne binaireX"9F6D3" −− Chaîne hexadécimale5B#11# = B"00011" −− Chaîne à taille fixe
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
36/137
Notation EBNF
DéfinitionMétalanguage permettant de décrire avec précision la syntaxe d’un langagecomme le VHDL.
Fonction Exemple ou règleDéfinition : ⇐ Affectation <= nom_variable := expression;Optionnel : [ ] Fonction <= nom_fonction [ (arguments) ];
0 ou plus : {}
Déclaration_de_process <=process is
{ définition_process }begin
{déclarations}end process;
Répétition : ...
Déclaration_case <=case expression is
déclaration{...}
end case;liste : {"delimiteur"...} Liste_identificateurs <= identificateur {, ...}Ou : | mode <= in | out | inout
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
37/137
Constantes
Syntaxeconstant identificateur {, ...} : sous-type [ := expression ]
Exemples :
1 constant number_of_bytes : integer := 4;2 constant number_of_bits : integer := 8∗number_of_bytes;3 constant size_limit , count_limit : integer := 255;4 constant prop_delay : time := 3ns;
Usage :I Similaire aux déclarations préprocesseur en C.I Pratique pour rendre le code lisible.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
38/137
Variables
Syntaxevariable identificateur {, ...} : sous−type [ := expression ]
variable_à_assigner <= nom := expression;
Exemples :
1 variable number_of_bytes : integer := 4;2 variable size_limit , count_limit : integer := 255;3 variable prop_delay : time := 3ns;4
5 number_of_bytes := 2;6 number_of_bits := number_of_bytes ∗ 8;
Usage :I Similaire aux variables C.I Pas de signification physique.I Ne peut être accessible que par un process (De manière générale : à
déclarer dans un process)
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
39/137
Variables
Attention !Différent d’une affectation de signal ! La variable est modifiée tout de suite, lesignal entraîne une modification future !
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
40/137
Type
Syntaxetype identificateur is type_definition ;subtype identificateur is subtype_definition ;
type_definition <= range expression (to | downto) expression;subtype_definition <= type [range expression (to | downto ) expression ]
Exemples :
1 type players is range 0 to 4;2 type days is 0 to 7;3 subtype bit_index is integer range 31 downto 0;
Usage :I Contraindre des constantes, variables, etc... à certaines valeurs ;I Très utile pour la lisibilité du code ;
RemarqueI On peut déclarer des types avec des entiers ou des flottants ;I La valeur par défaut est la première déclarée (plus petite si to, plus grande
si downto)
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
41/137
TypeEnumérations
Syntaxetype identificateur is type_definition ;
type_definition <= (( identificateur | caractère ) {, ...}) ;
Exemples :
1 type player is (Player1, Player2, Player3, CPU)2 type days is (Mon, Tue, Wed, Thu, Fri , Sat, Sun)3
4 variable today : days;5 today := Mon;
Usage :I Facilité de lecture du code,I Optimisation
RemarqueI Il s’agit d’un type mais avec des noms, donc ce qui s’applique aux types
s’applique aux énumérations également.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
42/137
TypesPrédéfinis
Booléens : type boolean is ( false , true ) ;Bits : type bits is (’0’, ’1’) ;
std_ulogic : ou std_logic
1 type std_ulogic is ( ’U’, −− Un initialisé2 ’X ’, −− Inconnu fort3 ’0’, −− Zéro fort4 ’1’, −− Un fort5 ’Z ’, −− Haute impédance6 ’W’, −− Inconnu faible7 ’L ’, −− Zero faible8 ’H’, −− On faible9 ’−’) ; −− Don’t care
Caractères : type character is (nul , soh, ’ ’, ’∗’, ’1’, ’A ’, ’...’) ;
RemarquePour le type std_logic, il convient d’inclure une librairie :
1 library ieee ;2 use ieee . std_logic_1164. all ;
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
43/137
TypesTableaux
Syntaxearray_def <= array (discrete_range {, ...}) of elementsdiscrete_range <! discrete | expression ( to | downto ) expression
Exemples :
1 type word is array (0 to 31) of std_logic ;2
3 type controller_state is ( initial , idle , active , error ) ;4 type state_counts is array ( controller_state range idle to error ) of natural ;5
6 variable buffer : word;7
8 buffer (0) := 0;
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
44/137
TypesTableaux - multidimensionnels
Exemple :
1 type table16x8 is array(0 to 16, 0 to 8) of std_logic ;2 constant 7seg: table16x8 := (3 "00111111", −− 04 "00000110", −− 15 "01011011", −− 26 "01001111", −− 37 "01100110", −− 48 "01101101", −− 59 "01111101", −− 6
10 "00000111", −− 711 "01111111", −− 812 "01101111", −− 913 "01110111", −− A14 "01111100", −− B15 "00111001", −− C16 "01011110", −− D17 "01111001", −− E18 "01110001"); −−F
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
45/137
Attributs
Un attribut fournit une information sur un élément :I Entité,I Architecture,I type,I ...
Les attributs disponibles vont être fonction de sur quoi porte l’attribut.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
46/137
Attributsde tableaux
Syntaxe :
A’left(N) borne gaucheA’right(N) borne droite
A’low(N) valeur minimaleA’high(N) valeur maximale
A’range(N) variation maximale d’indexA’downrange(N) variation maximale d’index
A’length(N) taille du tableauA’ascending vrai si les index de A sont croissantes
A’element sous type des élémentsRemarque :
I N représente la dimension étudiée.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
47/137
Attributsde signaux
Syntaxe :
S’delayed(T) signal S décalé de TS’Stable(T) vrai si S a été stable pendant TS’quiet(T) vrai si S a été stable depuis T
S’transaction vrai si il y a eu une transaction sur SS’event vrai si il y a un évènement sur S au pas de simulation présent
S’active vrai si il y a une transaction su S au pas de simulation présentS’last_event temps depuis le dernier évènement
S’last_active temps depuis la dernière transactionS’last_value dernière valeur avant le dernier évènement
Remarque :I Beaucoup de ces attributs sont utilisés pour des vérifications de timing.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
48/137
Subsection 2
Déclarations parallèles
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
49/137
Opérateurs
Syntaxeand, or , nand, nor , xor , xnor , not −− logiques+, −, & −− additifs∗, /, mod, rem −− multiplicatifsabs, ∗∗ −− divers<=, := −− assignation=> −− associationsll , srl , sla , sra , rol , ror −− décalage=, /=, <, <=, >, >= −− relations
Exemples :
1 X(1) <= (a(3) and not(s (1) ) and not (s (0) )2 or (b(3) and not(s (1) ) and s(0) )3 or (c (3) and s(1) and not(s (0) ) )4 or (d(3) and s(1) and s(0) ) ;5 bit_vector <= bit_vector sll 2;
Usage :I Ecriture d’équations logiques et arithmétiques
Remarques :I Attention à la priorité des opérations !
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
50/137
Condition with - select - when
Syntaxewith expression select
nom := {expression when choix}expression when choix
Exemple :
1 with S select2 O := E0 when "00";3 O := E1 when "01";4 O := E2 when "10";5 O := E3 when "11";
Usage :I Affectation d’une variable soumise aux valeurs de multiples choix,
Remarque :I Les différents choix doivent être mutuellement exclusifs !
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
51/137
Condition when - else
Syntaxenom := expression when condition
{else expression when condition}[else expression ];
Exemple :
1 result := a − b when mode = substract else a + b;
Usage :I Assignation soumise à condition
AttentionLes différentes conditions ne sont pas forcément mutuellement exclusives. Ainsi, siune condition arrive plusieurs fois, la première rencontrée aura priorité. Dès lorsattention lors de l’écriture de votre code, qui pourrait être implémentédifféremment que prévu dans ces cas particuliers !Voir [2] 167 - 172.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
52/137
Subsection 3
Déclarations séquentielles
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
53/137
Condition If - then - else
Syntaxeif condition then
{déclarations}{ elsif condition then}
{déclaration}}[else
{déclarations }]end if ;
Exemple :
1 if (S0 = ’0’ and S1 = ’0’) then O <= E0;2 elsif (S0 = ’1’ and S1 = ’0’) then O <= E1;3 elsif (S0 = ’0’ and S1 = ’1’) then O <= E2;4 elsif (S0 = ’1’ and S1 = ’1’) then O <= E3;5 else O <= ’−’;6 end if ;
Usage :I Choix simple ou série de choix simples
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
54/137
Condition case - when
Syntaxecase expression is
(when choix => {déclaration}){...}
end case
choix <= (expression_simple | ensemble_valeurs | others) {|...}ensemble_valeurs <= expression (to | downto) expression;
Exemples :
1 case S is2 when "00" => O <= E0;3 when "01" => O <= E1;4 when "10" => O <= E2;5 when "11" => O <= E3;6 when others => O <= ’−’;7 end case;
1 case day is2 when Mon to Wed =>3 O <= ’1’;4 when Sun downto Fri =>5 O <= ’0’;6 when others =>7 O <= ’Z’;8 end case;
Usage :I Multiples choix sur une variable.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
55/137
Boucles
Syntaxeloop
{déclarations}end loop;
while expression loop{déclarations}
end loop;
for identificateur in ensembleloop
{déclarations}end loop;
ensemble <= expression (to | downto) expression;
exit [when condition ];next [when condition ];
UsageI Les différentes boucles peuvent toute effectuer la même chose...I ... mais un choix judicieux du type de boucle permet un code plus concis et
lisible.I exit permet de quitter la boucle,I next permet de passer à l’itération suivante, sans exécuter les instructions
qui suivent.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
56/137
BouclesExemples
Compteur modulo 16 avec reset
Library IEEE;Use IEEE.std_logic_1164.all ;entity counter is
port ( clk , reset : in std_logic ;count: out integer ) ;
end entity counter ;
architecture behavior of counter isbegin
incrementer: process isvariable count_value : integer := 0;begincount <= count_value;
looploop
wait until clk = ’1’ or reset = ’1’;exit when reset = ’1’;count_value := (count_value + 1) mod 16;count <= count_value;
end loop;count_value := 0;count <= count_value;wait until reset = ’0’;
end loop;end process incrementer;
end architecture behavior ;
ns0 100 200 300 400
2 3 0 3 5 6 7 10 11 12 13 14 150 1 1 2 4 8 9 0 1 2resetcountclk
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
57/137
BouclesExemples
Décodeur 3-8Library IEEE;Use IEEE.std_logic_1164.all ;entity dec38 is
port ( E0, E1, E2: in std_logic ;S: out std_logic_vector (7 downto 0));
end entity dec38;
architecture behavior of dec38 isbegin
process (E0, E1, E2)variable N : integer ;begin
N := 0;if E0 = ’1’ then N := N+1; end if;if E1 = ’1’ then N := N+2; end if;if E2 = ’1’ then N := N+4; end if;
S <= "00000000";for I in 0 to 7 loop
if I = N thenS(I ) <= ’1’;
end if ;end loop;
end process;end behavior;
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
58/137
Section 4
Logique séquentielle
Subsection 1
Base
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
59/137
Exemples introductifFlip flop sensible au flanc
1 library ieee ;2 use ieee . std_logic_1164. all ;3 entity dff_logic is port (4 d, clk : in std_logic ;5 q : out std_logic ) ;6 end dff_logic ;7
8 architecture example of dff_logic is9 begin
10 process ( clk ) begin11 if ( clk ’event and clk = ’1’) then12 q <= d;13 end if ;14 end process;15 end example;
I Liste de sensibilité sur clk,I Détection d’un flanc montant
if ( clk ’event and clk = ’1’) thenI Absence de else : le flip flop
conserve sa valeur.
RemarqueLa plupart des simulateurs ne supportentpas un else après unif ( clk ’event and clk = ’1’) then.En effet, cette construction seraitambiguë. (L’évènement ne durant qu’uncourt instant...)
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
60/137
Exemples introductifFlip flop sensible à la valeur
library ieee ;use ieee . std_logic_1164. all ;entity ff_logic is port (
d, clk : in std_logic ;q : out std_logic ) ;
end ff_logic ;
architecture example of ff_logic isbegin
process ( clk , d) beginif ( clk = ’1’) then
q <= d;end if ;
end process;end example;
I Liste de sensibilité sur clk et d,I Absence de else pour la mémoire
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
61/137
Exemples introductifFlip flop resetable
use ieee . std_logic_1164. all ;entity ffr_logic is port (
d, clk , rst : in std_logic ;q : out std_logic ) ;
end ffr_logic ;
architecture example of ffr_logic isbegin
process ( clk , rst ) beginif ( rst = ’1’) then
q <= ’0’;elsif rising_edge( clk ) then
q <= d;end if ;
end process;end example;
I Fonction rising_edge,I Reset dans la liste de sensibilité,I Reset asynchrone,I Si reset synchrone, le mettre dans le
if du rising_edge
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
62/137
Exemples introductifLe wait
Il est possible d’utiliser une clause wait :
architecture example2 of dff_logic isbegin
process beginwait until ( clk = ’1’) ;
q <= d;end process;
end example2;
Cela fonctionnera, mais le wait until doit être la première déclaration duprocess, rendant impossible l’ajout d’un reset.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
63/137
Subsection 2
Machines d’état
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
64/137
Introduction
Jusqu’à présent, le design d’une machine d’état demandait les étapes suivantes :I Définition d’un diagramme d’état,I Transformation des états en signaux binaire,I Tables de Karnaugh,I Détermination des équations minimales.
En VHDL, il est bien entendu possible de faire pareil, mais il y a plus simple :I Définition du diagramme d’état,I Code.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
65/137
Différents styles
Le codage d’une machine d’état peut se faire de plusieurs façon, selon voshabitudes, facilités, etc...De manière générale, une machine d’état se présente de la sorte :
I Etat suivant (NS),I Sorties (O),I Bloc mémoire (M).
NS OM
clk
rst
in out
1 process : (NS + M + O),
2 process : M + (NS + O), O + (NS + M),
3 process : NS + M + O.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
66/137
Exemple
Modélisation d’un étudiant
Glande
Etudie Bois
Deprime
Reussi Rate
soif soif
soifsoif
etude
etude
etude
exam exam
exam
exam
etude
I Modélisation des états de l’étudiant,I Modélisation des signaux (un professeur donne un examen ou non, l’humeur
donne envie de boire, d’étudier ou rien de spécial),I Modélisation des jours (l’horloge du système), un seul état par jour (Un
étudiant, c’est simple...)
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
67/137
Exemple3 process
1 library ieee ;2 use ieee . std_logic_1164. all ;34 entity student is port (5 professor : in std_logic ;6 envy : in std_logic_vector (1 downto 0);7 day : in std_logic ;8 stud_out : out std_logic_vector (2 downto 0));9 end student;
1011 architecture proc_2 of student is12 type student_mood is (Glande, Bois, Etudie, Deprime,
Reussi, Rate);1314 constant Exam : std_logic := ’1’;15 constant Sleep : std_logic_vector (1 downto 0) := "00" ;16 constant Study : std_logic_vector (1 downto 0) := "01" ;17 constant Drink : std_logic_vector (1 downto 0) := "10" ;1819 signal present_state : student_mood := Glande;20 signal next_state : student_mood := Glande;2122 begin2324 −− State process25 state_calc : process ( professor , envy, present_state )26 begin27 case present_state is
28 when Glande =>29 next_state <= Glande;30 if professor = Exam then31 next_state <= Rate;32 else33 if envy = Study then34 next_state <= Etudie;35 elsif envy = Drink then36 next_state <= Bois;37 end if ;38 end if ;3940 when Bois =>41 next_state <= Glande;42 if professor = Exam then43 next_state <= Rate;44 else45 if envy = Study then46 next_state <= Etudie;47 elsif envy = Drink then48 next_state <= Bois;49 end if ;50 end if ;
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
68/137
Exemple3 process
52 when Etudie =>53 next_state <= Glande;54 if professor = Exam then55 next_state <= Reussi;56 else57 if envy = Study then58 next_state <= Etudie;59 elsif envy = Drink then60 next_state <= Deprime;61 end if ;62 end if ;6364 when Deprime =>65 next_state <= Deprime;66 if professor = Exam then67 next_state <= Reussi;68 else69 if envy = Study then70 next_state <= Etudie;71 elsif envy = Drink then72 next_state <= Bois;73 end if ;74 end if ;7576 when Rate =>77 next_state <= Bois;7879 when Reussi =>80 next_state <= Bois;
82 end case;83 end process state_calc ;8485 −− Sync process86 synchro: process(day)87 begin88 present_state <= next_state;89 end process synchro;9091 −− Output92 with present_state select93 stud_out <= "001" when Glande,94 "010" when Bois,95 "011" when Etudie,96 "100" when Deprime,97 "101" when Reussi,98 "110" when Rate,99 "111" when others;
100101 end architecture proc_2;
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
69/137
ExempleSimulation
us
1 3 4 5 2 1 3 5 2 1 2 6 2 1 2 1
0 1 2 0 1 0 2 0 2 0
1 3 4 5 2 1 3 5 2 1 2 6 2 1 2 1
0 1 2 0 1 0 2 0 2 0
1 3 4 5 2 1 3 5 2 1 2 6 2 1 2 1
0 1 2 0 1 0 2 0 2 0
/stud_out/professor/envy/day
1 2 3
Légende :
stud_out : I 1 - GlandeI 2 - BoisI 3 - EtudieI 4 - DéprimeI 5 - RéussiI 6 - Rate
envy : I 0 - SleepI 1 - StudyI 2 - Drink
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
70/137
ExempleSimulation
Remarques :I Seulement deux process, mais l’affectation des sorties aurait pu être un
process sensible au present_state,I Dernier scénario : l’étudiant change d’envie trop rapidement et seule la
dernière est reprise.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
71/137
Conclusion
Autre styles :I Modification des sorties dans le case,I Processus de synchro intégré dans le processus de calcul d’état (liste de
sensibilité changée)I ...
ConclusionA vous de trouver votre style de code !
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
72/137
Section 5
Projet
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
73/137
Objectifs et instruction
ObjectifL’objectif de ce projet est de vous familiariser avec :
I La création d’un circuit électronique simple,I le VHDL.
Ce projet consistera donc en un réalisation d’un système fonctionnel, soit surbreadboard, soit, mieux, sur carte pré-trouée.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
74/137
Echéances
Trois étapes à ce projet :
Vendredi 21 mars 2014 : Envoi par mail d’un bref descriptif de votre projet, avecI Description de maximum 5 lignes du projet,I Description de maximum 5 lignes de la structure du code,
avec le nombre de ressources utilisées,I Matériel nécessaire en plus de la carte de développement.
Cette description me permettra de voir si votre projet estréalisable. Sinon, je vous enverrai quelques suggestions.
Vendredi 25 avril 2014 : Envoi par mail d’un rapport pour votre projet, avecI Le code VHDL,I Des simulations démontrant le bon fonctionnement du
code,I Les schémas électriques,I Toute autres informations que vous jugerez nécessaires.
Session : Démonstration de la réalisation en liveI Date fixée au début de la session,I Présentation orale d’environ 10-15 minutes.
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
75/137
Conseil - Réflexion
Phase la plus longue du projet. Ne vous y prenez pas 2 jours à l’avance !I Avant de vous lancez dans quoi que ce soit, réfléchissez ! Évaluez les
ressources dont vous aurez besoin, vos diagrammes d’états, etc...I Quand vous écrivez du code, simulez dès que possible,I Quand vous faites des schématiques, lisez toutes les datasheets,I Essayez de trouver des exemples sur le net de circuits pour vous en inspirer,
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
76/137
Conseil - Réalisation
I Par breadboard : le plus simple, mais attention aux court-circuits et fauxcontacts.
I Par carte pré-trouée : beaucoup plus propre, mais nécessite de faire de lasoudure.
I Par PCB : perfection, mais difficile à réaliser.
La carte pré-trouée vous donnera les meilleurs résultats. Avant de souder votrecarte définitive, entraînez-vous ! Allez voir des vidéos sur Youtube !Exemple de composants utiles :
I Leds,I Afficheurs 7 segments,I Boutons poussoirs (Attention aux rebonds !)I Potentiomètres,I Décodeurs,I etc...
AttentionVérifiez TOUJOURS les tensions d’alimentation !
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
77/137
Exemples
Utile : I Système domotique (gestion du chauffage, d’éclairage,etc...),
I Système de gestion de la glycémie d’un patient,I Robot suiveur,
Jeux : I Mastermind,I Tireur,I Simon,
ELEN0037
Remacle Matthieu
Introduction
Présentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDL
Exemples introductifs
Une différence fondamentale
Syntaxe
Syntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielle
Base
Machines d’état
Optimisation du code
Optimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancées
Domaines d’horloge
Pièges à éviter
Projet
Bibliographie
78/137
Bon travail !
ELEN0037
Remacle Matthieu
IntroductionPrésentation du cours
Présentation des concepts
Présentation des outils
Les bases du VHDLExemples introductifs
Une différence fondamentale
SyntaxeSyntaxe de base
Déclarations parallèles
Déclarations séquentielles
Logique séquentielleBase
Machines d’état
Optimisation du codeOptimisation sur la vitesse
Optimisation sur l’aire
Optimisation de la puissance
Notions avancéesDomaines d’horloge
Pièges à éviter
Projet
Bibliographie
79/137
Bibliographie I
P.J. Ashenden.The Designer’s Guide to VHDL.Systems on Silicon Series. Morgan Kaufmann, 2008.
K. Skahill and J. Legenhausen.VHDL for programmable logic.Electrical engineering/digital desing. Addison-Wesley, 1996.
D.J. Smith.Vhdl and verilog compared and contrasted-plus modeled example written invhdl, verilog and c.In Design Automation Conference Proceedings 1996, 33rd, pages 771–776.IEEE, 1996.
Top Related