Vous êtes sur la page 1sur 16

Université Sultan Moulay Slimane

Ecole Supérieur de Technologie de Béni Mellal (ESTBM)

Licence professionnelle
Semestre 6
Module : Conception des
Systèmes Embarqués

TP1_Xilinx ISE Design

ESTBM – Pr. EL DAOUDI


1. Ouvrir l’application ISE Design Suite
2. Sélectionner New Project
3. Nommer le nom du Projet puis cliquer sur Next
4. Choisir la famille Spartan3
5. Choisir le language VHDL dans la partie de « Preferred Language » puis cliquer sur Next ensuite Finish
6. Cliquer avec le bouton droit sur xc3x400 au dessous du projet
7. Sélectionner New Source puis le « VHDL Module »
8. Ecrire le nom de l’Entité puis Next
9. Changer le nom de l’Architecture
10. Introduire les entrées/sorties du Prototype et définir leurs sens puis Next et Finish
11. Ecrire le programme souhaité
12. Enregistrer les modifications
13. Sélectionner « Synthesize-XST » puis double cliques sur « Check Syntax » Pour vérifier le programme (Un icône s’affiche signifie que
le programme est correct)
14. Cliquer deux fois sur View RTL Schematic
15. Après le schéma électronique s’affiche du prototype (Boite noire)
16. Cliquer deux fois sur le prototype : la description interne du prototype s’affiche
17. Passer à l’option simulation en haut, sélectionner l’entité dans la partie « Hierarchy »
18. Dans la zone Processes_Isim Simulator, cliquer deux fois sur « Simulate Behavioral Model »
19. Une autre fenêtre qui décrit le comportement du prototype est affichée
20. Affecter des valeurs aux entrée pour voir le comportement du prototype (cliquer sue le bouton droit est forcer la valeur de la consigne)
21. Cliquer sur l’icône « Run for the time specified on the toolbar »
2
Manipulation 1:

S
Entity
b (AND)

3
Programme en VHDL d'une porte AND :

Library ieee;
USE ieee.std_logic_1164.all;
a
S
Entity Function_AND is Entity
Port (a : in std_logic; b (AND)
b : in std_logic;
s : out std_logic);
End Function_AND;

Architecture desc_AND of Function_AND is


Begin
S <= a and b;
End desc_AND;

4
Manipulation 2:

5
Programme en VHDL d’un demi-additionneur :

-- Déclaration des bibliothèques utilisées


library IEEE;
use IEEE.std_logic_1164.all;

-- Déclaration de l'entité du demi-additionneur (half-adder).


entity HA is
port (A, B: in std_logic;
S, C: out std_logic);
end HA;

-- Déclaration de l'architecture en flot de données.


architecture arch_HA of HA is
begin
S <= A xor B;
C <= A and B;
end arch_HA;
6
Manipulation 3:

7
Programme en VHDL d’un additionneur :

𝑆 = 𝐴⨁𝐵⨁𝐶𝑖𝑛
𝐶𝑜𝑢𝑡 = 𝐴𝐵 + 𝐶𝑖𝑛𝐴 + 𝐶𝑖𝑛𝐵

Library ieee;
USE ieee.std_logic_1164.all;

Entity addi is
Port (A : in std_logic;
B : in std_logic;
Cin : in std_logic;
Cout : out std_logic;
S : out std_logic);
End addi;

Architecture arch_addi of addi is


Begin
S <= A XOR B XOR Cin;
Cout <= (A and B) or (A and Cin) or (B and Cin);
End arch_addi;

8
Manipulation 4:

9
Programme en VHDL du circuit ci-dessous:

library ieee;
use ieee.std_logic_1164.all;
entity exemple2 is
port (
A,B,C : in std_logic;
F : out std_logic);
end exemple2;
architecture arch2 of exemple2 is
signal T1 : std_logic;
signal T2 : std_logic;
begin
T1 <= not(C);
T2 <= T1 xor B;
F <= T2 nand A;
end arch2;
1
0
Manipulation 5:

1
1
Programme en VHDL modèle combinatoire simple représenté à côté :

architecture flotDeDonnees of add3bits is


library IEEE;
signal T1 : std_logic;
use IEEE.STD_LOGIC_1164.ALL;
signal T2 : std_logic;
entity add3bits is
signal T3 : std_logic;
port (
begin
Cin : in std_logic;
S <= T1 xor Cin;
X : in std_logic;
Cout <= T3 or T2;
Y : in std_logic;
T1 <= X xor Y;
Cout : out std_logic;
T2 <= X and Y;
S : out std_logic);
T3 <= Cin and T1;
end add3bits;
end flotDeDonnees;
1
2
Manipulation 6:

E1 SEL S

E2 00 E1
S
MUX 01 E2
E3
10 E3
E4
11 E4
SEL[1..0]

13
Programme en VHDL d’un multiplexeur (sans process) :

SEL S
Library ieee; 00 E1
USE ieee.std_logic_1164.all; 01 E2
10 E3
Entity multiplex is 11 E4
Port ( E1,E2,E3,E4 : in std_logic;
SEL : in std_logic_vector (1 downto 0);
S : out std_logic );
End multiplex;
E1
E2 S
Architecture desc_multiplex of multiplex is
E3 MUX
Begin
S <= E1 when SEL = "00" Else E4
E2 when SEL = "01"Else
E3 when SEL = "10"Else SEL[1..0]
E4;
End desc_multiplex;

14
Programme en VHDL d’un multiplexeur (process avec case et when) :
Library ieee; SEL S
USE ieee.std_logic_1164.all; 00 E1
01 E2
entity MUX is
10 E3
port (E1, E2, E3, E4: in std_logic;
SEL: in std_logic_vector(1 downto 11 E4
0);
S: out std_logic);
End MUX;
E1
architecture CMP of MUX is E2 S
begin E3 MUX
process (SEL) E4
begin
case SEL is SEL[1..0]
when "00" => S <= E1;
when "01" => S <= E2;
when "10" => S <= E3;
when OTHERS => S <= E4;
end case;
end process;
end CMP;
15
Programme en VHDL d’un multiplexeur (process avec if) :
Library ieee; SEL S
USE ieee.std_logic_1164.all; 00 E1
01 E2
entity multiplex is
10 E3
port (E1, E2, E3, E4: in std_logic;
SEL: in std_logic_vector(1 downto 0); 11 E4
S: out std_logic);
end multiplex;

architecture desc_multiplex of multiplex is E1


begin E2 S
process (SEL) E3 MUX
begin E4
if (SEL= "00") then S <= E1;
elsif (SEL= "01") then S <= E2; SEL[1..0]
elsif (SEL= "10") then S <= E3;
else S <= E4;
end if;
end process;
end desc_multiplex ;

16

Vous aimerez peut-être aussi