Upload
tarikmlilas
View
38
Download
1
Embed Size (px)
Citation preview
Conception des circuits numriques Langage VHDL
VHDL est un langage de description matriel destin reprsenter le comportement
ainsi que l'architecture dun systme lectronique numrique
VHDL a t normalis en 1987 par lIEEE, sous la norme IEEE 1076-87.
Une importante volution est parue en 1993, sous la norme IEEE 1076-93.
Cest cette version du langage qui est majoritairement supporte par les outils
du march.
Dautre rvision de la norme sont parues depuis, mais ce sont dvolutions
mineures , et pas forcement supports par les logiciels.
1. Introduction
Le VHDL est un langage de description matriel, ce nest absolument un
langage software comme le C ou le Java .
L'intrt d'une telle description rside dans son caractre excutable : une
spcification dcrite en VHDL peut tre vrifie par simulation, avant que la
conception dtaille ne soit termine.
En outre, les outils de conception assiste par ordinateur permettant de passer
directement d'une description fonctionnelle en VHDL un schma en porte
logique ont rvolutionn les mthodes de conception des circuits numriques,
ASIC ou FPGA.
1. Introduction
Ce langage permet daller dun niveau dabstraction trs leve, par une
description algorithmique, jusqu' un niveau proche du matriel, o lon
dcrit le systme par un ensemble de porte logique et dinterconnexion
( gate level ).
Entre les deux, se trouve le niveau RTL (Register Transfer Level), qui
permet de dfinir le systme par une architecture de type machine de
Moore ou Mealy.
1. Introduction
Lavantage du code RTL est quil est indpendant des technologies utilises
dans la cible programmer, alors quau niveau gate , il faut prendre en
compte la technologie du circuit cible, car tout nest pas permis.
A partir de ce langage, on peut dfinir un systme par une structure hirarchique
de fonctions, par une structure matrielle, en encore par une modlisation
temporelle (mme si elle nest pas utilisable pour faire du code synthtisable).
1. Introduction
Cest le niveau RTL que lon utilise de plus, quand on fait de la synthse.
En effet, le niveau algorithmique nest pas forcement synthtisable, il est
plutt utilis pour faire du testbench ou de la simulation.
La syntaxe du VHDL est tire du langage Ada, dont les mots clefs ont t
adapts la conception matrielle.
L'une des particularits du VHDL provient du fait qu'il est possible
d'exprimer facilement le paralllisme prsent l'intrieur d'un circuit.
1. Introduction
L'tape de synthse consiste de passer dune description matrielle pour
obtenir un composant ralisant les fonctions dsires, l'aide d'lments
logiques concrets (portes logiques, bascules ou registres).
Ceux-ci seront implments, selon la technologie utilise, soit directement
en transistors (dans le cas d'un ASIC), ou en se basant sur les lments
programmables des FPGA.
Ces deux oprations doivent prendre en compte les ressources disponibles
sur l'ASIC (surface) ou dans le FPGA (units programmables).
1. Introduction
Le VHDL ayant une double fonction (simulation et synthse), une partie
seulement du VHDL est synthtisable, l'autre existant uniquement pour faciliter
la simulation (criture de modles comportementaux et de test benches).
Selon le support matriel et le logiciel de synthse utiliss, cette partie pourra
tre plus ou moins tendue.
De manire obtenir du VHDL synthtisable et portable, il est donc ncessaire
de se limiter des constructions simples, dont la transcription en portes et
bascules est simple raliser.
La norme 1076.6 a t initie pour tenter de dfinir un sous-ensemble de
VHDL de synthse .
1. Introduction
1. Introduction
Autres langages proches
Verilog concurrent et plus ancien. La syntaxe est proche de celle
du langage C.
VHDL-AMS Langage de modlisation mixte numrique-
analogique IEEE.1076.1-1999. Il est entirement compatible
avec VHDL. Uniquement pour la modlisation.
HDL assimilable aux langages logiciels de haut niveau
1. Introduction
Historique Fin des annes 70 : lancement du programme VHSIC par le ministre
de la dfense amricaine
1981 : Premires rflexions sur le VHDL
1987 : IEEE 1076 : Dfinition dun langage unique pour . La description . La modlisation . La simulation . La synthse . La documentation
1993 : IEEE 1164 : Normalisation des signaux logiques multivaleurs
MVL9 (multivalued logic, nine values).
1996 : IEEE 1076.3 : Normalisation pour la synthse. Implantation
d un nombre sign
1. Introduction
Modlisation et synthse
Limites actuelles du VHDL
12
Modlisation et synthse
13
Modlisation
Tout le langage: Logique + Temporel Un modle peut tre comportemental, structurel ou de type data-flow Exemple: cre des programmes de test
Synthse
Langage simplifi. Le style dcriture anticipe une primitive circuit. La synthse demande une bonne connaissance du circuit et de la technologie.
Les avantages de VHDL :
indpendant du constructeur
indpendant de la technologie
indpendant de la dmarche
indpendant du niveau de conception
14
Portabilit
Modlisation et synthse
Dfinition: Lunit de conception (design unit) est le plus petit module compilable sparment.
Units de conception
15
Units de conception
16
VHDL offre cinq types dunits de conception :
La dclaration dentit (entity declaration);
Le corps darchitecture (architecture body), ou plus simplement architecture;
La dclaration de configuration (configuration declaration);
La dclaration de paquetage (package declaration);
Le corps de paquetage (package body).
Units de conception
Entit et architecture:
En VHDL, une structure logique est dcrite l'aide d'une entit et d'une architecture de la faon suivante :
17
Units de conception
Dclaration de lentit:
Entit=vue externe= boite noire
18
Units de conception
Exemple:
19
Units de conception
Dclaration de larchitecture:
Architecture=Vue interne= intrieur de la boite
20
Units de conception
Trois descriptions darchitectures sont possibles:
Description comportementale : ce que fait lentit
Algorithme
le temps peut intervenir
21
Units de conception
22
Description comportementale:
Units de conception
Description structurelle : comment elle le fait
dcrit la structure de la fonction ralise
dcrit un schma, des connexions entre composants
23
Units de conception
24
Description structurelle:
Units de conception
Dclaration et instanciation dun composant:
25
Units de conception
Exemple de description structurelle:
26
Units de conception
Description flot de donns: Data Flow Exprime le flot de donnes sortant par rapport au flot entrant
27
La configuration permet, comme son nom l'indique, de configurer l'entit laquelle elle est associe.
Pour qu'une description soit portable, c'est--dire synthtisable ou simulable sur des outils diffrents et pour des composants cibles diffrents, il est prfrable de n'avoir qu'une seule architecture par entit.
Units de conception
Configuration
28
Units de conception Configuration Si l'entit A est utilise au sein de l'architecture arch_princ de l'entit princ, et si on
a plusieurs architectures pour cette entit A. Lors de la synthse ou de la simulation de l'entit princ, il va tre ncessaire de spcifier quelles sont les architectures utiliser. Cette spcification peut tre faite grce l'utilisation d'une configuration.
Configuration conf_princ of Princ is
for arch_princ
for U1 : A use entity work.A(arch_A2)
end for;
end for;
end conf_princ; 29
Package: Dans le langage VHDL, il est possible de crer des package
et package body dont les rles sont de permettre le
regroupement de donnes, variables, fonctions, procdures,
etc., que l'on souhaite pouvoir utiliser ou appeler partir
d'architectures.
Units de conception
30
Units de conception
Package: Dcrit une vue externe (boite noire)
Regroupement de dclaration de type et/ou sous programme. Construction dune bibliothque. Possibilit de lexportation de lun de ces objets. Le contenu de la dclaration du paquetage est visible de lextrieur. Dclar avant lentit.
Package Body:
Dcrit une vue interne (comment de la boite noire)
Contient lcriture proprement dites des fonctions et des procdures dclares au niveau du paquetage. Le corps du package nest pas toujours ncessaire.
31
Units de conception
32
package PACK is
-- dclarations de types, sous types, signaux, composants
-- constantes, sous programmes (sans code)
-- aucune variable
end PACK;
Package body PACK is
-- dclarations identiques (sauf signaux)
-- corps des SP de la partie dclarative
end PACK;
Package:
Package Body:
use work.geometrie.pi;
use work.geometrie.aire_cercle;
..........
calc: process(h)
variable aire, perim :real ;
begin
.....
aire_cercle (rayon,aire);
perim := 2*pi*rayon;
.....
end process calc;
.......
Units de conception Exemple:
33
1. Introduction Environnement de dveloppement intgr
Les principaux fabricants de circuits logiques programmables proposent une version gratuite mais limit de leurs outils.
diteur Produit Licence Synthtiseur Simulateur Remarques
Xilinx ISE Webpack4 Propritaire, gratuite,
illimit Oui Oui Simulateur ModelSim XE Starter gratuit
Altera Quartus II Web
Edition5
Propritaire, gratuite, 6
mois renouvelable Oui Oui Simulateur ModelSim Altera Edition gratuit
Lattice ispLever starter6 Propritaire, gratuite, 6
mois renouvelable Oui Non
Actel Libero7 Propritaire, gratuite, 1
an renouvelable Oui Oui
Synthtiseur : Synplify Actel Edition (gratuit),
Simulateur ModelSim Actel Edition gratuit
Simulateurs uniquement
Aldec Active-HDL
Student Edition8
Propritaire, gratuite, 1
an Tiers partie Oui
Mentor
Graphics
ModelSim PE
Student Edition9 Propritaire, gratuite Non Oui
http://fr.wikipedia.org/wiki/Xilinxhttp://fr.wikipedia.org/wiki/VHDLhttp://fr.wikipedia.org/wiki/Alterahttp://fr.wikipedia.org/wiki/VHDLhttp://fr.wikipedia.org/wiki/Latticehttp://fr.wikipedia.org/wiki/VHDLhttp://fr.wikipedia.org/wiki/Actelhttp://fr.wikipedia.org/wiki/VHDLhttp://fr.wikipedia.org/w/index.php?title=Aldec&action=edit&redlink=1http://fr.wikipedia.org/wiki/VHDLhttp://fr.wikipedia.org/w/index.php?title=Mentor_Graphics&action=edit&redlink=1http://fr.wikipedia.org/w/index.php?title=Mentor_Graphics&action=edit&redlink=1http://fr.wikipedia.org/wiki/VHDL
2. Elments de base
. Entity/Architecture : Brique de base de complexit trs variable
Fonctionnement interne
Interface externe
. Configuration : Possibilit dassocier plusieurs architectures une seule entit Une architecture ddie la simulation et une pour la synthse
. Package : - Pour une conception modulaire et hirarchique
- Les entits/architectures rutiliser sont places dans des packages
. Library : - Possibilit dutiliser le concept de bibliothques
- Bibliothque work : bibliothque de travail
- Les bibliothques work et std sont implicites
2. lments de base : Entit et Architecture
Bloc A In 1 Out 1
In 2
In 3 Out 2
Vue externe : Dfinition de l'entit
Bloc B
Bloc D Bloc E
Bloc A
Out 1
Out 2
In 1
In 2
In 3
Bloc C
Vue interne : Dfinition de l'architecture
2.1 Entit (Entity)
. Port : . Signal d interface entre lentit et lextrieur . Chaque port est associ un nom, un mode et un type . Ordre de la dclaration des diffrents signaux : aucune importance . Ordre conserv lors dune utilisation un plus haut niveau de cette entit - Instanciation d'un composant (component)
2.1 Entit (Entity)
. Mode : . Dfinition du sens du signal . VHDL interdit lassociation de deux ports de mode contre nature . 4 modes sont dfinis - in : Signal dentre monodirectionnel - out : Signal de sortie monodirectionnel - inout : Signal dentre/sortie bidirectionnel - buffer : Signal de sortie/entre monodirectionnel
. Utile lorsquil y a rebouclage (sortie considre comme une
entre)
. Peu utilis (remplac par une sortie associe un signal
interne)
2.1 Entit (Entity)
. Mode : 4 modes de ports . Out
Erreur
Mmoire
Donnes
. Inout
R/W
Adresse
CS
. In
Busy
. Buffer
2.1 Entit (Entity)
. Dclaration :
ENTITY nom_entite IS
GENERIC (parametres_generiques : type := valeur_par_defaut);
PORT ( entrees : IN type_entrees;
sorties : OUT type_sorties;
entreessorties : INOUT type_entreessorties;
entreessorties_buffer : BUFFER type_entreessorties_buffer);
END nom_entite;
ENTITY adder_pip IS
PORT( clk : IN bit;
a,b : IN bit_vector(7 DOWNTO 0);
cin : IN bit;
s : OUT bit_vector(7 DOWNTO 0);
cout : OUT bit);
END adder_pip;
2.1 Entit (Entity)
. Exemple :
2.2. Architecture . Spcification de la fonctionnalit. . Plusieurs architectures peuvent tre dfinies pour le mme modle. . Dclaration
ARCHITECTURE nomdelarchitecture OF nomdelentit IS dclarations de procdures, de types, de constantes, de composants, de signaux. BEGIN dfiniton de processus et/ou d'instances de composants, ... END nomdelarchitecture;
ARCHITECTURE comportementale OF adder_pip IS
BEGIN
PROCESS(clk)
VARIABLE carry : bit;
VARIABLE sum : bit_vector (7 DOWNTO 0);
BEGIN
IF (CLK = '1') THEN
carry := cin;
FOR i IN 0 TO a'length-1 LOOP
sum(i) := a(i) XOR b(i) XOR carry;
carry := (a(i) AND b(i)) OR (a(i) AND carry) OR (b(i) AND carry);
END LOOP;
cout
2.2. Architecture
. 3 Types de description : . Description comportementale - Description purement fonctionnelle du circuit
- Portabilit, lisibilit, maintenance, volutivit
- Description flot de donnes pour traduire une table de vrit
Description structurelle La description structurelle d'un circuit complexe en vhdl prsente de nombreux avantages :
Une architecture hirarchique comprhensible : il est plus simple de sparer un circuit en un ensemble de blocs plus petits, ayant des fonctions bien identifies. Ces blocs pourront alors tre dcrits sous forme comportementale, ou bien leur tour tre spars en blocs encore plus simples. Une synthse logique efficace : la synthse est un processus lent (en terme de temps de calcul). Plus un bloc est gros et complexe, plus sa synthse prendra du temps. Il vaut donc mieux travailler sur des blocs plus petits, plus simples synthtiser, et rassembler le tout la fin.
2.2. Architecture
Description mixte - Au sein dune mme architecture, il est possible d utiliser des
modules dcrits de manire comportementale ou structurelle
2.2. Architecture
2.2.1 Architecture : Description comportementale
. Exemple : Description comportementale d'une bascule D sur niveaux
HorlogeD
Q
Q
H D Q
0
1
0
1
X X Q-1
2.2.2 Architecture : Description structurelle . Traduction d'une reprsentation schmatique
ARCHITECTURE structurelle OF adder IS COMPONENT xor2 port(e1,e2 : in bit;s : out bit); end COMPONENT COMPONENT and2 port(e1,e2 : in bit;s : out bit); end COMPONENT SIGNAL inter1,inter2 :bit; BEGIN
u1 : xor2 PORT MAP (e1=>A(0),e2=>B(0),s=>S(0));
u2 : xor2 PORT MAP (e1=>A(1),e2=>B(1),s=>inter1);
u3 : and2 PORT MAP (e1=>A(0),e2=>B(0),s=>inter2);
u4 : xor2 PORT MAP (e1=>inter1,e2=>inter2,s=>S(1)); end structurelle;
VHDL A(0) B(0)
A(1) B(1)
A(0) B(0)
S(1)
S(0)
2.2.3 Architecture : Description mixte . Au sein d'une mme architecture, il est possible d'utiliser du comportemental et du structurel
ENTITY integration IS PORT( a : IN bit_vector(0 to 1); reset,clk : IN bit; s : OUT bit_vector(0 to 1)); END integration ARCHITECTURE mixte OF integration IS SIGNAL b,s_inter :bit_vector(0 to 1); COMPONENT adder PORT(a,b : IN bit_vector(0 to 1); s : OUT bit_vector(0 to 1)); END COMPONENT; BEGIN PROCESS(clk) IF rising_edge(clk) THEN IF reset = 1 THEN b
3. Types
. Types : .VHDL interdit lassociation de 2 signaux de type diffrent . Types disponibles
- Scalaires (Scalar)
. Entiers (integer)
. Flottants (Real)
. Enumrs (Enumerated)
. Physiques (Physical)
- Composs (Composite)
. Tableaux (Array)
- Collection dobjets de mme type
. Enregistrements (Record)
- Collection dobjets de type diffrent - Access et File . Types pour la manipulation de fichiers ou sur les pointeurs
. Sous-types : . Association entre 2 types diffrents est interdite . But : Faire face cette interdiction . Restrictions :
. 2 sous-types prdfinis
. Association dun sous-type au type partir duquel il a t dfini : autoris . Association entre 2 sous-types diffrents issus du mme type : autoris
3. Types
SUBTYPE chiffre IS integer RANGE 0 TO 9;
SUBTYPE octet IS bit_vector(0 TO 7);
SUBTYPE natural IS integer RANGE 0 TO higher_integer;
SUBTYPE positive IS integer RANGE 1 TO higher_integer;
3. Types . Sous-types : Exemples
ARCHITECTURE subtype_test OF test IS SUBTYPE data IS bit_vector(31 DOWNTO 0); SUBTYPE operand IS data; TYPE x_int IS RANGE 1 to 50; TYPE y_int IS RANGE 1 to 30; SUBTYPE z_int IS x_int RANGE 1 TO 30; SUBTYPE a_int IS x_int RANGE 3 TO 32; SUBTYPE b_int IS z_int RANGE 5 TO 20; SIGNAL x : x_int := 1; SIGNAL y : y_int := 2; SIGNAL z : z_int := 3; SIGNAL a : a_int := 4; SIGNAL b : b_int := 5; BEGIN z 30 a
3.1 Types : Scalaires . Types entiers : -231 + 1 entier 231 - 1
Notations de valeurs 147 -154 2#01010111# (binaire) 16#3FFF# hxadcimal
. Types flottants : Approximation discrte de l'ensemble des rels dans un intervalle donn -1E38 Flottant 1E38
TYPE chiffre_ascendant IS RANGE 0 TO 9;
TYPE chiffre_descendant IS RANGE 9 DOWNTO 0;
TYPE tension IS RANGE 0 TO 5;
3.1 Types : Scalaires
. Types numrs :
Ensemble de valeurs dsignes par des identificateurs ou des caractres
TYPE boolean IS (false, true);
TYPE bit IS ('0','1');
TYPE std_logic IS ('U', Z', X', O', 1' W', L', H' , -');
TYPE jour IS (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche);
Remarques :
. Chaque caractre ou chane de caractres au sein d'un mme type
doit tre distinct
. Possibilit d'utiliser le mme caractre dans 2 types distincts
3.1 Types : Scalaires
. Types physiques :
Valeurs numriques de quantits physiques
TYPE resistance IS RANGE 0 TO 1E8;
UNITS
ohms
kohms = 1000 ohms;
Mohms = 1E6 ohms;
END UNITS;
3.2 Types : Composs .
Types tableaux
Bornes fixes la dfinition du type
TYPE octet IS ARRAY (7 DOWNTO 0) OF bit;
TYPE memoire IS ARRAY (0 TO 255) OF octet;
Bornes fixes chaque dclaration d'un objet de type tableau
TYPE vecteur IS ARRAY (integer RANGE ) OF real;
- dclaration : vecteur(1 TO 20)
L'indice peut-tre un type entier dfini par dclaration
TYPE adresse IS RANGE 0 TO 255;
TYPE memoire IS ARRAY (adresse) OF octet;
Tableaux prdfinis
TYPE std_logic_vector IS ARRAY (natural RANGE ) OF std_logic;
TYPE string IS ARRAY (positive RANGE ) OF character;
3.2 Types : Composs
. Types enregistrements . Ensemble d'lments nomms avec des types pouvant tre diffrents
TYPE instruction IS
RECORD
code_operatoire : operation;
addresse : octet;
operande1, operande2 : integer RANGE 0 TO 15;
END RECORD;
. Accs un champ particulier instruction.code_operatoire := soustraction;
.
3.3 Types : Classes
Types et sous-types :
. 3 classes
- Types prdfinis
. Standard VHDL initial IEEE.1076
- Types complmentaires
. Standard VHDL initial IEEE.1164
- Types dfinis par lutilisateur
3.3 Types : Classe - les Prdfinis
Time
Prdfinis
Integer bit Boolean Real
Natural Positive Bit-vector
Remarque : Synthse logique - time : non - real : non - integer : Favoriser les entiers borns
3.3 Types : Classe - les complmentaires
. Standard IEEE 1164 - les signaux multivaleurs (package std_logic_1164) - std_ulogic et std_ulogic_vector . Std_ulogic se caractrise par 9 valeurs - U : non initialis - X : niveau inconnu (conflit fort) - 0 : niveau bas - 1 : niveau haut - Z : haute impdance - W : niveau inconnu (conflit faible) - L : niveau bas - H : niveau haut - - : niveau quelconque
. Std_logic : SUBTYPE std_logic IS RESOLVED std_ulogic; - VHDL interdit la connexion d'une entre plusieurs sorties Possibilit d'interconnecter plusieurs sorties ensemble . IEEE 1076.3 - la synthse logique et les traitements arithmtiques - signed et unsigned
3.3 Types : Classe - les dfinis par l'utilisateur
. Types dfinis une application dun type ou dun sous-type
TYPE memoire IS ARRAY (integer ) OF octet;
VARIABLE ma_memoire : memoire (15 DOWNTO 0);
SUBTYPE octet IS std_logic_vector (0 TO 7);
adresse : IN octet;
. Types dfinis une application dun sous-type
4. Objets : Constantes, Variables, Signaux
. Utilisation des constantes et des variables : proche des langages traditionnels . Utilisation des signaux : spcification au langage de description du matriel . Constantes (Constant) . Objets internes valeurs fixes et dfinitives . Synthse : Mise VCC ou au GND Surface nulle . Dclaration : constant nom : type := valeur; . Exemple : .
CONSTANT pi : real:=3.141592 ;
Variables (Variable)
. Objets permettant de conserver une valeur pendant un certain temps
. Utilisable qu'au sein d'un processus (dfinition dans le process)
. Peu utilis en synthse logique
. Exemple:
4. Objets : Constantes, Variables, Signaux
VARIABLE octet1 : std_logic_vector(0 TO 7) := "00000001";
4. Objets : Constantes, Variables, Signaux
. Signaux (signal)
. Utilisation en mode concurrent et squentiel
. Dclaration dans une "zone" concurrente
. Signaux internes, temporaires
. Synthse (reprsentation matrielle : un fil ou une mmoire)
. Absence de mode
. Synthse d'une VARIABLE Synthse d'un SIGNAL
. Une valeur courante et une valeur future
4. Objets : Constantes, Variables, Signaux
. Signaux (signal) . Synthse d'une VARIABLE Synthse d'un SIGNAL ARCHITECTURE ex_sig OF exemple IS BEGIN PROCESS(a,b,c) VARIABLE tmp : bit; BEGIN
tmp := a and b; y
5. Attributs
. Informations supplmentaires sur les types et objets . Utilisation : toto'att avec toto un objet ou un type et att un attribut . Attributs d'un scalaire T'left -> Limite gauche de T
T'right -> Limite droite de T
T'low -> Limite basse de T
T'high -> Limite haute de T . Attributs d'un ensemble discret T'pos(X) -> Numro de la position de X dans T T'val(N) -> Valeur la position N dans T T'leftof(X) -> Valeur une position gauche de X dans T T'rightof(X) -> Valeur une position droite de X dans T T'pred(X) -> Valeur une position au dessous de X dans T T'succ(X) -> Valeur une position au dessus de X dans T
5. Attributs
. Exemples - Attributs d'un scalaire Type adr is integer range 7 downto 0; adr left = 7 adr right = 0 adr low = 0 adr high = 7 . Exemples - Attributs d'un ensemble discret
Type MVL4 is ( U , 0 , 1 , Z );
MVL4'pos( 1 ) = 2 MVL4'val(0) = U MVL4 rightof( 1 ) = Z MVL4 leftof( 1 ) = 0 MVL4 succ(2) = Z MVL4 prec(2) = 0
5. Attributs
. Attributs d'un tableau A'left(N) -> Limite gauche de l'intervalle des indices de la dim. N de A
A'right(N) -> Limite droite de l'intervalle des indices de la dim. N de A
A'low(N) -> Limite basse de l'intervalle des indices de la dim. N de A
A'highof(N) -> Limite haute de l'intervalle des indices de la dim. N de A
A'range(N) -> Intervalle des indices de la dim. N de A
A'reverse_range(N) -> Intervalle inverse des indices de la dim. N de A
A'length(N) -> Longueur de l'intervalle des indices de la dim. N de A
exemples : type MOT is bit_vector(7 downto 0); type TAB is array (4 downto 0) of MOT; signal NOM : MOT; signal TABLEAU : TAB; MOT'LEFT renvoie 7; MOT'LENGTH renvoie 8; TABLEAU'RIGHT renvoie 0; TABLEAU'RANGE renvoie 4 downto 0;
5. Attributs
. Attributs d'un signal S'stable(t)-> Renvoie une valeur boolenne true si S est constant depuis
au moins t S'event -> Renvoie une valeur boolenne true si S changer depuis
le dernier cycle de simulation
5. Attributs
. Exemples : Attributs d'un tableau type word is bit_vector(31 downto 0);
type memory is array(7 downto 0) of word;
variable mem:memory; mem'left = 7
mem'left(3) = 31
mem'right = 0
mem'low = 0
mem'high = 7
mem high(5) = 31
mem'range = 7 downto 0
mem range(3) = 31 downto 0
mem'reverse_range = 0 to 7
mem'length = 8 memlength(3) = 32
6. Excution parallle et squentielle
. Excution parallle . Excution par dfaut . Les instructions au sein d'une architecture sont excutes en parallle ou de manire concurrente . Excution concurrente = Excution combinatoire . Chaque opration dans une architecture est excute chaque instant
. Excution squentielle . Ncessit d'utiliser un PROCESS . Le process est excut chaque fois qu'un signal dclar dans sa liste de sensibilit change de valeur. . Les instructions sont excutes squentiellement . Les modifications des signaux (signal) sont effectives la fin du process
. particularit du VHDL : Excution parallle ou squentielle
6. Excution parallle et squentielle
. Excution mixte . Possibilit d'associer dans une mme architecture des modules excution parallle et squentielle . Exemple : Comparateur synchrone une horloge clk
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY comp_synch IS PORT ( a, b, clk, reset : IN std_logic; qs : OUT std_logic); END comp_synch; ARCHITECTURE archi_mixte OF comp_synch IS SIGNAL q : std_logic; BEGIN q
7. Instructions
. Deux types d'excution : Deux familles d'instructions
. Instructions rserves au mode d'excution parallle ou concurrente - Toutes les oprations sont excutes simultanment
- L'ordre d'criture n'a aucune importance
I1 I2 I3 I1
I2
I3 . Instructions rserves au mode d'excution squentielle - Chaque opration est effectue l'une aprs l'autre
- L'ordre d'criture a une grande importance
7.1 Instructions de type parallle
. Assignation conditionnelle signal
7.1 Instructions de type parallle
. Assignation slective WITH slecteur SELECT signal
7.1 Instructions de type parallle
. Assignation d'un composant label : nom_du_composant PORT MAP (association des ports)
ARCHITECTURE arch_full OF full_adder IS SIGNAL inter : bit; COMPONENT half_adder PORT (a,b,cin : IN bit; cout,s : OUT bit); END COMPONENT; BEGIN u1 : half_adder PORT MAP (a=>a(0),b=>b(0),cin=>cin,cout=>inter,s=>s(0)); u2 : half_adder PORT MAP (a(1),b(1),inter,cout,s(1)); END arch_full;
. Instruction GENERATE label : FOR variable_boucle IN val_iniale TO val_finale GENERATE {instructions parallles} END GENERATE label
Said najah___________________________________________________
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY quisuisje IS GENERIC(N : integer := 4); PORT( a,b : IN std_logic_vector(N DOWNTO 1); cin : IN std_logic; s : OUT std_logic_vector(N DOWNTO 1); cout : OUT std_logic); END quisuisje ARCHITECTURE structurel OF quisuisje IS COMPONENT ADDER PORT(a,b,cin : IN std_logic;s,cout : OUT std_logic); END COMPONENT SIGNAL carry : std_logic_vector(N-1 DOWNTO 1); BEGIN gene : FOR i IN 1 TO N GENERATE ls_bit : IF i=1 GENERATE ls_cell : adder PORT MAP(a(1),b(1),cin,s(1), carry(1)); END GENERATE ls_bit; middle_bit : IF (i>1 and i
. Instruction PROCESS - Toutes les instructions comprises dans le PROCESS sont excutes squentiellement - Instruction concurrente : possibilit d'en utiliser plusieurs - Tous les PROCESS sont excuts en parallle - Activation d'un PROCESS : 2 possibilits
[label] : PROCESS(liste_signaux) -- Partie dclarative du process BEGIN -- Corps du process END PROCESS [label]
[label] : PROCESS -- Partie dclarative du process BEGIN WAIT UNTIL (liste_signaux) -- Corps du process END PROCESS [label]
7.2. Instructions de type squentiel
. Instruction PROCESS : Attribut event
. But : Savoir si le signal auquel il est associ a t modifi
. Trs utile dans un PROCESS dclenchable par plusieurs signaux distincts
. Exemples :
. Standard IEEE 1164 : Dfinition de deux fonctions rising_edge(CLK) et falling_edge(CLK)
IF CLK'event THEN excution; END IF;
- Excution si CLK passe 0 ou 1
IF CLK'event AND CLK='1' THEN excution; END IF;
- Dclenchement sur front montant
7.2. Instructions de type squentiel
Exemple :
Dans l'exemple suivant, a,b,c sont des signaux et x une variable.
Enfin de processus, a et b vont prendre la valeur a+1 aprs un delta-
cycle
alors que c prendre la valeur a aprs un delta-cycle. process (a) variable x : std_logic; begin x := a+1; a
7.2. Instructions de type squentiel
. Ces instructions sont uniquement utilises dans un Process . Assignation inconditionnelle de variables et de signaux Mme traitement que pour le mode parallle
. Instruction IF IF expresssion_booleenne THEN instructions_sequentielles END IF;
IF up_down = 1 THEN s
7.2. Instructions de type squentiel
. Instruction CASE CASE expresssion is {WHEN valeur_expression => instructions_sequentielles}; {WHEN OTHERS => instructions_sequentielles}; END CASE;
CASE selection IS WHEN '0' => s s NULL; END CASE;
. Instruction LOOP instruction_pour_iteration LOOP instructions_sequentielles END LOOP;
VARIABLE indice,resultat : INTEGER := 0; Boucle1 : WHILE indice < 10 LOOP indice := indice + 1; resultat := resultat + adresse(indice); END LOOP boucle1;
VARIABLE indice,resultat : INTEGER; Boucle2 : FOR indice IN 0 TO 9 LOOP resultat := resultat + adresse(indice); END LOOP boucle2;
7.2. Instructions de type squentiel
. Instruction NEXT NEXT label_boucle WHEN condition
VARIABLE indice, resultat : integer := 0; Boucle1 : WHILE indice < 10 LOOP indice := indice + 1; NEXT Boucle1 WHEN indice = 5; resultat := resultat + adresse(indice); END LOOP boucle1;
VARIABLE indice, resultat : integer; Boucle2 : FOR indice IN 0 TO 9 LOOP NEXT Boucle2 WHEN indice = 5; resultat := resultat + adresse(indice); END LOOP boucle2;
. Instruction EXIT EXIT label_boucle WHEN condition
VARIABLE indice,resultat : integer := 0; Boucle1 : WHILE indice < 10 loop indice := indice1 + 1; EXIT Boucle1 WHEN indice = 5; resultat := resultat + adresse(indice); END LOOP boucle1;
VARIABLE indice,resultat : integer; Boucle2 : FOR indice IN 0 to 9 LOOP EXIT Boucle2 WHEN indice = 5; resultat := resultat + adresse(indice); END LOOP boucle2;
7.2. Instructions de type squentiel
. Instruction NULL Instruction sans aucun effet
CASE commande_moteur IS WHEN avant => marche_avant; WHEN arriere => marche_arriere; WHEN statuquo => NULL; END CASE;
. Instruction ASSERT Vrification d'une condition spcifique Information d'une ventuelle violation de cette condition ASSERT condition REPORT message SEVERITY {note/warning/error/Failure}
PROCESS(clk) BEGIN IF clk='1' THEN ASSERT d'STABLE(15 ns); REPORT "setup non respect" SEVERITY warning; END IF; END PROCESS;
7.3. Instructions : Exemple
. Multiplexeur 8 bits : 4 vers 1 1re phase : dfinition des entre/sorties (ENTITY)
Multiplexeur 8 bits 4 vers 1 Sorties Entres
Multiplexeur 8 bits 4 vers 1
8 Entree1
8 Entree4
Sel1 Sel2
8 Sortie
8 Entree2
8 Entree3
7.3. Instructions : Exemple
. Multiplexeur 8 bits : 4 vers 1 2me phase : dfinition du fonctionnement ou de la structure (ARCHITECTURE)
- Solution 1 : Instruction IF
- Solution 2 : Instruction CASE
7.3. Instructions : Exemple
. Multiplexeur 8 bits : 4 vers 1 - Solution 1 : Instruction IF
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mux41 IS PORT(entree1,entree2,entree3,entree4: IN std_logic_vector(0 TO 7); sel: IN std_logic_vector(0 to 1); sortie : OUT std_logic_vector(7 DOWNTO 0)); END mux41; ARCHITECTURE comportementale OF mux41 IS BEGIN PROCESS(sel) BEGIN IF (sel="00") THEN sortie
7.3. Instructions : Exemple . Multiplexeur 8 bits : 4 vers 1
- Solution 2 : Instruction CASE
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mux41 IS PORT(entree1,entree2,entree3,entree4: IN std_logic_vector(0 TO 7); sel: IN std_logic_vector(0 to 1); sortie : OUT std_logic_vector(7 DOWNTO 0)); END mux41; ARCHITECTURE comportementale OF mux41 IS BEGIN PROCESS(sel) BEGIN CASE sel IS WHEN "00" => sortie sortie sortie sortie
8. Oprateurs standards
. Remarque : Le VHDL est un langage dvelopp initialement pour la modlisation et la simulation, par consquent certains oprateurs sont dconseiller en synthse
. Oprateurs logiques
And Nand Or Nor Xor Xnor Not
Et Non et
Ou Non ou
Ou exculsif Egal Non
Signification Nom Type oprandes
Boolean Bit ou Bit_vector
8. Oprateurs standards
. Oprateurs logiques
g d
f e
c(0) a(0)
b(0)
c(0) a(0)
b(0)
. Exemple 2
SIGNAL d, e, f, g : bit; g
8. Oprateurs standards
. Oprateurs relationnels
= /= < >=
Egal Non gal Infrieur
Infrieur ou gal Suprieur
Suprieur ou gal
Signification Nom Type oprandes
Entres : Tout scalaire Sortie : Boolean
. Exemple
SIGNAL a,b : bit_vector(1 DOWNTO 0); SIGNAL s : bit; IF a > b THEN s
8. Oprateurs standards
. Oprateurs de dcalages
Sll Srl Rol Ror
A gauche A droite
Circulaire gauche Circulaire droit
Signification Nom Type oprandes
Bit_vector
SIGNAL a,b : BIT_VECTOR(0 TO 3); ... b
8. Oprateurs standards
Oprateurs arithmtiques
Autres oprateurs
& Concatnation Signification Nom Type oprandes
Bit, Bit_vector
+ - * /
abs **
Incrmentation de 1 ou addition Dcrmentaion de 1 ou soustraction
Multiplication Division
Valeur absolue Exponentiel
Signification Nom Type oprandes
Integer, Real rem Reste
mod Modulo Integer
. Exemple : addition
S = (A + B) + (C - 1) T = ((A + B) + C - 1)
Synthse
. Exemple : multiplication
. Opration de multiplication "*" permet d'utiliser le type INTEGER . Diffrents rsultats de synthse - Contraintes
- Nature des entres (puissance de 2)
- Bibliothques de composants disponibles (Package standard de synthse)
- 1
A
B
C S
8. Oprateurs standards
- 1
A
B
C T
. Oprateur de concatnation
& Concatnation Signification Nom Type oprandes
Bit, Bit_vector
8. Oprateurs standards
ARCHITETCURE ... SIGNAL A : BIT_VECTOR(2 DOWNTO 0 ); SIGNAL B : BIT; SIGNAL C : BIT_VECTOR(5 DOWNTO 0 ); BEGIN C
9. Description hirarchique
. Descriptions plus simples
. Rapidit de simulation et donc rapidit de mise au point
. Fiabilit accrue
. Rutilisation de sous-ensembles
. Concepts : COMPONENT, GENERIC, PACKAGE,
PROCEDURE ET FONCTION
LIBRARY, CONFIGURATION
. Amlioration de la modularit
. Utilisation d'un objet dcrit l'extrieur de la description utilisatrice - 2 fichiers VHDL distincts . Compilation distincte : - le composant - l'entit utilisatrice de ce composant . Entit compile : Stockage dans la bibliothque WORK
9.1 Description hirarchique : Component
. Description structurelle
. Utilisation de composants
2 phases : - Dclaration
- Instanciation
Adder1.vhd
ENTITY full_adder IS PORT( a,b : IN bit_vector(1 DOWNTO 0); cin : IN bit; cout : OUT bit; s : out bit_vector(1 DOWNTO 0)); END full_adder ARCHITECTURE arch_full OF full_adder IS SIGNAL inter : bit; COMPONENT half_adder PORT (a,b,cin : IN bit; cout,s : OUT bit); END COMPONENT; BEGIN u1:half_adder PORT MAP (a(0),b(0),cin,inter,s(0)); u2:half_adder PORT MAP (a(1),b(1),inter,s(1)); END arch_full;
Adder2.vhd
ENTITY full_adder IS PORT( a,b : IN bit_vector(1 DOWNTO 0); cin : IN bit; cout : OUT bit; s : out bit_vector(1 DOWNTO 0)); END full_adder ARCHITECTURE arch_full OF full_adder IS SIGNAL inter : bit; COMPONENT half_adder PORT (a,b,cin : IN bit; cout,s : OUT bit); END COMPONENT; BEGIN u1:half_adder PORT MAP (a(0),b(0),cin,inter,s(0)); u2:half_adder PORT MAP (a(1),b(1),inter,s(1)); END arch_full;
ENTITY half_adder IS PORT( a,b,cin : IN bit; cout,s : OUT bit); END half_adder ARCHITECTURE arch_half OF half_adder IS BEGIN s
9.2 Description hirarchique : Generic
. Possibilit d'utiliser un mme objet plusieurs fois avec des tailles diffrentes
. Paramtres dfinir lors de l'instanciation
. Possibilit d'instancier des entits/architectures fonctionnellement identiques mais de taille diffrente
. Dclaration d'un additionneur
ENTITY adder is
GENERIC (largeur : integer :=8); -- valeur par dfaut
PORT( a,b: IN signed_vector(largeur-1 DOWNTO 0);
s : OUT signed_vector(largeur DOWNTO 0);
END adder;
ARCHITECTURE arch_adder OF adder IS BEGIN s
9.3 Description hirarchique : Package
. Regroupement d'objets divers : - types - sous-types - constantes - sous-programmes - composants,
. Accessibilit ou visibilit : le package se nomme mon_package et a t compil et stock dans la bibliothque librairie1
. Possibilit d'utiliser plusieurs packages dans une mme description
. Les standards IEEE 1164 et IEEE 1076.3 sont accessibles via des packages
LIBRARY librairie1
USE librairie1.mon_package.all
File Package Library Contents: maxplus2.vhd maxplus2 altera MAX+PLUS II primitives, macrofunctions, and selected megafunctions supported by VHDL. megacore.vhd megacore altera Pre-tested megafunctions consisting of several different design files. std1164.vhd std_logic_1164 ieee Standard for describing interconnection data types for std1164b.vhd VHDL modeling, and the STD_LOGIC and STD_LOGIC _VECTOR types. lpm_pack.vhd lpm_components lpm LPM megafunctions supported by VHDL. arith.vhd std_logic_arith ieee SIGNED and UNSIGNED types, arithmetic and arithb.vhd comparison functions for use with SIGNED and UNSIGNED types, and the conversion functions CONV_INTEGER, CONV_SIGNED, and CONV_UNSIGNED. signed.vhd std_logic_signed ieee Functions that allow MAX+PLUS II to use STD_LOGIC signedb.vhd _VECTOR types as if they are SIGNED types types as if they are SIGNED types. unsigned.vhd std_logic_unsigned ieee Functions that allow MAX+PLUS II to use unsignedb.vhd STD_LOGIC_VECTOR types as if they are UNSIGNED types.0
9.3 Description hirarchique : Package
9.3 Description hirarchique : Package
. 2 parties : . Partie dclarative (spcification) - Dclarations des lments visibles l'utilisateur du package . Corps du package (implantation) - Chaque lment dfini dans la partie dclarative est visible du corps
PACKAGE data_types IS SUBTYPES address is bit_vector(24 DOWNTO 0); SUBTYPES data is bit_vector(15 DOWNTO 0); CONSTANT vector_table_loc : address; FUNCTION data_to_int(value : data) RETURN integer; FUNCTION int_to_data(velue:integer) RETURN data; END data_types; PACKAGE BODY data_types is CONSTANT vector_table_loc : address := X"FFFF00"; FUNCTION data_to_int(value : data) RETURN integer IS; --body of data_to_int END data_to_int; FUNCTION int_to_data(velue:integer) RETURN data IS; --body of int_to_data END int_to_data; end data_types;