Vous êtes sur la page 1sur 79

ELEN0037

Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts


Electronique numérique Présentation des outils
Le language VHDL
Les bases du VHDL
Exemples introductifs
Remacle Matthieu Une différence fondamentale
10 mars 2014
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
ELEN0037
Contact 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

Remacle Matthieu Syntaxe


Syntaxe de base
Par mail : mremacle@ulg.ac.be Déclarations parallèles

Déclarations séquentielles
Bureau : 1.85a
Logique séquentielle

Téléphone : +32 4 366 2617 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
ELEN0037
Outline I Remacle Matthieu

Introduction
Introduction
Présentation du cours
Présentation du cours
Présentation des concepts
Présentation des concepts Présentation des outils

Présentation des outils Les bases du VHDL

Les bases du VHDL Exemples introductifs

Une différence fondamentale


Exemples introductifs
Syntaxe
Une différence fondamentale
Syntaxe de base

Syntaxe Déclarations parallèles

Syntaxe de base Déclarations séquentielles

Déclarations parallèles Logique séquentielle

Déclarations séquentielles Base

Machines d’état
Logique séquentielle
Optimisation du code
Base Optimisation sur la vitesse
Machines d’état Optimisation sur l’aire

Optimisation de la puissance
Optimisation du code
Notions avancées
Optimisation sur la vitesse
Domaines d’horloge
Optimisation sur l’aire
Pièges à éviter
Optimisation de la puissance
Projet
Notions avancées Bibliographie
ELEN0037
Outline II Remacle Matthieu

Domaines d’horloge Introduction


Présentation du cours
Pièges à éviter
Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs

Une différence fondamentale

Syntaxe
Syntaxe de base
Projet Déclarations parallèles

Déclarations séquentielles

Logique séquentielle
Base

Machines d’état

Optimisation du code
Optimisation sur la vitesse
Bibliographie Optimisation sur l’aire

Optimisation de la puissance

Notions avancées
Domaines d’horloge

Piè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
Section 1 Une différence fondamentale

Syntaxe
Syntaxe de base
Introduction 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
ELEN0037
Objectif et organisation du cours Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL

Objectif Exemples introductifs

Une différence fondamentale

I Acquérir les bases nécessaires à la création de circuit digitaux simple, Syntaxe


Syntaxe de base
I Se familiariser avec les puces de logique programmable, Déclarations parallèles

I Programmer ces puces via VHDL. Déclarations séquentielles

Logique séquentielle
Base
2 répétitions :
Machines d’état

Répétition 1 : VHDL combinatoire, Optimisation du code

Répétition 2 : VHDL séquentiel. Optimisation sur la vitesse

Optimisation sur l’aire

Optimisation de la puissance

Notions avancées
Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037
Références Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts


VHDL for Programmable Logic [2] The Designer’s Guide to Vhdl [1] 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
ELEN0037
La logique programmable Remacle Matthieu

Introduction
Présentation du cours

Définition Présentation des concepts

Présentation des outils


Un circuit logique programmable, ou réseau logique programmable, est un circuit
Les bases du VHDL
intégré logique qui peut être reprogrammé après sa fabrication. Il est composé de
Exemples introductifs
nombreuses cellules logiques élémentaires librement assemblables. Une différence fondamentale

Syntaxe
I Différent d’un processeur, Syntaxe de base

I Peut représenter n’importe quel circuit digital, Déclarations parallèles

Déclarations séquentielles
I Peut être reprogrammer un grand nombre de fois pour représenter des
Logique séquentielle
circuits différents. Base

Machines d’état

Optimisation du code
On retrouve : Optimisation sur la vitesse

I PAL Optimisation sur l’aire

Optimisation de la puissance
I CPLD
Notions avancées
I FPGA Domaines d’horloge

I Pièges à éviter
Dérivés...
Projet

Bibliographie
ELEN0037
La logique programmable Remacle Matthieu
PAL
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs

Une différence fondamentale

Les puces les plus anciennes et les plus simples, en voie d’extinction. Syntaxe

I Syntaxe de base
Réseau de portes assemblées sous la forme d’une grille
Déclarations parallèles
I Ensemble de flip-flop Déclarations séquentielles

I Sorties Logique séquentielle


Base
Les Flips-flops sont juste avant les sorties, il n’est donc pas possible de les
Machines d’état
chaîner !
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
ELEN0037
La logique programmable Remacle Matthieu
CPLD
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs

Une différence fondamentale


Ensemble de PAL connectées entre elle.
Avantages Syntaxe
Syntaxe de base
I Programmation en dur de la configuration, Déclarations parallèles

I Petites puces, donc moins cher, Déclarations séquentielles

Logique séquentielle
I Rapides
Base

Inconvénient Machines d’état

I Complexité des fonctions implémentable réduite. 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
ELEN0037
La logique programmable Remacle Matthieu
CPLD
Introduction
Présentation du cours
Vue globale de l’architecture
Présentation des concepts

Présentation des outils


IOE IOE IOE IOE IOE IOE
Les bases du VHDL
Exemples introductifs

Une différence fondamentale


Logic Logic Logic
IOE Syntaxe
Element Element Element
Syntaxe de base

Déclarations parallèles

Déclarations séquentielles
Logic Logic Logic Logic Array
IOE Logique séquentielle
Element Element Element Block (LAB)
Base
Interconnect Machines d’état

Logic Logic Logic Optimisation du code


IOE
Element Element Element Optimisation sur la vitesse

Optimisation sur l’aire

Optimisation de la puissance

Logic Logic Logic Notions avancées


IOE
Element Element Element Domaines d’horloge

Pièges à éviter

Projet
Interconnect
Bibliographie
ELEN0037
La logique programmable Remacle Matthieu
CPLD
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils


Zoom sur une LAB
Les bases du VHDL
Exemples introductifs
Row Interconnect Une différence fondamentale

Syntaxe
Syntaxe de base

Column Interconnect Déclarations parallèles

LE0 Déclarations séquentielles

Connection to IOE LE1 Connection to IOE


Logique séquentielle
LE2 Direct link to adjacent
Direct link to adjacent LAB or IOE Base
LAB or IOE LE3
Machines d’état
LE4
LE5 Optimisation du code
LE6 Optimisation sur la vitesse
Direct link to adjacent LE7 Direct link to adjacent
LAB or IOE LAB or IOE Optimisation sur l’aire

LE8 Optimisation de la puissance


LE9
Notions avancées
Logic Element
LAB
Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037
La logique programmable Remacle Matthieu
CPLD
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Zoom sur une LE
Exemples introductifs
sload sclear aload
Une différence fondamentale

Register Syntaxe
chain connection
Syntaxe de base

addnsub Déclarations parallèles


ALD/PRE
Déclarations séquentielles
ADATA Q DirectLink
data1 D
Logique séquentielle
data2 4-in
data3 ENA DirectLink Base
LUT
CLRN Machines d’état
cin
clock Local
data4 ena Routing Optimisation du code
aclr
LUT Chain Optimisation sur la vitesse
connection
Optimisation sur l’aire

Register Optimisation de la puissance


Register Feedback Chain output
Notions avancées
Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037
La logique programmable Remacle Matthieu
FPGA
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs

Une différence fondamentale


Puces beaucoup plus grosse et complexe qu’une CPLD.
Avantages Syntaxe
Syntaxe de base
I Possibilités énormes en terme de fonctions implémentables, Déclarations parallèles

I Optimisation de certaines fonctions pour plus de rapidité, Déclarations séquentielles

Logique séquentielle
Inconvénient
Base
I Plus lente, Machines d’état

