本实验全程采用数字电路仿真软件——Digital来实现,Digital是一种用于设计和仿真数字逻辑电路的教育工具,它是免费、开源和跨平台的。
详细指导及仿真软件可见:计算机组成原理实验指导
下载软件也可直接点击提取:Digital软件安装包
实验电路图及其PDF实验报告可见: 运算电路实验
本文案仅限于本人在学习过程中的自我理解和感受,不具有任何其他行为。
第一部分:加减运算电路实验
一、整体电路图展示
二、局部功能组件的实现
1.溢出检测电路的创建
选择工具栏中的分析->表达式
即可生成表达式界面(此处打开为默认)
删除默认值,将AsBs*!Fs+!As!Bs*Fs**输入并创建电路即可生成溢出检测电路
电路创建完成后保存到合适位置以便后续使用
保存成功后也可以试着运行一下检验电路是否成功正常情况下包没有问题
接着在原有电路的基础上新建子电路,通过文件->新建子电路
不难发现,在新建的子电路中选择组件会出现一个自定义选项,这就是刚才创建的overflow溢出检测电路,这里似乎把它压缩成一个电路芯片不是似乎,就是电路芯片,要你说?
点击之后这个电路芯片就成为一个功能组件了鼠标左键放置右键删除不会有人不会吧
到这里,溢出检测电路的创建以及使用方法可以说是结束了,下面进入加减运算电路的生成。
2.加法器
紧接着在工具栏中选择组件->运算器->加法器,添加到电路的合适位置,并将数据位数设为4
3.异或门
本电路使用了一个4位的异或门,因为X、Y是4位的,用一个4位的异或门更便于画图
4.探测器
同样在工具栏中选择组件->输入输出->探测器,添加到电路合适位置,用于方便观察异或门输出的数据,并将探测器标签设为B
5.符号扩展器
在工具栏中选择组件->运算器->符号扩展器,右键将输入位宽设为1,输出位宽设为4
6.分裂器
在工具栏中选择组件->导线->分裂器/合并器,放置到电路合适位置,同时右键选中,将输入分割设置为4,输出分割设置为3-3,并旋转270°保持输入在上输出在下的状态,重复三次
三、效果展示
补充输入输入输出组件同时修改标签值,并按照电路图有序连接,最后启动仿真确定电路图连接成功
不要忘记把电路保存到合适位置方便使用,接着在加减运算电路图的基础上新建子电路,因为后续的算术逻辑单元实验要用到加减运算电路生成的加减运算器功能组件。
第二部分:算术逻辑单元实验
本电路设计的是一个可以实现加减运算和逻辑运算的的算术逻辑单元(ALU,Arithmetic Logic Unit),在加减运算电路的基础上,增加了与(AND)、或(OR)、异或(XOR)逻辑运算的功能。
一、整体电路图展示
二、局部功能组件的实现
1.逻辑组件
为了能够实现算术逻辑单元的与、或、异或功能,需要在该电路中添加与之功能相对应的各种逻辑组件。
其次,需要添加一个或非门,并右键选中将其输入端口数设为4,数据位数设为1,并将其输出端与输出组件Z相连接
2.四选一多路选择器
在新建子电路下,组件中可自定义已经创建好的功能电路芯片,这里直接选用即可
接着找到复用器,通过工具栏中的组件->复用器->复用器并放到电路合适位置,并右键选中将选择位设为2,数据位数设为4,并将其四个输入端分别接入加减运算器、与门、或门和异或门的输出端
3.分裂器的修改
复用器选择端口的分裂器
设置第一个分裂器的输入分割为1,1-1;输出分割为2,将其两个输入端分别与S0、S1连接,其输出端与四选一多路选择器的Sel选择端连接
输出端口的分裂器
设置第二个分裂器的输入分割为4,输出分割为3-3,输入端连接在复用器输出端与输出组件F的线路上,其输出端与输出组件S相连接
或非门输入端的分裂器
设置第三个分裂器的输入分割为4,输出分割为0-0,1-1,2-2,3-3,将其输入端连接在复用器输出端与输出组件F的线路上,其四个输出端分别与或非门的四个输入端相连接
4.测试组件
为了避免在测试电路时手动传入数据的不方便所造成的影响,可以通过选择组件->其他->测试用例组件通过添加测试用例来实现对电路的快捷检测
三、效果展示
补充输入输入输出组件同时修改标签值,并按照电路图有序连接,最后启动仿真确定电路图连接成功,其中S、Z、O、C分别表示符号标志、零标志、溢出标志、进位标志
版权归原作者 喜欢躺平划水摸鱼的摆烂猫 所有, 如有侵权,请联系我们删除。