Vous êtes sur la page 1sur 4

AYAT Nabil GECSI 2

DEVOIR Non Surveillé


Partie I : Etude de fonctionnement :
1) Quel est le rôle de l’ensemble constitué de AIG0, AIG1, AIG2, AIG3 et DEC 1/4 ?

Pour AIGi permet à la sortie Y soit de prend la valeur de l’entré X si C=1 soit de mettre
en haute impédance (HZ) la sortie Y du bloc si son bit de commande c=0
Pour DEC ¼ est un décodeur 1 parmi 4, reçoit un nombre N codé sur 2 bits et fourni
une sortie active à « 1 » parmi les quatre sorties
Donc Le Rôle de l’ensemble du bloc constitué par AIG0, AIG1, AIG2, AIG3 et DEC ¼
Sont des modules de communication qui permet la communication entre les données à
traiter et le module de traitement UAL.

2) Quel est le rôle du signal Rout ?


Route permet de sélectionner la sortie finale qui est soit AIG4, soit AIG5.
La sortie finale est AIG4 s’il est à 1 dans ce cas l’interrupteur AIG4 se ferme et la sortie
de LURL vers l’accumulateur ACC.
La sortie finale est AIG5 s’il est à 0 dans ce cas l’interrupteur AIG5 se ferme et la sortie
de LURL vers le registre REC.

3) Donner un bref aperçu sur le fonctionnement de l’ensemble et en déduire un exemple


d’application. Renforcer votre réponse avec un schéma explicatif.
Le système permet de réaliser des opérations arithmétiques entre deux entrés de 4 bits
OP et l’un des entres de R0 a R3 selon le choix de DEC1/4, Apres que l’opération est
faite par l’UAL, le résultat présent sur sa sortie est envoyé soit vers un accumulateur si
AGi4 est actionne ou vers un registre REG si AGi5 est actionne.

Partie II : Programmation VHDL :


1) Compléter le schéma fourni sur le document à remettre
2) Ecrire le programme VHDL de Processing_Unit

Entity aigi is
Port (X : in std_logic_vector(3 downto 0);
C : in std_logic;
Y : out std_logic_vector(3 downto 0));
End aigi ;

Architecture str_aigi of aigi is


Begin
Y <= x when c=’1’ else “1111”;
End str_aigi;

Entity dec_1_4 is
Port (N : in std_logic_vector(1 downto 0);
Y : out std_logic_vector(3 downto 0));
End dec_1_4 ;

Architecture str_dec of dec_1_4 is


Begin
Y <= “0001” when n=0 else
<=”0010” when n=1 else
<= “0100” when n=2 else
<= “1000” when n=3;
End str_dec;
Entity alu is
Port (A,B: in std_logic_vector(3 downto 0);
F : in std_logic_vector(1 downto 0);
R : out std_logic_vector(3 downto 0));
End alu ;

Archticturestr_alu of alu is
Begin --The same implementation described in [9]
End str_alu

Entity Processing_unit is
Port (instr : in std_logic_vector(4 downto 0);

R3,R2,R1,R0,OP : in std_logic_vector(3 downto 0);


numIn : in std_logic_vector(1 downto 0);
Rout : in std_logic;
Reg, Acc : out std_logic_vector(3 downto 0);

End Processing_unit ;

Architecture str_ Processing_unit is

Component aigi
Port (x : in std_logic_vector(3 downto 0); c : in std_logic; Y : out std_logic_vector(3 downto
0))
End Component ;

Component dec_1_4
Port (n : in std_logic_vector(1 downto 0); Y : out std_logic_vector(3 downto 0))
End Component ;

Component alu
Port (a,b,f : in std_logic_vector(3 downto 0); m : in std_logic; r : out std_logic_vector(3
downto 0))
End Component ;

for Aig0, Aig1, Aig2, Aig3, Aig4, Aig5 : aigi use entity work.aigi(str_aigi);
fordec : dec_1_4 use entity work. dec_1_4 (str_ dec_1_4 );
for alu_4 : alu use entity work.alu(str_alu);

signalR_alu, B_alu, co : std_logic_vector(3 downto 0) ;

Begin
Aig0 :aigi port map (R0,co(0),B_alu);
Aig1 :aigi port map (R1,co(1), B_alu);
Aig2 :aigi port map (R2,co(2), B_alu);
Aig3 : aigi port map (R3,co(3), B_alu);
Aig4 : aigi port map (R_alu,Rout,Acc);
Aig5 : aigi port map (R_alu,not(Rout),Reg);
dec : dec_1_4 port map (NumIn,co);
alu_4 : alu port map (op,B_alu,Instr(3 downto 0),Instr(4),R_alu);

End str_ Processing_unit ;

Vous aimerez peut-être aussi