220
Formation VHDL Vahid MEGHDADI Vahid Meghdadi http://www.unilim.fr/pages_perso/vahid/ Cours Conception circuits numériques 6x1h30 de cours + 1h30 exam 17 HTP (5x3h + 2h !) Notation Exam théorique Evaluation TP Exam pratique 1

Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Embed Size (px)

Citation preview

Page 1: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

Vahid Meghdadihttp://www.unilim.fr/pages_perso/vahid/

Cours Conception circuits numériques– 6x1h30 de cours + 1h30 exam

– 17 HTP (5x3h + 2h !)

Notation

– Exam théorique

– Evaluation TP

– Exam pratique

1

Page 2: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

2

Introduction aux

conceptions

numériques

Une partie de ce cours a été emprunté de DSPedia développé par Dr. Bob Stewart à steepest ascent, Glasgow.

Page 3: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

3

Chapitre : Introduction

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

Page 4: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

4

•Circuit figé

•Circuit imprimé difficile à modifier

•Intégration limitée

•Coût élevé

•Justifié pour de petits circuits

Circuit avec des éléments discrets

Introduction

Page 5: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

5

Circuit à fonctionnement programmable

Microprocesseur

Mémoire

Périphérique

•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

Introduction

Page 6: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

6

Circuit à architecture programmable

Introduction

•Une quantité importante de portes logiques

•Des matrices d'interconnections programmables

•Modification du fonctionnement sur le circuit (ISP: In-System Programming)

•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

Page 7: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

7

Les ASIC

Application Specific Integrated Circuit

• Coût très bas uniquement pour de gros

tirages

• Temps de développement important

• Pas de modifications une fois fabriqué

• Nécessitant un fondeur pour la fabrication

Introduction

Page 8: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

8

Low development cost

Short time to market

Reconfigurability

High performance

ASICs FPGAs

Low power

Low cost inhigh volumes

ASIC ou FPGA ?

Introduction

Page 9: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

9

Conception physique (layout)

Conception structurelle TTL

Conception logique

Introduction

Evolution : Méthodes de CAO

Conception fonctionnelle RTLProgrammation Verilog/VHDL

Synthèse comportemental

Page 10: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

10

Démonstrateurs

Circuit de développement Nexys3

Introduction

Page 11: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

11

Exemple

VGA

Une carte polyvalente et reconfigurable

Introduction

Connecteur

d’extension

Page 12: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

12

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

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

• Exemple y=Ax²+Bx+C

Introduction

DSP FPGA

Page 13: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

13

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

Introduction

Page 14: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

14

Architecture des FPGA

Feild Programmable Gate Array

CLB CLB CLB CLBCLB CLB CLB

CLB CLB CLB CLBCLB CLB CLB

CLB CLB CLB CLBCLB CLB CLB

CLB CLB CLB CLBCLB CLB CLB

CLB CLB CLB CLBCLB CLB CLB

CLB CLB CLB CLBCLB CLB CLB

CLB CLB CLB CLBCLB CLB CLB

CLB= Configurable Logic

Block

Introduction

Page 15: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

15

FPGA architecture interne

Programmable

IO

BLE# 1

BLE# N

NOutputs

I

Inputs

Clock

I

N

Programmable

Logic (CLB)

KLUTInputs D FF

Clock

Out

Programmable

Routing

Introduction

BLE= Basic Logic Element

Page 16: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

16

Look-Up Table (LUT)

State

OutInputs

Clock

Enable

Architecture simplifiée de CLB

Out = f (in0, in1, in2, in3)

Introduction

Page 17: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

17

FPGA Xilinx

Xilinx a été fondée en 1984 pour fabriquer des circuits à logique programmable.

Plusieurs familles de FPGA

•Série 4000 (les années 90)

•Spartan (1998)

•Spartan (II, III, VI) (depuis 2000) (Spartan 6 depuis 2009)(spartan7 2017)

•Virtex (II, IV, V, VI, VII) (depuis 2001)

•Artix (2010)

•Kintex (2010)

•Zynq (SoC) (2011)

Introduction

Page 18: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

18

Spartan (depuis 1998)

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

Introduction

Remarque

Page 19: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

19

Spartan II

Ajout de la RAM

Introduction

Remarque

Page 20: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

20

La famille Spartan II

Introduction

Remarque

Page 21: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

21

Spartan 3Remarque

Page 22: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

22

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

•DSP slices

•Microprocesseur embarqué (PowerPC)

Introduction

Remarque

Page 23: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

23

La famille Virtex

Introduction

Remarque

Page 24: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

24

La famille Virtex-II pro

Introduction

Remarque

Page 25: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

25

Virtex 5 et le LUT

LUT à 6 entrées et 2 sorties: permettant de construire des logiques plus sophistiques dans un seul slice.

Remarque

Page 26: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

26

Virtex 5 et les blocs DSPRemarque

Page 27: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

27

Série 7 (depuis 2010)Remarque

Page 28: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

28

Outil de développement

L’IDE (Integrated development environment)

- jusqu’en 2012 : ISE

- Depuis 2012 VIVADO

- La dernière version d’ISE : 14.7

En TP on utilise ISE qui supporte spartan 6.

Pour la série 7, on doit utiliser Vivado

Page 29: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

29

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

EP

RO

M

Introduction

Page 30: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

30

HDL(VHDL /Verilog)

Synthesize

Netlist

Map

Place

Route

Bitstream

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.

Design flow

Introduction

Page 31: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

31

Synthèse HDL

RegisterRegister

aa

bboutputoutput

clkclk

resetreset

clearclear

DD QQ

process(clk, reset)

begin

if reset = ‚1‘ thenoutput <= ‚0‘;

elsif rising_edge(clk) thenoutput <= a XOR b;

end if;

end process;

HDL(VHDL /Verilog)

Synthesize

Netlist

Map

Place

Route

Bitstream

Introduction

Page 32: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

32

HDL(VHDL /Verilog)

Synthesize

Netlist

Map

Place

Route

Bitstream

RegisterRegister

aa

bboutputoutput

clkclk

resetreset

clearclear

DD QQ

Technology Mapping

Introduction

Page 33: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

33

Placement & Routage

HDL(VHDL /Verilog)

Synthesize

Netlist

Map

Place

Route

Bitstream

Introduction

Page 34: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

34

Système embarqué traditionnel

Power Supply

CLKCLK

CLKcustomIF-logic

SDRAM SDRAMSRAM SRAMSRAM

Memory Controller

UARTLC

DisplayController

InterruptController

Timer

AudioCodec

CPU(uP / DSP) Co-

Proc.

GP I/O

AddressDecode

Unit

EthernetMAC

Images by H.Walder

Introduction

Page 35: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

35

FPGACLKCLK

CLKcustomIF-logic

SDRAM SDRAMSRAM SRAMSRAM

Memory Controller

UART

DisplayController

Timer

Power Supply

LC

AudioCodec

CPU(uP / DSP) Co-

Proc.

GP I/O

AddressDecode

Unit

EthernetMAC

InterruptController

Images by H.Walder

Système embarqué traditionnel

Introduction

Page 36: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

36

System on Chip Configurable (CSoC)

Power Supply

SDRAM SDRAMSRAM SRAMSRAM

LC

AudioCodec EPROM

Images by H.Walder

Introduction

Page 37: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

37

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

Introduction

Page 38: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

38

Chapitre : Introduction A VHDL

Introduction au langage

VHDL

Introduction A VHDL

Page 39: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

39

V H D L

V VHSIC (Very High Speed Integradted Circuit)

H Hardware

D Description

L Language

Introduction A VHDL

Page 40: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

40

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

Introduction A VHDL

Remarque

Page 41: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

41

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

• Le langage concurrent : Verilog

Introduction A VHDL

Page 42: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

42

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 à télé-charger sur

le « device »

Introduction A VHDL

Page 43: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

43

Niveau d’abstraction

Comportemental

RTL

Logique

Layout

Introduction A VHDL

VHDL

Synthèsecomportemental

Synthèselogique

Placementroutage

Page 44: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

44

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)

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

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

Structure du VHDL

Chapitre : Structure du VHDL

Circuit principal Circuit

principal

Package (librairie)

Page 45: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

45

Minimum design en VHDL

Deux unités obligatoires

• une entité

• une architecture Un circuit décrit en VHDL

Déclaration d’entité

Architecture

Page 46: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

46

Exemple simple: entité

Exemple: L’entité du circuit ci-contre qu’on appellera « AOI»

entity AOI is

Port(

A,B,C,D: in std_logic;

F : out std_logic);

end AOI;

AOI

L’entité déclare la vue externe du circuit : les ports d’entrée-sorties et leur type. Elle peut aussi déclarer des paramètres.

Page 47: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

