Sunteți pe pagina 1din 7

Ministerul Educaţiei și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei

Departamentul Informatică și Ingineria Sistemelor

RAPORT
Lucrarea de laborator nr. 2
la AA

A efectuat: Preguza Cristian

st. gr. CR-201

A verificat: Cărbune Viorel

Chişinău 2023
Lucrarea de laborator nr. 2

Теmа: Arhitectura von Neumann: Fazele ciclului instrucțiune

1. Scopul

Proiectarea, implementarea sinteza și simularea arhitecturii Multiple-Bus a unității


artmetico-logice orientate pe acumulator, utilizând una din metodele de proiectare oferite de
mediul de proiectare Intel Quartus Prime.

2. Desfașurarea lucrării

1. Se va crea un proiect nou în care se va implementa arhitectura Multiple-Bus a


unității aritmetico-logice orientate pe acumulator. Pentru implementarea registrelor
MBR, MAR, AC, IR se va folosi componenta parametrizată lpm_ff din librăria
megafunction : megafunction – >storage – >lpm_ff, pentru implementarea
numărătorului de program PC se va folosi componenta parametrizată lpm_counter
din librăria megafunction : megafunction – >arithmetic – >lpm_counter, pentru
implementarea magistralelor de date Memory Data Bus și Result Bus se va folosi
componenta parametrizată lpm_ram_io din librăria megafunction : megafunction –
>storage – >lpm_ram_io, pentru implementarea arhitecturii UAL se va folosi
componenta parametrizată lpm_add_sub din librăria megafunction : megafunction –
>arithmetic – >lpm_add_sub.
2. Se va compila circuitul implementat și se va analiza reprezentarea grafică a
rezultatului compilării RTL (register transfer level).
3. Se va construi diagrama de timp pentru fiecare fază: Instruction Fetch, Instruction
Execut, Write Result.

3. Circuitul pentru arhitectura cu 3 magistrale realizată în Quartus.

Figura 1. Circuitul pentru arhitectura cu 3 magistrale (Multiple-Bus)

4. Codul programului pentru unitatea aritmetică logică


library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;

entity UAL_PART is
generic(
OPCODE_WIDTH : integer := 4;
DATA_WIDTH : integer := 8
);
port(
OPCODE : in std_logic_vector(OPCODE_WIDTH-1
downto 0);
OPERAND_A : in std_logic_vector(DATA_WIDTH-1 downto
0);
OPERAND_B : in std_logic_vector(DATA_WIDTH-1 downto
0);
RESULT : out std_logic_vector(DATA_WIDTH-1
downto 0)
);
end UAL_PART;

architecture UAL_arch of UAL_PART is


signal INT_OPCODE : integer;
signal INT_OPERAND_A : integer;
signal INT_OPERAND_B : integer;
signal INT_RESULT : integer;
begin
INT_OPCODE <= to_integer(unsigned(OPCODE));
INT_OPERAND_A <= to_integer(unsigned(OPERAND_A));
INT_OPERAND_B <= to_integer(unsigned(OPERAND_B));

process(INT_OPCODE)
begin
case INT_OPCODE is
when 2 => INT_RESULT <= INT_OPERAND_A +
INT_OPERAND_B;
when others => INT_RESULT <= 0;
end case;
RESULT <= std_logic_vector(to_unsigned(INT_RESULT,
RESULT'length));
end process;
end UAL_arch;
5. Rezultatul compilării circuitului pentru arhitectura cu 3 magistrale:

Figura 2. Rezultatul compilării fișierului entitate

6. RTL:
Figura 3. RTL Viewer-ul circuitului rulat

Memory.mif
7. Diagrama de timp:
Figura 4. Diagrama de timp pentru generarea semnalelor de comandă la realizarea operației de
adunare în UAL

Concluzii:

În cadrul acestei lucrări de laborator, s-a aprofundat arhitectura cu trei


magistrale, s-a realizat diagrama de timp asociată și s-a implementat UAL atât în
cod, cât și grafic. Experiența acumulată ne-a pregătit pentru laboratoarele
următoare.

S-ar putea să vă placă și