Vous êtes sur la page 1sur 17

Universit

Abdelmalek Essadi
Facult des Sciences et Techniques Tanger
Dpartement Gnie lectrique
Module : Electronique avance Spcialit : Cycle ingnieur EEA, S5

Le langage VHDL

Karim EL MOKHTARI
karim@elmokhtari.com

Le langage VHDL

Introduction
Au cours des quinze dernires annes, les mthodes de conception des fonctions numriques
ont subi une volution importante.
Dans les annes soixantedix, la majorit des applications de la logique cble taient construites
autour de circuits intgrs standard, souvent de la famille TTL.
Au dbut des annes 80 apparurent, paralllement, les premiers circuits programmables par
lutilisateur et les circuits intgrs spcifiques (ASICs) pour les fonctions complexes fabriques
en grande srie. La complexit de ces derniers a ncessit la cration doutils logiciels de haut
niveau pour la description structurelle des circuits.
A lheure actuelle, on trouve une large gamme de circuits qui vont des premiers PALs
(programmable Array Logic), quivalents de quelques centaines de portes, des FPGAs (Field
programmable Gate Array) de quelques centaines de milliers de portes quivalentes.
Les outils daide la conception se sont unifis ; un mme langage, VHDL par exemple, peut tre
employ quels que soient les circuits utiliss.

Dfinition
Le VHDL est un langage de description destin reprsenter le comportement et larchitecture
de circuits numriques.
Une spcification dcrite en VHDL peut tre simule ou synthtise sur un circuit
programmable.
Un langage de description, contrairement un langage de programmation informatique, sert
dcrire du matriel avec pour objectifs : la spcification, la modlisation, la simulation et la
documentation. Il ne faut jamais interprter le code VHDL comme un langage de programmation
de type C/C++/Pascal
Exemple

Prog 1
A2
B3
C A+B

Prog 2
C A+B
A2
B3

En informatique, le programme 2 est faux car laffectation de A et B doit avoir lieu avant de
calculer C. En VHDL, en revanche, les deux programmes sont identiques et se ramnent dcrire
le schma suivant :

2
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

Historique et volution


Au dbut des annes 80, le ministre de la dfense des Etats Unis (D.O.D) demande
Intermetrics, IBM et Texas Instruments de mettre au point un langage dont lobjectif tait
dassurer une indpendance vis vis des fournisseurs de matriels et de logiciels et ainsi une
assurance de maintenabilit des quipements. Le rsultat tait le langage VHDL.

Le VHDL a t normalis pour la premire fois comme langage de description de matriel en
dcembre 1987 : norme IEEE 107687

Il a connu plusieurs amliorations notamment en 1994 o le standard IEEE 1164 enrichit le
VHDL par la notion de forces sur les signaux (multivalued logic)

Une autre extension du VHDL a vu le jour en 1999 (norme IEEE1076.1) qui ajoute la
modlisation mixte (numrique analogique) et multitechnologique : VHDLAMS (Analog and
Mixed Signal).

Exemple
Nous allons commencer par coder en VHDL un circuit additionneur.
La premire tape consiste considrer le circuit comme une bote noire et dcrire la nature de
ses entres/sorties.



A
SUM
Adder

B
CARRY



entity Adder is
port
(
A, B : in bit;
SUM, CARRY : out bit
);
end Adder;

entity : permet de dclarer une entit (le modle du composant) appel ici Adder
port : dfinit les entres/sorties : in et out indiquent le sens suivi du type du port, bit prend
la valeur 0 ou 1.

Lentit reprsente le botier ou la vue externe du composant.
Il faut ensuite dcrire le fonctionnement de ladditionneur. Dans ce cas simple on se basera sur
les quations logiques de ladditionneur :
SUM = A B
CARRY = A.B

3
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger



La suite du code VHDL sera donc larchitecture ou la vue interne du composant :

architecture arch1 of ADDER is
begin
SUM <= A xor B;
CARRY <= A and B;
end arch1;
Chaque architecture porte un nom : ici arch1.
of ADDER : indique lentit correspondante cette architecture.

