Anda di halaman 1dari 101

Synthse VHDL darchitectures

Nadia KHOUJA SAAD


2me Anne LAII-SE

Anne Universitaire 2008-2009


1

Plan du cours

Quest ce quun circuit numrique Rappel : circuits combinatoires et circuits squentiels Synthse darchitectures Numriques : Allocation de ressources Les cibles numriques FPGA/ASIC/SoC/NoC Flot de conception des circuits numriques : Importance du langage VHDL Le langage VHDL

Quest ce quun circuit numrique

Assemblage intelligent de plusieurs


Oprateurs arithmtiques, logiques, registres, multiplexeurs , bus Un Pentium (X) nest quun simple assemblage de composants lectroniques lmentaires L'efficacit du circuit dpend du choix des ressources et de leur linterconnexion

Comment construire un circuit numrique ?

Exemple : Filtre numrique


Entre

Y (n) hi xn i
i 0

N 1

Z-1 X

Z-1 X +

Z-1 X

Z-1 X +
Multiplications par des constantes

+
Sortie

Quelques dfinitions
La latence dun systme : il y a toujours un moment de latence entre le moment o on envoie quelque chose en entre et le moment o on rcupre quelque chose en sortie ; cet intervalle de temps est connu et sappelle le dlai de propagation ou Latence. La cadence dun systme est le temps sparant la consommation de deux entres successives par le systme Le chemin critique dun circuit dtermine la latence et la frquence maximale de fonctionnement du circuit combinatoire.

Diffrences Latence & Cadence

Rappel : Circuits combinatoires

Circuit exprimant les sorties en fonction des entres s=f(e) Absence de mmorisation Interne Circuits caractriss par des latences faibles Exemples :
AND OR XOR

NOT

NAND

NOR

Rappel : Circuits combinatoires

Le Multiplexeur : circuit 1 parmi 2n


2n entres, 1 seule sortie , n bits de slection Exemple: Multiplexeur 4 1.

Table de vrit ?

Le dmultiplexeur : Opration inverse par rapport au multiplexeur Entre propage sur 2n sorties possibles en fonction des n bits de slection Table de vrit dun dmux 1 4

Rappel : Circuits combinatoires

Les Dcodeurs Dcode un Mot binaire : il ya n entres et m 2n sorties possibles Exemple dutilisation : dcodage dadresse de mmoire : mmoire 32 mots constitu de 4 blocks de mmoires 8 mots Exemple : 2 4

Les Encodeurs Opration inverse dun dcodeur m 2n entres possibles et n sorties Exemple : Encodeur 4 2

Exemple de circuits combinatoires

Les circuits Arithmtiques

Le demi-additionneur Table de vrit

Circuit de ralisation :

10

Exemple de circuits combinatoires

Additionneur Complet 1 bit :

Superposition de deux circuits demi-additionneurs


Table de vrit

Circuit de ralisation

11

Exemple de circuits combinatoires

Additionneurs N bits

Exemple N = 4 bits

12

Exemple de circuits combinatoires

13

Exemple de circuits combinatoires


Les UALs : Circuit combinatoire capable d'effectuer plusieurs fonctions de base (arithmtique, logique, dplacement/rotation). LUAL fait habituellement partie intgrante du processeur LUAL prend en entre les oprandes (A et B), ainsi que la fonction { effectuer (Contrle). En sortie, nous retrouvons le rsultat (F) et une mise--jour des bits d'tats (Status).

14

Construction de circuits combinatoires

Deux phases dans la constructions des circuits combinatoires

