Vous êtes sur la page 1sur 13

Syntaxe du Structure Instructions Le mode

Introduction
VHDL du VHDL de base séquentiel

• Exemple 1 : Opérateurs logiques élémentaires


entity Portes_Base is
port ( a, b : in std_logic;
S1, S2, S3, S4, S5, S6, S7 : out std_logic );
end Portes_Base ;
architecture DESCRIPTION of Portes_Base is
Begin
S1 <= a and b ;
S2 <= a or b ;
S3 <= a xor b ;
S4 <= not a ; S5 <= a nand b ;
S6 <= a nor b ; S7 <= not (a xor b) ;
Adil BROURI end DESCRIPTION; 1
Syntaxe du Structure Instructions Le mode
Introduction
VHDL du VHDL de base séquentiel

• Exemple 2 : Décodeurs 7 segments


entity DEC7SEGMT is
port ( DEC : in std_logic_vector (3 downto 0);
SEG : out std_logic_vector (0 downto 6) );
end DEC7SEGMT ;
architecture DESCRIPTION of DEC7SEGMT is
Begin
SEG <= "1111110" when DEC = 0
else "0110000" when DEC = 1
else "1101101" when DEC = 2
-- meme chose pr 3, 4, 5, 6, 7 et 8
else "1111011" when DEC = 9
end DESCRIPTION; 2
Syntaxe du Structure Instructions Le mode
Introduction
VHDL du VHDL de base séquentiel

 Exemple d’un décodeur 1 parmi 4

• Première architecture :
architecture DESCRIPTION of DECOD1_4 is
Begin
D0 <= (not(IN1) and not(IN0));
D1 <= (not(IN1) and IN0);
D2 <= (IN1 and not(IN0));
D3 <= (IN1 and IN0);
end DESCRIPTION;
3
Adil BROURI
Syntaxe du Structure Instructions Le mode
Introduction
VHDL du VHDL de base séquentiel

• Deuxième architecture (équivalente à la 1ère ) :

architecture DESCRIPTION of DECOD1_4 is


Begin
D3 <= (IN1 and IN0);
D2 <= (IN1 and not(IN0));
D1 <= (not(IN1) and IN0);
D0 <= (not(IN1) and not(IN0));
end DESCRIPTION;
4
Adil BROURI
Syntaxe du Structure Instructions Le mode
Introduction
VHDL du VHDL de base séquentiel

• Exemple : Library ieee;


Use ieee.numeric_std.all;
Use ieee.std_logic_1164.all;
entity Full_Add1 is
port ( A, B, C : in std_logic ;
S, R : out std_logic ) ;
end Full_Add1 ;
architecture Archi of Full_Add1 is
signal resultat : unsigned (1 downto 0) ;
Begin
resulat <= ('0' & A) + ('0' & B) + ('0' & C) ;
S <= resultat(0) ;
R <= resultat(1) ;
Adil BROURI
end Archi ; 5
Syntaxe du Structure Instructions Le mode
Introduction
VHDL du VHDL de base séquentiel

architecture Description of Comparateur is


Begin
C <= '1' when (A=B) else '0';
-- ou aussi C <= not ( A xor B ) ;
end Description ;

A
C
Comparateur
B
6
Adil BROURI
Syntaxe du Structure Instructions Le mode
Introduction
VHDL du VHDL de base séquentiel

• Exemple 3 :

S <= E1 when ( SEL = "00" ) else


E2 when ( SEL = "01" ) else
E3 when ( SEL = "10" ) else
E4 when ( SEL = "11" )
- - Il s’agit donc de :

- - Mux 4 vers 1
7
Adil BROURI
Syntaxe du Structure Instructions Le mode
Introduction
VHDL du VHDL de base séquentiel

• Exemple :
o Bascule D avec une remise à zéro asynchrone.

Bascule D-type flip-flop (DFF)


with asynchronous reset
8
Adil BROURI
Syntaxe du Structure Instructions Le mode
Introduction
VHDL du VHDL de base séquentiel

Library ieee ;
Use ieee.std_logic_1164.all ;
entity Dff_A is
port ( d, clk, rst : in std_logic ;
q : out std_logic );
end Dff_A ;
- - Bibliothèques et l’entité
9
Adil BROURI
Syntaxe du Structure Instructions Le mode
Introduction
VHDL du VHDL de base séquentiel

architecture behavior of Dff_A is


Begin
PROCESS ( rst , clk )
Begin
If ( rst = '1' ) Then
q <= '0' ;
Elsif (clk'EVENT and clk='1') Then
q <= d ;
end If ;
end PROCESS ;
end behavior ;
- - L’ architecture (process) 10
Adil BROURI
Syntaxe du Structure Instructions Le mode
Introduction
VHDL du VHDL de base séquentiel

 Exemple 2 : Bascule D

Enable
Q S
D_in D

clk

o Les descriptions suivantes sont équivalentes :


11
Adil BROURI
Syntaxe du Structure Instructions Le mode
Introduction
VHDL du VHDL de base séquentiel

architecture behavior of Bascule_D is


Begin
Synchn_Bascule_D : process
Begin
wait until clk='1'
if Enable ='1' Then
S <= D_in ;
else
S <= '0';
end If ;
end process Synchn_Bascule_D ;
end behavior ; 12
Adil BROURI
Syntaxe du Structure Instructions Le mode
Introduction
VHDL du VHDL de base séquentiel

architecture behavior of Bascule_D is


Begin
Synchn_Bascule_D : process ( clk )
Begin
if (clk'EVENT and clk='1‘)
if Enable ='1' Then
S <= D_in ;
else
S <= '0' ;
end If ;
end if ;
end process Synchn_Bascule_D ;
end behavior ; 13