0% ont trouvé ce document utile (0 vote)
78 vues63 pages

Introduction au langage VHDL et ses applications

Transféré par

Hichem Guedri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
78 vues63 pages

Introduction au langage VHDL et ses applications

Transféré par

Hichem Guedri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Le langage de description

VHDL

Hichem Guedri
Introduction
A E S
Méthode classique
0 1 0 S = Ā.E+ĒA
1 0 1

CAO

Nouvelle méthode

HDL

Langage de description VHDL


H. Guedri
Flot de conception

Langage de description VHDL


H. Guedri
Méthodes de CAO

Langage de description VHDL


H. Guedri
Langage de description VHDL
H. Guedri
Le transistor
Composant électronique de base
Portes logiques ON/OFF

Langage de description VHDL


H. Guedri
Technologie CMOS
Complementary Metal Oxide
Semiconductor
Niveaux logiques : 0 = 0V et 1 = 3V
Deux types de transistor :
 nMOS : conducteur si la grille=1
 pMOS : conducteur si la grille=0
Réalisation de quelques portes de
base
Inverseur, NAND, NOR

Langage de description VHDL


H. Guedri
Portes élémentaires

Langage de description VHDL


H. Guedri
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é

Langage de description VHDL


H. Guedri
Introduction au langage
VHDL

Langage de description VHDL


H. Guedri
Présentation de VHDL
VHDL
V VHSIC
(Very High Speed Integradted Circuit)
H Hardware
D Description
L Language
Langage pour décrire la structure et le comportement
de systèmes électroniques, en particulier des circuits
digitaux (ASIC, FPGA, . . . ).
Langage de description VHDL
H. Guedri
Un peu d’histoire
Début des années 80 par le département de la
défense américaine
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

Langage de description VHDL


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

Langage de description VHDL


H. Guedri
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 »

Langage de description VHDL


H. Guedri
Les cibles du langage VHDL

Langage de description VHDL


H. Guedri
les en-têtes de fichier
La première chose à faire est de définir les librairies qui
seront utilisées dans le code.

Tout d’abord, la librairie principale (en générale, IEEE).


le mot « use » indique quelle package de la librairie
nous allons utiliser.

Langage de description VHDL


H. Guedri
Après cela, le nom du package.
Enfin, le .all signifie que l’on souhaite utiliser tout ce
qui se trouve dans ce package.
Lorsque le nom de la librairie est précédé de IEEE.,
cela signifie que c’est une librairie qui est définie
dans la norme IEEE, et que l’on retrouvera dans tout
logiciel.
A l’inverse, il faut se méfier des librairies qui ne sont
pas IEEE, car elles sont en générale spécifiques à un
logiciel.

Langage de description VHDL


H. Guedri
Les librairies IEEE principales sont :
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;
Use ieee.std_logic_unsigned.all;
-- cette dernière bibliothèque est souvent utilisée pour l’écriture de compteurs

Dans l’outil Xilinx ISE, l’addition (+), la soustraction (-), la multiplication et la division de vecteurs
sont définies dans le paquetage std_logic_unsigned de la bibliothèque ieee

Use ieee.std_logic_unsigned.all;

Langage de description VHDL


H. Guedri
Structure d’un programme
Deux unités obligatoires Un circuit décrit en VHDL
une entité
une architecture

Langage de description VHDL


H. Guedri
Déclaration de l’entité
Le mot clé Entity est utilisé pour définir les
ports et les constantes génériques
Il s’agit de la description de la boite noire
Les ports peuvent être des entrées,
sorties ou bidirectionnels

Langage de description VHDL


H. Guedri
Les modes des ports

VHDL définit quatre modes qui déterminent le sens de transfert d’une donnée au travers du
port :

in L’entité lit un signal d’entrée fourni par l’extérieur


(ex : load, reset, clock, données unidirectionnelles)

out L’entité fournit un signal de sortie, mais ne peut pas relire ce signal

buffer L’architecture de l’entité fabrique un signal utilisable en sortie,


qui peut aussi être relu par l’entité comme un signal interne l’utilisation de ce mode est
(ex : sorties d’un compteur dont l’état doit être testé) déconseillée car il est mal
supporté par les outils
inout Le signal est bidirectionnel :
de simulation et synthèse.
en sortie, il est fourni par l’entité; en entrée, il est fourni par
l’extérieur. Ce mode autorise aussi le bouclage interne
(ex : bus de données)

