electronique numérique - le language vhdl · fpga puces beaucoup plus grosse et complexe qu’une...

79
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 Electronique numérique Le language VHDL R Matthieu 10 mars 2014

Upload: others

Post on 24-Jul-2020

11 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 2: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 3: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 4: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 5: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 6: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 7: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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]

Page 8: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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...

Page 9: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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 !

Page 10: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 11: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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)

Page 12: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 13: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 14: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 15: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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...

Page 16: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 17: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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é !

Page 18: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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]

Page 19: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 20: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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...

Page 21: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 22: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 23: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 24: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 25: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 26: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 27: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 28: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 29: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 30: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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 !

Page 31: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 32: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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 !

Page 33: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 34: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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...

Page 35: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 36: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 37: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 38: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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)

Page 39: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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 !

Page 40: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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)

Page 41: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 42: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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 ;

Page 43: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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;

Page 44: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 45: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 46: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 47: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 48: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 49: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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 !

Page 50: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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 !

Page 51: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 52: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 53: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 54: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 55: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 56: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 57: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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;

Page 58: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 59: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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...)

Page 60: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 61: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 62: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 63: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 64: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 65: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 66: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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...)

Page 67: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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 ;

Page 68: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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;

Page 69: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 70: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 71: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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 !

Page 72: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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

Page 73: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 74: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.

Page 75: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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,

Page 76: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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 !

Page 77: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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,

Page 78: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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 !

Page 79: Electronique numérique - Le language VHDL · FPGA Puces beaucoup plus grosse et complexe qu’une CPLD. Avantages I Possibilités énormes en terme de fonctions implémentables,

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.