datapath and top

master
郑几方 3 years ago
parent 335efe2268
commit 679e72d257

@ -12,4 +12,6 @@ def Imm_gen(inst_code: str) -> str:
inst_code[1:11]).rjust(32, inst_code[0]) inst_code[1:11]).rjust(32, inst_code[0])
elif test in ['0110111', '0010111']: # lui, auipc elif test in ['0110111', '0010111']: # lui, auipc
imm_out = inst_code[0:20].rjust(32, inst_code[0]) imm_out = inst_code[0:20].rjust(32, inst_code[0])
else:
imm_out = '0' * 32
return imm_out return imm_out

@ -4,7 +4,10 @@ from typing import Tuple
def branch_unit( def branch_unit(
cur_pc: int, imm: int, jalr_sel: int, branch_taken: int, alu_result: int cur_pc: int, imm: int, jalr_sel: int, branch_taken: int, alu_result: int
) -> Tuple[int, int, int, int]: # 输入值为当前pcint立即数jalr信号是否跳转信号alu运算结果(全是int型) ) -> Tuple[int, int, int, int]: # 输入值为当前pcint立即数jalr信号是否跳转信号alu运算结果(全是int型)
pc_plus_4 = cur_pc + 4 # 输出为pc_plus_imm,pc_plus_4,branch_target,pc_sel(忘了这是啥了,需要回头再看) # 输出为pc_plus_imm,pc_plus_4,branch_target,pc_sel(忘了这是啥了,需要回头再看)
branch_taken = int(branch_taken)
jalr_sel = int(jalr_sel)
pc_plus_4 = cur_pc + 4
pc_plus_imm = cur_pc + imm pc_plus_imm = cur_pc + imm
pc_sel = jalr_sel | (branch_taken & (alu_result % 2)) pc_sel = jalr_sel | (branch_taken & (alu_result % 2))
if jalr_sel == 1: if jalr_sel == 1:

Loading…
Cancel
Save