I Nécessite (parfois) une EEPROM externe pour la programmation. 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
ELEN0037
Utilité ? Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs

CPLD : I Petits circuit, Une différence fondamentale

I Glue logique, Syntaxe


I Conversion de données, etc... Syntaxe de base

Déclarations parallèles
FPGA : I Simulation de processeur, Déclarations séquentielles
I Tâche massivement parallèle (filtrage, encodage vidéo,
Logique séquentielle
etc...) Base
I Co-processeur, Machines d’état

I Remplacement d’ASIC, etc... 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
ELEN0037
Le VHDL Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts


Wikipedia
Présentation des outils

VHDL est un langage de description de matériel destiné à représenter le Les bases du VHDL
comportement ainsi que l’architecture d’un système électronique numérique. Son Exemples introductifs

Une différence fondamentale


nom complet est VHSIC1 Hardware Description Language.
Syntaxe
Syntaxe de base

Déclarations parallèles

Language de programmation : au même titre que le C, Java, PHP, etc... Déclarations séquentielles

Description matérielle : description physique. Logique séquentielle


Base
Descritpion du comportement et architecture : description du fonctionnement du Machines d’état

matériel.
Optimisation du code
Optimisation sur la vitesse

Optimisation sur l’aire


De plus, le VHDL permet de générer du code exécutable : Optimisation de la puissance

I il peut être simulé, Notions avancées


Domaines d’horloge
I il peut être traduit en schéma de portes logiques.
Pièges à éviter

Projet

Bibliographie
ELEN0037

Remacle Matthieu

Le language permet donc deux opérations : Introduction


Présentation du cours
I simulation,
Présentation des concepts
I implémentation. Présentation des outils

Les bases du VHDL


Exemples introductifs
A ce titre, certaines instructions sont réservées à la simulation. De plus, la notion Une différence fondamentale

fondamentale de séquentiel peut trouver deux significations suivant le contexte :


Syntaxe
I le code simulé va être exécuté, instructions par instructions, les unes après Syntaxe de base

Déclarations parallèles
les autres,
Déclarations séquentielles
I le code implémenté va être conçus grâce à de la logique combinatoire, et/ou,
Logique séquentielle
de la logique séquentielle. Base

Machines d’état

Conclusion Optimisation du code

Une description d’un gros circuit combinatoire pourra prendre plusieurs Optimisation sur la vitesse

Optimisation sur l’aire


instructions à être exécuté en simulation, mais sera réalisé en un temps de
Optimisation de la puissance
propagation une fois implémenté !
Notions avancées
Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037
Alternatives Remacle Matthieu
Un autre language : le Verilog
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs

I Syntaxe différente (Vérilog plus proche du C, l’autre de l’ADA) Une différence fondamentale

Syntaxe
I Difficulté différente
Syntaxe de base
I Même but et résultat Déclarations parallèles

Déclarations séquentielles
En Europe, on utilise plutôt le VHDL, tandis qu’outre atlantique, c’est le Verilog.
Logique séquentielle
Base

Machines d’état

Référence Optimisation du code


Pour une liste objective des différences entre ces deux language, voir [3] Optimisation sur la vitesse

Optimisation sur l’aire

Optimisation de la puissance

Notions avancées
Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037
Alternatives Remacle Matthieu
Une autre philosophie : le schématique
Introduction
Présentation du cours

Présentation des concepts


I Très simple d’apprentissage, Présentation des outils

I Très bas niveau, Les bases du VHDL


Exemples introductifs
I Très rapide.
Une différence fondamentale

Syntaxe
Syntaxe de base
En revanche, il y a plusieurs problèmes conséquents :
Déclarations parallèles
I Pas interopérable, Déclarations séquentielles

I Pas forcément pérène, Logique séquentielle


Base
I Pas facile à débuger, Machines d’état

I Pas gérable sur de gros projets. Optimisation du code


Optimisation sur la vitesse

Optimisation sur l’aire

Optimisation de la puissance
Remarque
Notions avancées
Il est toutefois possible de mixer le VHDL avec le schématic, ce qui peut dans Domaines d’horloge

Pièges à éviter
certain cas être pertinent.
Projet

Bibliographie
ELEN0037
Outils Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts

Présentation des outils


Outils de base :
Les bases du VHDL
I Un éditeur de texte, Exemples introductifs

I Une différence fondamentale


Un simulateur,
Syntaxe
I Un place and route.
Syntaxe de base

Déclarations parallèles

Déclarations séquentielles
Beaucoup de logiciel permettent de gérer le workflow de A à Z :
Logique séquentielle
I Xillinx ISE Base

I Altera Quartus Machines d’état

Optimisation du code
I Lattice ISP Lever
Optimisation sur la vitesse
I Altium Designer Optimisation sur l’aire

Optimisation de la puissance
I etc...
Notions avancées
Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037

Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Section 2 Les bases du VHDL


Exemples introductifs

Une différence fondamentale

Les bases du VHDL Syntaxe


Syntaxe de base

Subsection 1 Déclarations parallèles

Déclarations séquentielles

Exemples introductifs 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
ELEN0037
Entité Remacle Matthieu
Déclaration
Introduction
Présentation du cours

1 library IEEE; reg4 Présentation des concepts

Présentation des outils


2 use IEEE.std_logic_1164.all ; d0 q0
3 Les bases du VHDL
d1 q1
Exemples introductifs
4 entity reg4 is d2 q2 Une différence fondamentale
5 port ( d0, d1, d2, d3, en, clk : in std_logic d3 q3
Syntaxe
;
Syntaxe de base
6 q0, q1, q2, q3 : out std_logic ) ; en
Déclarations parallèles
7 end reg4; clk Déclarations séquentielles

Logique séquentielle
Base

I Déclaration d’une librairie Machines d’état

Optimisation du code
I Déclaration d’une entité reg4
Optimisation sur la vitesse
I Déclaration des ports de cette entité Optimisation sur l’aire

Optimisation de la puissance
I Déclaration du type des ports
Notions avancées
Domaines d’horloge
Entité Pièges à éviter

L’entité correspond à la vue externe du composant. Projet

Bibliographie
ELEN0037
Entité Remacle Matthieu
Particularité
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs

Une différence fondamentale

I La déclaration des Entrées/Sorties (port) reprend toujours le nom du signal Syntaxe


et le mode : Syntaxe de base

Déclarations parallèles
in : un port d’entrée,
Déclarations séquentielles
out : un port de sortie,
Logique séquentielle
inout : un port bidirectionnel,
Base
buffer : un port de sortie mais aussi utilisé en interne,
Machines d’état

I Un programme VHDL comprends toujours une entité et une architecture. 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
ELEN0037
Architecture comportementale Remacle Matthieu
Déclaration
Introduction
1 architecture behav of reg4 is
Présentation du cours
I Affectation d’une variable et
2 begin Présentation des concepts
3 storage : process ( clk ) d’un signal, Présentation des outils

4 variable s0, s1, s2, s3 : std_logic ; I Déclaration d’une Les bases du VHDL
5 begin architecture behav, Exemples introductifs

6 if en = ’1’ then I Déclaration d’un process


Une différence fondamentale

7 s0 := d0; storage, via un process Syntaxe

8 s1 := d1; statement,
Syntaxe de base

Déclarations parallèles
9 s2 := d2;
I Déclaration de variables Déclarations séquentielles
10 s3 := d3;
internes, Logique séquentielle
11 end if ;
Base
I Description du process via
12 q0 <= s0 after 5 ns; Machines d’état
13 q1 <= s1 after 5 ns; une suite de sequential
Optimisation du code
14 q2 <= s2 after 5 ns; statements,
Optimisation sur la vitesse
15 q3 <= s3 after 5 ns; I Utilisation de signal Optimisation sur l’aire