Recherche dune solution { base dquations : tablissement de la table de vrit (algbre de Boole)
Simplification des quations trouves Rgles de simplification , table de Karnaugh Dissociation du design en sous blocks pour rduction de complexit

15

Circuits Squentiels

Les circuits squentiels sont caractriss par une facult de mmorisation Les sorties un instant t dpendant des entres de linstant t-1 ainsi St = f(E0, E1, E2, St-1) Les circuits squentiels de base sont les bascules (flip-flops) Les bascules : capables de conserver ltat de leur sortie mme si la combinaison des signaux dentre ayant provoqu cet tat de sortie disparat. Circuits dpendant le plus souvent dun signal dHorloge ou clock (circuits synchrones)

2 Priode

16

Notion de synchronisme

Bascules Synchrone/Asynchrone
Bascule synchrone : changement dtat de la bascul cadenc sur front dhorloge

Entres

Bascule synchrone

sorties

Horloge Bascule Asynchrone : changement dtat cadenc sur le changement dtat des entres aux mmes

17

Exemple de circuits squentiels

Bascules lmentaires

Bascule RS Asynchrone
Bascule RS synchrone
si H= 0 Q= Qsi H= 1 fonctionnement RS

Bascule D-latch
si H = 1 Q = D si H = 0 Q= Q-

Bascule D synchrone
si front montant de H Q = D Sinon Q= QJ Q J K Q

Bascule JK synchrone Bascule T

0 0 1 1

0 1 0 1

x 1 0 x

Q x 0 1 x

18

Exemple de circuits squentiels

Les registres de mmorisation

Les registres dcalage

19

Exemple de circuits squentiels

Les compteurs asynchrones


Exemple : compteur modulo 8 => 3 bascules JK
1 Qa Qb Qc

J h

RaZ
h 1 2 3

0 t

N 0 1

Qc 0 0 0 0 1 1 1 1

Qb 0 0 1 1 0 0 1 1

Qa 0 1 0 1 0 1 0 1 20

Qa t Qb t Qc t

2 3 4 5 6 7

Exemple de circuits squentiels

Les compteurs synchrones


Qa 1 Qb Qc

& J Q a J Q b J Q c

21

Exemple de circuits squentiels

Machines tats finis

22

Concept de machine dtat


Reset 0

Even [0] 1 Odd [1] 1

Present State Even Even Odd Odd

Input 0 1 0 1

Next State Even Odd Odd Even

Output 0 0 1 1

Table de transitions symbolique


Present State 0 0 1 1 Input 0 1 0 1 Next State Output 0 0 1 0 1 1 0 1

Table de transitions encodes

23

Machine de Moore

Les sorties dpendent des tats prsents. Un bloc de logique combinatoire traite les entres et ltat antrieur des sorties et alimente un bloc de bascules en sortie. Ainsi, les sorties changent de manire synchrone sur un front dhorloge.

24

Machine de Moore
Description des sorties comme des tats concurrents

Dpend seulement des tats

25

Machine de Mealy

A la diffrence de la machine de Moore, la sortie peut changer lors dun changement de la sortie et ce indpendamment de lhorloge : Une machine de Mealy est donc asynchrone.

26

Machine de Mealy
Description des sorties comme des tats concurrents Dpend des tats et des entres

27

Exemple 1: Machine de Moore

Machine de Moore reconnaissant la squence 10

28

Exemple 2: Machine de Mealy

29

Synthse darchitecture Numrique Allocation matrielle des ressources

30

Allocation des ressources matrielles

Choisir les oprateurs utiliser pour implmenter une fonction donne Dpend du critre optimiser ( surface , latence, consommation) Dpend de la cible technologique vise (ASIC ou FPGA) Exemple : soit la fonction Sum = A+B+C+D

31

Architecture combinatoire

Allocation matrielle de ressources pour chaque opration Sachant que le chemin critique du circuit est gal 30 ns, quelle est la frquence maximale de fonctionnement de ce circuit ?

Quelle est la latence circuit ? Quelle est sa cadence ?


32

Architecture pipeline

Architecture introduisant des tages de pipeline Le chemin critique est rduit ( 10 ns), quelle est la frquence maximale de fonctionnement du circuit ? Quelle est la cadence du circuit ? Quelle est la latence du circuit ? Comparer la surface du circuit avec celle du transparent prcdent

33

Architecture Squentielle
Calcul effectu de manire squentielle et avec rutilisation des ressources Impact sur la surface ? Impact sur la latence ? Cadence ?

34

Architecture Squentielle

Sachant que la latence du circuit est de 10ns et que le contrleur est compos de 3 tats squentiels
Quelle est le frquence maximale du circuit Quelle est sa latence

35

Contraintes de conception dun circuit numrique

Surface Dpend troitement du nombre de ressources matrielles lmentaires utilis pour raliser un circuit Influe directement sur le cot du circuit Latence (frquence de fonctionnement) Dtermine la frquence maximale de fonctionnement du circuit Consommation Dtermine la dure dautonomie du circuit , critre crucial pour les circuits mobiles aliments par batterie. Time to Market Suret de fonctionnement
36

Evolution des processeurs

Augmentation du nombre de transistors suit la loi de Moore

Frquence stabilise autour de 3 GHz contrainte : consommation et dissipation de chaleur

37

Synthse darchitecture Numrique

La synthse darchitecture numrique revient retrouver partir dquations le circuit numrique ralisant la fonction voulue sous un certains nombre de contraintes ( surface, consommation, frquence de fonctionnement ou latence) Les tapes aboutissant la dfinition du circuit optimis : Description du circuit par des quations boolennes ( algbre de Boole) ou par des composant prdfinis en determinant les interconnexion entre ces composants Exemple : demi-additionneur ( quations boolennes) / additionneur complet (quations boolennes ou 2 demiadditionneur) Optimisation des quations obtenues (table de kargneau) Soit la fonction Y suivante : Y = A xor B Circuit ralisant la fonction

38

Synthse darchitecture Numrique

Synthse dun filtre numrique FIR dordre N Soit le filtre FIR dquation suivante :

Y (n) hi xn i
i 0

N 1

Plusieurs implmentations possibles chacune amliore un critre donn : Architecture directe Architecture directe pipeline Architecture { base dunit de multiplication accumulation

39

Exemple 2: filtre FIR numrique

Architecture directe
Entre

Z-1 X

Z-1 X +

Z-1 X

Z-1 X +
Multiplications par des constantes

+
Sortie

40

Exemple 2 : filtre FIR numrique

Architecture avec tages de pipeline


Entre

Z-1 X Z-1

Z-1 X Z-1 + Z-1

Z-1 X Z-1

Z-1 X Z-1 + Z-1


Multiplications par des constantes

+
Sortie

41

Exemple 2 : filtre FIR numrique

Architecture { base dunit de multiplicationAccumulation


Entre

Z-1

Z-1
Mux

Z-1

Z-1

Coefficients du filtre

Mux

Reg
Sortie

42

Flot de conception des circuits numriques : Importance du VHDL

43

Diversit des cibles technologiques


Les circuits programmables (FPGAs) Les circuits ddis (ASICs) Les SoCs Les NoCs Rq: nous ne considrerons dans ce cours que les flots de conception classiques sur FPGA et ASIC , les SoCs seront traits dans le cours Architecture de SoCs fait en parallle avec ce cours.

44

Diversit des circuits programmables

45

Les CPLD (Complex Programmable Logic Devices)

Ensemble de blocks logiques Chaque block logique est constitu de macro-cellules Une macro-cellule contient une fonction combinatoire + bascule Lensemble est connect par une matrice de connexion Technologie EPROM ou FLASH

46

Les FPGAs(Field Programmable Gate Array)


Matrice de blocks logiques ( fonction logiques, multiplexeurs, LUT) Densit plus grande Matrice dinterconnexion Technologie SRAM ou Antifusible Plusieurs constructeurs de circuits FPGA : XILINX, ALTERA, ACTEL ..

47

Exemple FPGA VIRTEX et SPARTAN II de Xilinx

Dtail dun slice dun FPGA VIRTEX et SPARTAN II

Dautre fonctions spcifiques peuvent tre implant en dur dans un FPGA


Des Multiplieurs Blocks dentres/sorties Des PLL
48

Les ASICs

Des circuits spcifiques Conu pour application particulire Meilleures performances (surface, consommation et frquence)

49

Flot de conception

Un ingnieur confirm peut valider 100 portes logique par jour Pour un design de 12 millions de porte, il lui faut 500 ans et 75 millions de dollars

Ncessit de flot de conception capable dacclrer et de rduire les cots de conception

50

Procdure de dveloppement dun composant programmable

51

Importance du VHDL : modlisation et synthse !

52

Quest ce quun synthtiseur ?

Flot de synthse XILINX

53

Structure dun programme VHDL

54

Historique du langage

VHDL ( VHSIC Hardware Description Langage) Dvelopp dans les annes 80 par les amricains Devenu standard IEEE en 1987 Updat et rvis en 1993 Le langage est utilis pour Concevoir des ASIC Programmer les circuits programmables ( CPLD, FPGAs) Concevoir des modles de simulation numrique et des mthodes de tests de ces circuits

55

Elments dun programme VHDL

Entit , architecture, configuration, packetage, packetage-body

56

Association Entit/Architecture

Entity Nom_de_lentit IS

Architecture Nom_de_larch OF

ENTITE

description des entres/sorties de la structure logique ( type : bit, bit_vector ) (direction : in, out ,inout .) } END Nom_de_lentit ;

ARCHITECTURE

Nom_de_lentit IS { Zone de dclaration BEGIN Description de la structure logique } END Nom_de_larch ;


57

Exemple Porte AND2


Entity And2 is Port (A : in bit; B: in bit ; Y : out bit); End And2; Architecture Arch1 of And2 is Begin Y <= A and B ; End Arch1;

58

Association Entit/Architecture

A une entit peuvent tre associes plusieurs architectures Exemple demi- additionneur bit : Plusieurs descriptions possibles du fonctionnement dun demi-additionneur

59

Description comportementale (flot de donnes)

Entity additionneur is Port ( A: in bit ; B: in bit; Som : out bit ; Ret : out bit ); End additionneur;

Architecture flot_donnee of additionneur is Begin Som <= A xor B; Ret <= A and B; End flot_donnee;

60

Description comportementale
Architecture comportementale of additionneur is Begin P : process (A,B) begin If (A= 0 and B = 0) then som <= 0 ; Ret <= 0 ; elsif ( A= 0 and B= 1 ) then som <= 1 ; Ret <= 0 ; elsif (A= 1 and B= 0 ) then som <= 1 ; Ret <= 0 ; elseif (A= 1 and B= 1 ) then som <= 0 ; Ret <= 1 ; end if ; End process P; End comportementale ;

61

Description structurelle

Description vhdl dune porte XOR Description vhdl dune porte ET Description Vhdl du demi-additionneur base de ces composants
Entity ET is Port ( A: in bit ; B: in bit; S : out bit );

Entity XOR2 is Port ( A: in bit ; B: in bit;

S : out bit
); End XOR2;

End ET;
Architecture ARCH_ETof ET is begin

Architecture ARCH_XOR of XOR2 is


begin S <= A xor B; End ARCH_XOR ;

S <= A and B;
End ARCH_ET ;

62

Description structurelle
Entity additionneur is Port ( A: in bit ; B: in bit; Som : out bit ; Ret : out bit ); End additionneur;
Architecture structurelle of additionneur is component XOR2 is Port ( A: in bit ; B: in bit; S : out bit ); End component XOR2; component ET is Port ( A: in bit ; B: in bit; S : out bit ); End component ET; begin C1 : XOR2 port map( A , B, Som); C2 : ET port map( A, B, Ret); End structurelle ;
63

Les composants
Lutilisation dun couple entit/architecture lintrieur dun autre passe par la dclaration et linstanciation dun composant Lutilisation des composants permet un codage hirarchique pour une conception descendante Linstantiation dun composant a pour effet dassocier les signaux effectifs (ceux de larchitecture appelante) aux signaux formels (ceux du composant). Elle ressemble un appel de fonction ou de procdure

64

Exemple 2 : Utilisation de composants


in1 in2
a b cout sum

Half adder

carry

cout

cin

Half adder
sum

result

ENTITY half_adder IS PORT (a,b: IN std_logic; sum,cout : OUT std_logic); END half_adder; ARCHITECTURE beh OF half_adder IS begin 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 IS begin c <= a OR b; end beh;

65

Exemple 2 : Utilisation de composants


ENTITY 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,carry : 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;
66

Quest ce quune configuration ?

Permet de choisir une des architectures associer une entit pour utilisation lors de la synthse ou la simulation

67

Quest ce quun package, package body ?

Permet de regrouper les donnes communes plusieurs programmes vhdl Sauvegarde des constantes communes Sauvegarde de tous les composant dun projet donn

Package my_pack is Constant Tp : time; End my_pack;

-- dclaration de la constante

Package body my_pack_body of my_pack is Constant Tp : time : = 27; -- Initialisation de la constante End my_pack_body;

Utilisation dun package Use work.my_pack.all ;


68

Instructions concurentes vs squentielles ?

Instructions concurrentes Sexcutent en parallle Lordre dcriture na pas de valeur Les valeurs de Som et Ret sont ractualiss en permanence chaque changement de A et B

Architecture flot_donnee of additionneur is

Begin
Som <= A xor B; Ret <= A and B; End flot_donnee;

3 familles d Instructions concurrentes Les instructions daffectation S <= A and B; Les instructions conditionnelles du type affectation When condition else . With signal Select affectation when condition else ..

69

Instruction When else


Entity Mux_4_1 is Port ( A, B, C, D: in bit ; sel : in bit_vector( 0 to 1); S: out bit ); End Mux_4_1; Architecture arch_mux of Mux_4_1 is begin S <= A when sel =00 else B when sel =01 else C when sel =11 else D; End arch_mux ;
70

Instruction With select When


Entity Mux_4_1 is Port ( A, B, C, D: in bit ; sel : in bit_vector(1 downto 0); S: out bit ); End Mux_4_1; Architecture arch_mux _2of Mux_4_1 is begin with sel select S <= A when 00, B when 01, C when 11, D when others; End arch_mux_2 ;

71

Instructions de gnration
Utilisable en mode concurrent (hors processus) Elle permet de gnrer plusieurs rpliques d un composant ou dquations
Forme gnrale :

etiquette : for variable_de_boucle in valeur_debut to valeur_fin generate


{instruction concurrente}; end generate etiquette; Il est possible dimbriquer plusieurs instructions generate, chacune possdant son tiquette et sa variable de boucle propres Forme conditionnelle : etiquette : for variable_de_boucle in valeur_debut to valeur_fin generate {if instruction then generate {instruction combinatoire} end generate; } end generate etiquette;
72

Exemple : registre dcalage


Gnration d un registre dcalage 32 bits srie-parallle par association de bascules D
Library ieee; use ieee.std_logic_1164.all ; entity REG_SP is port(CLK,SI: in std_logic; PO: OUT std_logic_vector(31 downto 0); end REG_SP; use work.RTLPKG.all ; -- accs aux comp. lt. architecture ACRHREG_SP of REG_SP is
CLK PO(0) PO(1) PO(31) SI

signal TEMP: std_logic_vector(31 downto 0);


begin premier: DFF port map (SI, CLK, TEMP(0)); autres : for I in 0 to 30 generate boucle: DFF port map (TEMP(I),CLK,TEMP(I+1)); end generate PO <= TEMP; end ARCHREG_SP;

DFF est la dclaration d un composant (bascule D) du paquetage RTLPKG

Gnration du 1er tage du registre dcalage

Gnration itrative des 31 tages suivants

73

Instructions squentielles

Les instructions squentielles sont cods { lintrieur dun process Deux process sont concurrents mais les instructions quils contiennent sont squentielles
Architecture arch2 of ET is Begin P : process (A,B) begin if (A= 1 and B= 1 ) then S <= 1 ; else S <= 0 ; end if ; End process P; End arch2;

Architecture arch1 of ET is Begin S <= A and B; End arch1;

74

Instructions squentielles/process
En VHDL les instructions dune architecture sont values en permanence et toutes simultanment. Pour avoir un fonctionnement squentiel il faut dfinir un processus.

Un processus (Process) est un groupe dlimit dinstructions caractris par :


Excution du processus chaque changement d tat d un des signaux auxquels il est dclar sensible Excution squentielle des instructions du processus Les modifications apportes aux valeurs de signaux par les instructions prennent effet la fin du processus

75

Les processus : exemples


Library ieee; use ieee.std_logic_1164.all ; entity BASCULE_D is port(D, CLK: in std_logic;
D Q

Q: OUT std_logic ); end BASCULE_D; architecture ACH_BASCULE_D of BASCULE_D is begin P : process (CLK) begin if (CLK= 1 ) then Q <= D ; end if ; end process;

CLK

end ACH_BASCULE_D;
76

Instructions squentielles/process

Un process est suivi de la dclaration de certains signaux exp : process(A,B) A, B sont les signaux qui vont provoquer lexcution du process (liste de sensitivit) => le process ne sexcute que si au moins 1 des signaux constituant la liste de sensitivit a chang de valeur Instructions squentielles Linstruction If then else Linstruction for Linstruction case

77

Les instructions squentielles


Linstruction IF
IF condition1 THEN ELSIF condition2 THEN ELSIF condition3 THEN . END IF;

IF THEN IF . THEN ELSIF . THEN END IF; . END IF;

78

Les instructions squentielles

Linstruction FOR
FOR parametre IN intervalle LOOP -- Instructions squentielles END LOOP;

Exemple
FOR i IN 0 to 3 LOOP if A=i then S <= B; end if ; END LOOP;
79

Les instructions squentielles

Linstruction CASE
CASE signal IS WHEN valeur1 => instructions squentielles; WHEN valeur2 => instructions squentielles;
..

WHEN OTHERS => instructions squentielles; END CASE; Instruction souvent utilise pour dcrire les machines dtats

80

Les instructions squentielles

Instruction de boucle whileloop :

while condition loop {instructions} end loop ;

81

Les objets VHDL

Les ports dentres/sorties : Sont dfinis dans lentit (entity) 4 modes dentres/sorties possibles
IN : valeurs lues seulement pas daffectation OUT : valeurs affectes (criture seule) au port avec loprateur <= INOUT : valeurs affectes au port avec loprateur <= BUFFER : valeurs affectes ( lecture et criture) au port avec loprateur <=

82

Les Objets VHDL

Les signaux Dclars dans la zone de dclaration de larchitecture (locaux) ou dans un package (globaux) Exemple :

Entity ET is Port ( A : in bit; B : in bit ; S : out bit); End ET;

Architecture arch of ET is signal temp : bit := 1; --declaration et initialisation du signal begin temp <= A and B; S <= temp ; End arch;

83

Les signaux VHDL

Mis jour { la fin dun cycle de simulation Interprter lexcution temporelle des instructions suivantes :
A1 <= A2 ; A2<=A3; sachant quinitialement A1 := 5; A2 :=2 ; A3:=1;
Tracer lvolution des signaux par rapport { un signal dhorloge clk

Une affectation de signaux de N bits consiste placer un registre N bits entre ces deux signaux

84

Les port dentres sorties vs les signaux


Entity test is

Port ( A : in bit;
B : in bit ; S : out bit ; Cout : out bit); End test;

Architecture arch of test is begin S<= A and B; Cout<= S or B ; End arch;

Architecture arch of test is signal temp : bit ; begin temp<= A and B; S <= temp ; Cout<= temp or B ; End arch;
85

Les constantes

Dclares avant lutilisation Dans larchitecture : locaux Dans un package : globaux Laffectation se fait avec loprateur := Architecture arch of test is constant volt : std_logic := 1 ; constant period : time := 20 ns ; begin . . End arch;

86

Les variables
L update des variables se fait de manire instantane contrairement aux signaux Affectation par := A1 := A2 ; A2:=A3; sachant quinitialement A1 := 5; A2 :=2 ; A3:=1; !! Attention : les variables peuvent ne pas tre synthtisables. Les variables sont dclars { lintrieur dun process Exemple P : process (A,B) variable A1, A2 : bit ; begin A1 := A2 ; End process P;

87

Les mots rservs

ABS ACCESS AFTER ALIAS ALL AND ARCHITECTURE ARRAY ASSERT ATTRIBUTE BEGIN BLOCK BODY BUFFER BUS CASE COMPONENT CONFIGURATION CONSTANT DISCONNECT DOWNTO ELSE ELSIF END ENTITY EXIT FILE FOR FUNCTION GENERATE GENERIC GUARDED IF IN INOUT IS LABEL LIBRARY LINKAGE LOOP MAP MOD NAND NEW NEXT NOR NOT NULL OF ON OPEN OR OTHERS OUT PACKAGE PORT PROCEDURE PROCESS RANGE RECORD REGISTER REM REPORT RETURN SELECT SEVERITY SIGNAL SUBTYPE THEN TO TRANSPORT TYPE UNITS UNTIL USE VARIABLE WAIT WHEN WHILE WITH XOR

88

Les types de donnes

Types scalaires prdfinis


integer : par dfaut 32bits mais limites paramtrables.

ex.: signal val : integer range 0 to 15 implique que val ne peut prendre que les 16 valeurs de 0 15. Il sera donc cod sur 4 bits

natural : sous-type de integer, limit aux nombres >=0 positive : sous-type de integer, limit aux nombres >0 real : (non synthtisable pour les simus seulement) time : (non synthtisable pour les simus seulement) x := 20 ns;

Types numrations prdfinis


character, string : (ex: 'a', "bonjour") bit, bit_vector : seulement 0 ou 1 (ex. : '0', '1', "0101") type peu ou pas utilis boolean : false ou true
89

Les types de donnes en VHDL

std_logic et std_logic_vector( package std_logic_1164) : 9 tats possibles dont 4 synthtisables 0 : bas 1 : haut Z : haute impdance - : indiffrent Ex: signal s : std_logic; -- reprsente 1 bit signal bus : std_logic_vector( 7 downto 0); -- reprsente un vecteur (un bus) de 8 bits bus(7) reprsente le bit de poids fort et bus(0) le bit du poids faible signal toto : std_logic_vector( 0 to 3); -- reprsente un vecteur (un bus) de 4 bits toto(0) reprsente le bit de poids fort et toto(3) le bit du poids faible s <= 1; -- notez le simple cote bus <= "01-10ZZZ" ; -- notez le double cote

bus(1) <= s and bus(2) ;


toto <= bus (7 downto 4); affectation rapide d'un vecteur : bus <= (others => '0') bus <= "00000000"
90

Les types de donnes en VHDL

Les tableaux : Tableau 1 dimension type table is array (0 to 3) of bit;


cration dun type tableau de 3 lments de type bit chacun

signal x :table; instanciation dun signal x de type table Tableau 2 dimensions type table is array (0 to 3, 7 downto 0) of bit; signal x :table; x(2,4)<='1'; Exemple : Instantiation dune mmoire ROM 16 x 8bits Type romtype is array ( 0 to 15) of std_logic_vector (7 downto 0); constant my_rom : romtype := ( "FF", AA",,EE");

91

Les types en VHDL

Les types personnaliss Exemple 1 :


type etat is (debut, fin, stop); signal x : etat; -- idal pour une machine d'tats x<=debut;

Exemple 2 :
type montype is integer range 0 to 31; signal vala : montype;

92

Les oprateurs VHDL


Oprateurs logiques (sur boolens, bits et drivs)

Oprateurs relationnels (sur types scalaires ou drivs (signed et unsigned) )

93

Les Oprateurs en VHDL


Oprateurs bits (sur vecteurs de bits et types numriques) :

Oprateurs arithmtiques (sur les types numriques : entiers, signs, non signs, flottant) :

Oprateurs de dcalage (sur les tableaux de bits, std_logic_vector, signed et unsigned) : sll, srl, sla, sra, rol, ror
94

Les bibliothques

VHDL peut accueillir au moins 2 types de bibliothques :


STD bibliothque fournie par la norme VHDL
WORK bibliothque par dfaut de lutilisateur
Library IEEE;

use IEEE.STD_logic_1164.ALL;

Les modules VHDL analyss sont toujours stocks par dfaut dans la bibliothque WORK
Architecture
Dclaration de package Corps du package Configuation

Entit

Compilateur

bibliothque
Editeur de liens

95

La bibliothque std_logic_1164
Valeurs des signaux

std_logic et std_logic_vector
Valeur Interprtation
0 0 - Forc

library IEEE; -- librairie use IEEE.std_logic_1164.all;-- package ENTITY exemple1 IS PORT ( . ); END exemple1; ARCHITECTURE archlogic OF exemple1 IS BEGIN ..

1
U X Z W L H -

1 - Forc
Uninitialized (non-initialis) Inconnu - Forc Haute impdance Inconnu - Faible 0 - Faible 1 - Faible Dont Care

END archlogic;

96

La bibliothque numeric_std

Elle permet de faire de l'arithmtique cc2 avec des vecteurs : use ieee.numeric_std.all;
C'est aussi un vecteur, mais il reprsente un nombre sign ou non sign possibilits d'oprations arithmtiques ou relationnelles entre eux, mais aussi avec des integer

Elle dfinit deux types vecteurs : SIGNED et UNSIGNED : signal u: unsigned ( 3 downto 0); -- "1010" reprsentent 10 signal s: signed (3 downto 0); -- "1010" reprsentent -6

97

Changement de type

98

Environnement de Simulation et de Synthse (TP)

99

Environnement de simulation

Modelsim

100

Environnement de Synthse

Xilinx ISE

101

Anda mungkin juga menyukai