使用 Verilog 语言完成一个简单的 RISC-V CPU 电路设计,并通过软件仿真和 FPGA 板两种方式的测试运行。
采用Tomasulo算法进行乱序执行,具体如下:
- 红线为时序,随时钟变化;蓝线为组合,直接计算得到。
- 部分线没有画出,比如
jal reset以及io_buffer_full等线。
MemCtl与Mem的交互采用了组合,在加上io_buffer的限制之后需要将hci中的输出部分改成时序逻辑,否则可能会出现多次输出的情况rd[0]的值应该一直是0,所以赋值以及renaming不需要考虑- input(
0x30000)时要等到rob也执行到这条指令时才能执行,否则可能会造成input数据的流失(比如jal的reset) io_buffer满的时候要把lsb和rob停住- 上板前注意好
io_buffer、初始化以及锁 - ...