16 end process storage; assignment, Optimisation de la puissance

17 end architecture behav; Notions avancées


Domaines d’horloge
Utilité Pièges à éviter

Une architecture comportementale décrit la façon dont le système doit fonctionner. Projet

Bibliographie
ELEN0037
Architecture comportementale Remacle Matthieu
Particularité
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs

Une différence fondamentale

I Ce type d’architecture nécessite un process, qui comprends : Syntaxe

Nom : permettant d’identifier de manière unique le process, Syntaxe de base

Déclarations parallèles
Liste de sensibilité : permettant d’identifier les signaux qui ont un impact
Déclarations séquentielles
sur le process. Tout changement dans ces signaux
Logique séquentielle
provoque la réévaluation du processus,
Base
Liste d’instructions : qui, à la manière d’un programme C sont exécutées de Machines d’état

manière séquentielles.
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
ELEN0037
Architecture flot de donnée Remacle Matthieu
Déclaration
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

1 architecture flow of mux41 is E0


Les bases du VHDL
2 begin E1 Exemples introductifs
O
3 O <= ((not S0) and (not S1) and E0) or E2
Une différence fondamentale

4 (S0 and (not S1) and E1) or Syntaxe


E3
5 (( not S0) and S1 and E2) or Syntaxe de base

Déclarations parallèles
6 (S0 and S1 and E3);
Déclarations séquentielles
7 end flow;
S0 S1 Logique séquentielle
Base

Machines d’état
I Pas d’utilisation de process,
Optimisation du code
I Description du fonctionnement via des équations booléennes. Optimisation sur la vitesse

Optimisation sur l’aire

Utilité Optimisation de la puissance

Notions avancées
Une architecture flot de donnée décrit le fonctionnement du système par des
Domaines d’horloge
équations, ou des formes conditionnelles.
Pièges à éviter

Projet

Bibliographie
ELEN0037
Architecture structurelle Remacle Matthieu
Déclaration
1 architecture struct of reg4 is bit0 Introduction
d_ff
2 signal int_clk : std_logic ; d0 q q0 Présentation du cours
d
clk Présentation des concepts
3 begin
Présentation des outils
4 bit0 : d_ff bit1
d_ff Les bases du VHDL
5 port map (d0, int_clk , q0); d1 q q1
d Exemples introductifs
clk
6 bit1 : d_ff Une différence fondamentale

7 port map (d1, int_clk , q1); bit2


Syntaxe
d_ff
8 bit2 : d_ff d2 q2
d q Syntaxe de base

9 port map (d2, int_clk , q2); clk Déclarations parallèles

Déclarations séquentielles
10 bit3 : d_ff bit3
d_ff
11 port map (d3, int_clk , q3); d3
d q q3 Logique séquentielle

12 gate : and2 gate clk Base

and2 Machines d’état


13 port map (en, clk , int_clk ) ; a y int_clk
b Optimisation du code
14 end architecture struct ;
Optimisation sur la vitesse

I Utilisation d’éléments déjà configurés, Optimisation sur l’aire

Optimisation de la puissance
I Description d’interconnexion via les port map,
I Notions avancées
Définition de signal,
Domaines d’horloge

Pièges à éviter
Utilité
Projet
Une architecture structurelle décrit les interconnexion entre différents blocs
Bibliographie
ELEN0037
Architecture comportementale Remacle Matthieu
Particularité
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs

Une différence fondamentale

I Syntaxe
Ce type d’architecture instancie des éléments déjà décrit. Une instanciation
Syntaxe de base
est formée comme suit :
Déclarations parallèles

Un nom : pour identifier l’instanciation, Déclarations séquentielles

Un composant : qui est instancié, Logique séquentielle


Des connexions : effectuées grâce à l’opération port map, qui indique Base

Machines d’état
comment interconnecter les éléments.
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
ELEN0037

Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Section 2 Les bases du VHDL


Exemples introductifs

Une différence fondamentale

Les bases du VHDL Syntaxe


Syntaxe de base

Subsection 2 Déclarations parallèles

Déclarations séquentielles

Logique séquentielle
Une différence fondamentale
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
ELEN0037
Simulation vs Synthèse Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Une simulation est décomposée en deux étapes : Les bases du VHDL


Exemples introductifs
I Analyse du code, avec exécution de celui-ci. Chaque signaux voit alors des Une différence fondamentale
transaction programées,
Syntaxe
I Application des transactions. Syntaxe de base

Déclarations parallèles
Ainsi, les transactions ne sont jamais effectuées immédiatement, puisqu’elles sont
Déclarations séquentielles
effectuées après l’analyse complète du code !
Logique séquentielle
Base

Lors de la synthèse, en revanche, tout est exécuté en parallèle. Il peut donc y Machines d’état

avoir une différence entre le circuit qu’on imagine, et la simulation de celui-ci. Il Optimisation du code

convient donc d’avoir les règles ci-dessus en tête, afin de bien faire comprendre Optimisation sur la vitesse

Optimisation sur l’aire


au compilateur ce que vous voulez !
Optimisation de la puissance

Notions avancées
Domaines d’horloge

Piè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
Section 3 Une différence fondamentale

Syntaxe

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
ELEN0037
Exécution séquentielle et parallèle Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts


Fondamental Présentation des outils

I Les bases du VHDL


A l’extérieur d’un process, les instructions s’exécutent en parallèle
Exemples introductifs
I A l’intérieur d’un process, elle s’exécutent séquentiellement Une différence fondamentale

Syntaxe
Syntaxe de base
I Ainsi, certaines instructions sont plus spécifiques à une exécution parallèle,
Déclarations parallèles
telles que les instructions de choix : Déclarations séquentielles

Si une variable vaut x , alors une autre variable vaudra y Logique séquentielle
Ce genre d’instruction peut être exécutée en parallèle puisque on peut Base

vérifier cette phrase à tout moment. Machines d’état

I En revanche, une instruction du type : Optimisation du code

Une variable vaut x , puis si une autre variable change, alors elle vaudra y Optimisation sur la vitesse

Optimisation sur l’aire


Ne peut pas s’exécuter en permanence puisqu’elle attend des changement. Optimisation de la puissance

I Les instructions plus spécifiques parallèle peuvent être aussi dans des Notions avancées
process, puisqu’elle ne prenne qu’un temps d’exécution ! Domaines d’horloge

Piè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

Subsection 1 Une différence fondamentale

Syntaxe

Syntaxe de base 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
ELEN0037
Syntaxe de base Remacle Matthieu

Introduction
Présentation du cours

Fonction Exemple ou règle Présentation des concepts

Présentation des outils


−− Commentaire sur une ligne
Commentaire
entity reg4 is −− Déclaration de l’ entité Les bases du VHDL
Exemples introductifs
I Caractères alphabétiques, chiffre ou Une différence fondamentale

underscores Syntaxe
I Doit démarrer avec un caractère Syntaxe de base

Déclarations parallèles
alphabétique
Déclarations séquentielles

Identificateurs I Ne peut se terminer avec un


Logique séquentielle
underscore Base

I Ne peut contenir deux underscore Machines d’état

successifs Optimisation du code


Optimisation sur la vitesse
I Insensible à la casse ; Optimisation sur l’aire

Optimisation de la puissance
I and, or, nor, etc...
Notions avancées
Mots réservés I if, else, elsif, for, etc...
Domaines d’horloge

I entity, architecture, etc... Pièges à éviter

Projet

Bibliographie
ELEN0037

Remacle Matthieu

Introduction
Présentation du cours
Fonction Exemple ou règle Présentation des concepts

