2019.4.30添加
粗略通读了整个蜂鸟e203的ALU模块的代码,其基本工作流程为:
在译码阶段,已经读取了对源操作数寄存器索引,源操作数的读取,需要写回的结果操作数,存在InfoBUS中的信息等
下面是在e203_exu_decode.v文件中对相关信息的提取,顺带一提,在RISC-V架构中,x0寄存器是一个相对特殊的寄存器,在v2.2版本的用户文档中是这样描述的:Register x0 is hardwired to the constant 0. 博主英文水平与基础的电路知识不佳,大致意思是这个寄存器是通过硬件手段强行置0的,也就是说这个寄存器无法写入值,其内存存放的永远都是0;
//e203_exu_decode.v
module e203_exu_decode(
....
)
....
//以下为对指令译码得到的信息
output dec_rs1x0,//源操作数1寄存器索引为x0
output dec_rs2x0,//源操作数2寄存器索引为x0
output dec_rs1en,//该指令需要读取源操作数1
output dec_rs2en,//该指令需要读取源操作数2
output dec_rdwen,//该指令需要写回结果操作数
output ['E203_RGIDX_WIDTH-1:0] dec_rs1idx,//源操作数1寄存器索引
output ['E203_RGIDX_WIDTH-1:0] dec_rs2idx,//源操作数2寄存器索引
output ['E203_RGIDX_WIDTH-1:0] dec_rdidx,//结果操作数寄存器索引
output ['E203_DECINFO_WIDTH-1:0] dec_info,//其余信息统一存在INFOBUS中
output ['E2