4747

ENTITY nand_gate IS

PORT(

a : IN STD_LOGIC;

b : IN STD_LOGIC;

z : OUT STD_LOGIC

);

END nand_gate;

Reserved words

Entity namePort names Port type

Semicolon

No Semicolon

after last port

Port modes (data flow directions)

Entité décortiquée

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

);END nand_gate;

Même chose mais en moins lisible, non recommandée !!

Entité

Page 48: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

48

Remarque

std_logic définit un type plus que binaire. En fait, un objet de type std_logic peut recevoir des valeurs ‘0’ et ‘1’ mais aussi autres valeurs comme par exemple « haute impédance ».

On verra les types bien tôt.

On remarque aussi les modes des signaux: in, out. Il y en a d’autres: buffer, inout.

Page 49: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

49

Exemple simple: architecture

architecture v1 of AOI is

-- les déclarations

begin

F <= not((A and B) or (C and D));

end v1;

L’architecture définit le fonctionnement du circuit.

Page 50: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

50

Remarque

On remarque l’opérateur d’affectation <=

Les opérateurs logiques "and", "or", "nor", "nand" et "not"font parti des opérateurs connus du langage.

On remarque aussi que -- est utilisé pour des commentaires.

Il existe deux parties dans l’architecture - avant begin : zone des déclarations

- Après begin : la partie "exécutable".

Page 51: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

51

Exemple simple: architecture bis

architecture v2 of AOIis

signal I1,I2,I3: std_logic;

begin

I1 <= A and B;

I2 <= C and D;

I3 <= I1 or I2;

F <= not I3;

end v2;

I1, I2 et I3 sont des signaux internes.

Page 52: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

52

Principe de concurrence

architecture v3 of AOI is

signal I1,I2,I3: std_logic;

begin

I1 <= A and B;

I2 <= C and D;

I3 <= I1 or I2;

F <= not I3;

end v3;

architecture v2 of AOI is

signal I1,I2,I3: std_logic;

begin

I1 <= A and B;

F <= not I3;

I2 <= C and D;

I3 <= I1 or I2;

end v2;

architecture v4 of AOI is

signal I1,I2,I3: std_logic;

begin

F <= not I3;

I3 <= I1 or I2;

I2 <= C and D;

I1 <= A and B;

end v4;

Tous les mêmes !

Page 53: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

53

Dans une architecture, toutes les instructions sont exécutées en parallèle : elles sont concurrentes et non pas « séquentielles ».

La partie après "begin" dans une architecture est une zone

concurrente.

Remarque

Page 54: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

54

Décrire des délais

Dans des circuits réels, les portes logiques présentent des délais.

On pourra aussi les décrire.

Page 55: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

55

Délai dans les affectations

- Une affectation sera déclenchée quand un évènement arrive

- Un évènement est un changement de valeur d’un signal

- Pour l’instruction ci-dessous, cet évènement est le passage de A de 0 à 1.

- Cependant, l’affectation se concrétise après 2 ns.

Page 56: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

56

Attention: l’instruction d’affectation retardé est importante en simulation, par contre n’a aucun effet en

synthèse. L‘outil de synthèse ignore « after »:

Pour la synthèse :I1 <= A and B after 2 ns; ≡ I1 <= A and B;

Le circuit qui sera réalisé présentera un délai qui dépendra de la technologie utilisé, longueur des câblage, etc.

TRES IMPORTANT

Page 57: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

57

Résultat obtenu en simulation

Page 58: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

58

Exemple

Demi-additionneur

A

B

SUM

C

A B SUM C

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

Architecture

A

B

SUM

C

Page 59: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

59

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;

Programme VHDL correspondant

Architecture

Page 60: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

60

Hiérarchisation en VHDL

Page 61: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

61

Hiérarchie in VHDL

- Un bloc conçu, testé, et fonctionnel peut être réutilisé. On l’appelle component.

- Dans un design qui utilise ce component

- On déclare entité du component

- On instancie un exemplaire de ce component dans la zone concurrente

- On procède au câblage de ce component

Page 62: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

62

Exemple : multiplexeur 2 voies

Si SEL=‘0’, Y <=X1, et si SEL=‘1’, Y<=X2

Page 63: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

63

Déclaration de component

Déclaration du component

Page 64: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

64

Déclaration de signaux

Page 65: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

65

Instanciation du component

Instanciation du component

Page 66: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

66

Instructions Concurrentes / séquentielles

Page 67: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

67

En VHDL, il existe deux types d’instructions

• Instructions concurrentes

• à écrire dans la zone concurrente de l’architecture

• elles sont exécutées simultanément

• l’ordre de l’écriture n’a pas d’importance

• Instruction séquentielles

• à écrire dans les « process »

• elles sont exécutées dans l’ordre

Instructions concurrentes ou séquentielles

Page 68: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

68

A

B I

CS

I <= A or B;

S <= I and C

S <= I and C

I <= A or B;

Zone concurrente

Exemple

Page 69: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

69

Instruction concurrente conditionnelle

Exemple d’instructions concurrentes:

Affectation conditionnelle: when – else (équivalent de if-then-else dans d’autre langages)

Page 70: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

70

Instruction concurrente sélective

• La condition se fait sur un seul objet (comme le signal sel ci-dessous)

• Le mot clé others doit être utilisé pour couvrir les cas non spécifiés

Page 71: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

71

Remarque

L’affectation sélective produit très souvent un circuit plus simple (par rapport à l’affectation conditionnelle) parce qu’il n’y a pas de priorité dans différentes branches. De plus, la condition est à tester sur un seul objet.

Exemple

Page 72: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

72

with HEX select

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

Circuitcombinatoire

7

4

Zone concurrente

Exemple instruction « with-select »Codeur sept-segment

Page 73: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

73

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;

Exemple ALU

Zone concurrente

architecture COMPORT of ADDER is

Begin

with SEL select

S <= A+B when '0',

A-B when others;

-- ou on peut utiliser when-else

-- S <= A+B when SEL=‘0’ else A-B;

end COMPORT;

Remarque

Page 74: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

74

Process

Page 75: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

75

Process

• Process est une instruction concurrente : donc à écrire dans une architecture (après begin),

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

•Process génère une zone séquentielle

Process

Page 76: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

76

•Syntaxe de process :

label : -- optionnelprocess (liste de sensibilité)

{partie déclarative}begin

suite d’instructions séquentiellesend process;

•Notion très importante : Un process s'exécute (se réveille) quand un des signaux de la liste de sensibilité change de valeur.

•Un fois on arrive à la fin du process, celui-ci rendort jusqu’à l’arrivée d’un évènement sur un des signaux de sa liste de sensibilité,

Syntaxe de process

Process

Page 77: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

77

•Ils s'écrivent uniquement dans une zone séquentielle: après

le « begin » d’un process

• instruction d'attente (wait)

• instruction d'affectation (temporisée)

• instruction conditionnelle (if)

• instruction sélective (case)

Instructions séquentielles

Process

Page 78: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

78

L’exécution des lignes d’un process s’arrête quand on arrive à la commande « wait », on dit que le process est suspendu ! Le processpourra redémarrer suivant une condition.

•Wait

•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

Instructions wait

Process

Page 79: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

79

Remarque

La génération de l’horloge et en même temps d’un signal Reset.

clock_gen: process

begin

CLK_TB <= '1';

wait for 5 ns;

CLK_TB <= '0';

wait for 5 ns;

end process;

---------------------------------------

reset_gen: process

begin

RST_TB <= ‘0’; wait for 5ns;

RST_TB <= ‘1’; wait for 15ns;

RST_TB <= ‘0’;

wait;

end process;

---------------------------------------

inst: counter

port map ( CLK => CLK_TB, RST => RST_TB, Q => DATA_OUT );

Instructions séquentielles

Instructions séquentielles

Instructions concurrentes

Page 80: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

80

if condition then

sequential statements[elsif condition then

sequential statements ][elsif condition then

sequential statements ][else

sequential statements ]end if;

Instructions conditionnelle

Process

Page 81: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

81

Instruction sélective

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

case EXPRESSION iswhen VAL1 => suite d’instructions séquentielleswhen VAL2|VAL3|VAL4 => suite d’instr séquentielleswhen VAL5 to VAL7 => suite d’instr séquentielleswhen others => suite d’instr séquentielles

end case;

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

Process

Page 82: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

82

Exemple

MUX4

A

B

C

D

S1 S0

Z

Multiplexeur 4 voies

Process

Remarque

Page 83: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

83

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

end MUX_4;

architecture behav_MUX_4 of MUX_4 isbegin

P1: process (S1, S0, A, B, C, D) - - la liste de sensibilitébegin

