构建单周期CPU记录Ⅲ
本文最后更新于 2024年9月12日 晚上
构建单周期CPU记录Ⅲ(addi, j)
addi
对于addi,不需要新增器件,addi与add的不同,本质上是将其中一个寄存器换成了立即数.
比较两者的机器码
![]() |
---|
![]() |
可以发现:
- rs不变
- rt的作用从原来的提供加数,变为赋值地址
- rd消失,立即数代替rt成为加数
因此修改如下:
- A1端口不变,仍然连接Instr[25:21]
- SrcB不再接收Instr[20:16]的值,而是立即数
- A3端口不再接收Instr[15:11]的值,而是Instr[20:16]
我们对ALUSrc,RegDst两个信号作出修改
j
对NXTAD(对下一个地址的计算器)做出修改,新增Jump信号

整体

附
信号表
指令 | RegWrite | MemWrite | ALUControl | RegDst | MemtoReg | ALUSrc | Branch | Jump | |
---|---|---|---|---|---|---|---|---|---|
lw | 1 | 0 | 010(加法) | 0 | 1 | 1 | 0 | 0 | |
sw | 0 | 1 | 010(加法) | X | X | 1 | 0 | 0 | |
beq | 0 | 0 | 110(减法) | X | X | 0 | 1 | 0 | |
add | 1 | 0 | 010(加法) | 1 | 0 | 0 | 0 | 0 | |
sub | 1 | 0 | 110(减法) | 1 | 0 | 0 | 0 | 0 | |
and | 1 | 0 | 000(与) | 1 | 0 | 0 | 0 | 0 | |
or | 1 | 0 | 001(或) | 1 | 0 | 0 | 0 | 0 | |
slt | 1 | 0 | 111(小于置位) | 1 | 0 | 0 | 0 | 0 | |
addi | 1 | 0 | 010(加法) | 0 | 0 | 1 | 0 | 0 | |
j | 0 | 0 | XXX | X | X | X | X | 1 | |
构建单周期CPU记录Ⅲ
https://meteor041.git.io/2024/09/12/构建单周期CPU记录Ⅲ/