FPGA-RISCV内核入门6
取指段及译码段细节分析
首先是储存器说明
一般为了保证时序,所有原件皆为上升沿触发
但是这里为了保证简便和稳定
在取指段中将储存器读写改为下降沿
这样在取指时,上升沿发出地址,下降沿储存器读取地址发出数据
第二个上升沿取指读取,虽然可能降低时序,但是保证了简洁于稳定
译码段中单独的把访存信息留了一个输出
这是为了解决因为访存带来的数据冲突
如果译码段检测到是访存指令
则暂停流水线3个周期
这里没有考虑读写延迟,因此直接暂停3个周期
对于跳转控制也是得益于在下降沿储存器输出指令
因此只需在上升沿检测到跳转信号则跳转,不用担心跳转错误
也不用暂停流水线
初次之外,译码段发出寄存器读写地址信号
译码段到执行段的连接段接收
寄存器读放在执行段
这里实际上可以将寄存器读数据直接放在译码段
可以节约时序,但当时并未考虑
因此就保留了下来
译码段实际上可以译码出更详细的信息
防止执行段二次译码
这里也并未考虑
毕竟是第一版作品
更多优化技巧可以多思考思考
