Na het maken van de ALU in de vorige opdracht, moet er voor opdracht 4 een Register file gemaakt worden.
Een register file is een onderdeel van een processor dat eigenlijk niet veel meer bevat dan een set registers. De specificaties van de register file voor deze opdracht zijn als volgt:
entity regfile is
generic (
G_WIDTH : natural := 32; -- Breedte van de registers
G_REGCOUNT_LOG2 : natural := 3 -- log2(# registers)
);
port(
clock : in STD_LOGIC;
reset : in STD_LOGIC;
we : in std_logic;
src1 : in std_logic_vector(G_REGCOUNT_LOG2-1 downto 0);
src2 : in std_logic_vector(G_REGCOUNT_LOG2-1 downto 0);
dest : in std_logic_vector(G_REGCOUNT_LOG2-1 downto 0);
data : in std_logic_vector(G_WIDTH-1 downto 0);
data1 : out std_logic_vector(G_WIDTH-1 downto 0);
data2 : out std_logic_vector(G_WIDTH-1 downto 0)
);
end entity regfile;
Het zou kunnen dat het bovenstaande schema er nogal “druk en overweldigend” uitziet … en dat is perfect ok. Dit is ook nog maar de 4 opdracht die er gemaakt moet worden. Als een probleem te groot lijkt, helpt het vaak om het op te delen in kleindere problemen die gemakkelijker te overwinnen zijn.
De tweede leespoort, is gewoon een kopie van de eerste leespoort.
De tweede leespoort weglaten is een gemakkelijke tussenstap.
De n-1 registers zijn allemaal gelijkaardig aan het ne register.