cours vhdl ing mohamed masmoudi [email protected]

27
Cours VHDL Ing Mohamed MASMOUDI [email protected]

Upload: emilie-beaumont

Post on 03-Apr-2015

149 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

Cours VHDL

Ing Mohamed MASMOUDI

[email protected]

Page 2: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL2

Le VHDL

Very High Speed Integrated

Circuit

Hardware

Description

Langage

Langage : de description structurelle et comportementale de la

conception des dispositifs matériels en électronique numérique

(ASICs, CPLD, FPGA, logique câblée)

Autres HDL : Verilog, UDL/1, Estérel, Hardware C

Page 3: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL3

Pourquoi?

Langage pour la spécification des systèmes digitaux, aussi bien au niveau comportemental que structural

Utilisation: description des systèmes simulation aide à la conception documentation

Caractéristiques principales: description à plusieurs niveaux simulation activée par événements (event-driven) modularité extensibilité langage général, fortement typé

Page 4: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL4

Historique

1994

1981

1986

1983

1987

Initiation du langage

par le US - DoD

Développement des bases du langage

par Intermetrics, IBM et TI

Transfert des droits

à l’IEEE

Publication du standard

IEEE 1076

Révision du standard

IEEE 1164

Page 5: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL5

Concept

VHDL permet de coder une fonction d’une manière structurelle (comme un schéma) et/ou comportementale (fonctionnelle)

Codage comportemental plus proche de l’algorithme

portabilité, maintenabilité, versatilité

Codage structurel création d’une hiérarchie

emploi de macrofonctions

format de la liste d’équipotentielle (netlist)

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

B S

D

C

A

Page 6: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL6

Niveau d’abstractionLe codage en VHDL peut se faire selon 4 niveaux d’abstraction, ce qui permet une conception descendante

S=fft(e,64)S=fft(e,64) radix1radix1 radix2radix2 radix3radix3

Synthèselogique

Synthèselogique

Niveau 1Niveau 1 Niveau 2Niveau 2 Niveau RTLNiveau RTL netlistnetlist

registres

bibliothèque

Algorithme Architecture Architecturesynthétisable

Netlist

Page 7: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL7

Niveau d’abstraction

Page 8: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL8

Niveau d’abstraction Le niveau système : cette description regroupe

l’ensemble des spécification du circuit décrites sous la forme de comportements vis-à-vis de l’environnement associé au circuit, de performances à satisfaire, de contraintes d’utilisation. Cette description est de nature purement externe par rapport au circuit.

Le niveau fonctionnel : la description au niveau fonctionnel exprime le premier niveau interne de la solution, sous la forme d’un ensemble de fonctions +/- interdépendantes et de complexité variée. Cette description est orientée application ou objectif à satisfaire.

Page 9: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL9

Niveau d’abstraction Le niveau architectural : la description architecturale

exprime les modules exécutifs et les interconnections nécessaires entre ceux-ci pour satisfaire la fonctionnalité globale du niveau supérieur. Cette description est donc orientée réalisation.

Le niveau logique: la description représente un circuit par un ensemble interconnecté de fonctions logiques de faible complexité.

Le niveau électrique : la description électrique représente le circuit sous la forme d’éléments microélectroniques (transistors essentiellement) interconnectés de façon à assurer la fonctionnalité du circuit spécifiée par les niveaux supérieurs.

Page 10: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL10

Modèle de Gajski

Page 11: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL11

Etapes

VHDL : spécification, conception et description matérielle en électronique numérique

Analyse du système et partitionnement des tâches

Écriture du code VHDL par bloc

Écriture des « Test Bench » en VHDL

Synthèse au niveau portes

Implémentation matérielle

Simulation au niveau portes

Simulation du code VHDL

Page 12: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL12

Apport

Pour les circuits intégrés

Diminution des erreurs

simulation à différents niveaux d’abstraction

Diminution du temps de développement

