@Yunxiang He, heyx1@shanghaitech.edu.cn @Quanyu Chen, chenqy2022@shanghaitech.edu.cn @Yongzhi Zhang, zhangyz2022@shanghaitech.edu.cn @Chaofan Li, lichf1@shanghaitech.edu.cn @Qihan Ding, dingqh@shanghaitech.edu.cn
heyx1@shanghaitech.edu.cn
chenqy2022@shanghaitech.edu.cn
zhangyz2022@shanghaitech.edu.cn
lichf1@shanghaitech.edu.cn
dingqh@shanghaitech.edu.cn
因此,数据通路是由操作元件和存储元件连接而成的进行数据存储、处理、传送的路径。
接下来,我们利用这些模块,开始构建我们的 miniCPU!
As we mentioned last week:
clk
rd
we
D
rs1
rs2
x[rs1]
x[rs2]
A
B
Result
ALU_Sel
R-Type 指令是寄存器之间的运算指令。
在电路中实现 R-Type 指令的数据通路,需要完成以下几个步骤:
接下来,让我们看看 R-Type 指令的 Datapath 的模块图吧!
Recall : Processor = PC + Register + ALU
添加到 PC 中的 Decoder 用于解码指令,并向 Datapath 提供操作数、控制信号等,具体如下:
funct7
funct3
opcode
I-Type 指令是立即数和寄存器之间的运算指令。
在电路中实现 I-Type 指令的数据通路,需要完成以下几个步骤:
可以观察到,I-Type 指令的数据通路和 R-Type 指令的数据通路有很多相似之处。
我们尝试扩展 R-Type 的 Datapath,来得到一个能够兼容两种 Datapath 的电路!
Imm-Gen 是提取指令中的立即数部分的模块。
我们在这里以 I-Type 的立即数提取模块为例(还有 S-Type 也需要提取立即数):
访问 Venus
位映射: 从指令中提取特定位并映射到生成的立即数的相应位置。
Instruc.[31]
Imm[31:11]
Instruc.[30:20]
Imm[10:0]
符号扩展: 如果最高位是符号位 Instruc.[31],该位会被复制到高位,确保立即数正确表示正数或负数。
@ Presented by Yunxiang He @ ShanghaiTech University