Les instructions concurrentes

Dans lexemple prcdent, lvaluation de SUM et CARRY se fait en parallle, ces deux
instructions sont dites des instructions concurrentes, lchange des deux lignes na aucun
effet sur la description.
Lvaluation des instructions concurrentes na lieu que si lun des signaux droite change
c..d. SUM ne sera value que si A ou B change dtat.
Il est possible dintroduire un dlai dans une affectation :
SUM <= A xor B AFTER 10 ns ;
SUM reoit le rsultat de A xor B aprs un retard de 10ns. Ceci est trs utile pour simuler le
retard d aux oprateurs logiques.

Exercice

Ecrire le code VHDL qui modlise un additionneur complet




A

Adder
B

Cin

Sum
Cout

Solution
entity FullAdder is
port
(
A, B, Cin : in bit;
Sum, Cout : out bit
);
end FullAdder;
architecture arch2 of FullAdder is
begin
Sum <= A xor B xor Cin;
Cout <= (A and B) or (A and Cin) or (B And Cin);
end arch2;





4
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

Exercice

Ecrire le code VHDL qui modlise un additionneur 2 bits



2

A
2

Adder2bits
B

Cin


tel que : A=a1a0 B=b1b0 S=s1s0

Sum
Cout

Solution
entity Adder2bits is
port
(
A, B : in bit_vector(1 downto 0);
Cin : in bit;
S
: out bit_vector(1 downto 0);
Cout : out bit
);
end Adder2bits;



Pour larchitecture, on peut exprimer les quations du premier et du second additionneur. Le
lien entre les deux additionneurs est fait laide de C0. C0 est un lien interne il est dfini dans
larchitecture par le mot signal.
Remarque
On na pas besoin de dfinir la direction dun signal car cest une connexion interne

1er type de description : flot de donnes


architecture arch3 of Adder2bits is
signal Co: bit;
begin
sum(0) <= A(0) xor B(0) xor Cin;
Co
<= (A(0) and B(0)) or (A(0) and Cin) or (B(0) and Cin);
sum(1) <= A(1) xor B(1) xor Co;
Cout
<= (A(1) and B(1)) or (A(1) and Co) or (B(1) and Co);
end arch3;
5
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger


Ce type de description sappelle une description de type flot de donnes. Les quations logiques
sont fournies directement sous forme dinstructions concurrentes. Le problme est que ces
quations deviennent plus nombreuses et complexes quand le nombre de bits augmente.

2me type de description : structurelle

Il existe un autre type de description o on dfinit une structure contenant deux additionneurs
du type FullAdder interconnects. Cette description sappelle une description de type structurel


A0
S0

Adder0
B0

Cin

C0


A1
S1

B1
Adder1

Cout



architecture struct2Add of Adder2bits is
component FullAdder
port(
A, B, Cin : in bit;
Sum, Cout : out bit
);
end component
signal Co: bit;
begin
adder0: FullAdder port map(A(0), B(0), Cin, S(0), Co);
adder1: FullAdder port map(A(1), B(1), Co, S(1), Cout);
end struct2Add;

Le ou les composants utiliss dans larchitecture doivent tre dfinis par le mot component
suivi du nom lentit utiliser et la description de la nature des ports du composant.
adder0 et adder1 sont les deux additionneurs utiliss, la liste des connexions est indiqu
dans lordre (adder0 : A(0) A, B(0) B, Cin Cin, S(0) Sum, Cout Co)
Il existe une deuxime faon pour indiquer les connexions sans besoin de respecter lordre
(ce quon appelle association par nom) :
adder1: FullAdder port map(Cin=>Co, A=>A(1), B=>B(1), Cout=>Cout,
Sum=>S(1));











6
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

Exercice

Donner le code VHDL dun multiplexeur 4 entres avec une entre En :

Solution
entity Mux4E is
port(
Sel : in bit_vector(1 downto 0);
-- Entrees de selection
EN : in bit ;
-- Entree de validation
D
: in bit_vector(3 downto 0);
-- Entree de donnees
S
: out bit
-- sortie
);
end Mux4E ;

