Vous êtes sur la page 1sur 252
Chapitre : Introduction Implantation des circuits numériques •Avec des éléments discrets •Avec des

Chapitre : Introduction

Implantation des circuits numériques •Avec des éléments discrets •Avec des microprocesseurs, micro contrôleurs, DSP •Avec des circuits à architecture programmable PAL, GAL, FPGA •Avec des circuits intégrés ASIC

PLD : Programmable Logic Device, CPLD : Complex PLD, PAL: Programmable Array Logic, GAL: Generic Array Logic, FPGA : Field Programmable Gate Array, ASIC : application-specific integrated circuit

Formation VHDL

Introduction

Vahid MEGHDADI

1

Circuit avec des éléments discrets •Circuit figé •Circuit imprimé difficile à modifier •Intégration limitée

Circuit avec des éléments discrets

•Circuit figé

•Circuit imprimé difficile à modifier

•Intégration limitée

•Coût élevé

•Justifié pour de petits circuits

limitée •Coût élevé •Justifié pour de petits circuits Formation VHDL Introduction Vahid MEGHDADI 2

Formation VHDL

Introduction

Vahid MEGHDADI

2

Circuit à fonctionnement programmable •A base des microprocesseurs, Microcontrôleurs, DSP •En modifiant le programme

Circuit à fonctionnement programmable

•A base des microprocesseurs, Microcontrôleurs, DSP

•En modifiant le programme on modifie la fonction

•Plus souple que les circuits à éléments discrets

•Vitesse limitée (mais qui augmente sans cesse)

•Parallélisme compliqué (mais faisable)

•Intégration encore limitée

•Adapté à des opérations séquentielles

Formation VHDL

Microprocesseur
Microprocesseur
Microprocesseur

Microprocesseur

Microprocesseur Mémoire
Microprocesseur Mémoire
Microprocesseur Mémoire
Microprocesseur Mémoire
Mémoire

Mémoire

Microprocesseur Mémoire
Microprocesseur Mémoire

Introduction

Pér

iph

éri

que

Vahid MEGHDADI

3

Circuit à architecture programmable •Une quantité importante de portes logiques •Des matrices d'interconnections

Circuit à architecture programmable

•Une quantité importante de portes logiques

•Des matrices d'interconnections programmables

•Modification du fonctionnement sur le circuit (ISP)

•Souplesse assurée

•Coût de fabrication faible (pour un nombre limité)

•Intégration forte

•Adapté à des applications gourmandes en logique

•Temps de développement dépend de l'application

• Compliqué pour implanter des algorithmes complexes

de l'application • Compliqué pour implanter des algorithmes complexes Formation VHDL Introduction Vahid MEGHDADI 4

Formation VHDL

Introduction

Vahid MEGHDADI

4

Les ASIC Application Specific Integrated Circuit • Coût très bas mais pour de gros tirages

Les ASIC

Application Specific Integrated Circuit

• Coût très bas mais pour de gros tirages

• Temps de développement important

• Pas de modifications une fois fabriqué

• Nécessitant un fondeur pour la fabrication

Formation VHDL

Introduction

une fois fabriqué • Nécessitant un fondeur pour la fabrication Formation VHDL Introduction Vahid MEGHDADI 5

Vahid MEGHDADI

5

ASIC ou FPGA ? ASIC s High performance Low power Low cost in high volumes

ASIC ou FPGA ?

ASICs

High performance

Low power

Low cost in high volumes

FPGAs

Low development cost

Short time to market

Reconfigurability

volumes FPGA s Low development cost Short time to market Reconfigurability Formation VHDL Introduction Vahid MEGHDADI

Formation VHDL

Introduction

Vahid MEGHDADI

6

Evolution : Méthodes de CAO Conception physique (layout) Conception structurelle TTL Conception logique Synthèse

Evolution : Méthodes de CAO

Conception physique (layout) Conception structurelle TTL Conception logique Synthèse comportemental
Conception physique (layout)
Conception structurelle TTL
Conception logique
Synthèse comportemental

Conception fonctionnelle RTL Programmation Verilog/VHDL

Formation VHDL

Introduction

Vahid MEGHDADI

7

Démonstrateurs Circuit de développement SpartanIII Formation VHDL Introduction Vahid MEGHDADI 8

Démonstrateurs

Circuit de développement SpartanIII

Démonstrateurs Circuit de développement SpartanIII Formation VHDL Introduction Vahid MEGHDADI 8
Démonstrateurs Circuit de développement SpartanIII Formation VHDL Introduction Vahid MEGHDADI 8
Démonstrateurs Circuit de développement SpartanIII Formation VHDL Introduction Vahid MEGHDADI 8

Formation VHDL

Introduction

Vahid MEGHDADI

8

Exemple Une carte polyvalente et reconfigurable Extension JTAG Formation VHDL Introduction Vahid MEGHDADI 9

Exemple

Une carte polyvalente et reconfigurable

Exemple Une carte polyvalente et reconfigurable Extension JTAG Formation VHDL Introduction Vahid MEGHDADI 9
Exemple Une carte polyvalente et reconfigurable Extension JTAG Formation VHDL Introduction Vahid MEGHDADI 9

Extension

JTAG

Formation VHDL

Exemple Une carte polyvalente et reconfigurable Extension JTAG Formation VHDL Introduction Vahid MEGHDADI 9

Introduction

Exemple Une carte polyvalente et reconfigurable Extension JTAG Formation VHDL Introduction Vahid MEGHDADI 9
Exemple Une carte polyvalente et reconfigurable Extension JTAG Formation VHDL Introduction Vahid MEGHDADI 9

Vahid MEGHDADI

9

• Vitesse Logique (FPGA) ou software (µP et DSP) ? • Possibilité de parallélisme (calcul

Vitesse

Logique (FPGA) ou software (µP et DSP) ?

Possibilité de parallélisme (calcul dans l’espace ou dans le temps)

Exemple y=Ax²+Bx+C

DSP

FPGA

dans l’espace ou dans le temps) • Exemple y=Ax²+Bx+C D S P FPGA Formation VHDL Introduction

Formation VHDL

Introduction

Vahid MEGHDADI

10

Intérêt de la logique par rapport à µP • Jeu d’instruction peut ne pas contenir

Intérêt de la logique par rapport à µP

Jeu d’instruction peut ne pas contenir l’opération voulue

Processeur peut contenir des circuits qui ne servent à rien dans notre application (Par exemple URAT)

Processeur a besoin de la mémoire pour garder le programme et les valeurs intermédiaires

Le nombre de bits pour présenter les données peut être trop ou peu

Parallélisme très limité par software

Formation VHDL

Introduction

Vahid MEGHDADI

11

Fonction combinatoires Utilisation d’un PLA ( Programmable Logic Array ) ou PLD I I 1

Fonction combinatoires

Utilisation d’un PLA (Programmable Logic Array) ou PLD

I I 1 I 0 2 PLA1 PLA2 PLA3 O 0 O 2 O 3
I
I 1
I
0
2
PLA1
PLA2
PLA3
O 0
O 2
O 3
O 1

Le circuit peut être reprogrammé sans changer le circuit imprimé à condition de n’utiliser qu’un seul PLA ou prévoir l’interconnexion entre PLA indépendant des modifs éventuelles!

Formation VHDL

Introduction

Vahid MEGHDADI

12

PLA Formation VHDL Vahid MEGHDADI 13

PLA

PLA Formation VHDL Vahid MEGHDADI 13
PLA Formation VHDL Vahid MEGHDADI 13

Formation VHDL

Vahid MEGHDADI

13

CPLD Complex Programmable Logic Device Les CPLD contiennent un grand nombre de PLD interconnectés par

CPLD

Complex Programmable Logic Device

Les CPLD contiennent un grand nombre de PLD interconnectés par des liaisons programmables

I/O

 

PLD

I/O

 

PLD

I/O

 

PLD

Formation VHDL

Global

Interconnection

Matrix

Introduction

 

I/O

PLD

 

I/O

PLD

 

I/O

PLD

Vahid MEGHDADI

14

Architecture des FPGA Feild Programmable Gate Array CLB= Configurable Logic Block Formation VHDL CLB CLB

Architecture des FPGA Feild Programmable Gate Array

CLB= Configurable Logic Block

Formation VHDL

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

CLB

Introduction

Vahid MEGHDADI

15

FPGA architecture interne BLE= Basic Logic Element Inputs K L U T D F F

FPGA architecture interne

BLE= Basic Logic Element

Inputs

K

LUT

D FF

Out

Programmable

IO

Programmable Logic (CLB)

Clock