if (( not S1 and not S0 )=’1’) then Z <= A;elsif (( not S1 and S0) = ‘1’) then Z <=B;elsif ((S1 and not S0) =’1’) then Z <=C;else Z <=D;end if;

end process P1;

end behav_MUX_4;

Exemple (avec if)

Process

Remarque

Page 84: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

84

Exemple (avec case)

entity MUX_4 isport ( S : in std_logic_vector(1 downto 0);

A, B, C, D: in std_logic; Z: out std_logic );end MUX_4;

architecture behav_MUX_4 of MUX_4 isbegin

P1: process (S, A, B, C, D) - - la liste de sensibilitébegin

case S iswhen "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;

end behav_MUX_4;Process

Remarque

Page 85: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

85

Affectation séquentielle

Attention : affectation d’une valeur à un signal dans un process n’est pas immédiate !

L’affectation se réalise quand le process est suspendu, ou quand on arrive à la fin du process.

Dans un process tous les signaux sont constants, ils sont actualisés quand le process est suspendu (end de process, ou wait)

Exemple:

process(A)

begin

A <= ‘0’; --ici le signal A ne recevra pas ‘0’

B <= A; --ici donc, B recevra l’ancienne valeur de A mais

--au moment où le process sera suspendu

end process; --c’est ici que A reçoit ‘0’ et B reçoit

--l’ancienne valeur de A

Page 86: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

86

Attention !

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

SIG

Process (x)begin

SIG <= '0';SIG <= '1';SIG <= '0';

end process;

SIG

Process

Remarque

Page 87: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

87

Circuits séquentiels

Trois types de circuit

• Combinatoire

• Séquentiel

• Synchrone

Page 88: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

88

process combinatoire

Un process n’est plus combinatoire si au moins une des conditions suivantes est vérifiée :

• la liste de sensibilité ne comprend pas tous les signaux lus

• les signaux ne sont pas affectés quelle que soit la branche

• une variable est lue avant d'être affectée

Le circuit généré aura donc quelque part une mémoire !

Circuits séquentiels

Page 89: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

89

Exemple: Verrou ou Latch

Bascule à verrouillage

entity L isport (D,EN : in std_logic;

Q : out std_logic);end L;

architecture A of L isbegin

processbegin

wait on D,EN;if EN='1' then Q <= D;end if;

end process;end A;

architecture A of L isbegin

process (D,EN)begin

if EN='1' thenQ <= D;

end if;end process;

end A;

Circuits séquentiels

Ce

qu

’on

pré

fère

!

Page 90: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

90

Registre (latch synchrone)

process (CLK)begin

if CLK'event and CLK='1' thenQ <= D;

end ifend process;

Circuits séquentiels

Un circuit synchrone sur le front d’un signal (CLK)

process (CLK)begin

if rising_edge(CLK) thenQ <= D;

end ifend process;

D Q

CLK

Bascule D

D Q

CLK

Registre de taille 8 dépendant du type de Q et D

88

Page 91: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

91

Registre avec SET ou RESET

architecture A of R isbegin -- set asynchrone

process (SET,CLK)begin

if SET = '1' then Q <= '1';elsif CLK'event and CLK='1'

then Q <= D;end if;

end process;end A;

entity R isport (D,CLK,SET: in std_logic;

Q: out std_logic);end R;

architecture A of R isbegin -- set synchrone

process (CLK)begin

if CLK'event and CLK='1' thenif SET = '1' then Q <= '1';else Q <= D;end if;

end if;end process;

end A;

Circuits séquentiels

Page 92: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

92

Exemple : compteur

Création d’un compteur 3 bits:

000-001-010-011-100-101-110-111-000-001-…

Supposons que le FPGA reçoit un signal CLK à l’entrée et qu’il sort 3 fils représentant les 3 bits du compteur.

-- signal cmp: std_logic_vector(2 downto 0);

process(CLK)

begin

if CLK’event and CLK=‘1’ then

cmp <= cmp+1;

end if;

end process;

Exercice: tracer les chronogrammes des signaux CLK et cmp.

Page 93: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

93

Exemple

Créer le signal “trig” à partir du signal d’horloge CLK

CLKtrig

-- signal cmp: integer range 0 to ?;

process(CLK)

begin

if CLK’event and CLK=‘1’ then

trig <= ‘0’; cmp <= cmp + 1;

if cmp = ? Then

cmp <= 0; trig <= ‘1’;

end if;

end if;

end process;

����� � ��/4

0 1 2 3 0 1 2 3 0 1 2

Page 94: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

94

Objets en VHDL

Page 95: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

95

En VHDL, il existe 3 classes d’objet pour garder ou représenter des data.

- signal : représente des fils, des bus, des registres

- variable : comme les variables dans d’autres langages

- constant : dont la valeur ne change pas

Tout objet est typé.

Objets en VHDL

Page 96: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

96

Constants

Exemple:

C’est une valeur explicite

constant PIN_CODE: bit_vector(3 downto 0) :="0110";

constant NUMBER_OF_BITS: integer :=0;

Utilisation des constants rend la modification du programme plus simple.

Page 97: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

97

Variable

variable current_bit: std_logic := ‘0’;

Initialisation optionnelle

• Les variables sont utilisées uniquement dans les process.

• Elles sont déclarées dans le process avant le mot clé « begin » (c’est le begin du process).

• Contrairement aux signaux, les variables sont affectées tout de suite, on n’a pas besoin d’attendre la suspension du process.

• Affectation se fait par ":=" et non pas par "<=" :

• current_bit := not current_bit;

Page 98: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

98

Signal

signal carry_out : std_logic := '0';

Initialisation optionnel,

souvent ignoré en synthèse

donc utile seulement pour

simulation

- Les signaux sont comme les câbles (fils) dans un circuit

- Ils sont utilisés pour connecter les éléments concurrents d’un circuit

- L’affectation à un signal peut être retardé (uniquement en simulation, en synthèse le retard est imposé par le circuit !):

carry_out <= '1' after 10ns;

- Les signaux sont déclarés soit dans l’entité (les ports d’entrée –sortie), soit avant « begin » d’une architecture.

Page 99: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

99

Signaux et variables

Les signaux interconnectent les éléments concurrents

Variables peuvent être utilisées à l’intérieur des process et ne sont pas visibles en dehors de process.

Page 100: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

100

Remarque

Variables:

- Peuvent être utilisées dans le process où ils sont déclarées

- Ne peuvent pas apparaitre dans la liste des sensibilités

- Ne peuvent pas être retardées

- affectation immédiate

Signaux

- Peuvent être utilisés pour relier des process

- Peuvent apparaitre dans la liste des sensibilités des process

- Peuvent être retardés

Page 101: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

101

Types en VHDL

Page 102: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

102

VHDL est un langage très typés.

- Tout élément doit être associé à un type

- Conversion des types est possible moyennant des fonctions explicites

- Il est possible de définir un sous-type qui héritera les contraintes du type d’origine

4 catégories de types

- Type scalaire : integer, reals, physique, énuméré

- Type composite: array, records

- Type accès: comme des pointeurs

- Type File

Types en VHDL

Page 103: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

103

Type scalaire

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

•entiersignal COMPT : integer range 0 to 15;

•flottantesignal MASSE : REAL; -- de -1e38 à 1e38

•physique qui est un entier avec l'unité correspondanttype TIME is range … to … --64 bitsunits fs; ps=1000 fs; ns=1000 ps; …hr=60 min;end units;T <= 5 ns;

Types en VHDL

Page 104: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

104

Remarque

type integer is range -2147483647 to 2147483647;

type real is range -1.0E308 to 1.0E308;

type time is range -2147483647 to 2147483647units

fs;ps = 1000 fs;ns = 1000 ps;us = 1000 ns;ms = 1000 us;sec = 1000 ms;min = 60 sec;hr = 60 min;

end units;

subtype natural is integer range 0 to integer’high;

subtype positive is integer range 1 to integer’high;

Page 105: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

105

Type énuméré

Les types ci-dessous sont des types prédéfinistype BOOLEAN is (FALSE, TRUE);

type BIT is ('0' , '1');

type severity_level is (note, warning, error, failiure);

type character is (…,’A’,’B’,…);

On peut définir son propre type. On 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);

Types en VHDL

Page 106: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

106

Type entier (scalaire)

C'est un type prédéfinitype 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;

Le type Natural existe dans le library standard:

subtype NATURAL is INTEGER

range 0 to INTEGER'high

Types en VHDL

Page 107: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

107

•Il existe des signaux logiques à plusieurs états:0, 1, mais aussi 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édanceQ <= ‘1’;

Logique à valeurs multiples (scalaire)

Types en VHDL

Page 108: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

108

Le type std_logic :

‘ U ’ non initialisé

‘ X ’ non connu