Premire faon : quation logique brute :

architecture Flot_Don1 of Mux4E is
begin
S <= ((not Sel(0) and not Sel(1) and D(0)) or
(Sel(0) and not Sel(1) and D(1)) or
(not Sel(0) and Sel(1) and D(2)) or
(Sel(0) and Sel(1) and D(3))) and EN;
end Flot_Don1;









7
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

Il existe une faon plus lisible et plus lgante pour reprsenter le fonctionnement du
multiplexeur :

architecture Flot_Don of Mux4E is
signal Y : bit ;
begin
with Sel select
Y <= D(0) when "00",
D(1) when "01",
D(2) when "10",
D(3) when "11";
S <= Y when (EN = '1') else '0';
end Flot_Don;

Instruction concurrente WITH SELECT

Linstruction WITH SELECT permet une affectation par slection.



Le signal Y reoit diffrentes valeurs en fonction de la valeur de Sel.
La clause WHEN OTHERS peut tre ajoute pour indiquer ltat de Y pour les autres cas (na pas
de sens ici, mais il ne faut jamais loublier si la liste des cas nest pas exhaustive)

Instruction concurrente WHEN


S <= Y when (EN = '1') else '0';
Ce type daffectation sappelle une affectation conditionnelle.

Exercice

Donner le code VHDL dun dcodeur 3 vers 8 avec une entre Enable.

Solution
entity Dec3vers8 is
port(
E : in bit_vector(2 downto 0);
EN : in bit ;
S : out bit_vector(7 downto 0)
);
end Dec3vers8 ;

-- Entrees
-- Entree de validation
-- sorties

architecture Flot_Don of Dec3vers8 is


signal Y : bit_vector(7 downto 0) ;
begin
with E select
Y <= "00000001" when "000",
"00000010" when "001",
"00000100" when "010",
"00001000" when "011",
"00010000" when "100",
"00100000" when "101",
"01000000" when "110",
"10000000" when "111";
S <= Y when (EN = '1') else "00000000";
end Flot_Don;

8
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

La notion la plus importante en VHDL : Le processus

En VHDL tout est processus. Chaque instruction concurrente est aussi un processus.
Le processus constitue llment de calcul du simulateur. Un processus est dclar
explicitement par le mot PROCESS ou implicitement avec une instruction concurrente.
Un processus est excut toujours, jusqu la fin de la simulation. Il peut tre mis en attente
par linstruction WAIT.
Un processus sexcute jusqu ce quil trouve WAIT
WAIT a plusieurs formes :
WAIT WAIT ON vnement WAIT FOR dure WAIT UNTIL Condition

Application

Ecrivons la description en VHDL dune bascule D

Fonctionnement

entity BasculeD is
port
(
D, H : in bit;
Q, Qb : out bit
);
end BasculeD;

architecture Comp of BasculeD is


begin
process
begin
wait on H;
if H = '1' then
Q <= D;
Qb <= not D;
end if;
end process;
end Comp;

Remarque
On ne peut pas crire Qb <= not Q au lieu de Qb <= not D , car Q est une sortie et ne peut pas tre
lue.

9
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

3me type de description : comportementale

La description prcdente sappelle une description de type comportemental. Elle inclut


toujours un processus qui dcrit le comportement du systme.

La forme gnrale dun processus est :

Label : Process [(liste de sensibilit)]
Dclaration des variables et constantes
Begin
Instruction squentielles
[Instruction de ractivation du process (wait)]
End process ;

Un processus peut tre dsign par un label pour le distinguer des processus. Mais il nest
pas obligatoire.
Linstruction WAIT ON peut tre remplace par ce quon appelle une liste de sensibilit.
Cette liste indique les entres/signaux qui ractivent le processus. Cest ainsi que les deux
codes suivants sont quivalents :

Process (H)
Process
begin
begin
if H = '1' then
wait on H;
Q <= D;
if H = '1' then
Qb <= not D;
Q <= D;
end if;
Qb <= not D;
end process;
end if;
end process;