BLE # 1 N I BLE N #
BLE
#
1
N
I
BLE N
#
IO Programmable Logic (CLB) Clock BLE # 1 N I BLE N # N Outputs I

N

Outputs

I

Inputs

Clock

Clock BLE # 1 N I BLE N # N Outputs I Inputs Clock Programmable Routing

Programmable

Routing

Formation VHDL

Introduction

Vahid MEGHDADI

16

Architecture de CLB Inputs Look-Up Table (LUT) Out = f (in0, in1, in2, in3) State

Architecture de CLB

Inputs Look-Up Table (LUT) Out = f (in0, in1, in2, in3) State Clock Enable Formation
Inputs
Look-Up
Table
(LUT)
Out = f (in0, in1, in2, in3)
State
Clock
Enable
Formation VHDL
Introduction

Out

Vahid MEGHDADI

17

FPGA Xilinx Plusieurs familles de FPGA •Série 4000 •Spartan •Spartan (II, IIE et III) •Virtex

FPGA Xilinx

Plusieurs familles de FPGA •Série 4000 •Spartan •Spartan (II, IIE et III) •Virtex (II, pro, IV et V)

Formation VHDL

Introduction

Vahid MEGHDADI

18

Spartan Le nombre de broches I/O, le nombre de CLB différentie les FPGA de la

Spartan

Le nombre de broches I/O, le nombre de CLB différentie les FPGA de la famille.

nombre de broches I/O, le nombre de CLB différentie les FPGA de la famille. Formation VHDL

Formation VHDL

Introduction

Vahid MEGHDADI

19

Formation VHDL Spartan II Ajout de la RAM Introduction Vahid MEGHDADI 20

Formation VHDL

Spartan II

Ajout de la RAM

Formation VHDL Spartan II Ajout de la RAM Introduction Vahid MEGHDADI 20

Introduction

Vahid MEGHDADI

20

La famille Spartan II Formation VHDL Introduction Vahid MEGHDADI 21

La famille Spartan II

La famille Spartan II Formation VHDL Introduction Vahid MEGHDADI 21

Formation VHDL

Introduction

Vahid MEGHDADI

21

La famille Virtex •Les LUT transformables en registre à décalage •Plus de CLB, plus de

La famille Virtex

•Les LUT transformables en registre à décalage •Plus de CLB, plus de mémoire, plus de slices par CLB •Plus de I/O •Multiplieurs câblés à partir de Virtex II •Microprocesseur embarqué (PowerPC)

Formation VHDL

Introduction

Vahid MEGHDADI

22

La famille Virtex Formation VHDL Introduction Vahid MEGHDADI 23

La famille Virtex

La famille Virtex Formation VHDL Introduction Vahid MEGHDADI 23

Formation VHDL

Introduction

Vahid MEGHDADI

23

La famille Virtex-II pro Formation VHDL Introduction Vahid MEGHDADI 24

La famille Virtex-II pro

La famille Virtex-II pro Formation VHDL Introduction Vahid MEGHDADI 24

Formation VHDL

Introduction

Vahid MEGHDADI

24

Conception circuit o Les blocs reconfigurables o Structure régulière de “logic cells”, connectée par un

Conception circuit

o

Les blocs reconfigurables

o

Structure régulière de “logic cells”, connectée par un réseau d’interconnexions

o

La configuration est stocké dans un SRAM, qui doit être chargé au démérrage

EPROM
EPROM

Formation VHDL

Introduction

Vahid MEGHDADI

25

HDL (VHDL / Verilog) Synthesize Netlist Map Place Route Bitstream Formation VHDL Design flow o
HDL (VHDL / Verilog)
HDL
(VHDL /
Verilog)

Synthesize

Netlist

Map

Place

Route

Bitstream

Formation VHDL

Design flow

o

Hardware design is traditionally done by modeling the system in a hardware description language

o

An FPGA “compiler” (synthesis tool) generates a netlist,

o

which is then mapped to the FPGA technology,

o

the inferred components are placed on the chip,

o

and the connecting signals are routed through the interconnection network.

Introduction

Vahid MEGHDADI

26

HDL (VHDL / Verilog) Synthesize Netlist Map Place Route Bitstream Formation VHDL Synthèse HDL process
HDL (VHDL / Verilog)
HDL
(VHDL /
Verilog)
Synthesize
Synthesize
Netlist Map Place Route Bitstream
Netlist
Map
Place
Route
Bitstream

Formation VHDL

Synthèse HDL

process(clk, reset)

begin

if reset = ‚1‘ then output <= ‚0‘; elsif rising_edge(clk) then output <= a XOR b;

end if;

end process; RegisterRegister aa DD QQ ≈≈≈≈ bb clkclk clearclear resetreset
end process;
RegisterRegister
aa
DD
QQ
≈≈≈≈
bb
clkclk
clearclear
resetreset

Introduction

outputoutput

Vahid MEGHDADI

27

HDL (VHDL / Verilog) Synthesize Netlist Map Place Route Bitstream Formation VHDL Technology Mapping
HDL (VHDL / Verilog) Synthesize Netlist
HDL
(VHDL /
Verilog)
Synthesize
Netlist
Map Place Route Bitstream
Map
Place
Route
Bitstream

Formation VHDL

Technology Mapping

RegisterRegister

aa DD QQ outputoutput ≈≈≈≈ bb clkclk clearclear resetreset
aa
DD
QQ
outputoutput
≈≈≈≈
bb
clkclk
clearclear
resetreset

Introduction

Vahid MEGHDADI

28

HDL (VHDL / Verilog) Synthesize Netlist Map Place Route Bitstream Formation VHDL Placement & Routage
HDL (VHDL / Verilog) Synthesize Netlist Map Place
HDL
(VHDL /
Verilog)
Synthesize
Netlist
Map
Place
Route
Route
Bitstream
Bitstream

Formation VHDL

Placement & Routage

Synthesize Netlist Map Place Route Bitstream Formation VHDL Placement & Routage Introduction Vahid MEGHDADI 29

Introduction

Vahid MEGHDADI

29

Insertion d’un microprocesseur (SoC) IP core MicroBlaze (soft) PowerPC(dure), Multiplieurs dures, RAM, etc MicroBlaze

Insertion d’un microprocesseur (SoC)

IP core MicroBlaze (soft) PowerPC(dure), Multiplieurs dures, RAM, etc

MicroBlaze Block RAM 18 bit Multipliers
MicroBlaze
Block RAM
18 bit
Multipliers

Configuration

Logic Block

(CLB)

Digital Clock Manager

Formation VHDL

Programmable I/Os

Introduction

Vahid MEGHDADI

30

Système embarqué traditionnel Power Supply Ethernet Audio CLK CLK MAC Codec GP I/O Interrupt Timer

Système embarqué traditionnel

Power Supply Ethernet Audio CLK CLK MAC Codec GP I/O Interrupt Timer Controller Address Decode
Power Supply
Ethernet
Audio
CLK CLK
MAC
Codec
GP I/O
Interrupt
Timer
Controller
Address
Decode
Unit
CPU
UART
L
(uP / DSP)
Co-
C
Memory
Proc.
custom
CLK
Controller
IF-logic
SRAM
SRAM
SRAM
Display
SDRAM
SDRAM
Controller

Formation VHDL

Introduction

Images by H.Walder

Vahid MEGHDADI

31

Système embarqué traditionnel Power Supply Ethernet CLK Audio CLK MAC FPGA Codec GP I/O Interrupt

Système embarqué traditionnel

Power Supply Ethernet CLK Audio CLK MAC FPGA Codec GP I/O Interrupt Timer Controller Address
Power Supply
Ethernet
CLK
Audio
CLK
MAC
FPGA
Codec
GP I/O
Interrupt
Timer
Controller
Address
Decode
Unit
CPU
UART
L
(uP / DSP)
Co-
C
Memory
Proc.
custom
CLK
Controller
IF-logic
SRAM
SRAM
SRAM
Display
SDRAM
SDRAM
Controller

Formation VHDL

Introduction

Images by H.Walder

Vahid MEGHDADI

32

Formation VHDL System on Chip Configurable (CSoC) Audio Codec EPROM Power Supply L C S

Formation VHDL

System on Chip Configurable (CSoC)

Audio

Codec

EPROM

System on Chip Configurable (CSoC) Audio Codec EPROM Power Supply L C S R A M
Power Supply
Power Supply

Power Supply

Power Supply

L

C

SRAM

SRAM

SRAM

 
 

Introduction

SDRAM SDRAM
SDRAM SDRAM
SDRAM

SDRAM

SDRAM SDRAM
SDRAM SDRAM
SDRAM