‘ 0 ’ logique 0

‘ 1 ’ logique 1

‘ Z ’ haute impédance

‘ W ’ non connu

‘ L ’ logique 0

‘ H ’ logique 1

‘ - ’ don’t care

Strong drive

weak drive

Le type std_logic

Types en VHDL

‘0’

‘H’

‘0’

‘1’

‘L’VDD

Page 109: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

109

Haute impédance un type résolu

Les signaux à trois état doivent être résolus. S’il est fixé à ‘0’ par un circuit et à ‘Z’ par un autre, le simulateur ne doit pas s’affoler mais doit savoir que le ‘0’ remporte sur ‘Z’.

Page 110: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

110

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); -- type prédéfini

signal REG : std_logic_vector (0 to 31);

Type composite

Types en VHDL

Page 111: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

111

Accès aux éléments

•Déclaration:A,B: std_logic_vector(15 downto 0);

•Accès direct :A(3) <= ‘1’;B(15) <= ‘0’;

•Accès par tranchesA(15 downto 12) <= "1011"; B(0 to 2) <= "111" ; -- erreurA(10 downto 2) <= B(15 downto 7);

Types en VHDL

Page 112: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

112

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 nommageA <= (1 =>'1', 3 =>'1',others =>'0');

• Par concaténationsignal 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;

Types en VHDL

Page 113: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

113

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”; -- Base Binaire par défaut

c <= B”0000”; -- Base Binaire explicite

d <= ”0110_0111”; -- Utiliser ‘_’ pour augmenter la lisibilité

e <= X”AF67”; -- Base Hexadecimale

f <= O”723”; -- Base Octale

Exemples

Types en VHDL

Remarque

Page 114: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

114

•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 T_VAR is array (0 to 7) of integer;•constant setting : T_VAR := (2,4,6,8,10,12,14,16);

•type T_MATRIX is array (0 to 3, 1 to 2) of natural;•variable data_arr : T_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);

Exemples

Types en VHDL

Remarque

Page 115: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

115

•On peut définir un type tableau d’éléments scalairetype real_vect is array (natural range <>) of real;

signal temp : real_vect(0 to 4);

Remarque: le type « real_vect » a été créé par vous.

On peut aussi:type real_vect is array (2 to 7) of real;

signal temp : real_vect;

•On peut définir aussi un tableau de compositestype MEMO is array (0 to 1023) of std_logic_vector(7 downto 0);

signal A,B : MEMO;

Déclaration d’un objet de type array

Page 116: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

116

Enregistrement (record)

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

type NAME isrecord

identifier : type_indication;:

identifier : type_indication;end record;

type PAQUET isrecord

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";

Types en VHDL

Page 117: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

117

Opérateurs en VHDL

Page 118: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

118

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

Structure du VHDL

Page 119: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

119

Circuits combinatoires

Page 120: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

120

Process combinatoire

Un circuit combinatoire donne toujours les mêmes sorties

pour les mêmes entrées

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-else" ou dans un "case")

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

Page 121: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

121

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

S <= '0';

else

S <= '1';

end if;

end process;

end COMB3;

Architecture COMB2 of NONET is

begin

--Traduction de la table

--de vérité dans un process

S <= '0' when A='1' and B='1'

else '1';

end COMB2;

Page 122: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

122

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 00 0 1 0 0 10 1 0 0 1 10 1 1 0 1 01 0 0 1 1 01 0 1 1 1 11 1 0 1 0 11 1 1 1 0 0

Page 123: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

123

Architecture AVEC_IF of CIRCUIT

signal A,S : std_logic_vector (2 downto 0);

begin

process(A)

begin

if A = "000" then S <= "000";

elsif A ="001" then S <= "001";

elsif ...

end if;

end process;

end AVEC_IF;

Affectation conditionnelle

Dans une zone séquentielle (process)

Page 124: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

124

Affectation sélective séquentielle

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;

Dans une zone séquentielle (process)

Circuits combinatoires

Page 125: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

125

Affectation sélective concurrente

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;

Dans une zone concurrente (architecture)

Circuits combinatoires

Remarque

Page 126: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

126

Affectation non conditionnelle

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

Dans une zone concurrente (architecture)

Circuits combinatoires

Remarque

Page 127: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

127

Affectation conditionnelle concurrente

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;

Dans une zone concurrente (architecture)

Circuits combinatoires

Remarque

Page 128: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

128

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;

Exemple : ALURemarque

Page 129: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

129

process(A,B,Sel)

begin

case Sel is

when "00" =>

Res <= A + B;

when "01" =>

Res <= A + (not B) + 1; -- ou A - B

when "10" =>

Res <= A and B;

when "11" =>

Res <= A or B;

when others =>

Res <= "--";

end case;

end process;

Exemple : ALU (suite)Remarque

Page 130: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

130

Exemple : Multiplieur

Le but est de réaliser un multiplieur 4 bits fois 4 bits

A 1001

B *1101

---------

0000 1001

+0000 0000

+0010 0100

+0100 1000

----------

0111 0101

res(0)

A

44

0

5

(4 downto 1)

4

res(1)

5

(4 downto 1)

4

res(2)

5

(4 downto 1)

4

B(0)

B(1)

B(2)

B(3)

res(7 downto 3)

0

0

0

0

Remarque

Page 131: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

131

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;

Exemple : Multiplieur (suite)Remarque

Page 132: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

132

Chapitre : Machine à états finis

•Toute information du passé est sauvegardée dans l’état actuel du circuit

•L’état interne est préservé dans des registres (bascules). Une machine à �

états comporte au moins log�� bascules.

•L’état prochain dépend de l’état actuel et des entrées

•Le changement d’état se fait sur le front de l’horloge

•Machine de Moore : les sorties ne dépendent que de l’état courant.

•Machine de Mealy : les sorties dépendent de l’état courant mais aussi des

entrées

Machine à états finis

Page 133: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

133

s0

s1s2

E1E2= "1-"

E1E2="0-"

E1E2= "10"

E1E2= "11"

Présentation graphique

•Les cercles présentent les états possibles

d’une machine à états finis

•Les flèches représentent les changements

possible

•Les conditions sont présentées sur les flèches

•Les changements d’état se réalisent sur le

front de l’horloge

•L’horloge est implicite

Page 134: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

134

Dans un automate synchrone il existe

•une logique combinatoire permettant le calcul de l'état suivant

•une logique combinatoire permettant le calcul des sorties

•une partie séquentielle synchrone qui se charge du changement d'état du système au moment voulu.

Deux types de réalisation

•un seul process regroupant les parties combinatoire et séquentielle (adapté aux petites machines)

•un process séquentielle synchrone pour changement d’état et deux process combinatoires (pour calculer l’état prochain et les sorties)

Séparation des logiques

Machine à états finis

Page 135: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

135

type T_ETAT is (E1, E2, E3);signal etat : T_ETAT;. . .Process(CLK)

beginif CLK'event and CLK='1‘ then

case etat iswhen E1 => -- mise à jour des sorties pour état E1

if <cond> then ETAT <= E3; end if;when E2 => -- mise à jour des sorties pour état E2

ETAT <= E3when E3 => -- mise à jour des sorties pour état E3

if <cond> then ETAT <= E1;elsif <cond> then ETAT <= E2;end if;

end case;end if;

end process;

D Q

CLK

Registre d’états

ENTREE

CLK

Implantation par un seul process

Machine à états finis

Logique combinatoire

État courant

• Process n’est pas combinatoire

• Très simple à écrire

• Ne convient pas aux machines complexes

Page 136: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

136

Implantation par des process séparés (plus robuste)

Fonction combin-

atoire

F

Fonction combin-

atoire

G

Registre d'états

S1

S2

E1

E2

H

RAZ

ETAT_FUTURETAT_COUR

Machine à états finis

MealyMoore

Page 137: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

137

•Déclaration des signaux :

signal E1,E2,S1,S2,H,RAZ : std_logic

•Déclaration des états :

type T_ETAT is (ETAT1, ETAT2, ETAT3);

signal ETAT_COUR, ETAT_FUTUR : ETAT;

•Avancement dans l’état (process synchrone)

REG : process (H, RAZ)

begin

if RAZ = ‘0’ then ETAT_COUR <= ETAT1;

elsif H’event and H = ‘1’ then

ETAT_COUR <= ETAT_FUTUR;

end if;

end process;

Programmation logique séparée

Machine à états finis

Page 138: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

138

Programmation de la partie combinatoire G

G : process (E1,E2,ETAT_COUR) -- Tous les signaux

-- d’entrée sont dans la liste de sensibilité

begin

case ETAT_COUR is

when ETAT1 =>

-- suivant la valeur de E1 et E2 on

-- affecte à ETAT_FUTUR une valeur