Dans les deux cas, le processus nest activ que lorsque ltat de H change.

Remarques
Soit on indique la liste de sensibilit ou linstruction WAIT ON mais pas les deux.
Un processus sans liste de sensibilit et sans WAIT risque de tourner indfiniment et
bloquer le simulateur

Exercice : Donner le code VHDL dune bascule D avec une entre MR
process (H,MR)
begin
if MR='1' then
Q <='0'; Qb <= '1';
elsif H'event and H = '1' then
Q <= D;
Qb <= not D;
end if;
end process;

Notion dattribut

H'event : 'event sappelle un attribut.


Un attribut est une caractristique associe un signal, il est plac juste aprs le signal mais
spar de celuici par une apostrophe.
H'event est une fonction qui retourne TRUE (vrai) si H a chang et FALSE (faux) sinon.

10
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

Excution dun processus

Les instructions dans un processus sont des instructions squentielles, elles sont excutes
selon leur ordre dcriture. Cependant il faut savoir que laffectation de la valeur finale dun
signal/sortie ne seffectue qu la fin du processus ou la rencontre dune instruction WAIT

Exemple
process (H)
A <= D ; --A est un signal
Qb <= not A ;
End process ;

Qb <= not A : la valeur de A qui considre nest pas la nouvelle valeur de A (qui est D) mais
lancienne valeur de A.

Notion de pilote de signal

Pour mieux expliquer le point prcdent, il faut savoir qu chaque signal dans un processus est
associ un pilote (driver en anglais). Toutes les oprations sur le signal sont effectues sur son
pilote, qui est considr comme une mmoire temporaire. Le transfert de la valeur du pilote vers
le vrai signal se fait la fin du processus ou la rencontre de WAIT.

Instant

D
A
Qb Pilote_A Pilote_Qb
Dbut process

1
0
1
0
1
A <= D

1
0
1
1
1
Qb <= not A

1
0
1
1
1 (Cest A et pas Pilote_A)
End Process

1
1
1
1
1

Exercice
Ecrire un code VHDL qui gnre un signal de priode 50 ns

Solution
PROCESS
BEGIN
clk <= not clk;
wait for 25 ns;
END PROCESS;

Ou encore :

PROCESS
BEGIN
h <= '0', '1' AFTER 25 ns;
WAIT FOR 25 ns;
END PROCESS;

Ou encore :

PROCESS
BEGIN
h <= '0';
WAIT FOR 25 ns;
h <= '1';
WAIT FOR 25 ns;
END PROCESS;

11
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

Processus quivalents aux instructions concurrentes


Affectation simple
s <= a AND b AFTER 10 ns;

Processus quivalent :

P1: PROCESS
BEGIN
WAIT ON a, b ;
s <= a AND b AFTER 10 ns;
END PROCESS;

Affectation conditionnelle
S9 <= '1' WHEN etat = "1001" ELSE '0' ;

Dans un processus, linstruction quivalente WHEN est linstruction IF THEN :
P2: PROCESS
WAIT ON etat;
IF etat = "1001" THEN
S9 <= '1';
ELSE
S9 <= '0';
END IF
END PROCESS;

La structure IF THEN peut tre tendue avec ELSIF

IF a = '1' THEN
s <= '1';
ELSIF b = '1' THEN
s <= '1';
ELSE
s <= '0';
END IF;

Affectation avec slection


WITH ad SELECT
S <= e0 WHEN 0,
e1 WHEN 1,
e2 WHEN 2,
e3 WHEN OTHERS;

12
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

Dans un processus, linstruction quivalente WITH est linstruction CASE :


P3: PROCESS
BEGIN
WAIT ON ad, e0, e1, e2, e3;
CASE ad IS
WHEN 0 => s <= e0;
WHEN 1 => s <= e1;
WHEN 2 => s <= e2;
WHEN OTHERS => s <= e3;
END CASE;
END PROCESS;

Le symbole => veut dire implique.

Exercices

Donner le code d'un multiplexeur, d'un dcodeur BCD/7segments et d'un dmultiplexeur en