Présentation des outils


Real literal : 0, 23, 2E+4, etc...
Les bases du VHDL
Integer literal : 23.1, 42.7, 2.9E-3, etc...
Exemples introductifs

Nombres Base literal : 2#1101#, 8#15#, Une différence fondamentale

10#13#, 16#D#, etc... Syntaxe


Syntaxe de base
Underscore : 2_867_918,
Déclarations parallèles
2#0010_1100_1101# Déclarations séquentielles

’ A’ −− caractère Logique séquentielle


" A string " −− Chaîne de caractère Base

" A string in a " " A string " " . " Machines d’état
Caractères et chaînes
B"0100011" −− Chaîne binaire Optimisation du code

X"9F6D3" −− Chaîne hexadécimale Optimisation sur la vitesse

5B#11# = B"00011" −− Chaîne à taille fixe Optimisation sur l’aire

Optimisation de la puissance

Notions avancées
Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037
Notation EBNF Remacle Matthieu

Introduction
Définition Présentation du cours

Métalanguage permettant de décrire avec précision la syntaxe d’un langage Présentation des concepts

Présentation des outils


comme le VHDL.
Les bases du VHDL
Fonction Exemple ou règle Exemples introductifs

Définition : ⇐ Affectation <= nom_variable := expression; Une différence fondamentale

Syntaxe
Optionnel : [ ] Fonction <= nom_fonction [ (arguments) ];
Syntaxe de base
Déclaration_de_process <=
Déclarations parallèles
process is Déclarations séquentielles

{ définition_process } Logique séquentielle


0 ou plus : {}
begin Base

{ déclarations } Machines d’état

end process; Optimisation du code

Déclaration_case <= Optimisation sur la vitesse

Optimisation sur l’aire


case expression is
Optimisation de la puissance
Répétition : ... déclaration
Notions avancées
{...}
Domaines d’horloge
end case; Pièges à éviter
liste : {"delimiteur"...} Liste_identificateurs <= identificateur {, ...}
Projet
Ou : | mode <= in | out | inout
Bibliographie
ELEN0037
Constantes Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Syntaxe Les bases du VHDL


Exemples introductifs
constant identificateur {, ...} : sous-type [ := expression ] Une différence fondamentale

Syntaxe
Exemples :
Syntaxe de base

Déclarations parallèles
1 constant number_of_bytes : integer := 4;
Déclarations séquentielles
2 constant number_of_bits : integer := 8∗number_of_bytes;
Logique séquentielle
3 constant size_limit , count_limit : integer := 255;
Base
4 constant prop_delay : time := 3ns;
Machines d’état

Usage : Optimisation du code


Optimisation sur la vitesse
I Similaire aux déclarations préprocesseur en C.
Optimisation sur l’aire

I Pratique pour rendre le code lisible. Optimisation de la puissance

Notions avancées
Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037
Variables Remacle Matthieu

Introduction
Présentation du cours
Syntaxe Présentation des concepts

variable identificateur {, ...} : sous−type [ := expression ] Présentation des outils

Les bases du VHDL


variable_à_assigner <= nom := expression; Exemples introductifs

Une différence fondamentale

Exemples :
Syntaxe
Syntaxe de base
1 variable number_of_bytes : integer := 4;
Déclarations parallèles
2 variable size_limit , count_limit : integer := 255; Déclarations séquentielles
3 variable prop_delay : time := 3ns;
Logique séquentielle
4
Base
5 number_of_bytes := 2; Machines d’état

6 number_of_bits := number_of_bytes ∗ 8; Optimisation du code


Optimisation sur la vitesse
Usage :
Optimisation sur l’aire

I Similaire aux variables C. Optimisation de la puissance

I Pas de signification physique. Notions avancées


Domaines d’horloge
I Ne peut être accessible que par un process (De manière générale : à Pièges à éviter

déclarer dans un process) Projet

Bibliographie
ELEN0037
Variables 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

Attention ! Syntaxe de base

Déclarations parallèles
Différent d’une affectation de signal ! La variable est modifiée tout de suite, le Déclarations séquentielles
signal entraîne une modification future !
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
ELEN0037
Type Remacle Matthieu

Introduction
Syntaxe Présentation du cours

Présentation des concepts


type identificateur is type_definition ;
Présentation des outils
subtype identificateur is subtype_definition ;
Les bases du VHDL
Exemples introductifs
type_definition <= range expression (to | downto) expression; Une différence fondamentale
subtype_definition <= type [range expression (to | downto ) expression ]
Syntaxe
Syntaxe de base
Exemples :
Déclarations parallèles

1 type players is range 0 to 4; Déclarations séquentielles

2 type days is 0 to 7; Logique séquentielle

3 subtype bit_index is integer range 31 downto 0; Base

Machines d’état

Usage : Optimisation du code


I Contraindre des constantes, variables, etc... à certaines valeurs ; Optimisation sur la vitesse

Optimisation sur l’aire


I Très utile pour la lisibilité du code ; Optimisation de la puissance

Remarque Notions avancées

I On peut déclarer des types avec des entiers ou des flottants ; Domaines d’horloge

Pièges à éviter
I La valeur par défaut est la première déclarée (plus petite si to, plus grande
Projet
si downto)
Bibliographie
ELEN0037
Type Remacle Matthieu
Enumérations
Introduction
Présentation du cours

Syntaxe Présentation des concepts

Présentation des outils


type identificateur is type_definition ;
Les bases du VHDL
Exemples introductifs
type_definition <= (( identificateur | caractère ) {, ...}) ;
Une différence fondamentale

Exemples : Syntaxe
Syntaxe de base
1 type player is (Player1, Player2, Player3, CPU) Déclarations parallèles

2 type days is (Mon, Tue, Wed, Thu, Fri , Sat, Sun) Déclarations séquentielles

3 Logique séquentielle

4 variable today : days; Base

Machines d’état
5 today := Mon;
Optimisation du code
Usage : Optimisation sur la vitesse

I Optimisation sur l’aire


Facilité de lecture du code,
Optimisation de la puissance
I Optimisation
Notions avancées
Remarque Domaines d’horloge

Pièges à éviter
I Il s’agit d’un type mais avec des noms, donc ce qui s’applique aux types
Projet
s’applique aux énumérations également.
Bibliographie
ELEN0037
Types Remacle Matthieu
Prédéfinis
Introduction
Booléens : type boolean is ( false , true ) ;
Présentation du cours
Bits : type bits is (’0’, ’1’) ; Présentation des concepts

std_ulogic : ou std_logic Présentation des outils

1 type std_ulogic is ( ’ U’, −− Un initialisé Les bases du VHDL

2 ’ X ’, −− Inconnu fort Exemples introductifs

Une différence fondamentale


3 ’0’, −− Zéro fort
Syntaxe
4 ’1’, −− Un fort
Syntaxe de base
5 ’ Z ’, −− Haute impédance Déclarations parallèles

6 ’ W’, −− Inconnu faible Déclarations séquentielles

7 ’ L ’, −− Zero faible Logique séquentielle


8 ’ H’, −− On faible Base

9 ’−’) ; −− Don’t care Machines d’état

Optimisation du code
Caractères : type character is (nul , soh, ’ ’, ’∗’, ’1’, ’ A ’, ’...’) ;
Optimisation sur la vitesse

Optimisation sur l’aire


Remarque
Optimisation de la puissance

Pour le type std_logic, il convient d’inclure une librairie : Notions avancées


Domaines d’horloge
1 library ieee ; Pièges à éviter

2 use ieee . std_logic_1164. all ;


Projet