conception à plus haut niveau

Pour les systèmes

Anticipation de l’intégration

modèles de composants simulable avant disponibilité

Normalisation des échanges

langage universel et unique

A2 + B2

Page 13: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL13

Description matérielle VHDL : se base sur la paire ENTITY -

ARCHITECTURE

ab

c

d

f

CircuitBoîte noire

ENTITYdécrit les ports d’E/S du circuit (brochage)

ab

c

d

f

ARCHITECTURE : décrit le contenu du circuit (câblage interne)

Page 14: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL14

EntityDescription externe du composant (Boîte

noire) Définition des ports d’E/S : type, sens, taille,

… Définition des paramètres

ENTITY <entity name> IS <generic declaration> <port declaration>END [ENTITY] <entity name> ;

<generic declaration> : paramètres du composant<port declaration> : interface avec l’environnement extérieur

Page 15: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL15

Les ports:

Les modes:

IN : Données qui sont des entrées uniquement

OUT : Données qui sont des sorties uniquement

INOUT : Données bidirectionnelles (en entrée ou en

sortie)

BUFFER : Données en sortie mais aussi en feed-back

interne dans le circuit

PORT( <port name> : <mode> <type> ; ..... <port name> : <mode> <type>);

Page 16: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL16

Types des portsBIT : valeurs possibles ‘0’ et ‘1’BIT_VECTOR : un vecteur de bitsINTEGER : utilisés comme indices (boucles), constantes,

…BOOLEAN : prend deux valeurs ‘TRUE’ ou ‘FALSE’CHARACTER : caractères ascii

Exemple :SIGNAL a: BIT_VECTOR(0 TO 3); - - e.g... Sens ascendantSIGNAL b: BIT_VECTOR(3 DOWNTO 0); - - e.g... Sens descendant

a <= "0111"; b <= "0101";

Ce qui signifie :a(0) = '0' b(0) = '1'a(1) = '1' b(1) = '0'a(2) = '1' b(2) = '1'a(3) = '1' b(3) = '0'

Page 17: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL17

Types des ports (IEEE1164)

Valeur Interprétation0 0 - Forcé

1 1 - ForcéU Uninitialized (non-initialisé)

X Inconnu - Forcé

Z Haute impédance

W Inconnu - Faible

L 0 - Faible

H 1 - Faible

- Don’t Care

Valeurs des signaux

std_logic et std_logic_vector

library IEEE; -- librairieuse IEEE.std_logic_1164.all;--

package

ENTITY exple1 IS PORT (

….);END exple1;

ARCHITECTURE archlogic OF exle1 ISBEGIN

…..

END archlogic;

Page 18: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL18

Déclarations d’une entité

ENTITY circuit1 IS

GENERIC (N: INTEGER:=7);

PORT (

clk, rst: IN BIT;

d: IN BIT_VECTOR(7 DOWNTO 0);

q: OUT BIT_VECTOR(7 DOWNTO 0);

co: OUT BIT);

END circuit1;

Circuit 1

rst

d[N:0]

clk

q[N:0]

co

Page 19: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL19

L’architecture

Objectif:

Description ”du câblage interne”

Modes de description: Structurelle

Instanciations : placement de composants logiques et leur interconnexion

Comportementale (aspect algorithmique) Description haut niveau (abstraite)

IF a = b THEN x<=a; Équations logiques

x <= (a OR b) AND c;

Page 20: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL20

Paire entité-architectureEntity décrit l’interface

externe d’un module, elle contient : Nom du module (ex: AOI) Ports d ’entrée/sorties (Nom,

direction: in,out, inout, buffer,…) Type (BIT, BIT_VECTOR, BOOLEAN,

INTEGER,…) Paramètres

Architecture décrit le fonctionnement interne et comporte : zone de déclarations

zone pour les instructions

Þ toujours associée à une entité

Þ plusieurs architectures peuvent être associées à la même entité

Library IEEE;

