CH 4
CH 4
CH 4
H
• (Very High Speed Integrated Circuit)
• Hardware
D • Description
L • Language
Synthèse
Comportemental
Comportementale
VHDL
RTL
Synthèse Logique
Logique
Placement/
Routage
Layout
8 | Cours Systèmes Embarqués, MR SysCoin, Préparé par : Slim Ben Othman
STRUCTURE DU VHDL
DECOD2_4
entity DECOD2_4 is
port(
IN0: in std_logic;
IN1: in std_logic;
D0, D1, D2, D3: out std_logic
);
end DEMUX2_4;
• entier
signal COMPT : integer range 0 to 15;
• flottante
signal MASSE : REAL; -- de -1e38 à 1e38
• physique qui est un entier avec l'unité correspondant (non synthetisable)
a <= ‘1’;
b <= ”0000”; -- Base Binaire par défaut
c <= B”0000”; -- Base Binaire explicite
d <= ”0110_0111”; -- Utiliser ‘_’ pour augmenter la lisibilité
e <= X”AF67”; -- Base Hexadecimale
f <= O”723”; -- Base Octale
32 | Cours Systèmes Embarqués, MR SysCoin, Préparé par : Slim Ben Othman
Accès aux éléments
Exemples type MY_WORD is array (15 downto 0) of std_logic;
signal MEM_ADDR: MY_WORD;
MEM_ADDR(10 downto 5) <="101010";
• Boucle while:
• wait on signal;
• wait on A , B
Process ()
begin SIG
SIG <= '0';
SIG <= '1';
SIG <= '0';
end process; SIG
Processus en exécution
Processus en exécution
begin
Y <= A;
B
M <= B;
Z <= M;
end process; Y
Le
processus
se réveille
M
U1: DEMI_ADD ❷
port map (SIG_A,SIG_B, SOMME, RETENUE);
entity DEMI_ADD is
port (
A,B: in std_logic;
SUM,C: out std_logic);
end DEMI_ADD;
architecture COMPORT of DEMI_ADD is
begin
SUM <= A xor B;
C <= A and B;
end COMPORT;
58 | Cours Systèmes Embarqués, MR SysCoin, Préparé par : Slim Ben Othman
Exemple : Additionneur
entity ADD_COMPLET is
port (
A,B,CIN : in std_logic;
SUM,COUT : out std_logic);
end ADD_COMPLET;
Circuits Combinatoires :
signal A,S : std_logic_vector (2 downto 0); signal A,S : std_logic_vector (2 downto 0);
begin Begin
process (A) S <= "000" when A= "000"
Exemple 2 Begin
case A is
else "001" when A= "001"
else "011" when A= "010"
when "000" => S <= "000" else "010" when A= "011"
Architecture AVEC_IF of CIRCUIT is
when "001" => S <= "001" else "110" when A= "100"
signal A,S : std_logic_vector (2 downto 0);
when "011" => S <= "010" else "111" when A= "101"
begin
… else "101" when A= "110"
process (A)
begin
if A = "000" then S <= "000";
end case;
end process; ❷ else "100" when A= "111"
else "000"; ❹
end AVEC_case; Affectation avec case end AVEC_When; Affectation sélective
elsif A ="001" then S <= "001";
elsif ...
Architecture AVEC_With of CIRCUIT is Architecture Direct of CIRCUIT is
end if;
end process; ❶ signal A,S : std_logic_vector (2 downto 0); signal A,S : std_logic_vector (2 downto 0);
Begin
end AVEC_IF; Affectation avec if Begin
with A select S(2) <= (A(2) and not A(1) and not A(0))
S <= "000" when "000" , or (A(2) and not A(1) and A(0))
"001" when "001" , or(A(2) and A(1) and not A(0)) or
"011" when "010" , (A(2) and A(1) and A(0));
❸ "110" when "100" , S(1) <= (not A(2) and A(1) and not A(0))
…
Affectation sélective "000" when others;
❺ or (not A(2) and A(1) and A(0)) or
(A(2) and not A(1) and not A(0))
Affectation non or (A(2) and not A(1) and A(0));
end AVEC_With;
conditionnelle
…
65 | Cours Systèmes Embarqués, MR SysCoin, Préparé par : Slim Ben Othman end Direct; 65
Circuits Séquentiels :
Restrictions dans la description
• Un process comporte un point de mémorisation si au moins une des
conditions suivantes est vérifiée :
• la liste de sensibilité ne comprend pas tous les signaux lus
• les signaux ne sont pas affectés quelle que soit la branche
• une variable est lue avant d'être affectée
entity Reg is
port (
E : in std_logic_vector(2 downto 0);
H,RAZ : in std_logic;
S : out std_logic_vector(2 downto 0));
end Reg;
process
• Ou encore: begin
wait for 5 ns;
s_en<='0','1' after 10 ns,'0' after 18 ns, '1' after 25 ns;
wait;
end process;
79 | Cours Systèmes Embarqués, MR SysCoin, Préparé par : Slim Ben Othman
DESCRIPTION D’UNE MACHINE À ÉTATS
Current_state
x
a Next_state State_reg Outputs
(Comb.) (Flip-Flops) (Comb.)
b y
clk
Machine de
Mealy
Current_state
x
Next_state State_reg Outputs Output_reg
a (Flip-Flops)
(Comb.) (Flip-Flops) (Comb.)
b y
clk clk
Machine de
Mealy
Current_state
a Next_state State_reg
b
(Comb.) (Flip-Flops) x
y
clk
2) data_out, data_in et RW de la question précédente sont des signaux internes. Donner les déclarations
correspondantes.
end
96 | architecture ;
Cours Systèmes Embarqués,
end architecture ;
MR SysCoin, Préparé par : Slim Ben Othman
Exercice 5
entity div_10 is architecture ver1 of div_10 is architecture ver2 of div_10 is architecture ver3 of div_10 is
port( begin signal compte : integer range 0 to 4 := 0 ; signal compte : integer range 0 to 4 := 0 ;
hor : in std_logic; diviseur : process(hor) begin begin
sort : buffer std_logic ); variable compte : integer range 0 to 5 := 0 ; diviseur : process(hor) diviseur : process(hor)
end div_10 ; begin begin begin
if (hor’event and hor = '1') then if (hor’event and hor = '1') then if (hor’event and hor = '1') then
compte := compte + 1 ; compte <= compte + 1 ; if compte = 4 then
if compte = 5 then if compte = 4 then compte <= 0 ;
compte := 0 ; compte <= 0 ; sort <= not sort ;
sort <= not sort ; sort <= not sort ; else
end if ; end if ; compte <= compte + 1 ;
end if; end if; end if ;
end process diviseur ; end process diviseur ; end if;
end ver1 ; end ver2 ; end process diviseur ;
end ver3 ;
2) L’utilisation du mode buffer dans les ports de l’entité n’est pas recommandée par les outils de synthèse.
Proposer une solution équivalente.