Skip to content

Commit 2567498

Browse files
WB updated and Top entity almost done
1 parent 365d275 commit 2567498

File tree

2 files changed

+138
-107
lines changed

2 files changed

+138
-107
lines changed

Project_2_RISC_Pipelined/Top_entity.vhd

+123-92
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ component IF_stage is
1616
IF_reg_op : out std_logic_vector (32 downto 0);
1717
alu3_out,alu2_out,memd_out,RF_d2,memid_08:in std_logic_vector(15 downto 0)
1818
);
19-
end component
19+
end component;
2020
--------------------
2121
component ID_stage is
22-
port(reset,clock,nullify_ID_control,PE2_mux_control: in std_logic;
22+
port(reset,clock,nullify_ID_control,PE2_mux_control,EN_id_control,EN_8bits_control: in std_logic;
2323
PE2_ip: std_logic_vector (7 downto 0);
2424
IF_reg_op :in std_logic_vector(32 downto 0);
2525
ID_reg_op : out std_logic_vector (51 downto 0);
@@ -68,15 +68,15 @@ port(clock,reset:in std_logic;
6868
mem_reg_op:in std_logic_vector(76 downto 0);
6969
alu2_out,memd_out,PC_mem,left_shifted:out std_logic_vector(15 downto 0);
7070
memi_35,memi_911,PE1_dest: out std_logic_vector(2 downto 0);
71-
memrf_en:out std_logic
71+
memrf_en,user_cflag,user_zflag:out std_logic
7272
);
7373

7474
end component;
7575
-----------------
7676
component rem_controls is
7777
port(
7878
ID_opcode,OR_opcode,EX_opcode,mem_opcode,IF_opcode:in std_logic_vector(5 downto 0);
79-
dest_EX,dest_OR,dest_ID,dest_IF,RS_id1: in std_logic_vector(2 downto 0);
79+
dest_EX,dest_OR,dest_ID,dest_IF,RS_id1,RS_id2: in std_logic_vector(2 downto 0);
8080
nullify_ID,nullify_OR,nullify_EX,alu2z_flag,authentic_c,authentic_z,validate_IF:in std_logic;
8181
PE1_op,PE2_op:in std_logic_vector(7 downto 0);
8282
PC_en_control,ID_en,ID_en_8bits,validate_control_if,nullify_control_id,nullify_control_or,nullify_control_ex,nullify_control_mem: out std_logic;
@@ -140,13 +140,31 @@ signal validate_control_sig,
140140
PE2_mux_control_sig,
141141
PE1_mux_control_sig,
142142
nullify_ex_sig,
143-
nullify_control_OR_sig: std_logic;
143+
nullify_control_OR_sig,
144+
nullify_control_ex_sig,
145+
nullify_control_mem_sig,
146+
RF_write_out_sig,
147+
flagc_write_out_sig,
148+
flagz_write_out_sig,
149+
alu2z_sig,
150+
load_flag_z_sig,
151+
mem_rf_en_sig,
152+
authentic_c_sig,
153+
authentic_z_sig,
154+
EN_id_control_sig,
155+
EN_8bits_control_sig,
156+
user_zflag_sig,
157+
user_cflag_sig: std_logic;
144158
signal PE2_ip_signal,PE1_ip_signal:std_logic_vector(7 downto 0);
145159
signal PC_control_sig,
146160
memi35_sig,
147-
memi911_sig: std_logic_vector(2 downto 0);
161+
memi911_sig,
162+
PE1_dest_sig: std_logic_vector(2 downto 0);
148163
signal RF_d2_mux_control_sig,
149164
RF_d1_mux_control_sig: std_logic_vector(3 downto 0);
165+
signal OR_opcode_sig,
166+
EX_opcode_sig,
167+
mem_opcode_sig: std_logic_vector(5 downto 0);
150168
signal alu3_out_sig,
151169
alu2_out_sig,
152170
alu2_out_mem_sig,
@@ -155,7 +173,8 @@ signal alu3_out_sig,
155173
RF_d2_sig,
156174
memid_08_sig,
157175
PCtoR7_sig,
158-
left_shifted_sig: std_logic_vector(15 downto 0);
176+
left_shifted_sig,
177+
PC_mem_sig: std_logic_vector(15 downto 0);
159178
signal IF_reg_op_sig: std_logic_vector(32 downto 0);
160179
signal ID_reg_op_sig: std_logic_vector(51 downto 0);
161180
signal OR_reg_op_sig: std_logic_vector(99 downto 0);
@@ -184,15 +203,17 @@ b: ID_stage port map(reset=>reset,
184203
PE2_ip=>PE2_ip_signal,
185204
IF_reg_op=>IF_reg_op_sig,
186205
ID_reg_op=>ID_reg_op_sig,
187-
mem_id_08=>memid_08_sig
206+
mem_id_08=>memid_08_sig,
207+
EN_id_control=>EN_id_control_sig,
208+
EN_8bits_control=>EN_8bits_control_sig
188209
);
189210

190211
c: OR_stage port map (
191212
ID_reg_op=>ID_reg_op_sig,
192213
PC_ex=>PCtoR7_sig,
193214
alu2_out_mem=>alu2_out_mem_sig,
194215
memd_out=>memd_stored_sig,
195-
PC_mem=>mem_reg_op_sig(76 downto 61),
216+
PC_mem=>PC_mem_sig,
196217
left_shifted=>left_shifted_sig,
197218
alu2_forward=>alu2_out_sig,
198219
memd_forward=>memd_sig,
@@ -207,11 +228,11 @@ c: OR_stage port map (
207228
instr08_mem(6 downto 0)=>"0000000",
208229
memi35_mem=>memi35_sig,
209230
memi911_mem=>memi911_sig,
210-
PE1_dest=>mem_reg_op_sig(5 downto 3),
231+
PE1_dest=>PE1_dest_sig,
211232
nullify_ex=>nullify_ex_sig,
212233
clock=>clock,
213234
reset=>reset,
214-
mem_rf_en=>mem_reg_op_sig(12),
235+
mem_rf_en=>mem_rf_en_sig,
215236
nullify_control_OR=>nullify_control_OR_sig,
216237
PE1_mux_control=>PE1_mux_control_sig,
217238
PE1_ip=>PE1_ip_signal,
@@ -224,124 +245,129 @@ c: OR_stage port map (
224245
);
225246
d:EX_stage port map (
226247
OR_reg_op=>OR_reg_op_sig,
227-
RF_write_out=>,
228-
flagc_write_out=>,
229-
flagz_write_out=>,
248+
RF_write_out=>RF_write_out_sig,
249+
flagc_write_out=>flagc_write_out_sig,
250+
flagz_write_out=>flagz_write_out_sig,
230251
PE1_op=>PE1_ip_signal,
231-
nullify_control_ex=>,
252+
nullify_control_ex=>nullify_control_ex_sig,
232253
reset=>reset,
233254
clock=>clock,
234255
EX_reg_op=>EX_reg_op_sig,
235256
alu2_out=>alu2_out_sig,
236257
PCtoR7=>PCtoR7_sig,
237258
nullify_ex=>nullify_ex_sig,
238-
alu2_z=>
259+
alu2_z=>alu2z_sig
239260
);
240261

241262
e:Mem_stage port map(
242263
reset=>reset,
243264
clock=>clock,
244-
nullify_control_mem=>,
265+
nullify_control_mem=>nullify_control_mem_sig,
245266
EX_reg_op=>EX_reg_op_sig,
246267
memd_out=>memd_sig,
247268
Mem_reg_op=>mem_reg_op_sig,
248-
load_flag_z=>
269+
load_flag_z=>load_flag_z_sig
249270
);
250271
f: WB_stage port map(clock=>clock,
251272
reset=>reset,
252273
mem_reg_op=>mem_reg_op_sig,
253274
alu2_out=>alu2_out_mem_sig,
254275
memd_out=>memd_stored_sig,
255-
PC_mem=>,
276+
PC_mem=>PC_mem_sig,
256277
left_shifted=>left_shifted_sig,
257278
memi_35=>memi35_sig,
258279
memi_911=>memi911_sig,
259-
PE1_dest=>,
260-
memrf_en=>
280+
PE1_dest=>PE1_dest_sig,
281+
memrf_en=>mem_rf_en_sig,
282+
user_zflag=>user_zflag_sig,
283+
user_cflag=>user_cflag_sig
261284
);
262285
g: rem_controls port map(
263-
ID_opcode=>,
264-
OR_opcode=>,
265-
EX_opcode=>,
266-
mem_opcode=>,
267-
IF_opcode=>,
286+
ID_opcode(5 downto 2)=>ID_reg_op_sig(35 downto 32),
287+
ID_opcode(1 downto 0)=>ID_reg_op_sig(21 downto 20),
288+
OR_opcode=>OR_opcode_sig,
289+
EX_opcode=>EX_opcode_sig,
290+
mem_opcode=>mem_opcode_sig,
291+
IF_opcode(5 downto 2)=>IF_reg_op_sig(16 downto 13),
292+
IF_opcode(1 downto 0)=>IF_reg_op_sig(2 downto 1),
268293
dest_EX=>,
269294
dest_OR=>,
270295
dest_ID=>,
271296
dest_IF=>,
272297
RS_id1=>,
273-
nullify_ID=>,
274-
nullify_OR=>,
275-
nullify_EX=>,
276-
alu2z_flag=>,
277-
authentic_c=>,
278-
authentic_z=>,
279-
validate_IF=>,
280-
PE1_op=>,
298+
RS_id2=>,
299+
nullify_ID=>ID_reg_op_sig(8),
300+
nullify_OR=>OR_reg_op_sig(8),
301+
nullify_EX=>nullify_ex_sig,
302+
alu2z_flag=>alu2z_sig,
303+
authentic_c=>authentic_c_sig,
304+
authentic_z=>authentic_z_sig,
305+
validate_IF=>IF_reg_op_sig(0),
306+
PE1_op=>PE1_ip_signal,
281307
PE2_op=>PE2_ip_signal,
282308
PC_en_control=>PC_en_control_sig,
283-
ID_en=>,
284-
ID_en_8bits=>,
309+
ID_en=>EN_id_control_sig,
310+
ID_en_8bits=>EN_8bits_control_sig,
285311
validate_control_if=>validate_control_sig,
286312
nullify_control_id=>nullify_ID_control_sig,
287313
nullify_control_or=>nullify_control_OR_sig,
288-
nullify_control_ex=>,
289-
nullify_control_mem=>,
314+
nullify_control_ex=>nullify_control_ex_sig,
315+
nullify_control_mem=>nullify_control_mem_sig,
290316
PC_control=>PC_control_sig
291317
);
292318
h:PE1_mux_control port map(
293-
OR_reg_opcode=>,
294-
nullified_or=>,
319+
OR_reg_opcode=>OR_reg_op_sig(83 downto 80),
320+
nullified_or=>OR_reg_op_sig(8),
295321
PE1_mux_controller=>PE1_mux_control_sig
296322
);
297323
i:PE2_mux_control port map(
298-
ID_reg_opcode=>,
299-
nullified_id=>,
324+
ID_reg_opcode=>ID_reg_op_sig(35 downto 32),
325+
nullified_id=>ID_reg_op_sig(8),
300326
PE2_mux_controller=>PE2_mux_control_sig
301327
);
302328

303329
j:write_control port map(
304-
opcode_mem=>,
305-
opcode_EX=>,
306-
opcode_OR=>,
307-
flag_z_ex=>,
308-
flag_c_ex=>,
309-
flag_z_mem=>,
310-
flag_c_mem=>,
311-
flagz_enable_ex=>,
312-
flagc_enable_ex=>,
313-
load_flag_z=>,
314-
nullify_ex=>,
315-
rf_write_or=>,
316-
flagc_write_or=>,
317-
flagz_write_or=>,
318-
RF_write_out=>,
319-
flagc_write_out=>,
320-
flagz_write_out=>,
321-
authentic_c_op=>,
322-
authentic_z_op=>
330+
opcode_mem=>mem_opcode_sig,
331+
opcode_EX=>EX_opcode_sig,
332+
opcode_OR=>OR_opcode_sig,
333+
flag_z_ex=>EX_reg_op_sig(1),
334+
flag_c_ex=>EX_reg_op_sig(2),
335+
flag_z_mem=>mem_reg_op_sig(1),
336+
flag_c_mem=>mem_reg_op_sig(2),
337+
flagz_enable_ex=>EX_reg_op_sig(54),
338+
flagc_enable_ex=>EX_reg_op_sig(55),
339+
load_flag_z=>load_flag_z_sig,
340+
nullify_ex=>nullify_ex_sig,
341+
rf_write_or=>OR_reg_op_sig(19),
342+
flagc_write_or=>OR_reg_op_sig(10),
343+
flagz_write_or=>OR_reg_op_sig(9),
344+
RF_write_out=>RF_write_out_sig,
345+
flagc_write_out=>flagc_write_out_sig,
346+
flagz_write_out=>flagz_write_out_sig,
347+
authentic_c_op=>authentic_c_sig,
348+
authentic_z_op=>authentic_z_sig
323349
);
324350
k:RF_d1_control port map(
325351
RS_id1=>,
326352
RD_or=>,
327353
RD_ex=>,
328354
RD_mem=>,
329-
ID_opcode=>,
330-
EX_opcode=>,
331-
OR_opcode=>,
332-
mem_opcode=>,
333-
PE1_op=>,
334-
PE2_stored=>,
335-
cflag_ex=>,
336-
cflag_mem=>,
337-
zflag_ex=>,
338-
zflag_mem=>,
339-
nullify_or=>,
340-
nullify_id=>,
341-
nullify_ex=>,
342-
nullify_mem=>,
343-
user_cflag=>,
344-
user_zflag=>,
355+
ID_opcode=>ID_reg_op_sig(35 downto 32),
356+
EX_opcode=>EX_opcode_sig,
357+
OR_opcode=>OR_opcode_sig,
358+
mem_opcode=>mem_opcode_sig,
359+
PE1_op=>PE1_ip_signal,
360+
PE2_stored=>ID_reg_op_sig(7 downto 0),
361+
cflag_ex=>EX_reg_op_sig(2)
362+
cflag_mem=>mem_reg_op_sig(2),
363+
zflag_ex=>EX_reg_op_sig(1),
364+
zflag_mem=>mem_reg_op_sig(1),
365+
nullify_or=>OR_reg_op_sig(8),
366+
nullify_id=>ID_reg_op_sig(8),
367+
nullify_ex=>nullify_ex_sig,
368+
nullify_mem=>mem_reg_op_sig(0),
369+
user_cflag=>user_cflag_sig,
370+
user_zflag=>user_zflag_sig,
345371
RF_d1_mux_control=>RF_d1_mux_control_sig
346372
);
347373

@@ -350,22 +376,27 @@ l: RF_d2_control port map(
350376
RD_or=>,
351377
RD_ex=>,
352378
RD_mem=>,
353-
ID_opcode=>,
354-
EX_opcode=>,
355-
OR_opcode=>,
356-
mem_opcode=>,
357-
cflag_ex=>,
358-
cflag_mem=>,
359-
zflag_ex=>,
360-
zflag_mem=>,
361-
nullify_or=>,
362-
nullify_id=>,
363-
nullify_ex=>,
364-
nullify_mem=>,
365-
user_cflag=>,
366-
user_zflag=>,
379+
ID_opcode=>ID_reg_op_sig(35 downto 32),
380+
EX_opcode=>EX_opcode_sig,
381+
OR_opcode=>OR_opcode_sig,
382+
mem_opcode=>mem_opcode_sig,
383+
cflag_ex=>EX_reg_op_sig(2),
384+
cflag_mem=>mem_reg_op_sig(2),
385+
zflag_ex=>EX_reg_op_sig(1),
386+
zflag_mem=>mem_reg_op_sig(1),
387+
nullify_or=>OR_reg_op_sig(8),
388+
nullify_id=>ID_reg_op_sig(8),
389+
nullify_ex=>nullify_ex_sig,
390+
nullify_mem=>mem_reg_op_sig(0),
391+
user_cflag=>user_cflag_sig,
392+
user_zflag=>user_zflag_sig,
367393
RF_d2_mux_control=>RF_d2_mux_control_sig
368394
);
395+
OR_opcode_sig(5 downto 2)<= OR_reg_op_sig(83 downto 80);
396+
OR_opcode_sig(1 downto 0)<= OR_reg_op_sig(69 downto 68);
397+
EX_opcode_sig(5 downto 2)<= EX_reg_op_sig(77 downto 74);
398+
EX_opcode_sig(1 downto 0)<= EX_reg_op_sig(63 downto 62);
399+
mem_opcode_sig(5 downto 2)<= mem_reg_op_sig(60 downto 57);
400+
mem_opcode_sig(1 downto 0)<= mem_reg_op_sig(46 downto 45);
369401
end Behave;
370402

371-

0 commit comments

Comments
 (0)