• Aucun résultat trouvé

2- Introduction au langage VHDL

N/A
N/A
Protected

Academic year: 2022

Partager "2- Introduction au langage VHDL"

Copied!
42
0
0

Texte intégral

(1)

Formation VHDL Vahid MEGHDADI

Conception circuit numérique

2- Introduction au langage VHDL

Introduction A VHDL

(2)

V H D L

V

VHSIC

(Very High Speed Integradted Circuit)

H

Hardware

D

Description

L

Language

(3)

Formation VHDL Vahid MEGHDADI

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

(4)

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

(5)

Formation VHDL Vahid MEGHDADI

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 (mapping, placement routage)

•Génération : Générer un fichier binaire à télécharger sur la cible (le FPGA)

Introduction A VHDL

(6)

Rappel: Niveau d’abstraction

Comportemental RTL

Logique Layout

VHDL

Synthèse comportemental

Synthèse logique Placement

routage

(7)

Formation VHDL Vahid MEGHDADI

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

Structure du VHDL

Circuit principal

Circuit principal

Package (librairie)

(8)

Minimum design en VHDL

Deux unités obligatoires

une entité

• une architecture

Un circuit décrit en VHDL

Déclaration d’entité

Architecture

(9)

Formation VHDL Vahid MEGHDADI

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.

(10)

Exercice

entity test is Port(

A,B: in std_logic;

D,F: out std_logic);

end test;

polling

Test

A B

D F

entity test is Port(

A: in std_logic;

B: in std_logic;

D: out std_logic);

F: out std_logic);

end test;

entity test is Port(

A,B,D,F: std_logic);

end test;

entity test is Port(

A,B: std_logic;

D,F: std_logic);

end test;

Fig A

Fig B

Fig C

Fig D

(11)

Formation VHDL Vahid MEGHDADI

ENTITY nand_gate IS PORT(

a : IN STD_LOGIC;

b : IN STD_LOGIC;

z : OUT STD_LOGIC );

END nand_gate;

Reserved words

Entity name Port 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é

[index]

(12)

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: inout et buffer. Xilinx ne conseille d’éviter le mode buffer.

(13)

Formation VHDL Vahid MEGHDADI

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.

(14)

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

(15)

Formation VHDL Vahid MEGHDADI

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.

(16)

Principe de concurrence

architecture v2 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 v2;

architecture v3 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 v3;

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 !

(17)

Formation VHDL Vahid MEGHDADI

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

« séquentielles ».

Ainsi, la partie après "begin" dans une architecture est une zone concurrente.

Remarque

architecture v3 of AOI is {zone de déclarations}

begin

{zone concurrente}

end v3;

(18)

Décrire des délais

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

On peut aussi les décrire.

(19)

Formation VHDL Vahid MEGHDADI

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.

[index]

event

affectation New event

(20)

Attention: l’instruction d’affectation retardé est utilisée 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

(21)

Formation VHDL Vahid MEGHDADI

Résultat obtenu en simulation

Résultat obtenu en synthèse

(22)

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

A B

SUM

C

(23)

Formation VHDL Vahid MEGHDADI

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

[index]

(24)

Hiérarchisation en VHDL

(25)

Formation VHDL Vahid MEGHDADI

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 1. On déclare l’entité du component

2. On instancie un exemplaire de ce component dans la zone concurrente

3. On procède au câblage de ce component

(26)

Exemple : multiplexeur 2 voies

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

(27)

Formation VHDL Vahid MEGHDADI

Déclaration de component

1-Déclaration du component

(28)

Déclaration de signaux

(29)

Formation VHDL Vahid MEGHDADI

Instanciation du component

2-Instanciation du component et 3- câblage

[index]

(30)

Une introduction au langage VHDL a été donnée

L’entité et l’architecture ont été abordées

Nous avons appris l’affectation retardée

L’hiérarchisation a été définie

Conclusion

(31)

Activities on Vivado

Very beginning with VHDL

(32)

Run Vivado

then

Create a project

(33)

Create a VHDL file

Click

(34)

Create a VHDL file

main A

B

C

We are going to design an xor gate.

Double click

(35)

The VHDL program

Here is the code that

you should type: Save your

file

(36)

Create the input signals

Clic k

(37)

Create the input signals

Clic k

Double click

(38)

Simulate

Is the simulation result is what you were waiting for ?

(39)

Create the design on the FPGA

We are using the Basys 3 board:

SW1 -> B SW0 -> A

Led0 -> C

3.3 GND

V17 V16

SW0

SW1 U16 led0

The signal A is connected to the pin V17, the B to V16 and the C to U16.

(40)

Pin assignment

Download the xdc file that contains all the pin connections of the board Basys 3 from:

http://www.unilim.fr/pages_perso/vahid/VHDL/Basys3_Master.xdc Save it the your project directory. Then add source

Browse to the

(41)

Connect the FPGA pins

We connect A to sw0, B to sw1, and C to led0.

For that, in the Basys3_Master.xdc file, uncheck and modify the following lines

And also for the signal C connected to led0 :

(42)

FPGA implementation

The circuit is ready, we should generate the configuration file and then download it to the FPGA.

It takes time to complete !

then Here the board Basys3 should

be connected to the PC.

Références

Documents relatifs

-- permet d'utiliser l'addition non signée avec le type STD_LOGIC_VECTOR use ieee.std_logic_unsigned.all;. entity

De plus, dans le cas d’un affichage VGA pour écran d’ordinateur, contrairement au signal vidéo composite du téléviseur, les trois signaux couleurs sont séparés,

• bitstream stored in a flash memory and automatically loaded when powering

 Par définition, un composant est aussi un système logique (un sous-sytème) ; à ce titre, il doit aussi être décrit par un couple (entity, architecture) dans lequel sont

Ghania SLIMANI, 2004, «Modélisation comportementale des circuits analogiques et mixtes en langage VHDL-AMS», Mémoire de magister, Université de Constantine 1..

Pour utiliser les types unsigned et signed (que l’on utilise systématiquement pour représenter des nombres qui sont physiquement des fils), il faut placer au début de la

๏ Considérons une information numérique stockée ou transmise sous la forme d’un STD_LOGIC_VECTOR.. La conversion des données depuis

Utiliser les propriétés des signaux pour plus de généricité. ๏ Les signaux et les variables ont des propriétés qui vous permettent de simplifier l’écriture du