---- 整理自B站UP主 踌躇月光 的视频
1. 程序计数器 PC 改造
- 原来的 PC
- 由于后续的 ALU 会较频繁的变动,因而会经常修改 PC,所以将 PC 中的 ALU 换成 8 位加法器。改造后的 PC:
2. 寄存器控制器的实现
我们控制器主要通过 ROM 实现,ROM 最多支持输出 32 位,也就是最多可以控制 32 个端,但我们有时需要两位来控制一个寄存器,寄存器的数量比较多,32 位肯定不够用。
2.1 准备
我们分别用 5 位来控制寄存器的读和写。
2.1.1 532译码器
用 ROM 实现 5 到 32 位的译码器。一根总线,我们同时只能有一个读或者一个写。避免同一个寄存器既读又写。
import osdirname = os.path.dirname(__file__)
filename = os.path.join(dirname, '532decoder.bin')with open(filename, 'wb') as file:for var in range(32):value = 1 << varresult = value.to_bytes(4, byteorder='little')file.write(result)# 0 - 0000 0000 0000 0000 0000 0000 0000 0001
# 1 - 0000 0000 0000 0000 0000 0000 0000 0010
# ...
# 31 - 1000 0000 0000 0000 0000 0000 0000 0000
2.1.2 32 位异或
2.2 实现
2.3 简单测试
2.4 实验结果举例说明
2.5 实验工程
【21 - 寄存器控制器】