when ETAT2 =>

-- suivant la valeur de E1 et E2 on

-- affecte à ETAT_FUTUR une valeur

when ETAT3 =>

-- suivant la valeur de E1 et E2 on

-- affecte à ETAT_FUTUR une valeur

end case;

end process;

Machine à états finis

Attention aux conditions nécessaires pour qu’un process soit combinatoire !

Page 139: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

139

Programmation de la partie combinatoire F

F : process (E1,E2,ETAT_COUR) -- Tous les signaux

-- d’entrée sont dans la liste de sensibilité

begin

case ETAT_COUR is

when ETAT1 =>

-- suivant la valeur de E1 et E2 on

-- affecte aux sorties les valeurs correspondantes

when ETAT2 =>

-- suivant la valeur de E1 et E2 on

-- affecte aux sorties les valeurs correspondantes

when ETAT3 =>

-- suivant la valeur de E1 et E2 on

-- affecte aux sorties les valeurs correspondantes

end case;

end process;

Machine à états finis

Peut être intégré dans G !

Page 140: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

140

Rappels généraux (1)

•Les fonctions F et G peuvent être décrites dans le même process

•Si le process est synthétisé par un circuit séquentiel synchronisé sur front d’horloge, il ne doit comporter dans la liste de sensibilité que l’horloge et éventuellement une RAZ synchrone ou asynchrone et rien d'autre :

process(CLK,RESET) -- avec un Reset Asynchrone begin

if RESET='0' then ……………..elsif CLK'event and CLK='1' then……………………….end if;

end process,

Machine à états finis

Remarque

Page 141: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

141

•Si le process est synthétisé pour un circuit

combinatoire, il doit comporter dans la liste de

sensibilité tous les signaux lus.

•S’il y a un test (if ou case) pour un signal dans un

process combinatoire, ce test doit couvrir toues les

possibilités (ne pas oublier le else), et toutes les

sorties doivent être affectées dans toutes les

branches du test.

Rappels généraux (2)

Machine à états finis

Remarque

Page 142: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

142

F : process (E1,E2,ETAT_COUR) -- Tous les signaux -- d’entrée sont dans la liste de sensibilitébegin

case ETAT_COUR iswhen ETAT1 =>

if E1 = '0' and E2 = '0' thenS1 <= ‘0’; S2 <= ‘0’;

elsif E1 = ’1 ’ thenS1 <= ‘1’ ; S2 <= ‘0’;

else S1 <= ‘0’; S2 <= ‘1’;end if;

when ETAT2 => -- S1 et S2 <= …...when ETAT3 => -- S1 et S2 <= …...end case;

end process;

Exemple de la partie combinatoire F

Machine à états finis

Remarque

Page 143: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

143

Exemple écran VGA

CLK HS

fclk=25MHz

Remarque

Page 144: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

144

Ecran VGA: Conception RTL

HS <= '1' when etat_cour = PW else '0';

Remarque

Page 145: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

145

FSM: process(etat_cour, count)begin

case etat_cour iswhen PW =>

if count = 96 thenetat_futur <= BP;

elseetat_futur <= PW;

end if;when BP =>

if count = 144 thenetat_futur <= DISP;

elseetat_futur <= BP;

end if;when DISP =>

if count = 784 thenetat_futur <= FP;

elseetat_futur <= DISP;

end if;

when others =>if count = 0 then

etat_futur <= PW;else

etat_futur <= FP;end if;

end case;end process;

type t_etat is (PW, BP, DISP, FP);

signal etat_cour, etat_futur : t_etat:=PW;

Ecran VGA Programme VHDL

Remarque

Page 146: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

146

Techniques de programmation

Page 147: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

147

Utilisation de « Clock Enable »

• Tous les évènements sont synchronisés sur le front (montant) de l’horloge.

• Pour exécuter une partie du code à des fréquences moins rapides que l’horloge, on utilise les signaux « clock enable ».

• Ce sont des impulsions dont la durée de ‘1’ est exactement une seule période d’horloge.

• La répétition de ces impulsions donne la fréquence d’exécution du code.

CLK

EN

ES

CLK

EN1

process(CLK)

begin

if CLK'event and CLK='1' then

if EN = '1' then

--suite d’instructions

end if;

end if;

end process;

Page 148: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Periodic Clock Enable Generation

T=10 ns

T=80 ns

T=210 ns

CLK

EN1

EN2

Timing

generator

CLKEN1

EN2

process (CLK)

begin

if rising_edge(CLK) then

EN1 <= ‘0’; EN2<=‘0’;

cmp1 <= cmp1 + 1;cmp2 <= cmp2 + 1;

if cmp1 = 7 then EN1 <= ‘1’;

cmp1 <= 0;

end if;

if cmp2 = 20 then EN2 <= ‘1’;

cmp2 <= 0;

end if;

end if;

end process;

Page 149: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Enable usage

To execute some lines at EN rate, use general CLK in conjunction with EN.

T=10 ns

T=80 ns

CLK

EN

A process

repeated every

80 ns

CLK

EN

process (CLK)

begin

if rising_edge(CLK) then

if EN = ‘1’ then

--

-- write the code here

--

end if;

end if;

end process;

Page 150: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Example : Two-digit timer

Create a hexa-decimal two-digit timer counting from 00 to FF

Input CLK frequency = 1 MHz

Timing

generator

CLK en

2-digit

counter

CLK

8

process (CLK)

begin

if rising_edge(CLK) then

en <= '0';

cmp <= cmp + 1;

if cmp = 999_999 then

en <= ‘1’;

cmp <= 0;

end if;

end if;

end process;

CLK

en

Event that should make

the counter to

increment.

process (CLK)

Begin

if rising_edge(CLK) then

if en = '1' then

counter <= counter + 1;

end if;

end if;

end process;

Page 151: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Example : Traffic light

Create a traffic light with Red: 14 sec, Green: 12 sec, and yellow 2 sec.

Input CLK frequency = 1 MHz

For this example we will use a state machine with three states : red, green and yellow.

We use a timer counting from 0 to 27 as below:

0 1 2 13 14 15 25 26 27

Red 14 sec Green 12 sec Yellow

2 sec

red

greenyellow

If timer=13,

next-state = green

If

timer=25

Next_state = yelllow

If timer=27,

Next_state = red process (CLK)

begin

if rising_edge(CLK) then

if en = '1' then

timer <= timer + 1;

if timer = 27 then

timer <= 0;

end if;

end if;

end if;

end process;

Page 152: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Example : Traffic light (continue …)

State machine creation

-- type definition

type traffic_light_T is (red, green, yellow);

Signal state, next_state : traffic_light_T := red;

-- state machine (combinatory)

process(state, timer)

begin

case state is

when red =>

if timer = 13 then next_state = green;

else next_state = red;

end if;

when green =>

if timer = 25 then next_state = yellow;

else next_state = yellow;

end if;

when others =>

if timer = 27 then next_state = red;

else next_state = yellow;

end if;

end case;

end process;

process (CLK)

begin

if rising_edge(CLK) then

if en = '1' then

state <= next_state;

end if;

end if;

end process;

State Register

next_state

EN

CLK

state

Comb

state

Timernext_state

Page 153: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Example : Traffic light, timing diagram

12timer

en

redstate

next_state red

14

green

green

green

green

15

Traffic_light

The entity

CLK

R

Y

G

R <= '1' when state = red else '0';

Y <= '1' when state = yellow else '0';

G <= '1' when state = green else '0';

process(state, timer)

begin

case state is

when red =>

if timer = 13 then next_state = green;

else next_state = red;

end if;

. . .

process (CLK)

begin

if rising_edge(CLK) then

if en = '1' then

state <= next_state;

end if;

end if;

end process;

CLK

13

red

green

Page 154: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

154

Exemples

process(CLK)

begin

if CLK’event and CLK=‘1’ then

REG <= REG(0) & REG(7 downto 1); -- rotate right

REG <= ‘0’ & REG(7 downto 1); -- shift right logical

REG <= REG(7) & REG(7 downto 1);

end if;

end process

Les valeurs signées

Z <= (X(7) & X(7 downto 0)) + (Y(7) & Y(7 downto 0));

Les valeurs non signées

Z <= (‘0’ & X(7 downto 0)) + (‘0’ & Y(7 downto 0));

Page 155: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

155

Exemple 4, affichage multiplexé

Page 156: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

156

Préparation de l’horloge

Horloge de la carte est à 100 MHz

Supposons qu’une horloge à approximativement 50 KHz est nécessaire:

Une division par : 100 x 106 / 50 x 103 = 2000

CLK_EN_Gene : Process(CLK)Begin

if CLK’event and CLK=‘1’ thenCLK_EN <= ‘0’;cmp <= cmp + 1;if cmp = 1999 then