Bibliographie
ELEN0037
Types Remacle Matthieu
Tableaux
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Syntaxe Les bases du VHDL

array_def <= array (discrete_range {, ...}) of elements Exemples introductifs

Une différence fondamentale


discrete_range <! discrete | expression ( to | downto ) expression
Syntaxe
Syntaxe de base
Exemples : Déclarations parallèles

Déclarations séquentielles
1 type word is array (0 to 31) of std_logic ;
Logique séquentielle
2
Base
3 type controller_state is ( initial , idle , active , error ) ; Machines d’état

4 type state_counts is array ( controller_state range idle to error ) of natural ; Optimisation du code
5 Optimisation sur la vitesse

6 variable buffer : word; Optimisation sur l’aire

Optimisation de la puissance
7
8 buffer (0) := 0; Notions avancées
Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037
Types Remacle Matthieu
Tableaux - multidimensionnels
Introduction
Présentation du cours
Exemple :
Présentation des concepts

1 type table16x8 is array(0 to 16, 0 to 8) of std_logic ; Présentation des outils

2 constant 7seg: table16x8 := ( Les bases du VHDL


3 " 00111111", −− 0 Exemples introductifs

4 " 00000110", −− 1 Une différence fondamentale

5 " 01011011", −− 2 Syntaxe

6 " 01001111", −− 3 Syntaxe de base

Déclarations parallèles
7 " 01100110", −− 4
Déclarations séquentielles
8 " 01101101", −− 5
Logique séquentielle
9 " 01111101", −− 6
Base
10 " 00000111", −− 7 Machines d’état

11 " 01111111", −− 8
Optimisation du code
12 " 01101111", −− 9 Optimisation sur la vitesse

13 " 01110111", −− A Optimisation sur l’aire

14 " 01111100", −− B Optimisation de la puissance

15 " 00111001", −− C Notions avancées

16 " 01011110", −− D Domaines d’horloge

17 " 01111001", −− E Pièges à éviter

18 " 01110001"); −−F Projet

Bibliographie
ELEN0037
Attributs 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


Un attribut fournit une information sur un élément :
Syntaxe
I Entité,
Syntaxe de base

I Architecture, Déclarations parallèles

Déclarations séquentielles
I type,
Logique séquentielle
I ... Base

Machines d’état
Les attributs disponibles vont être fonction de sur quoi porte l’attribut.
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
ELEN0037
Attributs Remacle Matthieu
de tableaux
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Syntaxe : Les bases du VHDL


Exemples introductifs

A’left(N) borne gauche Une différence fondamentale

A’right(N) borne droite Syntaxe

A’low(N) valeur minimale Syntaxe de base

Déclarations parallèles
A’high(N) valeur maximale
Déclarations séquentielles
A’range(N) variation maximale d’index
Logique séquentielle
A’downrange(N) variation maximale d’index
Base
A’length(N) taille du tableau Machines d’état

A’ascending vrai si les index de A sont croissantes


Optimisation du code
A’element sous type des éléments Optimisation sur la vitesse
Remarque : Optimisation sur l’aire

I N représente la dimension étudiée. Optimisation de la puissance

Notions avancées
Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037
Attributs Remacle Matthieu
de signaux
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Syntaxe : Les bases du VHDL


Exemples introductifs

Une différence fondamentale


S’delayed(T) signal S décalé de T
Syntaxe
S’Stable(T) vrai si S a été stable pendant T Syntaxe de base
S’quiet(T) vrai si S a été stable depuis T Déclarations parallèles

S’transaction vrai si il y a eu une transaction sur S Déclarations séquentielles

S’event vrai si il y a un évènement sur S au pas de simulation présent Logique séquentielle

S’active vrai si il y a une transaction su S au pas de simulation présent Base

Machines d’état
S’last_event temps depuis le dernier évènement
S’last_active temps depuis la dernière transaction Optimisation du code
Optimisation sur la vitesse
S’last_value dernière valeur avant le dernier évènement
Optimisation sur l’aire
Remarque :
Optimisation de la puissance
I Beaucoup de ces attributs sont utilisés pour des vérifications de timing. Notions avancées
Domaines d’horloge

Piè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

Subsection 2 Une différence fondamentale

Syntaxe

Déclarations parallèles 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
ELEN0037
Opérateurs Remacle Matthieu

Introduction
Syntaxe Présentation du cours

and, or , nand, nor, xor , xnor, not −− logiques Présentation des concepts

+, −, & −− additifs Présentation des outils

∗, /, mod, rem −− multiplicatifs Les bases du VHDL

abs, ∗∗ −− divers Exemples introductifs

Une différence fondamentale


<=, := −− assignation
Syntaxe
=> −− association
Syntaxe de base
sll , srl , sla , sra , rol , ror −− décalage Déclarations parallèles

=, /=, <, <=, >, >= −− relations Déclarations séquentielles

Logique séquentielle
Exemples :
Base

1 X(1) <= (a(3) and not(s (1) ) and not (s (0) ) Machines d’état

2 or (b(3) and not(s (1) ) and s(0) ) Optimisation du code


3 or (c (3) and s(1) and not(s (0) ) ) Optimisation sur la vitesse

4 or (d(3) and s(1) and s(0) ) ; Optimisation sur l’aire

Optimisation de la puissance
5 bit_vector <= bit_vector sll 2;
Notions avancées
Usage : Domaines d’horloge
I Ecriture d’équations logiques et arithmétiques Pièges à éviter

Remarques : Projet
I Attention à la priorité des opérations !
Bibliographie
ELEN0037
Condition with - select - when Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts


Syntaxe Présentation des outils

with expression select Les bases du VHDL


nom := {expression when choix} Exemples introductifs

expression when choix Une différence fondamentale

Syntaxe
Exemple :
Syntaxe de base

Déclarations parallèles
1 with S select
Déclarations séquentielles
2 O := E0 when "00";
Logique séquentielle
3 O := E1 when "01";
Base
4 O := E2 when "10"; Machines d’état

5 O := E3 when "11";
Optimisation du code
Optimisation sur la vitesse
Usage :
Optimisation sur l’aire
I Affectation d’une variable soumise aux valeurs de multiples choix, Optimisation de la puissance

Remarque : Notions avancées


Domaines d’horloge
I Les différents choix doivent être mutuellement exclusifs ! Pièges à éviter

Projet

Bibliographie
ELEN0037
Condition when - else Remacle Matthieu

Introduction
Présentation du cours

Syntaxe Présentation des concepts

Présentation des outils


nom := expression when condition
Les bases du VHDL
{else expression when condition}
Exemples introductifs
[ else expression ]; Une différence fondamentale

Exemple : Syntaxe
Syntaxe de base

1 result := a − b when mode = substract else a + b; Déclarations parallèles

Déclarations séquentielles

Usage :
Logique séquentielle
I Assignation soumise à condition Base

Machines d’état

Attention Optimisation du code


Optimisation sur la vitesse
Les différentes conditions ne sont pas forcément mutuellement exclusives. Ainsi, si
Optimisation sur l’aire
une condition arrive plusieurs fois, la première rencontrée aura priorité. Dès lors Optimisation de la puissance

attention lors de l’écriture de votre code, qui pourrait être implémenté


Notions avancées
différemment que prévu dans ces cas particuliers ! Domaines d’horloge

Voir [2] 167 - 172. Piè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

Subsection 3 Une différence fondamentale

Syntaxe

Déclarations séquentielles 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
ELEN0037
Condition If - then - else Remacle Matthieu

Introduction

Syntaxe Présentation du cours

Présentation des concepts


if condition then Présentation des outils

{ déclarations } Les bases du VHDL


{ elsif condition then} Exemples introductifs

{déclaration}} Une différence fondamentale