utilisant un process.
Donner le code dun registre dcalage 4 bits avec une entre de remise zro MR et une
entre srie Ds

Les variables dans un processus


Pour introduire la notion de variable dans un processus, nous allons donner le modle dun
gnrateur de parit 8 bits :

entity GenParite is
port
(
E : in bit_vector(7 downto 0);
S : out bit
);
end GenParite;
architecture FlotDon of GenParite is
begin
S <= E(0) xor E(1) xor E(2) xor E(3) xor E(4) xor E(5) xor
E(6) xor E(7);
end FlotDon;

Lquation deviendra plus complexe si on passe 16 bits ou 32 bits.

On donnera alors un autre modle qui utilise une boucle FOR pour calculer le OU exclusif :

architecture Comp of GenParite is
begin
process(E)
begin
FOR i in 0 to 7 LOOP
S <= S xor E(i);
end loop;
end process;
end Comp;

13
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

Lerreur ici est lutilisation de S droite de laffectation, S tant dclar une sortie, elle ne peut
tre lue.

Solution : utiliser un signal temporaire y :

architecture Comp of GenParite is
signal y:bit;
begin
process(E)
begin
FOR i in 0 to 7 LOOP
y <= y xor E(i);
end loop;
S <= y;
end process;
end Comp;

Surprise : Rsultat de la simulation : S est toujours 0 quelque soit ltat des E(i) !!
Lerreur ici est que la valeur finale de y ne lui est transmise qu la fin du processus :

Exemple : E="00000001"
Instant

y Pilote_y
Dbut process

0
0
y <= y xor E(0)

0
1 Correct
y <= y xor E(1)

0
0 Faux car cest y qui est considre et non pas son pilote
y <= y xor E(2)

0
0 cest toujours y qui est considr

y <= y xor E(7)

0
0 cest toujours y qui est considr
End process

0
0 Transfert du Pilote_y vers y

Rsultat faux, la valeur finale de y est : y xor E(7), le rsultat de chaque xor nest pas prserv
pour litration suivante.

La solution pour prserver ce rsultat est dutiliser une variable au lieu dun signal. Une
variable reoit immdiatement sa valeur dans un processus et nattend pas sa fin :

architecture Comp2 of GenParite is
begin
process(E)
variable a : bit;
begin
a := '0';
FOR i in 0 to 7 LOOP
a := a xor E(i);
end loop;
S <= a;
end process;
end Comp2;

Remarques
Une variable est dclare dans un processus. lextrieur elle nest plus reconnue.
Laffectation dune variable se fait avec le symbole := , pour un signal cest le symbole : <=
Il nest pas ncessaire dfinir la variable i utilise dans la boucle FOR.

14
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

Les instructions FOR et WHILE

Ces deux instructions squentielles assurent lexcution dune boucle : FOR pour un nombre de
rptition connu, WHILE pour une boucle avec condition.

Exemple : mise 1 des bits du vecteur S

for i in 0 to 7 loop
S(i) <= '1';
end loop;

i:=0;
while i<=7 loop
S(i) <= '1';
i := i +1;
end loop;

On prfre la boucle for la boucle while, car il y a risque de boucle infinie pour while.
Une boucle peut tre arrte par linstruction exit when <Condition>

Exemple

for i in 0 to 7 loop
exit when S(i)='1';
S(i) <= '1';
end loop;

Types de donnes en VHDL


Il existe plusieurs types de donnes en VHDL qui permettent, en plus des oprations binaires de
base, deffectuer des oprations arithmtiques. Il faut inclure dans ce cas des librairies
supplmentaires sur lentte du code VHDL.

library ieee;
use ieee.std_logic_1164.ALL;
use ieee.std_logic_arith.ALL;
use ieee.std_logic_unsigned.ALL;
ou bien : use ieee.std_logic_signed.ALL;

Les diffrents types suivants sont dfinis dans ces librairies :

type integer
Entier dfini sur 32 bits. Il est possible de dfinir un entier sur nombre de bits plus rduit en
indiquant la plage voulue : integer range 0 to 15

