Core.scala Update
This commit is contained in:
@ -94,4 +94,36 @@ class Core extends Module {
|
||||
(exe_reg_rf_wen === REN_S) && (id_rs2_addr_b =/= 0.U) && (id_rs2_addr_b === exe_reg_wb_addr)
|
||||
stall_flg := (id_rs1_data_hazard || id_rs2_data_hazard)
|
||||
|
||||
val id_inst =
|
||||
Mux((exe_br_flg || exe_jmp_flg || stall_flg), BUBBLE, id_reg_inst)
|
||||
|
||||
val id_rs1_addr = id_inst(25, 21)
|
||||
val id_rs2_addr = id_inst(20, 16)
|
||||
val id_wb_addr = id_inst(15, 11)
|
||||
val mem_wb_data = Wire(UInt(WORD_LEN.W))
|
||||
val id_rs1_data = MuxCase(
|
||||
regfile(id_rs1_addr),
|
||||
Seq(
|
||||
(id_rs1_addr === 0.U) -> 0.U(WORD_LEN.W),
|
||||
((id_rs1_addr === mem_reg_wb_addr) && (mem_reg_rf_wen === REN_S)) -> mem_wb_data, // 从MEM直通
|
||||
((id_rs1_addr === wb_reg_wb_addr) && (wb_reg_rf_wen === REN_S)) -> wb_reg_wb_data // 从WB直通
|
||||
)
|
||||
)
|
||||
val id_rs2_data = MuxCase(
|
||||
regfile(id_rs2_addr),
|
||||
Seq(
|
||||
(id_rs2_addr === 0.U) -> 0.U(WORD_LEN.W),
|
||||
((id_rs2_addr === mem_reg_wb_addr) && (mem_reg_rf_wen === REN_S)) -> mem_wb_data, // 从MEM直通
|
||||
((id_rs2_addr === wb_reg_wb_addr) && (wb_reg_rf_wen === REN_S)) -> wb_reg_wb_data // 从WB直通
|
||||
)
|
||||
)
|
||||
|
||||
val id_imm_i = id_inst(15, 0)
|
||||
val id_imm_i_sext = Cat(Fill(16, id_imm_i(15)), id_imm_i)
|
||||
val id_imm_s = id_inst(15, 0)
|
||||
val id_imm_s_sext = Cat(Fill(16, id_imm_s(15)), id_imm_s)
|
||||
val id_imm_b = id_inst(15, 0)
|
||||
val id_imm_b_sext = Cat(Fill(16, id_imm_b(15)), id_imm_b)
|
||||
val id_imm_j = id_inst(25, 0)
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user