Par défaut, le mode d’un port est in.

Langage de description VHDL


H. Guedri
Langage de description VHDL
H. Guedri
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.
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;

Langage de description VHDL


H. Guedri
Langage de description VHDL
H. Guedri
Les types des objets données

Les types prédéfinis par tous les compilateurs

integer : entier négatif ou positif

natural : entier positif ou nul

positive : entier positif

bit : énuméré dont les deux seules valeurs possibles sont ‘0’ et ‘1’

bit_vector : composite tableau représentant un vecteur de bits

boolean : énuméré dont les deux valeurs possibles sont false et true

real : flottant compris entre -1.0E38 et 1.0E38

Langage de description VHDL


H. Guedri
Les types complémentaires (inclus dans la bibliothèque IEEE 1164)
std_logic : 9 valeurs décrivant tous les états d’un signal logique

‘U’ : non initialisé**


‘X’ : indique un conflit, le signal est affecté d'un côté à '1' et d'un autre à '0'.
‘0’ : niveau 0, forçage fort
(**) Utile pour la simulation
‘1’ : niveau 1, forçage fort
‘Z’ : correspond à l'état haute 'impédance".
‘W’ : est la valeur d'un signal relié à 2 résistances de tirage, une tirant à 0 et l'autre à 1.
‘H’ : niveau 1, forçage faible
(*) Utile pour la synthèse
‘-’ : est un état indifférent. Utile pour décrire les tables de vérité.

std_logic_vector : vecteur de std_logic

Pour utiliser ces types il faut inclure les directives suivantes dans le code source.

library ieee;
use ieee.std_logic_1164.all;

Langage de description VHDL


H. Guedri
Remarques concernant les synthétiseurs

 ‘0’ et ‘L’ sont équivalents

 ‘1’ et ‘H’ sont équivalents

 ‘-’ est très utile pour la simplification des équations

 ‘U’, ‘X’, ‘W’ sont interdits

 Les types std_logic et std_logic_vector sont les plus utilisés.

Langage de description VHDL


H. Guedri
+ Par exemple, on pourrait déclarer une mémoire appelée fifo, avec deux paramètres permettant de
faire varier la taille des mots stockées, et la capacité de la mémoire en nombre de mots :
entity fifo is
generic (
-- nombre de mots
DEPTH : natural := 8;
-- taille des mots
WIDTH : natural := 32
);
port (
input_data : in std_logic_vector ( WIDTH -1 downto 0);
...
);
end;

+ Le type integer permet de représenter un entier, et par défaut, utilise 32 bits pour cela. Il est
conseillé de restreindre cet intervalle lors de la déclaration, par exemple :
variable count_value : integer range 0 to 9;

Langage de description VHDL H.


Guedri
Exemple : un décodeur binaire-7segments
Dans la suite de ce cours, on prend comme exemple la synthèse d’un circuit comptant de 0 à 9.
La sortie doit être affichée sur un afficheur 7 segments.

Créer un nouveau fichier vhdl, avec le nom dec_7seg (ce nom devra être celui de l’entité), et le
définir comme entité de plus haut niveau.
library ieee ;
use ieee . std_logic_1164 .all;
entity dec_7seg is
port (
digit : in integer range 0 to 15;
segments : out std_logic_vector (6 downto 0));
end;

Langage de description VHDL H.


Guedri
Le type entier integer prédéfini dans le paquetage standard STD permet de définir des nombres signés sur 32
bits entre -2-31 et 231 - 1 .

Un sous type subtype permet de déclarer un type héritant des propriétés du type père.

Il existe 2 "sous types" subtype associés à INTEGER : les entiers naturels et les entiers positifs. Leur déclaration
dans le paquetage STD est la suivante :

subtype natural is integer range 0 to integer'high;


subtype positive is integer range 1 to integer'high;
Notez que :
range permet d'indiquer l'intervalle
'HIGH indique la plus grande valeur du type INTEGER.

Langage de description VHDL H.


Guedri
Langage de description VHDL H.
Guedri
Déclaration de l’architecture
Plusieurs architectures peuvent être
associées à une entité
Architecture Mon_architecture of Moncircuit is
Begin
--description du circuit
End Mon_architecture ;

