@@ -16,10 +16,10 @@ component IF_stage is
16
16
IF_reg_op : out std_logic_vector (32 downto 0 );
17
17
alu3_out,alu2_out,memd_out,RF_d2,memid_08:in std_logic_vector (15 downto 0 )
18
18
);
19
- end component
19
+ end component ;
20
20
-- ------------------
21
21
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 ;
23
23
PE2_ip: std_logic_vector (7 downto 0 );
24
24
IF_reg_op :in std_logic_vector (32 downto 0 );
25
25
ID_reg_op : out std_logic_vector (51 downto 0 );
@@ -68,15 +68,15 @@ port(clock,reset:in std_logic;
68
68
mem_reg_op:in std_logic_vector (76 downto 0 );
69
69
alu2_out,memd_out,PC_mem,left_shifted:out std_logic_vector (15 downto 0 );
70
70
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
72
72
);
73
73
74
74
end component ;
75
75
-- ---------------
76
76
component rem_controls is
77
77
port (
78
78
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 );
80
80
nullify_ID,nullify_OR,nullify_EX,alu2z_flag,authentic_c,authentic_z,validate_IF:in std_logic ;
81
81
PE1_op,PE2_op:in std_logic_vector (7 downto 0 );
82
82
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,
140
140
PE2_mux_control_sig,
141
141
PE1_mux_control_sig,
142
142
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 ;
144
158
signal PE2_ip_signal,PE1_ip_signal:std_logic_vector (7 downto 0 );
145
159
signal PC_control_sig,
146
160
memi35_sig,
147
- memi911_sig: std_logic_vector (2 downto 0 );
161
+ memi911_sig,
162
+ PE1_dest_sig: std_logic_vector (2 downto 0 );
148
163
signal RF_d2_mux_control_sig,
149
164
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 );
150
168
signal alu3_out_sig,
151
169
alu2_out_sig,
152
170
alu2_out_mem_sig,
@@ -155,7 +173,8 @@ signal alu3_out_sig,
155
173
RF_d2_sig,
156
174
memid_08_sig,
157
175
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 );
159
178
signal IF_reg_op_sig: std_logic_vector (32 downto 0 );
160
179
signal ID_reg_op_sig: std_logic_vector (51 downto 0 );
161
180
signal OR_reg_op_sig: std_logic_vector (99 downto 0 );
@@ -184,15 +203,17 @@ b: ID_stage port map(reset=>reset,
184
203
PE2_ip=> PE2_ip_signal,
185
204
IF_reg_op=> IF_reg_op_sig,
186
205
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
188
209
);
189
210
190
211
c : OR_stage port map (
191
212
ID_reg_op=> ID_reg_op_sig,
192
213
PC_ex=> PCtoR7_sig,
193
214
alu2_out_mem=> alu2_out_mem_sig,
194
215
memd_out=> memd_stored_sig,
195
- PC_mem=> mem_reg_op_sig( 76 downto 61 ) ,
216
+ PC_mem=> PC_mem_sig ,
196
217
left_shifted=> left_shifted_sig,
197
218
alu2_forward=> alu2_out_sig,
198
219
memd_forward=> memd_sig,
@@ -207,11 +228,11 @@ c: OR_stage port map (
207
228
instr08_mem(6 downto 0 )=> "0000000" ,
208
229
memi35_mem=> memi35_sig,
209
230
memi911_mem=> memi911_sig,
210
- PE1_dest=> mem_reg_op_sig( 5 downto 3 ) ,
231
+ PE1_dest=> PE1_dest_sig ,
211
232
nullify_ex=> nullify_ex_sig,
212
233
clock=> clock,
213
234
reset=> reset,
214
- mem_rf_en=> mem_reg_op_sig( 12 ) ,
235
+ mem_rf_en=> mem_rf_en_sig ,
215
236
nullify_control_OR=> nullify_control_OR_sig,
216
237
PE1_mux_control=> PE1_mux_control_sig,
217
238
PE1_ip=> PE1_ip_signal,
@@ -224,124 +245,129 @@ c: OR_stage port map (
224
245
);
225
246
d :EX_stage port map (
226
247
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 ,
230
251
PE1_op=> PE1_ip_signal,
231
- nullify_control_ex=> ,
252
+ nullify_control_ex=> nullify_control_ex_sig ,
232
253
reset=> reset,
233
254
clock=> clock,
234
255
EX_reg_op=> EX_reg_op_sig,
235
256
alu2_out=> alu2_out_sig,
236
257
PCtoR7=> PCtoR7_sig,
237
258
nullify_ex=> nullify_ex_sig,
238
- alu2_z=>
259
+ alu2_z=> alu2z_sig
239
260
);
240
261
241
262
e :Mem_stage port map (
242
263
reset=> reset,
243
264
clock=> clock,
244
- nullify_control_mem=> ,
265
+ nullify_control_mem=> nullify_control_mem_sig ,
245
266
EX_reg_op=> EX_reg_op_sig,
246
267
memd_out=> memd_sig,
247
268
Mem_reg_op=> mem_reg_op_sig,
248
- load_flag_z=>
269
+ load_flag_z=> load_flag_z_sig
249
270
);
250
271
f : WB_stage port map (clock=> clock,
251
272
reset=> reset,
252
273
mem_reg_op=> mem_reg_op_sig,
253
274
alu2_out=> alu2_out_mem_sig,
254
275
memd_out=> memd_stored_sig,
255
- PC_mem=> ,
276
+ PC_mem=> PC_mem_sig ,
256
277
left_shifted=> left_shifted_sig,
257
278
memi_35=> memi35_sig,
258
279
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
261
284
);
262
285
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 ),
268
293
dest_EX=> ,
269
294
dest_OR=> ,
270
295
dest_ID=> ,
271
296
dest_IF=> ,
272
297
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,
281
307
PE2_op=> PE2_ip_signal,
282
308
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 ,
285
311
validate_control_if=> validate_control_sig,
286
312
nullify_control_id=> nullify_ID_control_sig,
287
313
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 ,
290
316
PC_control=> PC_control_sig
291
317
);
292
318
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 ) ,
295
321
PE1_mux_controller=> PE1_mux_control_sig
296
322
);
297
323
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 ) ,
300
326
PE2_mux_controller=> PE2_mux_control_sig
301
327
);
302
328
303
329
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
323
349
);
324
350
k :RF_d1_control port map (
325
351
RS_id1=> ,
326
352
RD_or=> ,
327
353
RD_ex=> ,
328
354
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 ,
345
371
RF_d1_mux_control=> RF_d1_mux_control_sig
346
372
);
347
373
@@ -350,22 +376,27 @@ l: RF_d2_control port map(
350
376
RD_or=> ,
351
377
RD_ex=> ,
352
378
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 ,
367
393
RF_d2_mux_control=> RF_d2_mux_control_sig
368
394
);
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 );
369
401
end Behave ;
370
402
371
-
0 commit comments