CLK_EN <= ‘1’;cmp <= 0;

end if;end if;

End process;

CLK CLK_EN

CLK_EN_Gene

cmp

CLK

CLK_EN

Programme VHDL

Page 157: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

157

Machine à états

type T_ETAT is (SEG1, SEG2, SEG3, SEG4);signal etat : T_ETAT;

process(CLK)begin

if CLK’event and CLK=‘1’ thenif CLK_EN = ‘1’ then

case ETAT iswhen SEG1 => etat <= SEG2;when SEG2 => etat <= SEG3;when SEG3 => etat <= SEG4;when SEG4 => etat <= SEG1;when others => etat <= SEG1;end case;

end if;end if;

end process;

-- une autre alternative

signal etat : integer range 0 to 3;

process(CLK)begin

if CLK’event and CLK=‘1’ thenetat <= etat + 1;

end if;end process;

Page 158: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

158

Circuit complet

with etat select

An <= "0111" when SEG1,

"1011" when SEG2,

"1101" when SEG3,

"1110" when others;

with etat select

HEX <= "0001" when SEG1,

"1001" when SEG2,

"0100" when SEG3,

"0101" when others;

with HEX select

SEG<= "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

Page 159: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

159

Exemple 7- CNA AD5541A

Pour que le CNA produise une tension analogique à partir d’une donnée de 16 bits, il faudra respecter le timing donné par le constructeur.

Remarque

Page 160: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

160

Exemple 7- AD5541A Timing Diagram

La donnée est à envoyée en série (MSB d’abord)

Générer une horloge à f=1/t1

Génération de CS

Génération de LDAC

DIN change sur le front

descendant de SCLK

Remarque

Page 161: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

161

Exemple 7- AD5541A contraintes de Timing

Fclk=25MHz

On fixe à 1/25MHz=40ns

Remarque

Page 162: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

162

Le but est de créer l’interface CNA pour simplifier le dialogue avec le CAN. Ainsi, pour dialoguer avec l’interface, on n’aura qu’un bus de 16 bits et un signal STRB (Strobe).

Exemple 7- Interface CNARemarque

Page 163: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

163

Exemple 7- Conception

Une machine à état

- État repos (CS<=‘0’; DIN <= ‘Z’; LDAC <= ‘1’);

- Dès qu’on détecte ‘1’ sur STRB

- on envoie ‘1’ sur CS

- État change en envoie

- On envoie les 16 bits de DATA un par un (MSB d’abord)

- 16 bits envoyés, on attend une période d’horloge (état tempo)

- Etat fin pour finaliser (LDAC <= ‘1’)

Remarque

Page 164: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

164

Exemple 7- Programmation un seul process

signal cmp : integer range 0 to 15;

signal reg : std_logic_vector (15 downto 0);

type T_etat is (repos, envoi, tempo, fin);

signal etat : T_etat := repos;

process(CLK)

begin

if CLK'event and CLK='0' then

case etat is

when repos =>

CS <= '1';

LDAC <= '1';

cmp <= 15;

DIN <= 'Z';

if STRB = '1' then

reg <= DATA;

etat <= envoi;

end if;

when envoi =>

CS <= '0';

DIN <= reg(cmp);

cmp <= cmp - 1;

if cmp = 0 then

etat <= tempo;

end if;

when tempo =>

DIN <= 'Z';

CS <= '1';

etat <= fin;

when others => -- etat = fin

LDAC <= ‘0';

cmp <= 15;

etat <= repos;

end case;

end if;

end process;

Remarque

Page 165: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

165

Exemple 7- Conception robusteRemarque

Page 166: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

166

entity AD5541A isPort ( CLK : in STD_LOGIC;

DATA : in STD_LOGIC_VECTOR (15 downto 0);STRB : in STD_LOGIC;CS : out STD_LOGIC;DIN : out STD_LOGIC;LDAC : out STD_LOGIC;SCLK : out STD_LOGIC);

end AD5541A;

architecture Behavioral of AD5541A istype t_etat is (repos, e_cs, envoie, tempo, e_ldac);signal etat_cour, etat_futur : t_etat:= repos;signal count : integer range 0 to 31:=0;signal raz : std_logic;signal reg : std_logic_vector(15 downto 0);

Begin

SCLK <= not CLK;DIN <= reg(16-count) when etat_cour = envoie else 'Z';CS <= '1' when etat_cour = e_CS else '0';LDAC <= '0' when etat_cour=e_ldac else '1';

process(CLK)begin

if CLK'event and CLK='1' thenif STRB = '1' then

reg <= DATA;end if;

end if;end process;

process(CLK)begin

if CLK'event and CLK='1' thenetat_cour <= etat_futur;

end if;end process;

process(CLK)begin

if CLK'event and CLK='1' thenif raz = '1' then

count <= 0;else

count <= count + 1;end if;

end if;end process;

Exemple 7- ProgrammeRemarque

Page 167: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

167

process(etat_cour, count, STRB)begin

etat_futur <= etat_cour;raz <= '0';case etat_cour iswhen repos =>

raz <= '1';if STRB = '1' then

etat_futur <= e_cs;end if;

when e_cs =>if count = 0 then

etat_futur <= envoie;end if;

when envoie =>if count = 16 then

etat_futur <= tempo;end if;

when tempo =>if count = 17 then

etat_futur <= e_ldac;end if;

when others => -- e_ldacif count = 18 then

etat_futur <= repos;end if;

end case;end process;

end Behavioral;

Exemple 7- ProgrammeRemarque

Page 168: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

168

Exemple 7- Résultat de simulationRemarque

Page 169: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

169

Technique de programmation

Page 170: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

170

Attention !

Les instructions suivantes sont interdites dans une zone concurrente

Architecture x of y is

Begin

A <= not A;

CMPT <= CMPT + 1;

REG <= REG (0) & REG(7 downto 1);

…...

end x;

+1

Page 171: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

171

Correction

+1

D Q

CLK

D Q

CLK

On utilise un processsynchronisé sur un frontprocess (CLK)

begin

if rising_edge(CLK) then

A <= not A;

-- CMPT <= CMPT + 1;

-- etc;

end if;

end process;

Attention !Circuits séquentiels

Page 172: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

172

Process synchrones!

Dans un process synchrone il faut respecter un des deux canevas ci-dessous

process(CLK) uniquement CLK dans la liste de sensibilité

begin

if CLK’event and CLK=‘1’ then process ne contient qu’un grand if

-- suite d’instructions qui peut contenir d’autre if

end if; tout de suite après : end process

end process;

process(CLK, RST) CLK et le signal reset dans la liste de sensibilité

begin

if RST = ‘1’ then process ne contient qu’un grand if-else

-- suite d’instructions qui peut contenir d’autre if

elsif CLK’event and CLK=‘1’ then

-- suite d’instruction qui peut contenir d’autre if

end if; tout de suite après : end process

end process;

Page 173: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

173

Les sous-programmes

But des sous-programmes

•Pour écrire des algorithmes réutilisables

•Pour augmenter la lisibilité

Deux classes des sous-programmes

•Les procédures

•Les fonctions

Les sous-programmes

Page 174: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

174

•Mot clé procedure

•L'appel d'une procédure est une instruction concurrente ou séquentielle

•Peut retourner plusieurs valeurs

•Peut agir sur les signaux globaux

•Peut se synchroniser (avec wait dedans)

•Corps d'une procédure est une zone séquentielle

Procédure

Les sous-programmes

Page 175: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

175

Fonction

•Mot clé function

•L'appel est à droite d'une affectation

•L'appel peut se faire dans la zone concurrente ou séquentielle

•Retourne une seule valeur

•Rend immédiatement sa valeur

•Corps d'une fonction est une zone séquentielle

Les sous-programmes

Page 176: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

176

Ecriture des sous-programmes

Un sous-programme est constitué

•D'une déclaration : interface

•D'un corps : algorithme

Syntaxe de la déclaration

•procedure <nom> (liste des paramètre);

•function <nom> (liste des paramètre) return type_du_résultat;

Les sous-programmes

Page 177: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

177