Pour l’entité Add4bits on peut avoir deux


architectures différentes: Arch_cascade et
Arch_LAC
Langage de description VHDL
H. Guedri
Exemple simple: architecture
L’architecture définit le fonctionnement du circuit.

architecture v1 of AOI is
-- les déclarations
begin
F <= not((A and B) or (C and D));
end v1;

Langage de description VHDL


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

Langage de description VHDL


H. Guedri
Remarque
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.

Langage de description VHDL


H. Guedri
Rappel sur l’architecture d’un modèle VHDL:

Langage de description VHDL H.


Guedri
Syntaxe exacte
Entity Moncircuit is
Port ( Signal_1: Mode type_de_signal;
…………….
Signal_n: Mode type_de_signal);
End Moncircuit;

Architecture Mon_architecture of Moncircuit is


Déclaration de: type; signal; composant;constantes;fonctions;
Begin
Instruction concurrente
……..
Instruction concurrente
End Mon_architecture ;
Langage de description VHDL
H. Guedri
Exemple Simple
x y z
Entity inhibit is
0 0 0
port (x,y:in bit;
0 1 0
z:out bit);
1 0 1
End inhibit;
1 1 0
Architecture arch_inhibit of inhibit is
Begin
Z<=‘1’ when x=‘1’ and y=‘0’ else ‘0’;
End arch_inhibit;

Langage de description VHDL


H. Guedri
Autre exemple
Library ieee; --librairie standard
Use ieee.std_logic_1164.all; --pour définir les
Entity and2port is --types de données
Port(in1:in std_logic; --et les opérateurs
in2:in std_logic;
and_out: out std_logic);
End and2port;
Architecture arch of and2port is
Begin
And_out <= in1 and in2 ;
End arch;
Langage de description VHDL
H. Guedri
Librairies et Package
La librairie IEEE de l’exemple précédant est
une librairie standard qui convient avec tous
les outils de simulation et de synthèse

Elle permet de définir les types (integer…) les


fonctions, les constantes…

Std_logic_1164 est le nom du package de la


librairie IEEE qui définit le type de données
ainsi que les opérateurs et les fonctions
utilisés pour manipuler le type std_logic
Langage de description VHDL
H. Guedri
Les 4 unités de conception
Entity: décrit la vue externe du circuit
indépendamment de l’implémentation
Architecture: représente une implémentation
d’une entité
Package: contient des informations commune
à plusieurs design (types, fonctions,
procédures…)
Configuration: permet d’associer une
architecture à une entité
Langage de description VHDL
H. Guedri 32
Les types et les opérateurs
Les types:std_logic,bit,integer,real,time,
string,boolean

Opérateurs sur des entiers:+,*,-, /,


mod, rem, abs

Opérateurs logiques:and, or, not, nand,


nor, xor, xnor

Langage de description VHDL


H. Guedri 33
Types et sous-types
Sous-types:
Subtype nom is nomtype début to fin
Subtype Chiffre is integer 0 to 9;
Tableaux:
Type tab is array (7 downto 0) of std_logic
Types énumérés:
Type etat is (etat_0,etat_1,etat_2);
Type lumiere is (allumé,éteint,clignotant);
Langage de description VHDL
H. Guedri 34
Les opérateurs
Les opérateurs s’applique sur un type pour
lequel il est défini.
Opérateurs logiques
And, or, nand, nor, xor, xnor, not
Opérateurs relationnels:
Égalité = et /=
Comparaison <, >, <=, >=
Opérateurs arithmétiques
Addition, soustraction: +,-
Multiplication, division:*, /, mod et rem
Autres: abs
Langage de description VHDL
H. Guedri 35
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

Il y a un rebouclage implicite à la fin du processus

Langage de description VHDL


H. Guedri 36
Process
Liste de sensibilité statique
Soit process (N1,N2,N3)
Au départ tous les processus sont exécutés une fois
Une fois le corps du processus exécuté, celui-ci
attend un événement sur le signal Nx pour
s’exécuter à nouveau
Les instructions du processus sont exécutées si au
moins UN des signaux de la liste est modifié

Il est aussi possible d’interrompre un processus