[ else Syntaxe

{ déclarations }] Syntaxe de base

Déclarations parallèles
end if ;
Déclarations séquentielles

Exemple : Logique séquentielle


Base
1 if (S0 = ’0’ and S1 = ’0’) then O <= E0; Machines d’état
2 elsif (S0 = ’1’ and S1 = ’0’) then O <= E1;
Optimisation du code
3 elsif (S0 = ’0’ and S1 = ’1’) then O <= E2; Optimisation sur la vitesse

4 elsif (S0 = ’1’ and S1 = ’1’) then O <= E3; Optimisation sur l’aire

5 else O <= ’−’; Optimisation de la puissance

6 end if ; Notions avancées


Domaines d’horloge
Usage : Pièges à éviter

I Choix simple ou série de choix simples Projet

Bibliographie
ELEN0037
Condition case - when Remacle Matthieu

Introduction
Syntaxe Présentation du cours

case expression is Présentation des concepts

Présentation des outils


(when choix => {déclaration})
{...} Les bases du VHDL
Exemples introductifs
end case
Une différence fondamentale

Syntaxe
choix <= (expression_simple | ensemble_valeurs | others) {|...}
Syntaxe de base
ensemble_valeurs <= expression (to | downto) expression; Déclarations parallèles

Déclarations séquentielles
Exemples :
Logique séquentielle
1 case day is Base
1 case S is
2 when Mon to Wed => Machines d’état
2 when "00" => O <= E0;
3 O <= ’1’; Optimisation du code
3 when "01" => O <= E1;
4 when Sun downto Fri => Optimisation sur la vitesse
4 when "10" => O <= E2; Optimisation sur l’aire
5 O <= ’0’;
5 when "11" => O <= E3; Optimisation de la puissance
6 when others =>
6 when others => O <= ’−’; Notions avancées
7 O <= ’Z’;
7 end case; Domaines d’horloge
8 end case;
Pièges à éviter

Usage : Projet
I Multiples choix sur une variable.
Bibliographie
ELEN0037
Boucles Remacle Matthieu

Introduction
Présentation du cours
Syntaxe
Présentation des concepts
for identificateur in ensemble Présentation des outils
loop while expression loop
loop
{ déclarations } { déclarations } Les bases du VHDL
{ déclarations } Exemples introductifs
end loop; end loop;
end loop; Une différence fondamentale

ensemble <= expression (to | downto) expression; Syntaxe


Syntaxe de base

Déclarations parallèles
exit [ when condition ]; Déclarations séquentielles
next [ when condition ];
Logique séquentielle
Base

Machines d’état
Usage
Optimisation du code
I Les différentes boucles peuvent toute effectuer la même chose...
Optimisation sur la vitesse
I ... mais un choix judicieux du type de boucle permet un code plus concis et Optimisation sur l’aire

lisible. Optimisation de la puissance

I Notions avancées
exit permet de quitter la boucle,
Domaines d’horloge
I next permet de passer à l’itération suivante, sans exécuter les instructions Pièges à éviter

qui suivent. Projet

Bibliographie
ELEN0037
Boucles Remacle Matthieu
Exemples
Introduction
Présentation du cours

Présentation des concepts


Compteur modulo 16 avec reset
Présentation des outils
architecture behavior of counter is
begin Les bases du VHDL
incrementer: process is Exemples introductifs
variable count_value : integer := 0;
Une différence fondamentale
begin
count <= count_value; Syntaxe
loop
Library IEEE; Syntaxe de base
loop
Use IEEE.std_logic_1164.all ;
wait until clk = ’1’ or reset = ’1’; Déclarations parallèles
entity counter is
exit when reset = ’1’; Déclarations séquentielles
port ( clk , reset : in std_logic ;
count_value := (count_value + 1) mod 16;
count: out integer ) ;
count <= count_value; Logique séquentielle
end entity counter ;
end loop; Base
count_value := 0;
Machines d’état
count <= count_value;
wait until reset = ’0’;
Optimisation du code
end loop;
Optimisation sur la vitesse
end process incrementer;
end architecture behavior ; Optimisation sur l’aire

Optimisation de la puissance

0 100 200 300 400 ns


Notions avancées
reset Domaines d’horloge

count 0 1 2 3 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 Pièges à éviter


clk
Projet

Bibliographie
ELEN0037
Boucles Remacle Matthieu
Exemples
Introduction
Présentation du cours

Présentation des concepts


Décodeur 3-8
Présentation des outils
Library IEEE;
Use IEEE.std_logic_1164.all ; Les bases du VHDL
entity dec38 is Exemples introductifs
port ( E0, E1, E2: in std_logic ;
Une différence fondamentale
S: out std_logic_vector (7 downto 0));
end entity dec38; Syntaxe
Syntaxe de base
architecture behavior of dec38 is
begin Déclarations parallèles
process (E0, E1, E2) Déclarations séquentielles
variable N : integer ;
begin Logique séquentielle
N := 0;
Base
if E0 = ’1’ then N := N+1; end if;
Machines d’état
if E1 = ’1’ then N := N+2; end if;
if E2 = ’1’ then N := N+4; end if;
Optimisation du code

S <= "00000000"; Optimisation sur la vitesse

for I in 0 to 7 loop Optimisation sur l’aire


if I = N then
Optimisation de la puissance
S(I ) <= ’1’;
end if ; Notions avancées
end loop;
Domaines d’horloge
end process;
end behavior; Pièges à éviter

Projet

Bibliographie
ELEN0037

Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Section 4 Les bases du VHDL


Exemples introductifs

Une différence fondamentale

Logique séquentielle Syntaxe


Syntaxe de base

Subsection 1 Déclarations parallèles

Déclarations séquentielles

Logique séquentielle
Base
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
ELEN0037
Exemples introductif Remacle Matthieu
Flip flop sensible au flanc
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils


1 library ieee ; I Liste de sensibilité sur clk, Les bases du VHDL
2 use ieee . std_logic_1164. all ;
I Détection d’un flanc montant Exemples introductifs
3 entity dff_logic is port ( Une différence fondamentale
4 d, clk : in std_logic ; if ( clk ’ event and clk = ’1’) then
Syntaxe
5 q : out std_logic ) ; I Absence de else : le flip flop
Syntaxe de base
6 end dff_logic ; conserve sa valeur. Déclarations parallèles

7 Déclarations séquentielles

8 architecture example of dff_logic is Remarque Logique séquentielle

9 begin La plupart des simulateurs ne supportent


Base

Machines d’état
10 process ( clk ) begin pas un else après un
11 if ( clk ’ event and clk = ’1’) then Optimisation du code
if ( clk ’ event and clk = ’1’) then.
Optimisation sur la vitesse
12 q <= d; En effet, cette construction serait Optimisation sur l’aire
13 end if ; ambiguë. (L’évènement ne durant qu’un Optimisation de la puissance
14 end process; court instant...) Notions avancées
15 end example; Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037
Exemples introductif Remacle Matthieu
Flip flop sensible à la valeur
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils


library ieee ;
Les bases du VHDL
use ieee . std_logic_1164. all ;
Exemples introductifs
entity ff_logic is port ( Une différence fondamentale
d, clk : in std_logic ;
Syntaxe
q : out std_logic ) ; Syntaxe de base
end ff_logic ; Déclarations parallèles

Déclarations séquentielles
I Liste de sensibilité sur clk et d,
architecture example of ff_logic is Logique séquentielle
I Absence de else pour la mémoire
begin Base