use IEEE.STD_1164.ALL;

architecture Acrh1 of AOI is

begin

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

end arch1;

-- fin du code VHDL

entity AOI is

port (

A, B, C, D: in STD_LOGIC;

F: out STD_LOGIC

);

end AOI;

Page 21: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL21

Paquetage Paquetage “Package” : collection d’objets

réutilisables : constantes, composants, types, fonction, procédure, ...

2 unités de compilation : déclaration de paquetage corps de paquetage

Le contenu de la déclaration de paquetage est “visible” depuis une autre unité de compilation si elle en a déclaré l’utilisation

Le contenu du corps de paquetage est “invisible” des autres unités de compilation

Page 22: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL22

Codage des composants

Half addersum

couta

b

Half addersum

couta

b

in1

in2

cin

carry

result

ENTITY half_adder IS PORT (a,b: IN std_logic; sum,cout : OUT std_logic); END half_adder;ARCHITECTURE beh OF half_adder ISbegin sum <= a XOR b; cout <= a AND b;end beh;

ENTITY OR_2 IS PORT(a,b: IN std_logic; c : OUT std_logic); END OR_2;ARCHITECTURE beh OF OR_2 ISbegin c <= a OR b;end beh;

Page 23: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL23

Instanciation Méthode 1

<inst label> : ENTITY <library>.<ent name>(<arch name>);

ENTITY full_adder IS PORT(in1,in2,cin: IN std_logic; result,carry : OUT std_logic); END full_adder;

ARCHITECTURE structural OF full_adderSIGNAL s1,s2,s3 : std_logic;BEGIN

H1 : entity work.half_adder(beh) PORT MAP(a=>in1, b=>in2, sum=> s1, cout => s3);H2 : entity work.half_adder(beh) PORT MAP(a=> s1, b=> cin, sum => result, cout => s2);O1 : entity work.OR_2(beh)

PORT MAP(a=>s2, b=> s3, c=> carry);END structural;

Page 24: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL24

Instanciation Méthode 2ENTITY full_adder IS PORT(in1,in2,cin: IN std_logic; result,carry : OUT std_logic); END full_adder;

ARCHITECTURE structural OF full_adder COMPONENT half_adder PORT(a,b : IN std_logic; sum,cout : OUT std_logic); END COMPONENT;

COMPONENT OR_2 PORT(a,b : IN std_logic; c : OUT std_logic); END COMPONENT;

SIGNAL s1,s2,s3 : std_logic;BEGIN H1 : half_adder PORT MAP(a=>in1, b=>in2, sum=> s1, cout => s3); H2 : half_adder PORT MAP(a=> s1, b=> cin, sum => result, cout => s2); O1 : or_2 PORT MAP(a=>s2, b=> s3, c=> carry);END structural;

Page 25: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL25

Opérateurs

CATEGORIE

and

nand

or

nor

xor

xnor

not

+

-

*

/

abs

**

mod

rem

TYPE OPERANDES

boolean

bit

bit_vector

integer

real

integer

SIGNIFICATION

et

non-et

ou

non-ou

ou exclusif

non ou-exlusif

non

+ unaire (signe +) ou addition

- unaire (signe -) ou soustraction

multiplication

division

valeur absolue

exponentiation

modulo

reste

Page 26: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL26

Opérateurs

CATEGORIE

=

/=

<

<=

>

>=

sll

srl

rol

ror

&

TYPE OPERANDES

Entrée Résultat

tout type

boolean

scalaire

bit_vector

(amplitude : integer)

bit

bit_vector

SIGNIFICATION

égal

non égal

inférieur

inférieur ou égal

supérieur

supérieur ou égal

logique gauche

logique droite

circulaire gauche

circulaire droite

concaténation

Page 27: Cours VHDL Ing Mohamed MASMOUDI Mohamed.masmoudi@alphatec.com.tn

M. MASMOUDI Cours VHDL27