Liste_des_paramètre :{classe_d'objet} PARAM1 :{mode} type{:=valeur_par_défaut}•class_d'objet : signal, variable, constant•mode : in, out, inout

Restriction

•pas de paramètres out ou inout dans la déclaration d'une fonction

•pas de variable transmise à une fonction

•classe d'objet par défaut est "constant" pour les "in" et "variable" pour les "out" et "inout"

Déclaration des sous-programmes

Les sous-programmes

Page 178: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

178

Corps de sous-programme

Entête is -- function ou procedure{zone de déclarations}

begin{partie instruction séquentielle}

end {nom_de_sous-programme}

Exemplefunction MIN (signal A,B : integer) return integer isbegin

if A < B then return Aelse return Bend if;

end MIN;

Les sous-programmes

Page 179: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

179

Appel de sous-programme

Différentes formes d'appel

•Par position (même ordre que la déclaration)

•RESULTAT <= MIN (SIG1, 5);

•Par nom (ordre non important)

•RESULTAT <= MIN (B=> 5, A=> SIG1);

•RESULTAT <= MIN (A=> SIG1, B=> 5);

Les sous-programmes

Page 180: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

180

-- HEX-to-seven-segment decoder

-- HEX: in STD_LOGIC_VECTOR (3 downto 0);

-- LED: out STD_LOGIC_VECTOR (6 downto 0);

--

-- segment encoding

-- 0

-- ---

-- 5 | | 1

-- --- <- 6

-- 4 | | 2

-- ---

-- 3

Exemple

Exemples

Page 181: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

181

with HEX selectLED<= "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

Programmation concurrente

Exemples

Page 182: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

182

function DECODE (signal HEX: std_logic_vector(3 downto 0))return std_logic_vector(6 downto 0) isbegin

case HEX iswhen "0001" => return "1111001"; --1when "0010" => return "0100100"; --2when "0011" => return "0110000"; --3when "0100" => return "0011001"; --4when "0101" => return "0010010"; --5when "0110" => return "0000010"; --6when "0111" => return "1111000"; --7when "1000" => return "0000000"; --8when "1001" => return "0010000"; --9when "1010" => return "0001000"; --A

………...when others => return « 1000000"; -- 0end case;

end;

Utilisation de fonction

Exemples

Page 183: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

183

Paquetage

Il donne la possibilité de

•Regrouper des codes communs dans un travail en équipe

•Déclarer des types et des sous-types

•Déclarer des objets (signaux, constants)

•Déclarer des sous-programmes

•Déclarer des alias

Paquetage

Page 184: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

184

Syntaxe de Paquetage

Package <nom_de_paquetage> is

<suite de déclarations>

end {<nom_de_paquetage>};

Exemple:

package pak_test is

subtype OCTET is std_logic_vector(7 downto 0);subtype MOT is std_logic_vector(15 downto 0);

constant PAQUET_SIZE : integer := 11;

function INT_TO_7SEG (constant CHIFFRE : in std_logic_vector(3 downto 0)) return OCTET;

end pak_test;

Paquetage

Page 185: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

185

Paquetage de composants

Le paquetage permet aussi de grouper la déclaration d'un ensemble de composants.

Exemple :package STANDARD_CELL is

component INVERSEURport (E : in bit; S : out bit);end component;

component PORTE_OUport (A,B : in bit; S : out bit);end component;

….

end STANDARD CELL;

Paquetage

Page 186: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

186

Corps de Paquetage

Décrit l'algorithme des sous-programmes déclarés dans le package.

Syntaxe :package body <nom_de_paquetage> is

{corps de sous-programmes}

end <nom_de_paquetage>;

Paquetage

Page 187: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

187

package body pak_test is

function INT_TO_7SEG (constant CHIFFRE : in std_logic_vector(3 downto 0)) return OCTET is

variable SEG : std_logic_vector(7 downto 0);begin

case CHIFFRE iswhen "0001" => SEG := "01111001" ; --1when "0010" => SEG := "00100100" ; --2

…….when "1111" => SEG := "00001110" ; --Fwhen others => SEG := "01000000" ; --0

end case;return SEG;

end INT_TO_7SEG;

end pak_test;

Exemple de Corps de Paquetage

Paquetage

Page 188: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

188

Utilisation de paquetage

•On crée d'abord une librairie

•Sous ISE, new source --> VHDL library

•Ecrire le paquetage et son corps

•Ajouter à la librairie que l'on souhaite

•Sous ISE, sélectionner le fichier et ensuite--> move to library

•Dans le programme utilisant cette librairie :library <mon_lib>use <mon_lib>.<mon_paquetage>

Paquetage

Page 189: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

189

Configuration

Une entité peut avoir plusieurs architectures

Un rôle de configuration : choisir l'architecture correspondante

Exemple : Pour l'entité additionneur on peut envisager 3 architectures différentes : A, B et C

ADDITIONNEUR(A)ADDITIONNEUR(B)ADDITIONNEUR(C)

A chaque instanciation de l'entité, un seul couple entité/architecture peut être compilé.

Configuration

Page 190: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

190

Deux façons pour relier une architecture précise à une entité :

•Dans une unité de compilation autonome : la configuration

•Dans la partie déclarative d'un bloc ou d'une architecture (configuration "à la volée")

(Par défaut c'est la dernière compilée qui sera prise en compte)

Choix de l'architecture

Configuration

Page 191: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

191

Exemple de Configuration

Entity SIM is end;

architecture ESSAI1 of SIM iscomponent ADD

port (A,B : in integer;S : out integer);

end component;

signal X,Y,SUM : integer;

beginINST1 : ADD port map (X,Y,SUM);

X <= 12, 55 after 100 ns;Y <= 0, 100 after 200 ns;

end ESSAI1;

configuration CONF of SIM is

for ESSAI1for INST1 : ADD

use entity work.ADD(FONCTION)end for;

end for;

end CONF;

Entity ADD isport (A,B : in integer;

S : out integer);end ADD;

architecture FONCTION of ADD isbegin

S <= A+B;end FONCTION;

Configuration

Page 192: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

192

Exemple de Configuration "à la volée"

Entity ADD isport (A,B : in integer;

S : out integer);end ADD;

architecture FONCTION of ADD isbegin

S <= A+B;end FONCTION;

Entity SIM is end;

architecture ESSAI1 of SIM iscomponent ADD

port (A,B : in integer;S : out integer);

end component;for all : ADD

use entity work.ADD(FONCTION);-- ou-- for INST2 : ADD-- use entity work.ADD(FONCTION);

signal X,Y,SUM : integer;

beginINST2 : ADD port map (X,Y,SUM);

X <= 12, 55 after 100 ns;Y <= 0, 100 after 200 ns;

end ESSAI1;

Configuration

Page 193: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

193

•Attribut sur les signaux:•signal_name'attribut•l'attribut synthétisable : event•If CLK'event and CLK='1' then …

•attribut sur le type array•type MYARR is array (-2 to 4) of integer;•MYARR’left returns -2•MYARR’right 4•MYARR’high 4•MYARR'low -2•MYARR’reverse_range 4 downto to -2

Les Attributs

Les Attributs

Page 194: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

194

Alias

Intérêt•Donne un nom différent (plus lisible) à un objet

•l'ancien nom reste utilisableSyntaxe

•alias nouveau_nom : type_ou_sous_type is ancien_nom

Exemple

variable V32 : std_logic_vector (0 to 31);

alias P_8 : std_logic_vector (0 to 7) is V32(0 to 7);alias D_8 : std_logic_vector (0 to 7) is V32(24 to 31);alias SIGNE : std_logic is V32(0);. . .SIGNE := '1'; -- identique que V32(0) <= ‘1’;

Alias

Page 195: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

195

Encodage d'état dans une machine à état

•Encodage d'états peut se faire manuellement :

type t_etat is (S1, S2, S3, S4, S5);-- encodage binaireattribute enum_code : string;attribute enum_code of t_etat : type is "000 001 010 011 100";-- S1 est codé en "000", S2 en "001", S3 en "011" et …signal etat : t_etat;

•On peut laisser le compilateur choisir le codagetype t_etat is (S1, S2, S3, S4, S5);signal etat : t_etat;

Encodage d'état dans une machine à état

Page 196: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

196

Codage one-hot

La méthode préférée pour les circuits énormes est le codage one-hot

type t_etat is (S1, S2, S3, S4, S5);-- encodage binaireattribute enum_code : string;attribute enum_code of t_etat : type is "00001 00010 00100 01000 10000";-- S1 est codé en "00001", S2 en "00010", S3 en "00100" et …signal etat : t_etat;

Remarque:

Ne pas oublier d'initialiser l'état avec un signal RESET

Encodage d'état dans une machine à état

Page 197: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

197

BIT0 : FULL_ADD port map (X(0) , Y(0) , ’0’ , Z(0) , C(0));BIT1 : FULL_ADD port map (X(1) , Y(1) , C(0) , Z(1) , C(1));….BIT7 : FULL_ADD port map (X(7) , Y(7) , C(6) , Z(7) , C(7));

for Generate

for-generate (à utiliser dans la zone concurrente) permet de répéter un circuit plusieurs fois.

Exemple :

LABEL : for i in 1 to 7 generate

ADDITION : FULL_ADD port map (X(i), Y(i), C(i-1), Z(i), C(i);

end generate

BIT0: FULL_ADD port map (X(0) , Y(0) , ’0’ , Z(0) , C(0));

For generate

Page 198: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

198

Généricité

C’est un moyen de transmettre des infos à un component pour le rendre paramétrable.

Exemples : une porte ET à N entrées, un registre à décalage de taille N, un multiplexeur N vers 1, …

Syntaxe : generic (param1 : type de param1 := valeur par défaut;

param2 : type de param2 := valeur par défaut;...);

Généricité

Page 199: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

199

Exemple

Porte ET à N entrées :entity PORTE_ET is

generic(N : integer := 2);port(ENTREE : in std_logic_vector(1 to N);

SORTIE : out std_logic);end entity;…process (ENTREE)

variable V : std_logic;begin

V := '1';for I in 1 to N loop

V := V and ENTREE(I);end loop;SORTIE <= V;

end process;

Généricité

Page 200: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

200

Appel d’un bloc paramétrable

component PORTE_ETgeneric(N :integer := 2);port(ENTREES : in std_logic_vector(1 to N);

SORTIE : out std_logic);end component;…architecture A of B isbegin

INST : PORTE_ET generic map(N => 5)port map(ENTREES => A,

SORTIE => Z);…end A;

Généricité

Page 201: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

201

If Generate

If-generate permet de synthétiser un circuit suivant une condition

Exemple :

architecture A of generate_test issignal clk_r : std_logic:= '1';beginU1: if CLK_DIV generate

process(CLK)begin

if CLK'event and CLK='1' thenclk_r <= not clk_r;

end if; end process;

end generate;

U2: if not CLK_DIV generate clk_r <= clk;end generate;

sortie <= clk_r;

end A;

entity generate_test isgeneric ( CLK_DIV : boolean :=TRUE);Port ( CLK : in std_logic;

sortie : out std_logic);end generate_test;

If generate

Page 202: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

202

Conseils de synthèse

•Utiliser le nom du fichier le même que le nom de l'entité

•Ne pas mettre plus d'un couple entity/architecture dans un fichier

•Les noms des signaux peuvent être jusqu'à 256 caractères. Ne pas hésiter à donner un nom signifiant à des signaux (constantes, variables, types, etc)

•Quand vous appelez un component, utilisez les paramètres de passage par nom :

•U1 : HALF_ADD port map(A =>oper1, B=>oper2, SUM =>somme, C=>retenue);

Conseils de synthèse

Page 203: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

203

Conseils (2)

•Ne jamais utiliser des signaux ou des variables pour des constantes (cela gaspille les ressources énormément),

•Xilinx recommande de n'utiliser que les std_logic ou std_logic_vector pour les types des ports dans les entités.

•Eviter, si c'est possible, l'utilisation de "buffer" pour les signaux de sortie qui sont lus dans l'architecture. A la place, déclarer un signal interne avec la même valeur et utiliser "out" pour le signal de sortie

Conseils de synthèse

Page 204: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

204

Conseils (3)

•Privilégier l'utilisation des signaux par rapport aux variables

•Les instructions wait for xx ns, et after xx ns ne se synthétisent pas

•Les valeurs initiales ne sont normalement pas tenue compte en synthèse :

•signal SUM : std_logic_vector(3 downto 0) := "1100";

Conseils de synthèse

Page 205: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

205

Ordre des opérations

Ordre dans une expression arithmétiqueADD <= A1 + A2 + A3 + A4;ADD <= (A1+A2) + (A3+A4)

Donnent le même résultat mais pas forcement le même circuitA1

A2A3A4

A1

A2

A3

A4

Un circuit plus rapide

ADD

ADD

Conseils de synthèse

Page 206: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

206

"if" ou "case", la différence

Pour un circuit de décodage, "if" produit un circuit à priorité tandis que "case", un circuit équilibré

•Utiliser "case" pour un décodage complexe

•Utiliser "if" pour favoriser les chemins lents

architecture A of if_ex isbeginIF_PRO: process (SEL,A,B,C,D)

beginif (SEL=”00”) then MUX_OUT <= A;elsif (SEL=”01”) then MUX_OUT <= B;elsif (SEL=”10”) then MUX_OUT <= C;elsif (SEL=”11”) then MUX_OUT <= D;else MUX_OUT <= '0';end if;

end process; --END IF_PROend BEHAV;

entity if_ex isport (SEL: in std_logic_vector(1 downto 0);

A,B,C,D: in std_logic;MUX_OUT: out std_logic);

end if_ex;

Conseils de synthèse

Page 207: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

207

Circuit résultant

Conseils de synthèse

Page 208: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

208

Utilisant "case"

architecture BEHAV of case_ex isbegin

CASE_: process (SEL,A,B,C,D)begin

case SEL iswhen “00” => MUX_OUT <= A;when “01” => MUX_OUT <= B;when “10” => MUX_OUT <= C;when “11” => MUX_OUT <= D;when others=> MUX_OUT <= '0';

end case;end process;end BEHAV;

entity case_ex isport (SEL: in std_logic_vector

(1 downto 0);A,B,C,D: in std_logic;MUX_OUT: out std_logic);

end case_ex;

Conseils de synthèse

Page 209: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

209

Circuit résultant

Conseils de synthèse

Page 210: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

210

Génération des latch

Une instruction "if" incomplet synthétise un latch (un verrou):

if A=B then C <= '1';end if;

Si ce n'est pas ce que l'on souhaite, il faut ajouter la branche else.

if A=B then C <= '1';else C<= ‘0’;end if;

Conseils de synthèse

Page 211: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

211

Partage des ressources

Process (A,B,C,COND)

Variable Z1,Z1 : ….. ;begin

Z1 := A+B;Z2 := A+C;if COND='1' then

Z <= Z1;else Z <= Z2;end if;

end process;

Process (A,B,C,COND)variable TMP : ..... ;begin

if COND='1' thenTMP := B;

else TMP := C;end if;Z <= TMP + A;

end process;

B

A

C

COND

B

C

A

COND

Conseils de synthèse

Page 212: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

212

Validation d'horloge

Eviter de générer une horloge par un circuit combinatoire

gate_clk<= (IN1 and IN2 and CLK);process (gate_clk)begin

if (gate_clk’event and gate_clk=’1’) thenif (LOAD=’1’) then

OUT1 <= DATA;end if;

end if;end process;

Conseils de synthèse

Page 213: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

213

Validation d'horloge (suite)

ENABLE <= IN1 and IN2 and LOAD;process (CLOCK)begin

if (CLOCK’event and CLOCK=’1’) thenif (ENABLE=’1’) then

DOUT <= DATA;end if;

end if;end process;

Conseils de synthèse

Page 214: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

214

Occupation sur le FPGA

Occupation sur le FPGA

CLB CLB

Spartan-II, Virtex Spartan-III, Virtex-II

I3I2 OI1I0

SETCED Q

RST

Chaîne de retenue

LUT

I3I2 OI1I0

SETCED Q

RST

Page 215: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

215

Registre à décalage

Z-14Z-1 Z-1 Z-1 Z-1 Z-1

Ce registre à décalage demande combien de slice ?

12 car 2 bascules par slice sont disponibles.

Occupation sur le FPGA

Utilisation des bascules

Page 216: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

216

Utilisation des LUT

Multiplexeur

A

B

SEL1 SEL2

Ce multiplexeur demande combien de slice ?

I3

I2 O

I1

I0

SEL1SEL2

AB

Un seul slice.Occupation sur le FPGA

Page 217: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

217

Occupation sur le FPGA

Additionneur complet

+AB

Cin

Cout

sum

Sum=f(A,B,Cin)

Cout=g(A,B,Cin)

I3

I2 O

I1

I0

I3

I2 O

I1

I0

A

B

Cin

Cout

Sum

Un slice.

Page 218: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

218

Additionneur complet Xilinx

A

B

Cout

Cin

Sum

0 1

Un seul slice pour l'additionneur complet.Occupation sur le FPGA

LUT

Page 219: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

219

La chaîne de retenu

I3I2 OI1I0

SETCED Q

RST

LUT

I3I2 OI1I0

SETCED Q

RST

Connexion rapide

Occupation sur le FPGA

Page 220: Cours Conception circuits numériques - unilim.fr · – Evaluation TP – Exam pratique 1. Formation VHDL Vahid MEGHDADI 2 Introduction aux ... Formation VHDL Vahid MEGHDADI 3 Chapitre:

Formation VHDL Vahid MEGHDADI

220

Addition 8 bits

B7A7B6A6

B5A5B4A4

B3A3B2A2

B1A1B0A0

S1

S0

S3

S2

S5

S4

S7

S6

S8

Il suffit 4 slices pour une addition sur 8 bits

Occupation sur le FPGA