Cours VHDL
description
Transcript of Cours VHDL
![Page 2: Cours VHDL](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/2.jpg)
M. MASMOUDI Cours VHDL2
Le VHDLVery High Speed Integrated CircuitHardwareDescription 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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/3.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/4.jpg)
M. MASMOUDI Cours VHDL4
Historique1994
1981
1986
1983
1987
Initiation du langagepar le US - DoD
Développement des bases du langagepar Intermetrics, IBM et TI
Transfert des droitsà l’IEEE
Publication du standardIEEE 1076
Révision du standardIEEE 1164
![Page 5: Cours VHDL](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/5.jpg)
M. MASMOUDI Cours VHDL5
ConceptVHDL 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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/6.jpg)
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) radix1 radix2 radix3
Synthèselogique
Niveau 1 Niveau 2 Niveau RTL netlist
registres
bibliothèque
Algorithme Architecture Architecturesynthétisable Netlist
![Page 7: Cours VHDL](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/7.jpg)
M. MASMOUDI Cours VHDL7
Niveau d’abstraction
![Page 8: Cours VHDL](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/8.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/9.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/10.jpg)
M. MASMOUDI Cours VHDL10
Modèle de Gajski
![Page 11: Cours VHDL](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/11.jpg)
M. MASMOUDI Cours VHDL11
EtapesVHDL : 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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/12.jpg)
M. MASMOUDI Cours VHDL12
ApportPour les circuits intégrés
Diminution des erreurssimulation à différents niveaux d’abstraction
Diminution du temps de développementconception à plus haut niveau
Pour les systèmes
Anticipation de l’intégrationmodèles de composants simulable avant disponibilité
Normalisation des échanges langage universel et unique
A2 + B2
![Page 13: Cours VHDL](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/13.jpg)
M. MASMOUDI Cours VHDL13
Description matérielle VHDL : se base sur la paire ENTITY -
ARCHITECTURE
ab
c
d
fCircuit
Boî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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/14.jpg)
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ètresENTITY <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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/15.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/16.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/17.jpg)
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édanceW Inconnu - FaibleL 0 - FaibleH 1 - Faible- Don’t Care
Valeurs des signauxstd_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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/18.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/19.jpg)
M. MASMOUDI Cours VHDL19
L’architectureObjectif:
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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/20.jpg)
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 isbegin
F<=not((A and B)or(C and D));
end arch1;-- fin du code VHDL
entity AOI isport (
A, B, C, D: in STD_LOGIC;F: out STD_LOGIC );
end AOI;
![Page 21: Cours VHDL](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/21.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/22.jpg)
M. MASMOUDI Cours VHDL22
Codage des composantsHalf adder
sum
couta
b
Half addersum
couta
b
in1in2
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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/23.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/24.jpg)
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](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/25.jpg)
M. MASMOUDI Cours VHDL25
OpérateursCATEGORIE
andnand
ornorxor
xnornot
+-*/
abs**
modrem
TYPE OPERANDES
booleanbit
bit_vector
integerreal
integer
SIGNIFICATIONet
non-etou
non-ouou exclusif
non ou-exlusifnon
+ unaire (signe +) ou addition
- unaire (signe -) ou soustraction
multiplicationdivision
valeur absolueexponentiation
moduloreste
![Page 26: Cours VHDL](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/26.jpg)
M. MASMOUDI Cours VHDL26
OpérateursCATEGORIE
=/=<
<=>
>=
sllsrlrolror
&
TYPE OPERANDESEntrée
Résultat
tout type booleanscalaire
bit_vector(amplitude : integer)
bitbit_vector
SIGNIFICATION
égalnon égalinférieur
inférieur ou égalsupérieur
supérieur ou égal
logique gauchelogique droite
circulaire gauchecirculaire droite
concaténation
![Page 27: Cours VHDL](https://reader030.fdocuments.in/reader030/viewer/2022033104/5681637e550346895dd45f8a/html5/thumbnails/27.jpg)
M. MASMOUDI Cours VHDL27