【Logisim实验】构建立即数-随机存储器-寄存器的传送
关于Logisim
Logisim在仿真软件行列中算是比较直观的软件了,它能做的事情有很多,唯一不足的是硬件描述语言的支持,总体上来说适合比较底层的仿真,依赖于Hex值,通过线路逻辑设计能够较好的
关于本实验
计算机指令的执行过程设计是相对复杂的,指令的形式也是多种多样,按照格式可分为有二三单地址指令,根据访问部件的不同可分为立即数,RR,SS,RS等指令
本实验通过Logisim实现:
1.寄存器->存储器
2.存储器->寄存器
3.立即数->存储器
4.立即数->寄存器
的四种控制结构
正文
1)实现寄存器组
寄存器组能够组合成一个缓存序列,并按照每个寄存器的地址进行更改和访问,一次只能改写或读取一个寄存器内容。
2)立即数与主存储器
主存储器与寄存器都是存储部件能作为输入输出使用,立即数只能作为输入
3)通路设计
控制数据通路实际是通过数据选择器不断的控制输入地址达到选择通路的效果。
两处data作为同一线路,同时为Memory输入端提供可选地址
为寄存器入口提供选择入口
存储器->寄存器
寄存器->存储器
是一对互斥操作可将两者读写控制信号合并为一个
0->存储器写
1->寄存器写
4)将控制通路的二路选择器信号合并一处形成指令端口
这里有两种布局方式a)硬布线b)微程序控制器
两者各有优缺点
需要有指令周期这里就是简单的读写周期用clock+译码器就可构成
采用方案b将读写,li/Memory,li/Regs端口进行分析
指令 | 读写r/w | li/memory | li/regs | 指令序号 |
立即数->memory | 0 | 0 | 0 | 1 |
立即数->regis | 1 | 0 | 0 | 2 |
memory->regis | 1 | 1 | 0 | 3 |
regis->memory | 0 | 0 | 1 | 4 |
三位二进制控制信号可以指定8种操作其中很多操作相互重叠只取其中一个就好
5)编写微指令控制器
ROM中存储微指令
这样就完成了数据传送了
后续
可以发现图中还有很多地址信号可以压缩成一定长(S_R,w_a,address,data),度需要根据指令类型进行指令各个位置的数据的通路判断。