本实验来源于西工大网安学院计算机组成原理课程的第一次实验任务,具体内容为搭建电路并实现各种运算功能。电路图如下:

然而,搭建这个复杂的电路需要耗费大量的时间,即使你搭出了这个电路,你也不一定会用(别问我怎么知道的),所以今天我们来讲讲这个电路到底该如何使用可以完成实验任务。
以下是我搭的电路(原电路链接已上传,如有问题请私信):
链接: https://pan.baidu.com/s/1eZHIVlw1-NeNs9PYLgw11A?pwd=3131
提取码: 3131

下面的两个显示器是我自己加的,防止我输错数据。
观察此电路,有三个地方含有开关或选择开关原件,注意观察选择开关的颜色,红色为高电平,记为1,蓝色为低电平,记为0.

上面这四个开关在实验中没有变化,全置为高电平即可。

上面的开关起到一个输入数据的作用,开关的ON和OFF分别代表了0和1,前四个开关对应第一位,后四个开关对应第二位。
示例:0x85和0x55:

知道了这些之后,我们在来看最复杂的13个选择开关:


ALU_S0~S3对应了真值表中的S0~S3,ALU_CN对应了真值表中的CN位,ALU_M对应了真值表中的M;S0和S1在实验中置为高电平即可,我也没搞懂它俩存在的意义;SW_BUS是总线开关,SW_BUS=0时,NOT(SW_BUS)=1,总线正常工作,数据才能输入进去;DRA_CLK和DRB_CLK是缓存器DRA和DRB的开关,它们可以将输入的数据(A和B)存进去;ALU_EN是让运算器输出结果的开关,当ALU_EN=1时,运算的结果才能输出到总线上(划重点,后面很重要);ALU_BUS可以把它理解为输出端的开关,打开它上面才会显示出运算的结果。
知道了以上内容,就可以开始实验了。
接下来我会以算术运算的A加B为例进行实验步骤的演示:
首先,将SW_BUS置为低电平,以便于数据的输入:

接着,向缓存器中输入数据A,先在下面拨出你想要的数据A,然后拨动DRA_CLK至低电平,看到转换指示器变蓝后再将其拨至高电平,这样数据A就放了进去。

数据B与A同理,在下面拨出你想要的数据B,然后拨动DRB_CLK至低电平,看到转换指示器变蓝后再将其拨至高电平,这样数据B就放了进去。(注意不要动其它的开关)

输入数据完成后,将SW_BUS调回高电平,根据你想要的计算方式按照真值表调整ALU_S3~S0,ALU_CN和ALU_M。

下一步,将ALU_EN拨至低电平,将结果输出,再将ALU_BUS拨至低电平(注意二者顺序不可颠倒,不然输出结果为FF),可观察到结果和SF/ZF/CF。验算0x85加0x55,结果为0xDA,结果正确。

特别地,当CN=0(即ALU_CN拨至低电平时),结果为上一个的结果+1:

最后,关闭ALU_BUS和ALU_EN,重新调整ALU_S3~S0,ALU_CN和ALU_M,重复操作得到每一个的结果。
如果以上内容对你的学习和课业有帮助,本人不胜荣幸;如果我的文章有任何问题,欢迎指出。

12万+

被折叠的 条评论
为什么被折叠?



