之前的几周我们做了单周期CPU仿真的实验,虽然一开始做得一脸懵逼,但最后还是成功实现了一个简单的CPU。
单周期CPU原理
单周期CPU指的是一条指令的执行在一个时钟周期内完成,无论是哪种指令。处理指令有以下五个步骤:
- 取指令:从PC取出下一条指令的地址并读取指令。
- 指令译码:根据指令产生各种控制信号。
- 指令执行:根据控制信号执行指令。
- 存储器访问:读写存储器。
- 写回:将运算结果或读存储器的数据写入寄存器。
单周期CPU设计
单周期CPU处理的是MIPS指令,共有三种类型,即R指令,I指令和J指令。不同的指令有不同的功能,执行的步骤也各不相同。一个时钟周期只有上升沿和下降沿,而单周期CPU必须在一个周期内完成最多五个步骤,因此需要组合逻辑电路和时序逻辑电路的结合。时序逻辑电路可以控制操作的先后顺序以及执行次数,我选择在上升沿取指令,在下降沿写寄存器和存储器。组合逻辑电路虽然无法确定多个操作的执行顺序,但执行多个操作几乎可以瞬间完成,我选择将译码、读寄存器、读存储器和运算操作用组合逻辑电路实现。
在一个时钟周期内,上升沿读取指令地址,瞬间读取对应指令,瞬间完成译码,瞬间产生控制信号,瞬间完成读寄存器,瞬间完成运算,瞬间完成读存储器,然后下降沿写寄存器和写存储器。
使用工具
vivado软件和verilog语言
单周期CPU实现
从理论上分析指令按步骤执行,但实际上由于组合逻辑电路