SDRAM

Images by H.Walder

Vahid MEGHDADI

33

Avantages Moins de composantes physiques Cycle de conception plus rapide Programmable sur le circuit (Mise

Avantages

Moins de composantes physiques

Cycle de conception plus rapide

Programmable sur le circuit (Mise à jour, modification

)

Plus performant grâce à l’intégration Horloge peut être plus rapide dans la puce que sur le circuit imprimé Optimisation entre modules possible

Formation VHDL

Introduction

Vahid MEGHDADI

34

CPUs Embarqués PowerPC 405 (hard core) – 32 bit embedded PowerPC RISC architecture – Up

CPUs Embarqués

PowerPC 405 (hard core)

32 bit embedded PowerPC RISC architecture

Up to 450 MHz

2x 16 kB instruction and data caches

Memory management unit (MMU)

Hardware multiply and divide

Coprocessor interface

Embedded in Virtex-II Pro and Virtex-4

PLB (Proc. Local Bus) and OCM (On-Chip memory) bus interfaces

MicroBlaze (soft core)

32 bit RISC architecture

2-64 kB instruction and data caches

Barrel Shifter

Hardware multiply and divide

OPB (On-chip Peripheral Bus) and LMB (Local Memory Bus) bus interfaces

Formation VHDL

Introduction

– OPB (On-chip Peripheral Bus) and LMB (Local Memory Bus) bus interfaces Formation VHDL Introduction Vahid
– OPB (On-chip Peripheral Bus) and LMB (Local Memory Bus) bus interfaces Formation VHDL Introduction Vahid

Vahid MEGHDADI

35

Architecture de MicroBlaze Formation VHDL Introduction Vahid MEGHDADI 36

Architecture de MicroBlaze

Architecture de MicroBlaze Formation VHDL Introduction Vahid MEGHDADI 36

Formation VHDL

Introduction

Vahid MEGHDADI

36

CSoC Design Flow (Hardware) Platform HDL Description (VHDL / Verilog) Description de plate-forme est assemblée

CSoC Design Flow (Hardware)

Platform HDL Description (VHDL / Verilog)
Platform HDL
Description
(VHDL /
Verilog)

Description de plate-forme est assemblée dans un netlist Soit, il est mapé, placé et routé dans le FPGA

Synthesize Netlist Generation Netlist Netlist VHDLVHDL Map Place XST Xilinx ISE (Map, Place & Route)
Synthesize Netlist
Generation
Netlist
Netlist
VHDLVHDL
Map
Place XST
Xilinx ISE
(Map, Place & Route)
(VHDL Edit, Map,
Place & Route)
Route
Bitstream
Bitstream
Formation VHDL
Introduction

Soit, il est importé dans ISE pour être utilisé dans un système plus large à base de FPGA

Vahid MEGHDADI

37

Platform Description Netlist Generation Netlist XST or ISE (Map, Place & Route) Bitstream Formation VHDL
Platform Description
Platform
Description
Netlist Generation Netlist XST or ISE (Map, Place & Route) Bitstream
Netlist
Generation
Netlist
XST or ISE
(Map, Place & Route)
Bitstream

Formation VHDL

CSoC Design Flow (Software)

Library Generation
Library
Generation

*.aVHDL CSoC Design Flow (Software) Library Generation * . h Update Bitstream Compile & Link *.elf

* . h *.h

Update Bitstream
Update
Bitstream
Compile & Link
Compile &
Link
*.elf
*.elf

User sources

*.h
*.h
*.c
*.c
Bitstream Program with executable Code
Bitstream
Program
with
executable
Code

Introduction

Compile & Link *.elf User sources *.h *.c Bitstream Program with executable Code Introduction Vahid MEGHDADI

Vahid MEGHDADI

38

Circuit de développement Formation VHDL Introduction Vahid MEGHDADI 39

Circuit de développement

Formation VHDL

Circuit de développement Formation VHDL Introduction Vahid MEGHDADI 39

Introduction

Vahid MEGHDADI

39

Formation VHDL Vahid MEGHDADI 40

Formation VHDL

Vahid MEGHDADI

40

Chapitre : Introduction A VHDL Introduction au langage Formation VHDL VHDL Introduction A VHDL Vahid

Chapitre : Introduction A VHDL

Introduction au langage

Formation VHDL

VHDL

Introduction A VHDL

Vahid MEGHDADI

41

V H D L V VHSIC (Very High Speed Integradted Circuit) H Hardware D Description

V H D L

V

VHSIC

(Very High Speed Integradted Circuit)

H

Hardware

D

Description

L

Language

Formation VHDL

Introduction A VHDL

Vahid MEGHDADI

42

Un peu d’histoire •Début des années 80 •la nécessité d’un langage non ambigu des systèmes

Un peu d’histoire

•Début des années 80 •la nécessité d’un langage non ambigu des systèmes matériels pour intégration à grande échelle •normalisation pour être indépendant du fournisseur

•Norme définitive adoptée en 1987 : IEEE Std 1076

•La norme a été revue en 93, 2000 et 2002

•Les premiers outils de synthèse en 1995

Formation VHDL

Introduction A VHDL

Vahid MEGHDADI

43

Qu’est ce que on attend de VHDL •VHDL est utilisé pour •Décrire des circuits numériques

Qu’est ce que on attend de VHDL

•VHDL est utilisé pour •Décrire des circuits numériques •Décrire des machines à états •Préparer des signaux de test pour simuler cette écriture

Formation VHDL

Introduction A VHDL

Vahid MEGHDADI

44

Qu’est ce que on attend des outils de synthèse •Une fois le programme en VHDL

Qu’est ce que on attend des outils de synthèse

•Une fois le programme en VHDL est écrit, il faut maintenant le réaliser •Synthèse logique : générer des fonctions logiques à partir du programme •Implémentation : adapter la logique synthétisée à la cible (FPGA, CPLD) •Génération : Générer un fichier binaire a télé-charger sur le « device »

Formation VHDL

Introduction A VHDL

Vahid MEGHDADI

45

Démarche de synthèse Cahier des charges Partitionnement logicielle/matérielles Formation VHDL Spec matérielles ASIC

Démarche de synthèse

Cahier des charges

Partitionnement logicielle/matérielles

Formation VHDL

Spec matérielles

ASIC

CPLD

Discret

Cartes

Spec logicielles

VHDL Spec matérielles ASIC CPLD Discret Cartes Spec logicielles Software Introduction A VHDL Vahid MEGHDADI 46

Software

Introduction A VHDL

Vahid MEGHDADI

46

Formation VHDL Niveau d’abstraction Synthèse comportemental Synthèse logique Placement routage Comportemental RTL

Formation VHDL

Niveau d’abstraction

Synthèse

comportemental

Synthèse

logique

Placement

routage

Comportemental

RTL

Logique

Layout

Introduction A VHDL

VHDL

Vahid MEGHDADI

47

Formation VHDL Introduction A VHDL Vahid MEGHDADI 48

Formation VHDL

Introduction A VHDL

Vahid MEGHDADI

48

Circuit Circuit principal principal Chapitre : Structure du VHDL Il existe 5 catégories d’unité de

Circuit

Circuit

principal

principal

Circuit Circuit principal principal Chapitre : Structure du VHDL Il existe 5 catégories d’unité de conception

Chapitre : Structure du VHDL

Il existe 5 catégories d’unité de conception

•L’entité (mot clé entity) Décrit un système vu extérieur (boîte noire)

•L’architecture (mot clé architecture) Décrit l’intérieur (le fonctionnement) d’une boîte noire.

•La configuration (mot clé configuration)

Package

(librairie)

Formation VHDL

•La déclaration de paquetage (mot clé package)

•Le corps de paquetage (mot clé package body)

Structure du VHDL

Vahid MEGHDADI

49

Domaine concurrent et séquentiel Description d’un système matériel •description d’action concurrentes (ex.

Domaine concurrent et séquentiel

Description d’un système matériel •description d’action concurrentes (ex. plusieurs blocs d’un circuit peuvent fonctionner en parallèle •description d’action en séquence (ex. automates)

Deux jeux d’instructions en VHDL

•Instructions concurrentes : elles s’exécutent en même temps

•Instructions séquentielles : elles s’exécutent les une après les autres

Formation VHDL

Structure du VHDL

Vahid MEGHDADI

50

Classes d’objets Quatre classes d’objets en VHDL : •Les constantes Comme les autres langages, elles

Classes d’objets

Quatre classes d’objets en VHDL :

•Les constantes

Comme les autres langages, elles ont une valeur fixe

•Les variables

Comme les autres langages, elles ont une valeur immédiatement modifiable par affectation

•Les signaux

Notion nouvelle, la valeur ne se modifie pas immédiatement

•fichier (n’est pas abordé dans ce cours)

Formation VHDL

Structure du VHDL

Vahid MEGHDADI

51

Types d’objets •Les objets d’un programme VHDL sont tous typés. Avant toute utilisation d’une constante,

Types d’objets

•Les objets d’un programme VHDL sont tous typés. Avant toute utilisation d’une constante, d’une variable ou d’un signal, il faut les déclarer.

•La déclaration des objets s’effectue uniquement dans la partie déclarative du programme.

Formation VHDL

Structure du VHDL

Vahid MEGHDADI

52

Les opérateurs Par ordre de priorité croissante •Opérateur logique : and, or, nand, nor, xor,

Les opérateurs

Par ordre de priorité croissante

•Opérateur logique : and, or, nand, nor, xor, xnor, sll, srl, sra, rol, ror

•Opérateur de comparaison : =, /=, <, <=, >, >=

•Opérateur d’addition : +, -, &

•Opérateur mathématique : *, /, mod, rem

•Opérateur de signe : -

•Opérateur divers : **, abs, not

Formation VHDL

Structure du VHDL

Vahid MEGHDADI

53

Programmer en VHDL D é finition de l ’ entit é (bo î te noire

Programmer en VHDL

Définition de lentité (boîte noire avec les ports dentrée/sortie)

Définition de larchitecture interne de cette boîte noire

Déclaration des constantes, des signaux, des fonctions, des procédures, des blocs hiérarchiques utilisés dans le programme

Corps du programme consistant

Les instructions concurrentes

Les instructions séquentielles encapsulées dans des « process »

(Les commentaires sont précédés de deux tirés : -- exemple)

Formation VHDL

Structure du VHDL

Vahid MEGHDADI

54

Formation VHDL Structure du VHDL Vahid MEGHDADI 55

Formation VHDL

Structure du VHDL

Vahid MEGHDADI

55

Formation VHDL Vahid MEGHDADI 56

Formation VHDL

Vahid MEGHDADI

56

Chapitre : Entité •L'entité définit les ports (vue externe) et leur mode (in, out, inout,

Chapitre : Entité

•L'entité définit les ports (vue externe) et leur mode (in, out, inout, buffer)

•Paramétrer le modèle (paramètres génériques)

•Syntaxe:

entity nom_de_l_entite is {generic(liste_des_parametres)} {port(liste_des_port_avec_leutr_mode)} end {nom_de_l_entite}

Formation VHDL

Entité

Vahid MEGHDADI

57

Entité Entity name P o r t n a m e s P o r

Entité

Entity name

Port names

Port type

name P o r t n a m e s P o r t t y

ENTITY nand_gate IS PORT(

a

: IN STD_LOGIC;

b

: IN STD_LOGIC;

z

: OUT STD_LOGIC

); END nand_gate;

Reserved words

Port modes (data flow directions)

Semicolon

No Semicolon after last port

Même chose mais en moins lisible !!

ENTITY nand_gate IS PORT(a:IN STD_LOGIC;b: IN STD_LOGIC;z : OUT STD_LOGIC );END nand_gate;

Formation VHDL

Entité

Vahid MEGHDADI

58

Exemples d’entité entity NAND2 is port(E1,E2: in std_logic; S: out std_logic); end NAND2; entity COMPT

Exemples d’entité

entity NAND2 is port(E1,E2: in std_logic; S: out std_logic); end NAND2;

entity COMPT is generic(N : integer := 20); port(E1: in std_logic; S: out std_logic_vector(4 downto 0)); end COMPT;

Formation VHDL

Entité

E1

E2

E

/N

S

S

Vahid MEGHDADI

59

Exemple d’entité entity BASCULE_D is port (D,EN : in std_logic; Q, Q_B : out std_logic);

Exemple d’entité

entity BASCULE_D is port (D,EN

: in std_logic;

Q, Q_B : out std_logic);

End BASCULE_D

Formation VHDL

Entité

Bascule D

D

EN

D EN
D EN
D EN
D EN
D EN
D EN

Q

Q_B

Vahid MEGHDADI

60

Chapitre : Architecture •Définition de signaux et d'autres objets internes •Description du fonctionnement ou de

Chapitre : Architecture

•Définition de signaux et d'autres objets internes

•Description du fonctionnement ou de la structure de l’entité à l’aide d’instructions concurrentes

Syntaxe:

architecture nom_de_l_architecture of nom_de_l_entite is {partie déclarative}

begin

{suite d’instructions concurrentes} end nom_de_l_architecture;

Formation VHDL

Architecture

Vahid MEGHDADI

61

Affectation aux signaux •Affectation des signaux se fait par le signe <= Signal A,B,C: std_logic;

Affectation aux signaux

•Affectation des signaux se fait par le signe <=

Signal

A,B,C: std_logic; --declaration

A

<= not B ;

B

<= ‘1’ ;

C

<= A and B ;

Formation VHDL

Architecture

Vahid MEGHDADI

62

Structure de l'architecture entity circuit is port (CLK, RST: in std_logic; B_DAT: inout std_logic_vector(7 downto

Structure de l'architecture

entity circuit is port (CLK, RST: in std_logic; B_DAT: inout std_logic_vector(7 downto 0); );

end circuit;

architecture comport of circuit is {partie déclarative de l'architecture}

begin

{zone des instructions concurrentes

}

{comme des affectations, des process; } end comport;

Formation VHDL

Architecture

Vahid MEGHDADI

63

Exemple d’architecture 1 A Demi- additionneur SUM B C A SUM A B SUM C

Exemple d’architecture 1

A

Demi-

additionneur

SUM

B C A SUM A B SUM C B 0 0 0 0 C 0
B
C
A
SUM
A
B
SUM
C
B
0
0
0
0
C
0
1
1
0
1
0
1
0
1
1
0
1

Formation VHDL

Architecture

Vahid MEGHDADI

64

Description flot de données entity DEMI_ADD is port (A,B: in std_logic; SUM,C: out std_logic); end

Description flot de données

entity DEMI_ADD is port (A,B: in std_logic; SUM,C: out std_logic); end DEMI_ADD;

architecture COMPORT of DEMI_ADD is begin

SUM <= A xor B; --instruction concurrente C <= A and B; --instruction concurrente end COMPORT;

Formation VHDL

Architecture

Vahid MEGHDADI

65

Formation VHDL Exemple d’une bascule RS R S Q QB entity RS_FF (R,S: in std_logic;

Formation VHDL

Exemple d’une bascule RS

R

S

Q

QB

entity RS_FF (R,S: in std_logic; Q,QB:out std_logic);

end entity;

architecture FPGA of RS_FF is begin

Q <= R nand QB; QB <= S nand Q;

end

Architecture

Vahid MEGHDADI

66

Chapitre : Types en VHDL Tout objet en VHDL doit être typé. Un type définit

Chapitre : Types en VHDL

Tout objet en VHDL doit être typé. Un type définit •l'ensemble des valeurs que l'on peut affecter à l'objet •l'ensemble des opérations disponibles sur l'objet

Formation VHDL

Types en VHDL

Vahid MEGHDADI

67

Déclaration de type VHDL possède les types: • scalaires dont la valeur est constituée d'un

Déclaration de type

VHDL possède les types:

scalaires dont la valeur est constituée d'un seul élément •composites dont la valeur comprend plusieurs éléments •accès ou pointeurs •fichier •On n'étudie que les deux premiers

Formation VHDL

Types en VHDL

Vahid MEGHDADI

68

•énuméré Type scalaire type T_FEU is (ROUGE, ORANGE, VERT); signal FEU : T_FEU; •entier signal

•énuméré

Type scalaire

type T_FEU is (ROUGE, ORANGE, VERT); signal FEU : T_FEU;

•entier

signal COMPT : integer range 0 to 15;

•flottante

signal MASSE : REAL; -- de -1e38 à 1e38

•physique qui est un entier avec l'unité correspondant

type TIME is range to --64 bits units fs; ps=1000 fs; ns=1000 ps; hr=60 min; end units; T <= 5 ns;

Formation VHDL

Types en VHDL

Vahid MEGHDADI

69

Type énuméré Ce type déclare toutes les valeurs qu'un objet de ce type peut prendre.

Type énuméré

Ce type déclare toutes les valeurs qu'un objet de ce type peut prendre.

type T_FEU is (ROUGE, ORANGE, VERT); signal FEU : T_FEU; type ETAT is (INIT, LECT, ECR, ATT);

Les types ci-dessous sont des types prédéfinis

type BOOLEAN is (FALSE, TRUE); type BIT is ('0' , '1');

Formation VHDL

Types en VHDL

Vahid MEGHDADI

70

Type entier (scalaire) C'est un type prédéfini type integer is range -2_147_483_648 to 2_147_483_647 On

Type entier (scalaire)

C'est un type prédéfini

type integer is range

-2_147_483_648 to 2_147_483_647

On peut définir un sous type :

subtype nom_de_sous_type is type_de_base contraintes; subtype NATURAL is INTEGER range 0 to INTEGER'high

Formation VHDL

Types en VHDL

Vahid MEGHDADI

71

Logique à valeurs multiples (scalaire) •Il existe des signaux logiques à plusieurs états: 0, 1,

Logique à valeurs multiples (scalaire)

•Il existe des signaux logiques à plusieurs états:

0, 1, haute impédance, don’t care, non déterminé, …

•Le type "std_logic" remplace le type "bit" pour permettre d’avoir 9 états différents •Utilisation de librairie IEEE.std_logic_1164 •exemple

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

signal

SORTIE, Q: std_logic;

SORTIE <= Z; -- haute impédance Q <= 1;

Formation VHDL

Types en VHDL

Vahid MEGHDADI

72

Le type std_logic ‘L’ V DD Le type std_logic : ‘0’ ‘ non initialisé U
Le type std_logic
‘L’
V DD
Le type std_logic :
‘0’
‘ non initialisé
U ’
‘ X ’
non connu
‘H’
‘1’
‘ 0 ’
logique 0
Strong drive
‘ 1
logique 1
‘ haute impédance
Z ’
‘ W ’
non connu
‘ L ’
logique 0
weak drive
‘ H ’
logique 1
‘0’
‘ - ’
don’t care
Formation VHDL
Types en VHDL
Vahid MEGHDADI
73
Type composite Deux types sont considérés : tableau et record •Un tableau est un ensemble

Type composite

Deux types sont considérés : tableau et record

•Un tableau est un ensemble d’éléments du même type

•Pour un ensemble de std_logic, nous avons le type prédéfini std_logic_vector : on définit la taille et l'ordre des éléments

signal BUS1 : std_logic_vector (7 downto 0);

signal REG : std_logic_vector (0 to 31);

•On peut aussi définir un type tableau d’éléments composites

type MEMO is array (15 downto 0) of std_logic_vector(7 downto 0);

signal A,B : MEMO;

Formation VHDL

Types en VHDL

Vahid MEGHDADI

74

•Déclaration: Accès aux éléments A,B: std_logic_vector(15 downto 0); •Directement: A(3) <= ‘ 1 ’ ;

•Déclaration:

Accès aux éléments

A,B: std_logic_vector(15 downto 0);

•Directement:

A(3) <= 1; B(15) <= 0;

•Par tranches

A(15 downto 12) <= "1011";

B(0 to 2) <= "111" ;

-- erreur

A(10 downto 2) <= B(15 downto 7);

Formation VHDL

Types en VHDL

Vahid MEGHDADI

75

Accès aux éléments de tableaux • Par agrégat • Notation positionnelle A(3 downto 1) <=

Accès aux éléments de tableaux

• Par agrégat

• Notation positionnelle

A(3 downto 1) <= ('0', '1', B(15)); B <= ('1','1',others => '0');

• Notation par nommage

A <= (1 =>'1', 3 =>'1',others =>'0');

• Par concaténation

signal A,B,C,D : std_logic; signal BYTE : std_logic_vector(7 downto 0); signal Z_BUS,A_BUS : std_logic_vector(3 downto 0); Z_BUS <= A & C & D & B; BYTE <= Z_BUS & A_BUS;

Formation VHDL

Types en VHDL

Vahid MEGHDADI

76

Exemples SIGNAL a: STD_LOGIC; SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL c: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL

Exemples

SIGNAL a: STD_LOGIC; SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL c: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL d: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL e: STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL f: STD_LOGIC_VECTOR(8 DOWNTO 0); ……….

a <= ‘1’;

b <= ”0000”;

c <= B”0000”;

d <= ”0110_0111”;

e <= X”AF67”;

f <= O”723”;

-- Base Binaire par défaut

-- Base Binaire explicite

-- Utiliser ‘_’ pour augmenter la lisibilité

-- Base Hexadecimale

-- Base Octale

Formation VHDL

Types en VHDL

Vahid MEGHDADI

77

Exemples •type MY_WORD is array (15 downto 0) of std_logic; •signal MEM_ADDR: MY_WORD; •MEM_ADDR(10 downto

Exemples

•type MY_WORD is array (15 downto 0) of std_logic; •signal MEM_ADDR: MY_WORD; •MEM_ADDR(10 downto 5) <="101010";

•type YOUR_WORD is array (0 to 15) of std_logic; •signal DATA_WORD: YOUR_WORD := “1101100101010110”;

•type VAR is array (0 to 7) of integer; •constant SETTING: VAR := (2,4,6,8,10,12,14,16);

•type MY_MATRIX is array (0 to 3, 1 to 2) of natural; •variable DATA_ARR: MY_MATRIX :=((0,2), (1,3), (4,6), (5,7)); •DATA_ARR(0,2) := 12; •type array_name is array (type range <>) of element_type;-- taille est -- définie quand on déclare l'objet •type MATRIX is array (integer range <>) of integer; •variable MATRIX8: MATRIX (2 downto -8) := (3, 5, 1, 4, 7, 9, 12, 14, 20, 18);

Formation VHDL

Types en VHDL

Vahid MEGHDADI

78

Record Ensemble d'éléments de types différents type NAME is record identifier : type_indication; : identifier

Record

Ensemble d'éléments de types différents

type NAME is

record identifier : type_indication;

:

identifier : type_indication; end record;

type PAQUET is record mot_unique : std_logic_vector (7 downto 0); data : std_logic_vector (23 downto 0); CRC : std_logic_vector( 5 downto 0); num : integer range 0 to 1023; end record; signal paq_rec : PAQUET; paq_rec.CRC <= "111000";

Formation VHDL

Types en VHDL

Vahid MEGHDADI

79

Formation VHDL Vahid MEGHDADI 80

Formation VHDL

Vahid MEGHDADI

80

Chapitre: zone concurrente •Le corps de l'architecture est une zone concurrente: les instructions s'exécutent

Chapitre: zone concurrente

•Le corps de l'architecture est une zone concurrente: les instructions s'exécutent toutes en même temps (en parallèle)

Formation VHDL

A B I C
A
B
I
C

S

I <= A or B;

S <= I

and C

S <= I

I <= A or B;

and C

Zone concurrente

Vahid MEGHDADI

81

with HEX select Instruction with LED<= "1111001" when "0001", --1 "0100100" when

with HEX select

Instruction with

LED<= "1111001" when "0001",

--1

"0100100" when "0010",

--2

"0110000" when "0011",

--3

"0011001" when "0100",

--4

"0010010" when "0101",

--5

"0000010" when "0110",

--6

"1111000" when "0111",

--7

"0000000" when "1000",

--8

"0010000" when "1001",

--9

"0001000" when "1010",

--A

"0000011" when "1011",

--b

"1000110" when "1100",

--C

"0100001" when "1101",

--d

"0000110" when "1110",

--E

"0001110" when "1111",

--F

"1000000" when others;

--0

Formation VHDL

Zone concurrente

--F "1000000" when others; --0 Formation VHDL Zone concurrente 7 Circuit combinatoire 4 Vahid MEGHDADI 82

7

Circuit

combinatoire

4

Vahid MEGHDADI

82

LABEL1: Instruction when -- optional label SIG_NAME <= <expression> when <condition> else

LABEL1:

Instruction when

-- optional label

SIG_NAME <= <expression> when <condition> else <expression> when <condition> else <expression>;

B_DAT <= REG1 when ENA1='0' else REG2 when ENA2='0'else "ZZZZZZZZ";

ENA1 8 8 REG1 ENA2 8 REG2
ENA1
8
8
REG1
ENA2
8
REG2

Formation VHDL

Zone concurrente

Vahid MEGHDADI

83

Exemple entity CIR is port (A,B,C,D : in std_logic; s : out std_logic); end CIR;

Exemple

entity CIR is port (A,B,C,D : in std_logic; s : out std_logic);

end CIR;

architecture COMPORT1 of CIR is Begin S <= (A and B) nor (C nand D); end COMPORT1;

is Begin S <= (A and B) nor (C nand D); end COMPORT1; architecture COMPORT2 of

architecture COMPORT2 of CIR is signal inter1, inter2: std_logic; Begin inter1 <= A and B; inter2 <= C nand D; S <= inter1 nor inter2; end COMPORT2;

Formation VHDL

Zone concurrente

Vahid MEGHDADI

84

Formation VHDL Exemple ALU entity ADDER is port (A,B :in std_logic_vector(7 downto 0); SEL :
Formation VHDL Exemple ALU entity ADDER is port (A,B :in std_logic_vector(7 downto 0); SEL :

Formation VHDL

Exemple ALU

entity ADDER is port (A,B :in std_logic_vector(7 downto 0); SEL : in std_logic; S : out std_logic_vector(7 downto 0)); end ADDER;

architecture COMPORT of ADDER is Begin with SEL select S <= A+B when '0', A-B when others; -- S <= A+B when SEL=‘0’ else A-B; end COMPORT;

Zone concurrente

Vahid MEGHDADI

85

Formation VHDL Vahid MEGHDADI 86

Formation VHDL

Vahid MEGHDADI

86

Formation VHDL Vahid MEGHDADI 87

Formation VHDL

Vahid MEGHDADI

87

Formation VHDL Vahid MEGHDADI 88

Formation VHDL

Vahid MEGHDADI

88

Chapitre: zone séquentielle •En VHDL, une zone séquentielle existe dans laquelle une suite d'instructions

Chapitre: zone séquentielle

•En VHDL, une zone séquentielle existe dans laquelle une suite d'instructions s’exécutent les unes après les autres.

•Cette zone se trouve dans les process, fonctions et procédures.

Formation VHDL

Zone séquentielle

Vahid MEGHDADI

89

Process • Process est une instruction concurrente complexe à écrire dans une architecture • Process

Process

• Process est une instruction concurrente complexe à écrire dans une architecture

• Process définit une zone séquentielle

• Les différents process d'une architecture s'exécutent tous en parallèle

Formation VHDL

Process

Vahid MEGHDADI

90

Syntaxe de process •Syntaxe de process : label : -- optionnel process (liste de sensibilité)

Syntaxe de process

•Syntaxe de process :

label : -- optionnel process (liste de sensibilité) {partie déclarative}

begin

suite d’instructions séquentielles end process;

•Un process s'exécute quand un des signaux de la liste de sensibilité change de valeur.

Formation VHDL

Process

Vahid MEGHDADI

91

Instructions séquentielles •Elles s'écrivent uniquement dans une zone séquentielle • instruction d'attente

Instructions séquentielles

•Elles s'écrivent uniquement dans une zone séquentielle

• instruction d'attente (wait)

• instruction d'affectation (temporisée)

• instruction conditionnelle (if)

• instruction case

• instruction de boucle

Formation VHDL

Process

Vahid MEGHDADI

92

Instructions wait Elle s’utilise pour suspendre un process jusqu’un événement • wait until condition; •wait

Instructions wait

Elle s’utilise pour suspendre un process jusqu’un événement

wait until condition; •wait until A=‘ 1 ’; •wait until CLK’event and CLK=’1’;

wait for time expression; •wait for 5 ns;

wait on signal; •wait on A , B

Formation VHDL

Process

Vahid MEGHDADI

93

Instructions if if condition then sequential statements [elsif condition then sequential statements ] [elsif

Instructions if

if condition then sequential statements [elsif condition then sequential statements ] [elsif condition then sequential statements ]

[else

sequential statements ]

end if;

Formation VHDL

Process

Vahid MEGHDADI

94

Instruction case Permet de sélectionner une suite d’instructions à exécuter en fonction de la valeur

Instruction case

Permet de sélectionner une suite d’instructions à exécuter en fonction de la valeur d’une expression.

case EXPRESSION is when VAL1

=>

when VAL2|VAL3|VAL4 =>

when VAL5 to VAL7 =>

=>

when others end case;

suite d’instructions séquentielles suite d’instr séquentielles suite d’instr séquentielles suite d’instr séquentielles

•L’ordre des branches n’a pas d’importance (sauf others) •La branche « others » est obligatoire si toutes les valeurs de l’expression ne sont pas énumérées.

Formation VHDL

Process

Vahid MEGHDADI

95

for I in 0 to 3 loop -- logique end loop; Formation VHDL Instruction for

for I in 0 to 3 loop -- logique end loop;

Formation VHDL

Instruction for

Synthèse

Process

Logique

logique

logique

logique

Vahid MEGHDADI

96

Exemple Multiplexeur 4 voies Formation VHDL A B C D S 1 S 0 M

Exemple

Multiplexeur 4 voies

Formation VHDL

A

B

C

D

S 1

S 0

M

U

X

4

Process

Z

Vahid MEGHDADI

97

Exemple (avec if) entity MUX_4 is port (S1, S0, A, B, C, D: in std_logic;

Exemple (avec if)

entity MUX_4 is port (S1, S0, A, B, C, D: in std_logic; Z: out std_logic); end MUX_4;

architecture behav_MUX_4 of MUX_4 is begin

P1: process (S1, S0, A, B, C, D) begin

- - la liste de sensibilité

if

(( not S1 and not S0 )=’1’) then

Z <= A;

elsif (( not S1 and S0) = ‘1’)

then

Z <=B;

elsif else end if; end process P1;

((S1 and not S0) =’1’)

then

Z <=C; Z <=D;

end behav_MUX_4;

Formation VHDL

Process

Vahid MEGHDADI

98

Exemple (avec case) entity MUX_4 is port ( end MUX_4; S : in std_logic_vector(1 downto

Exemple (avec case)

entity MUX_4 is port (

end MUX_4;

S : in std_logic_vector(1 downto 0); A, B, C, D: in std_logic; Z: out std_logic );

architecture behav_MUX_4 of MUX_4 is begin

P1: process (S, A, B, C, D) begin

case S is when "00" => Z <= A; when "01" => Z <= B; when "10" => Z <= C; when "11" => Z <= D; -- ou when others => Z <= D; end case; end process P1;

- - la liste de sensibilité

end behav_MUX_4;

Formation VHDL

Process

Vahid MEGHDADI

99

Exemple (avec for) entity MUX_4 is port (S : in integer range 0 to 3;

Exemple (avec for)

entity MUX_4 is port (S : in integer range 0 to 3; A: in std_logic_vector(0 to 3); Z: out std_logic );

end MUX_4;

architecture behav_MUX_4 of MUX_4 is begin

P1: process (S, A) begin

- - la liste de sensibilité

For I in 0 to 3 loop if S = I then Z <= A(I);

end loop; end process P1;

end behav_MUX_4;

Formation VHDL

end if;

Process

Vahid MEGHDADI

100

Affectation des signaux •Dans une architecture (zone concurrente), l’affectation est immédiate. •Dans un process

Affectation des signaux

•Dans une architecture (zone concurrente), l’affectation est immédiate.

•Dans un process (zone séquentielle) l’affectation est

•immédiate pour des variables

•retardée jusqu’à la fin du process pour des signaux

Formation VHDL

Process

Vahid MEGHDADI

101

Affectation dans une architecture Architecture CONCUR of EXEMPLE is signal Z, A, B, C, D

Affectation dans une architecture

Architecture CONCUR of EXEMPLE is signal Z, A, B, C, D : std_logic;

begin

Formation VHDL

Z

<= A and B;

Z

<= C and D;

end CONCUR;

A B ? C D
A
B
?
C
D

Process

Erreur multi sources

Z

Vahid MEGHDADI

102

Affectation dans un process Architecture SEQ of EXEMPLE is signal Z, A, B, C, D

Affectation dans un process

Architecture SEQ of EXEMPLE is signal Z, A, B, C, D : std_logic;

begin

process(A, B, C, D) begin

Z

<= A and B;

Z

<= C and D;

C Z D
C
Z
D

end process; -- la valeur retenue est affectée maintenant end CONCUR;

Formation VHDL

Process

Vahid MEGHDADI

103

Attention ! Le process ci-dessous ne produira pas le signal ci- contre Process (x) begin

Attention !

Le process ci-dessous ne produira pas le signal ci- contre

Process (x) begin SIG <= '0'; SIG <= '1'; SIG <= '0'; end process;

Formation VHDL

SIG <= '1'; SIG <= '0'; end process; Formation VHDL Process SIG SIG Vahid MEGHDADI 104

Process

SIG

SIG

SIG <= '1'; SIG <= '0'; end process; Formation VHDL Process SIG SIG Vahid MEGHDADI 104
SIG <= '1'; SIG <= '0'; end process; Formation VHDL Process SIG SIG Vahid MEGHDADI 104
SIG <= '1'; SIG <= '0'; end process; Formation VHDL Process SIG SIG Vahid MEGHDADI 104
SIG <= '1'; SIG <= '0'; end process; Formation VHDL Process SIG SIG Vahid MEGHDADI 104
SIG <= '1'; SIG <= '0'; end process; Formation VHDL Process SIG SIG Vahid MEGHDADI 104

Vahid MEGHDADI

104

Exemple d’appel multiple EXEMPLE : process (A,B,M) begin Y <= A; M <= B; Z

Exemple d’appel multiple

EXEMPLE : process (A,B,M) begin

Y <= A;

M <= B;

Z <= M;

end process;

Un événement se produit : B -> 1 Le process se réveille, alors :

Formation VHDL

Process

A

: 0

B

: 0

M

: 0

Z

: 0

A

: 0

B

:

1

M

: 0

Z

: 0

Y : 0 M : 1

Z : 0

Vahid MEGHDADI

105

Exemple d’appel multiple EXEMPLE : process (A,B,M) begin   A : 0 Y <= A;

Exemple d’appel multiple

EXEMPLE : process (A,B,M) begin

 

A : 0

Y

<= A;

B :

1

M <= B;

M

:

1

Z

<= M;

Z

: 0

end process;

Un nouveau événement sur M, process se réveille encore

Formation VHDL

A

: 0

B

:

1

M

:

1

Z

: 0

Y : 0 M : 1

Z : 1

Process

Vahid MEGHDADI

106

Les variables •L'affectation se fait par le signe " := " •Les variables ne sont

Les variables

•L'affectation se fait par le signe " := "

•Les variables ne sont déclarées que dans un process

•La valeur des variables est mise à jour dès l’exécution de l’instruction d’affectation

•Les variables ne sont pas visibles à l’extérieur du process

•Les variables gardent leur valeur pour le réveil suivant

Formation VHDL

Process

Vahid MEGHDADI

107

Formation VHDL Vahid MEGHDADI 108

Formation VHDL

Vahid MEGHDADI

108

Chapitre : Hiérarchisation • Conception d’un bloc et son utilisation dans un autre circuit: instantiation

Chapitre : Hiérarchisation

• Conception d’un bloc et son utilisation dans un autre circuit: instantiation ou instantiation multiple

1. Première étape: écrire l’entité et l’architecture du module

2. Deuxième étape: introduire ce module au circuit appelant (ce module s’appellera « component »)

3. Troisième étape: instantiation du module

Formation VHDL

Hiérarchisation

Vahid MEGHDADI

109

Déclaration du component •Se fait dans la partie déclarative de l’architecture. •On utilise le mot

Déclaration du component

•Se fait dans la partie déclarative de l’architecture. •On utilise le mot clé « component »

Exemple:

Formation VHDL

entity DEMI_ADD is port (A,B: in std_logic; SUM,C: out std_logic);

end DEMI_ADD;

(A,B: in std_logic; SUM,C: out std_logic); end DEMI_ADD; component DEMI_ADD port(A,B : in std_logic; SUM,C: out
(A,B: in std_logic; SUM,C: out std_logic); end DEMI_ADD; component DEMI_ADD port(A,B : in std_logic; SUM,C: out
(A,B: in std_logic; SUM,C: out std_logic); end DEMI_ADD; component DEMI_ADD port(A,B : in std_logic; SUM,C: out
(A,B: in std_logic; SUM,C: out std_logic); end DEMI_ADD; component DEMI_ADD port(A,B : in std_logic; SUM,C: out
(A,B: in std_logic; SUM,C: out std_logic); end DEMI_ADD; component DEMI_ADD port(A,B : in std_logic; SUM,C: out
(A,B: in std_logic; SUM,C: out std_logic); end DEMI_ADD; component DEMI_ADD port(A,B : in std_logic; SUM,C: out
(A,B: in std_logic; SUM,C: out std_logic); end DEMI_ADD; component DEMI_ADD port(A,B : in std_logic; SUM,C: out

component DEMI_ADD port(A,B : in std_logic; SUM,C: out std_logic); end component;

Hiérarchisation

Vahid MEGHDADI

110

Instantiation du component •Utilisation du mot clé « port map » Exemple: component DEMI_ADD port(A,B

Instantiation du component

•Utilisation du mot clé « port map »

Exemple:

component DEMI_ADD port(A,B : in std_logic; SUM,C: out std_logic); end component;

Préférable

Deux

façons

de faire

DEMI_ADD_INST: DEMI_ADD port map (A => SIG_A, B => SIG_B, SUM => SOMME, C => RETENUE);

DEMI_ADD_INST: DEMI_ADD port map (SIG_A,SIG_B, SOMME, RETENUE);

Formation VHDL

Hiérarchisation

Vahid MEGHDADI

111

Exemple addition A Demi- SUM B additionneur C A SUM A B SUM C B

Exemple addition

A

Demi- SUM

B additionneur C A SUM A B SUM C B 0 0 0 0 C
B
additionneur
C
A
SUM
A
B
SUM
C
B
0
0
0
0
C
0
1
1
0
1
0
1
0
1
1
0
1

Formation VHDL

Hiérarchisation

Vahid MEGHDADI

112

Description flot de données entity DEMI_ADD is port (A,B: in std_logic; SUM,C: out std_logic); end

Description flot de données

entity DEMI_ADD is port (A,B: in std_logic; SUM,C: out std_logic); end DEMI_ADD;

architecture COMPORT of DEMI_ADD is begin

SUM <= A xor B; --instruction concurrente C <= A and B; --instruction concurrente end COMPORT;

Formation VHDL

Hiérarchisation

Vahid MEGHDADI

113

Exemple d’architecture 2 A B CIN SUM DEMI_ADD C N1 N2 SUM N3 Cout SUM

Exemple d’architecture 2

A

B

CIN

SUM

DEMI_ADD

C

N1

N2

SUM

N3

d’architecture 2 A B CIN SUM DEMI_ADD C N1 N2 SUM N3 Cout SUM DEMI_ADD C

Cout

SUM

DEMI_ADD

C

entity ADD_COMPLET is port (A,B,CIN : in std_logic; SUM,COUT : out std_logic); end ADD_COMPLET;

Formation VHDL

Hiérarchisation

(A,B,CIN : in std_logic; SUM,COUT : out std_logic); end ADD_COMPLET; Formation VHDL Hiérarchisation Vahid MEGHDADI 114

Vahid MEGHDADI

114

Instantiation architecture COMPORT of ADD_COMPLET is component DEMI_ADD port(A,B : in std_logic; SUM,C: out std_logic);

Instantiation

architecture COMPORT of ADD_COMPLET is

component DEMI_ADD port(A,B : in std_logic; SUM,C: out std_logic); end component;

Déclaration de component

Instantiation

signal N1, N2, N3 : std_logic; begin ADD1: DEMI_ADD port map(A,B,N1,N2); ADD2: DEMI_ADD port map(N1,CIN,SUM,N3); COUT <= N2 or N3; end COMPORT ;

Formation VHDL

Hiérarchisation

Vahid MEGHDADI

115

Chapitre : Déroulement d’un programme VHDL •L’architecture est le lieu d’échange de l’information entre les

Chapitre : Déroulement d’un programme VHDL

•L’architecture est le lieu d’échange de l’information entre les instructions concurrentes (les process en particulier).

•L’échange se fait uniquement par l’intermédiaire des signaux

Formation VHDL

Signal a

process

process

process
process
process
process
process
process
process

process

process
process
process
process

Signal x,y

Signal t,u

Déroulement d’un programme VHDL

Vahid MEGHDADI

116

Déroulement de simulation •La notion de temps ne s'utilise que pour spécifier l'ordre des événements.

Déroulement de simulation

•La notion de temps ne s'utilise que pour spécifier l'ordre des événements.

•Les seuls moyens d'avancer dans le temps sont :

•par un changement d'un signal en entrée

•par la commande wait for temps

•par la commande after temps

•sinon, les signaux sont tous stables et les process dorment tous.

Formation VHDL

Déroulement d’un programme VHDL

Vahid MEGHDADI

117

Deux files d'attente 1- A chaque événement est associé une liste des process à réveiller

Deux files d'attente

1- A chaque événement est associé une liste des process à réveiller

2- Après exécution de tous les process de la liste, une nouvelle liste d'événement sur les signaux est établie

3- Une nouvelle liste des process à réveiller s'établit

4- Tant que cette liste n'est pas vide, on réitère à l'étape 2

5- Le circuit est stable et attend un nouvel événement

Formation VHDL

Déroulement d’un programme VHDL

Vahid MEGHDADI

118

Formation VHDL Traitement des files Désigner les signaux changés File signal Désigner les process à

Formation VHDL

Traitement des files

Désigner les signaux changés

File

signal

Désigner les process à réveiller

File

process

Déroulement d’un programme VHDL

Vahid MEGHDADI

119

File signal Avancement dans le temps File process File signal File process temps En simulation,
File signal Avancement dans le temps File process File signal File process temps En simulation,

File

signal

Avancement dans le temps

File

process

File signal Avancement dans le temps File process File signal File process temps En simulation, les

File

signal

File

process

temps

En simulation, les événements sont également sur une liste.

Wait for 5 ns, ou A <= Z after 7 ns créent des événements dans l'ordre sur cette liste.

Formation VHDL

Déroulement d’un programme VHDL

Vahid MEGHDADI

120

Formation VHDL Vahid MEGHDADI 121

Formation VHDL

Vahid MEGHDADI

121

Formation VHDL Vahid MEGHDADI 122

Formation VHDL

Vahid MEGHDADI

122

Formation VHDL Vahid MEGHDADI 123

Formation VHDL

Vahid MEGHDADI

123

Chapitre : Circuits combinatoires Un circuit combinatoire donne toujours les mêmes sorties quand l’entrée est

Chapitre : Circuits combinatoires

Un circuit combinatoire donne toujours les mêmes sorties quand l’entrée est la même.

Un process est combinatoire si les conditions suivantes sont toutes respectées :

•le process comporte une liste de sensibilité

•la liste de sensibilité comprend tous les signaux lus

•tous les signaux doivent être affectés quelle que soit les entrées (Attention dans un "if" ou dans un "case")

•toutes les variables doivent être affectées avant d'être lues

Formation VHDL

Circuits combinatoires

Vahid MEGHDADI

124

Circuits combinatoires : équation logique Architecture COMB1 of NONET is begin --équation logique S <=

Circuits combinatoires : équation logique

Architecture COMB1 of NONET is begin

--équation logique

S <= A nand B; end COMB1;

Architecture COMB3 of NONET is begin --Traduction de la table --de vérité dans un process process(A,B) begin if A='1' and B='1' then

Architecture COMB2 of NONET is

S

S

<= '0';

begin

else

--Traduction de la table

S

<= '1';

--de vérité dans un process

end if; end process;

 

<= '0' when A='1' and B='1' else '1';

end COMB3;

end COMB2;

Formation VHDL

Circuits combinatoires

Vahid MEGHDADI

125

Exemple Transcription d’une table de vérité A(2) A(1) A(0) S(2) S(1) S(0) 0 0 0

Exemple

Transcription d’une table de vérité

A(2)

A(1)

A(0)

S(2)

S(1)

S(0)

0

0

0

0

0

0

0

0

1

0

0

1

0

1

0

0

1

1

0

1

1

0

1

0

1

0

0

1

1

0

1

0

1

1

1

1

1

1

0

1

0

1

1

1

1

1

0

0

Formation VHDL

Circuits combinatoires

Vahid MEGHDADI

126

Affectation avec if Dans une zone séquentielle (process) Architecture AVEC_IF of CIRCUIT signal A,S :

Affectation avec if

Dans une zone séquentielle (process)

Architecture AVEC_IF of CIRCUIT signal A,S : std_logic_vector (2 downto 0); begin process(A) begin

then

if

A = "000"

S <= "000"; S <= "001";

elsif A ="001" elsif

then

end if; end process; end AVEC_IF;

Formation VHDL

Circuits combinatoires

Vahid MEGHDADI

127

Affectation avec case Dans une zone séquentielle (process) Architecture AVEC_CASE of CIRCUIT signal A,S :

Affectation avec case

Dans une zone séquentielle (process)

Architecture AVEC_CASE of CIRCUIT

signal A,S : std_logic_vector (2 downto 0); begin process(A) begin case A is

when "000"

=> S <=

"000"

when "001"

=> S <=

"001"

when "011"

=> S <=

"010"

end case end process; end AVEC_CASE;

Formation VHDL

Circuits combinatoires

Vahid MEGHDADI

128

Affectation sélective Dans une zone concurrente (architecture) Architecture AVEC_WITH of CIRCUIT signal A,S :

Affectation sélective

Dans une zone concurrente (architecture)

Architecture AVEC_WITH of CIRCUIT signal A,S : std_logic_vector (2 downto 0); begin with A select S <= "000" when "000" , "001" when "001" , "011" when "010" , "110" when "100" ,

"000" when others;

end AVEC_WITH;

Formation VHDL

Circuits combinatoires

Vahid MEGHDADI

129

Affectation non conditionnelle Dans une zone concurrente (architecture) Architecture DIRECT of CIRCUIT signal A,S :

Affectation non conditionnelle

Dans une zone concurrente (architecture)

Architecture DIRECT of CIRCUIT signal A,S : std_logic_vector (2 downto 0); begin S(2) <= (A(2) and not A(1) and not A(0)) or (A(2) and not A(1) and A(0)) or (A(2) and A(1) and not A(0)) or (A(2) and A(1) and A(0));

S(1) <= (not A(2) and A(1) and not A(0)) or (not A(2) and A(1) and A(0)) or (A(2) and not A(1) and not A(0)) or (A(2) and not A(1) and A(0));

Formation VHDL

Circuits combinatoires

Vahid MEGHDADI

130

Affectation avec when Dans une zone concurrente (architecture) Architecture AVEC_WHEN of CIRCUIT signal A,S :

Affectation avec when

Dans une zone concurrente (architecture)

Architecture AVEC_WHEN of CIRCUIT signal A,S : std_logic_vector (2 downto 0); begin

S <=

"000" when A= "000"

else "001" when A= "001" else "011" when A= "010" else "010" when A= "011" else "110" when A= "100" else "111" when A= "101" else "101" when A= "110" else "100" when A= "111" else "000"; end AVEC_WHEN;

Formation VHDL

Circuits combinatoires

Vahid MEGHDADI

131

Exemple : ALU entity ALU is port(A : in std_logic_vector(7 downto 0); B : in

Exemple : ALU

entity ALU is

port(A : in std_logic_vector(7 downto 0);

B : in std_logic_vector(7 downto 0);

Sel: in std_logic_vector(1 downto 0); Res: out std_logic_vector(7 downto 0)); end ALU; -- Sel="00" => Addition -- Sel="01" => Soustraction -- Sel="00" => et logique bit à bit -- Sel="00" => ou logique bit à bit architecture behv of ALU is begin process(A,B,Sel) …. end process; end behv;

Formation VHDL

Vahid MEGHDADI

132

Exemple : ALU (suite) process(A,B,Sel) begin case Sel is when "00" => Res <= A

Exemple : ALU (suite)

process(A,B,Sel) begin case Sel is when "00" => Res <= A + B; when "01" => Res <= A + (not B) + 1; when "10" => Res <= A and B; when "11" => Res <= A or B; when others => Res <= "--"; end case; end process;

Formation VHDL

Vahid MEGHDADI

133

Exemple : Multiplieur Le but est de réaliser un multiplieur 4 bits fois 4 bits
Exemple : Multiplieur
Le but est de réaliser un multiplieur 4 bits fois 4 bits
A
A
1001
0
B
*1101
0
B(0)
0
4
4
---------
4
B(1)
0
0000 1001
4
+0000 0000
+0010 0100
+0100 1000
5
B(2)
0
4
res(0)
(4 downto 1)
5
B(3)
res(1)
(4 downto 1)
5
----------
0111 0101
res(2)
(4 downto 1)
res(7 downto 3)
Formation VHDL
Vahid MEGHDADI
134
Exemple : Multiplieur (suite) entity main is Port ( A : in std_logic_vector(3 downto 0);

Exemple : Multiplieur (suite)

entity main is Port ( A : in std_logic_vector(3 downto 0); B : in std_logic_vector(3 downto 0); RES : out std_logic_vector(7 downto 0));

end main;

architecture Behavioral of main is begin process (A,B) variable result : std_logic_vector(7 downto 0);

begin result := (others => '0'); for I in 0 to 3 loop if B(I)='1' then result(I+4 downto I) := result(I+4 downto I) + ('0' & A); end if; end loop; RES <= result; end process; end Behavioral;

Formation VHDL

Vahid MEGHDADI

135

Exemple : Multiplieur, résultat de synthèse Formation VHDL Vahid MEGHDADI 136

Exemple : Multiplieur, résultat de synthèse

Exemple : Multiplieur, résultat de synthèse Formation VHDL Vahid MEGHDADI 136

Formation VHDL

Vahid MEGHDADI

136