en utilisant l’instruction wait ou wait on
liste_de_signaux
Langage de description VHDL
H. Guedri 37
Processus en VHDL
Process(signal1,siganl2….,signalN)
déclaration de type;
déclaration de variable;
déclaration de constante;
définition de fonction;
begin
Instruction séquentielle;
………
Instruction séquentielle;
end process;
Langage de description VHDL
H. Guedri 38
Objets en VHDL
En VHDL, il existe 3 classes d’objet pour garder ou
représenter des données.
- 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é.

Langage de description VHDL


H. Guedri 39
Constants C’est une
valeur
explicite
Exemple:
constant NUMBER_OF_BITS: integer :=0;

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

Utilisation des constants rend la modification du


programme plus simple.

Langage de description VHDL


H. Guedri 40
Variable Initialisation
optionnelle
variable current_bit: std_logic := ‘0’;
• 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;
Langage de description VHDL
H. Guedri 41
Signal
signal carry_out : std_logic := '0';
- 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.

Langage de description VHDL


H. Guedri 42
Assignation
Elle se fait pour :
Un signal <=
Une variable :=
Assignation avec un litéral
Pour les types énumérés:
Un seul caractère entre ‘’ :ex clk<=‘1’;
Une chaine de caractères entre ‘‘ ’’:ex N:= ’’011’’;
Pour un entier :etat:=14;a:=2E3;
Pour les réels: r:=1.23;f:=2.01e-6;

Langage de description VHDL


H. Guedri 43
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.
Langage de description VHDL
H. Guedri 44
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
Langage de description VHDL
H. Guedri 45
Exemple: Demi-additionneur

Langage de description VHDL


H. Guedri 46
Il s’agit de créer en VHDL un programme représentant
un additionneur de deux données d’un bit pour
satisfaire le tableau de vérité suivant :

Langage de description VHDL


H. Guedri 47
architecture COMPORT of DEMI_ADD is

begin

SUM <= A xor B; --instruction concurrente

C <= A and B; --instruction concurrente

end COMPORT;

Langage de description VHDL


H. Guedri 48
architecture COMPORT of DEMI_ADD is Elsif (A = '1' and B = '0')
begin then
process (A, B) Sum <= '1'; C <= '0';
Elsif (A = '1' and B = '1')
begin then
if (A = '0' and B = '0') then Sum <= '1'; C <= '1';
Sum <= '0'; C <= '0'; end if;
Elsif (A = '0' and B = '1') then end process;
Sum <= '1'; C <= '0'; end COMPORT;

Langage de description VHDL


H. Guedri 49
entite XOU is entite ET is
port (E1, E2 : in bit; S1 : out bit); port (E2, E3 : in bit; S2 : out bit);
end XOU; end ET;
architecture A_XOU of XOU is architecture A_ET of ET is
begin begin
S1 <= E1 XOR E2; S2 <= E3 AND E4;
end A_XOU; end A_ET;

Langage de description VHDL


H. Guedri 50
for U1 : XOU use entity
[Link](A_XOU);
for U2 : ET use entity
[Link](A_ET);
begin
U1 : XOU port map (A, B, Sum);
architecture COMPORT of U2 : ET port map (A, B, C);
DEMI_ADD is end COMPORT;
component XOU
port (E1, E2 : in bit; S1 : out bit);
end component;
component ET
port (E3, E4: in bit; S2 : out bit);
end component;
Langage de description VHDL
H. Guedri 51
Application 1 : Réalisation d’un additionneur complet fa (FA
= Full Adder) sur un bit :
Il s’agit de créer en VHDL une entité représentant un
additionneur complet sur un bit pour satisfaire le tableau de
vérité suivant :

Langage de description VHDL


H. Guedri 52
A noter : Il s’agit d’un additionneur complet, parce qu’il
additionne deux données d’entrée a et b (chacune d’une
largeur d’un bit) plus la retenue du bit précédent (re). Il faut
deux demi-additionneurs pour réaliser un additionneur complet.

Langage de description VHDL


H. Guedri 53
Application 2 :
1) Donner la description VHDL d'un multiplexeur à deux
entrées données.
2) Donner une description VHDL du circuit illustré dans la
figure ci-après.

Langage de description VHDL


H. Guedri 54

Vous aimerez peut-être aussi