Machines d’état
process ( clk , d) begin
if ( clk = ’1’) then Optimisation du code
Optimisation sur la vitesse
q <= d;
Optimisation sur l’aire
end if ;
Optimisation de la puissance
end process;
Notions avancées
end example; Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037
Exemples introductif Remacle Matthieu
Flip flop resetable
Introduction
Présentation du cours

Présentation des concepts

use ieee . std_logic_1164. all ; Présentation des outils

entity ffr_logic is port ( Les bases du VHDL

d, clk , rst : in std_logic ; Exemples introductifs

Une différence fondamentale


q : out std_logic ) ;
end ffr_logic ; Syntaxe
Syntaxe de base
I Fonction rising_edge,
Déclarations parallèles
architecture example of ffr_logic is I Reset dans la liste de sensibilité, Déclarations séquentielles
begin
I Reset asynchrone, Logique séquentielle
process ( clk , rst ) begin Base
I Si reset synchrone, le mettre dans le
if ( rst = ’1’) then Machines d’état

q <= ’0’; if du rising_edge


Optimisation du code
elsif rising_edge( clk ) then Optimisation sur la vitesse

q <= d; Optimisation sur l’aire

Optimisation de la puissance
end if ;
end process; Notions avancées
Domaines d’horloge
end example;
Pièges à éviter

Projet

Bibliographie
ELEN0037
Exemples introductif Remacle Matthieu
Le wait
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL

Il est possible d’utiliser une clause wait : Exemples introductifs

Une différence fondamentale

architecture example2 of dff_logic is Syntaxe


begin Syntaxe de base

process begin Déclarations parallèles

Déclarations séquentielles
wait until ( clk = ’1’) ;
q <= d; Logique séquentielle
Base
end process;
Machines d’état
end example2;
Optimisation du code
Cela fonctionnera, mais le wait until doit être la première déclaration du Optimisation sur la vitesse

process, rendant impossible l’ajout d’un reset. Optimisation sur l’aire

Optimisation de la puissance

Notions avancées
Domaines d’horloge

Piè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

Subsection 2 Une différence fondamentale

Syntaxe

Machines d’état 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
ELEN0037
Introduction Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL

Jusqu’à présent, le design d’une machine d’état demandait les étapes suivantes : Exemples introductifs

Une différence fondamentale


I Définition d’un diagramme d’état,
Syntaxe
I Transformation des états en signaux binaire, Syntaxe de base

I Déclarations parallèles
Tables de Karnaugh,
Déclarations séquentielles
I Détermination des équations minimales.
Logique séquentielle
En VHDL, il est bien entendu possible de faire pareil, mais il y a plus simple : Base

Machines d’état
I Définition du diagramme d’état,
Optimisation du code
I Code. Optimisation sur la vitesse

Optimisation sur l’aire

Optimisation de la puissance

Notions avancées
Domaines d’horloge

Pièges à éviter

Projet

Bibliographie
ELEN0037
Différents styles Remacle Matthieu

Introduction

Le codage d’une machine d’état peut se faire de plusieurs façon, selon vos Présentation du cours

Présentation des concepts


habitudes, facilités, etc...
Présentation des outils
De manière générale, une machine d’état se présente de la sorte :
Les bases du VHDL
I Etat suivant (NS), Exemples introductifs

I Sorties (O), Une différence fondamentale

Syntaxe
I Bloc mémoire (M).
Syntaxe de base

Déclarations parallèles

Déclarations séquentielles

in NS O out Logique séquentielle


M Base

Machines d’état

clk Optimisation du code


Optimisation sur la vitesse

rst Optimisation sur l’aire

Optimisation de la puissance
1 process : (NS + M + O),
Notions avancées
2 process : M + (NS + O), O + (NS + M), Domaines d’horloge

Pièges à éviter
3 process : NS + M + O.
Projet

Bibliographie
ELEN0037
Exemple Remacle Matthieu

Introduction
Présentation du cours
Modélisation d’un étudiant Présentation des concepts

Présentation des outils

Glande Les bases du VHDL


exam
etude
Exemples introductifs

etude soif soif Une différence fondamentale

etude exam Syntaxe


exam
Reussi Etudie Bois Rate
Syntaxe de base

Déclarations parallèles
etude soif
soif Déclarations séquentielles

Deprime Logique séquentielle


exam
Base

Machines d’état

Optimisation du code
I Modélisation des états de l’étudiant,
Optimisation sur la vitesse
I Modélisation des signaux (un professeur donne un examen ou non, l’humeur Optimisation sur l’aire

donne envie de boire, d’étudier ou rien de spécial), Optimisation de la puissance

I Notions avancées
Modélisation des jours (l’horloge du système), un seul état par jour (Un
Domaines d’horloge
étudiant, c’est simple...)
Pièges à éviter

Projet

Bibliographie
ELEN0037
Exemple Remacle Matthieu
3 process
Introduction
Présentation du cours

1 library ieee ; Présentation des concepts


2 use ieee . std_logic_1164. all ;
Présentation des outils
3
28 when Glande =>
4 entity student is port ( Les bases du VHDL
29 next_state <= Glande;
5 professor : in std_logic ;
30 if professor = Exam then Exemples introductifs
6 envy : in std_logic_vector (1 downto 0);
31 next_state <= Rate; Une différence fondamentale
7 day : in std_logic ;
32 else
8 stud_out : out std_logic_vector (2 downto 0));
33 if envy = Study then Syntaxe
9 end student;
34 next_state <= Etudie;
10 Syntaxe de base
35 elsif envy = Drink then
11 architecture proc_2 of student is Déclarations parallèles
36 next_state <= Bois;
12 type student_mood is (Glande, Bois, Etudie, Deprime,
37 end if ; Déclarations séquentielles
Reussi, Rate);
38 end if ;
13 Logique séquentielle
39
14 constant Exam : std_logic := ’1’;
40 when Bois => Base
15 constant Sleep : std_logic_vector (1 downto 0) := "00" ;
41 next_state <= Glande;
16 constant Study : std_logic_vector (1 downto 0) := "01" ; Machines d’état
42 if professor = Exam then
17 constant Drink : std_logic_vector (1 downto 0) := "10" ;
43 next_state <= Rate; Optimisation du code
18
44 else
19 signal present_state : student_mood := Glande; Optimisation sur la vitesse
45 if envy = Study then
20 signal next_state : student_mood := Glande;
46 next_state <= Etudie; Optimisation sur l’aire
21
47 elsif envy = Drink then Optimisation de la puissance
22 begin
48 next_state <= Bois;
23
49 end if ; Notions avancées
24 −− State process
50 end if ; Domaines d’horloge
25 state_calc : process ( professor , envy, present_state )
26 begin Pièges à éviter
27 case present_state is
Projet

Bibliographie
ELEN0037
Exemple Remacle Matthieu
3 process
Introduction
Présentation du cours
52 when Etudie =>
Présentation des concepts
53 next_state <= Glande;
54 if professor = Exam then Présentation des outils

55 next_state <= Reussi;


Les bases du VHDL
56 else
82 end case;
57 if envy = Study then Exemples introductifs
83 end process state_calc ;
58 next_state <= Etudie; Une différence fondamentale
84
59 elsif envy = Drink then
85 −− Sync process
60 next_state <= Deprime; Syntaxe
86 synchro: process(day)
61 end if ;
87 begin Syntaxe de base
62 end if ;
88 present_state <= next_state; Déclarations parallèles
63
89 end process synchro;
64 when Deprime => Déclarations séquentielles
90
65 next_state <= Deprime;
91 −− Output Logique séquentielle
66 if professor = Exam then
92 with present_state select
67 next_state <= Reussi; Base
93 stud_out <= "001" when Glande,
68 else
94 " 010" when Bois, Machines d’état
69 if envy = Study then
95 " 011" when Etudie,
70 next_state <= Etudie; Optimisation du code
96 " 100" when Deprime,
71 elsif envy = Drink then
97 " 101" when Reussi, Optimisation sur la vitesse
72 next_state <= Bois;
98 " 110" when Rate, Optimisation sur l’aire
73 end if ;
99 " 111" when others;
74 end if ; Optimisation de la puissance
100
75
101 end architecture proc_2;
76 when Rate => Notions avancées
77 next_state <= Bois; Domaines d’horloge
78
Pièges à éviter
79 when Reussi =>
80 next_state <= Bois; Projet