type std_logic is (
'U',
-- Uninitialized
'X',
-- Unknown
'0',
-- 0
'1',
-- 1
'Z',
-- High Impedance
'W',
-- Weak Unknown (0 or 1)
'L',
-- Weak 0 (models a pull-down)
'H',
-- Weak 1 (models a pull-up)
'-');
-- Don't care
15

Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

Le type std_logic est plus gnralis que le type bit car il supporte des tats supplmentaires qui
peuvent tre rsolues (par exemple 0 est plus fort que H, si ces deux signaux sont
interconnects le rsultat est 0)

type std_logic_vector
Cest un vecteur de bits considr en binaire sign ou non sign selon la librairie incluse
(std_logic_unsigned ou std_logic_signed)

type UNSIGNED
Cest un vecteur de bits cod en binaire naturel (toujours positif)

type SIGNED
Cest un vecteur de bits cod en binaire code complment 2, il peut donc tre positif ou ngatif

Les oprations arithmtiques +,,*,/ peuvent soprer sur des oprandes de mme type. Sinon, il
faudrait utiliser des fonctions de conversion.

Exemple :
signal B,C : std_logic_vector (3 downto 0);
signal D
: unsigned (3 downto 0);
C <= B+D;
-- Incorect!
C <= B + conv_std_logic_vector(D, 4); -- Correct!
Les fonctions de conversion sont les suivantes :
conv_integer(arg) : convertit arg en integer
conv_unsigned(arg,n) : convertit arg en unsigned sur n bits
conv_signed(arg,n) : convertit arg en signed sur n bits
conv_std_logic_vector(arg,n) : convertit arg en std_logic_vector sur n
bits


Exercices
Raliser un compteur sur 4 bits
Raliser un diviseur de frquence sur N.
Utiliser dans la dfinition de lentit le mot : generic (N : integer) qui rend
lentit paramtrable par N, et lutilisation du composant indiquer la valeur dsire de
N : generic map (N=><valeur de division dsire>)


16
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

Les sousprogrammes : les procdures et les fonctions

Il existe deux types de sousprogrammes :


La fonction (function) excute une suite dinstructions squentielles sur des paramtres
dentre (constantes ou signaux) et retourne une seule valeur. Elle est utilisable lintrieur dun
processus.
La procdure (procedure) est comme la fonction mais peut retourner plusieurs valeurs de
sortie.

Exemples

Fonction qui retourne le minimum de deux entiers (dessiner un schma bloc) :

Function MIN(a,b : integer) return integer is
Begin
If A<B then
Return A;
Else
Return B;
End if;
End MIN;


Procdure qui retourne le min et le max de deux entiers (dessiner un schma bloc) :

procedure MIN_MAX(a,b : in integer; min,max : out integer) is
Begin
If A<B then
min:=A; max:=B;
Else
min:=B; max:=A;
End if;
End MIN_MAX;

Appel la fonction et la procdure :

M := MIN(N1,N2); -- M est une variable, pour un signal utiliser <=
MIN_MAX(N1,N2,min1,max1);

Remarque
Le type de retour dune fonction ne doit pas contenir un type avec plage :
Function convert (val : integer) return bit_vector (3 downto 0) is
Les sousprogrammes sont dfinis lintrieur dune architecture ou dans un package

Exercice
Ecrire une fonction increment qui incrmente un nombre binaire de 4 bits. Si la valeur
transmise est "1001" la fonction retourne "0000"
Ecrire une fonction Conv7Seg qui reoit un nombre binaire sur 4 bits et retourne le code 7
segments correspondant. Pour les combinaisons dentre suprieure "1001", les bits
retourns sont tous 0.
Crer une architecture qui reoit un signal dhorloge h et fournit en sortie un comptage BCD sur
deux afficheurs 7 segments. Larchitecture fait appel aux deux fonctions dfinies prcdemment.
17
Cours VHDL Cycle Ing. EEA K. EL MOKHTARI Dpartement Gnie lectrique FST Tanger

Vous aimerez peut-être aussi