TinyRISC-V 处理器,PC寄存器。注意:个人学习笔记,参考《从零开始写RISC-V处理器》。
always @ (posedge clk) begin
// 复位
if (rst == `RstEnable || jtag_reset_flag_i == 1'b1) begin //复位信号和jtag的复位
pc_o <= `CpuResetAddr; //复位后的值为CpuResetAddr
// 跳转
end else if (jump_flag_i == `JumpEnable) begin
pc_o <= jump_addr_i; //从跳转地址开始取指
// 暂停
end else if (hold_flag_i >= `Hold_Pc) begin
//暂停的标志位,此处用3bit,因为后边if_id id_ex两个模块也会使用该标志位
pc_o <= pc_o;
// 地址加4
end else begin
pc_o <= pc_o + 4'h4; //32位 PC+4
end
end
PC寄存器模块的输入输出信号如下表所示:
序号 | 信号名 | 输入/输出 | 位宽(bits) | 说 |
---|