-
Notifications
You must be signed in to change notification settings - Fork 0
/
ID_EX_Buffer.vhd
138 lines (115 loc) · 4.36 KB
/
ID_EX_Buffer.vhd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
---------------------------------------------
-- ID/EX Buffer (ID_EX_Buffer)
--- regs:
--- 1) ID_EX_EX & ID_EX_MEM & ID_EX_WB (8bit reg)
--- 2) ID_EX_ReadData1 (8bit reg)
--- 3) ID_EX_ReadData2 (8bit reg)
--- 4) ID_EX_SignTrunc (8bit reg)
--- 5) ID_EX_reg_Rs (5bit reg)
--- 6) ID_EX_reg_Rt (5bit reg)
--- 7) ID_EX_reg_Rd (5bit reg)
--- 8) i_InstructionOut3 (32 bit)
entity ID_EX_Buffer is
port (
clk : in std_logic;
reset_bar : in std_logic;
ID_EX_cont_in, ID_EX_ReadData1_in, ID_EX_ReadData2_in, ID_EX_SignTrunc_in : in std_logic_vector(7 downto 0);
ID_EX_reg_Rs_in, ID_EX_reg_Rt_in, ID_EX_reg_Rd_in : in std_logic_vector(4 downto 0);
ID_EX_instructionOut3_in : in std_logic_vector(31 downto 0);
ID_EX_cont_out, ID_EX_ReadData1_out, ID_EX_ReadData2_out, ID_EX_SignTrunc_out : out std_logic_vector(7 downto 0);
ID_EX_reg_Rs_out, ID_EX_reg_Rt_out, ID_EX_reg_Rd_out : out std_logic_vector(4 downto 0);
ID_EX_instructionOut3_out : out std_logic_vector(31 downto 0)
);
end entity ID_EX_Buffer;
architecture rtl of ID_EX_Buffer is
-- signal declarations
signal i_ID_EX_cont_out, i_ID_EX_ReadData1_out, i_ID_EX_ReadData2_out, i_ID_EX_SignTrunc_out : std_logic_vector(7 downto 0);
signal i_ID_EX_reg_Rs_out, i_ID_EX_reg_Rt_out, i_ID_EX_reg_Rd_out : std_logic_vector(4 downto 0);
signal i_ID_EX_instructionOut3_out : std_logic_vector(31 downto 0);
-- component declarations
component reg_8bit is
port(
reset_bar, load_bar : in std_logic;
clk : in std_logic;
data_in : in std_logic_vector(7 downto 0);
data_out : out std_logic_vector(7 downto 0)
);
end component;
component reg_5bit is
port(
reset_bar, load_bar : in std_logic;
clk : in std_logic;
data_in : in std_logic_vector(4 downto 0);
data_out : out std_logic_vector(4 downto 0)
);
end component;
component reg_32bit is
port(
reset_bar, load_bar : in std_logic;
clk : in std_logic;
data_in : in std_logic_vector(31 downto 0);
data_out : out std_logic_vector(31 downto 0)
);
end component;
begin
-- component instantiations and concurrent signal assignments
ID_EX_cont_reg : reg_8bit port map (
reset_bar => reset_bar, load_bar => '0',
clk => clk,
data_in => ID_EX_cont_in,
data_out => i_ID_EX_cont_out
);
ID_EX_ReadData1_reg : reg_8bit port map (
reset_bar => reset_bar, load_bar => '0',
clk => clk,
data_in => ID_EX_ReadData1_in,
data_out => i_ID_EX_ReadData1_out
);
ID_EX_ReadData2_reg : reg_8bit port map (
reset_bar => reset_bar, load_bar => '0',
clk => clk,
data_in => ID_EX_ReadData2_in,
data_out => i_ID_EX_ReadData2_out
);
ID_EX_SignTrunc_reg : reg_8bit port map (
reset_bar => reset_bar, load_bar => '0',
clk => clk,
data_in => ID_EX_SignTrunc_in,
data_out => i_ID_EX_SignTrunc_out
);
ID_EX_reg_Rs_reg : reg_5bit port map (
reset_bar => reset_bar, load_bar => '0',
clk => clk,
data_in => ID_EX_reg_Rs_in,
data_out => i_ID_EX_reg_Rs_out
);
ID_EX_reg_Rt_reg : reg_5bit port map (
reset_bar => reset_bar, load_bar => '0',
clk => clk,
data_in => ID_EX_reg_Rt_in,
data_out => i_ID_EX_reg_Rt_out
);
ID_EX_reg_Rd_reg : reg_5bit port map (
reset_bar => reset_bar, load_bar => '0',
clk => clk,
data_in => ID_EX_reg_Rd_in,
data_out => i_ID_EX_reg_Rd_out
);
i_InstructionOut3_reg : reg_32bit port map (
reset_bar => reset_bar, load_bar => '0',
clk => clk,
data_in => ID_EX_instructionOut3_in,
data_out => i_ID_EX_instructionOut3_out
);
-- output driver
ID_EX_cont_out <= i_ID_EX_cont_out;
ID_EX_ReadData1_out <= i_ID_EX_ReadData1_out;
ID_EX_ReadData2_out <= i_ID_EX_ReadData2_out;
ID_EX_SignTrunc_out <= i_ID_EX_SignTrunc_out;
ID_EX_reg_Rs_out <= i_ID_EX_reg_Rs_out;
ID_EX_reg_Rt_out <= i_ID_EX_reg_Rt_out;
ID_EX_reg_Rd_out <= i_ID_EX_reg_Rd_out;
ID_EX_instructionOut3_out <= i_ID_EX_instructionOut3_out;
end architecture;