Bibliographie
ELEN0037
Exemple Remacle Matthieu
Simulation
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

1 2 3 us Les bases du VHDL


Exemples introductifs
/stud_out 1 3 4 5 2 1 3 5 2 1 2 6 2 1 2 1
Une différence fondamentale
/professor
/envy 0 1 2 0 1 0 2 0 2 0 Syntaxe
/day
Syntaxe de base

Déclarations parallèles
Légende : Déclarations séquentielles

stud_out : I 1 - Glande Logique séquentielle


I 2 - Bois Base

Machines d’état
I 3 - Etudie
I 4 - Déprime Optimisation du code
Optimisation sur la vitesse
I 5 - Réussi
Optimisation sur l’aire
I 6 - Rate Optimisation de la puissance

envy : I 0 - Sleep Notions avancées


I 1 - Study Domaines d’horloge

I 2 - Drink Pièges à éviter

Projet

Bibliographie
ELEN0037
Exemple Remacle Matthieu
Simulation
Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs

Une différence fondamentale

Syntaxe
Remarques :
Syntaxe de base
I Seulement deux process, mais l’affectation des sorties aurait pu être un Déclarations parallèles

process sensible au present_state, Déclarations séquentielles

I Dernier scénario : l’étudiant change d’envie trop rapidement et seule la Logique séquentielle
Base
dernière est reprise.
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
ELEN0037
Conclusion Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs
Autre styles :
Une différence fondamentale
I Modification des sorties dans le case, Syntaxe
I Processus de synchro intégré dans le processus de calcul d’état (liste de Syntaxe de base

Déclarations parallèles
sensibilité changée)
Déclarations séquentielles
I ...
Logique séquentielle
Base
Conclusion Machines d’état

A vous de trouver votre style de code ! 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
ELEN0037

Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs
Section 5 Une différence fondamentale

Syntaxe

Projet 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
ELEN0037
Objectifs et instruction 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


Objectif
Syntaxe
L’objectif de ce projet est de vous familiariser avec : Syntaxe de base

Déclarations parallèles
I La création d’un circuit électronique simple,
Déclarations séquentielles
I le VHDL. Logique séquentielle
Base
Ce projet consistera donc en un réalisation d’un système fonctionnel, soit sur Machines d’état

breadboard, soit, mieux, sur carte pré-trouée.


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
ELEN0037
Echéances Remacle Matthieu

Introduction
Présentation du cours
Trois étapes à ce projet :
Présentation des concepts
Vendredi 21 mars 2014 : Envoi par mail d’un bref descriptif de votre projet, avec Présentation des outils

I Description de maximum 5 lignes du projet, Les bases du VHDL


I Description de maximum 5 lignes de la structure du code, Exemples introductifs

Une différence fondamentale


avec le nombre de ressources utilisées,
I Matériel nécessaire en plus de la carte de développement. Syntaxe
Syntaxe de base
Cette description me permettra de voir si votre projet est
Déclarations parallèles
réalisable. Sinon, je vous enverrai quelques suggestions. Déclarations séquentielles

Vendredi 25 avril 2014 : Envoi par mail d’un rapport pour votre projet, avec Logique séquentielle

I Base
Le code VHDL,
Machines d’état
I Des simulations démontrant le bon fonctionnement du
Optimisation du code
code,
Optimisation sur la vitesse
I Les schémas électriques, Optimisation sur l’aire
I Toute autres informations que vous jugerez nécessaires. Optimisation de la puissance

Session : Démonstration de la réalisation en live Notions avancées


Domaines d’horloge
I Date fixée au début de la session,
Pièges à éviter
I Présentation orale d’environ 10-15 minutes.
Projet

Bibliographie
ELEN0037
Conseil - Réflexion Remacle Matthieu

Introduction
Présentation du cours

Présentation des concepts

Présentation des outils

Les bases du VHDL


Exemples introductifs

Phase la plus longue du projet. Ne vous y prenez pas 2 jours à l’avance ! Une différence fondamentale

Syntaxe
I Avant de vous lancez dans quoi que ce soit, réfléchissez ! Évaluez les
Syntaxe de base
ressources dont vous aurez besoin, vos diagrammes d’états, etc... Déclarations parallèles

I Quand vous écrivez du code, simulez dès que possible, Déclarations séquentielles

Logique séquentielle
I Quand vous faites des schématiques, lisez toutes les datasheets,
Base
I Essayez de trouver des exemples sur le net de circuits pour vous en inspirer, 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
ELEN0037
Conseil - Réalisation Remacle Matthieu

Introduction
I Par breadboard : le plus simple, mais attention aux court-circuits et faux Présentation du cours

contacts. Présentation des concepts

Présentation des outils


I Par carte pré-trouée : beaucoup plus propre, mais nécessite de faire de la
Les bases du VHDL
soudure.
Exemples introductifs

I Par PCB : perfection, mais difficile à réaliser. Une différence fondamentale

Syntaxe
La carte pré-trouée vous donnera les meilleurs résultats. Avant de souder votre
Syntaxe de base
carte définitive, entraînez-vous ! Allez voir des vidéos sur Youtube ! Déclarations parallèles

Exemple de composants utiles : Déclarations séquentielles

I Leds, Logique séquentielle


Base
I Afficheurs 7 segments,
Machines d’état

I Boutons poussoirs (Attention aux rebonds !) Optimisation du code

I Potentiomètres, Optimisation sur la vitesse

Optimisation sur l’aire


I Décodeurs, Optimisation de la puissance

I etc... Notions avancées


Domaines d’horloge

Attention Pièges à éviter

Vérifiez TOUJOURS les tensions d’alimentation ! Projet

Bibliographie
ELEN0037
Exemples 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


Utile : I Système domotique (gestion du chauffage, d’éclairage,
Syntaxe
etc...),
Syntaxe de base
I Système de gestion de la glycémie d’un patient, Déclarations parallèles
I Robot suiveur, Déclarations séquentielles

Jeux : I Mastermind, Logique séquentielle

I Tireur, Base

Machines d’état
I Simon,
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
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

Bon travail ! 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
ELEN0037
Bibliographie I
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
P.J. Ashenden.
The Designer’s Guide to VHDL. Syntaxe
Syntaxe de base
Systems on Silicon Series. Morgan Kaufmann, 2008. Déclarations parallèles
Déclarations séquentielles
K. Skahill and J. Legenhausen.
VHDL for programmable logic. Logique séquentielle
Base
Electrical engineering/digital desing. Addison-Wesley, 1996. Machines d’état

D.J. Smith. Optimisation du code


Optimisation sur la vitesse
Vhdl and verilog compared and contrasted-plus modeled example written in Optimisation sur l’aire
vhdl, verilog and c. Optimisation de la puissance

In Design Automation Conference Proceedings 1996, 33rd, pages 771–776. Notions avancées
IEEE, 1996. Domaines d’horloge
Pièges à éviter

Projet

Bibliographie

79/137

Vous aimerez peut-être aussi