用Logisim完成swap电路并提交
现在需要你使用基础的门电路搭建这样一个电路,当输入S=0时,输出的O1等于输入的I1,输出的O2等于输入的I2。当输入S=1时,则交换两输出,即输出的O2等于输入的I1,输出的O1等于输入的I2。我们给它取名叫做swap电路。
使用Logisim搭建一个swap并在下方提交。
-
文件内模块名: swap
-
输入: I1(1bit), I2(1bit), S(1bit)
-
输出: O1(1bit), O2(1bit)
-
注意:请从门级电路开始搭建,切勿使用Plexers类元件。
-
测试电路图(我们将使用下方的电路对你搭建的电路进行测试,测试的原理是将下图的swap模块替换为你提交文件中的swap模块,随后测试机会仿真运行下图中的电路图,记录其输出并与正确的输出进行对比)
: -
注意:请保证模块的appearance与下图完全一致,否则有可能造成评测错误
-
-
方法一:自动生成电路
-
1.选择分析电路
-
-
2.做好输入输出(注意顺序)
-
-
3.由于输入输出不多且关系清楚,直接选择真值表生成电路
-
-
就写一下真值表
-
-
之后就完事了
-
-
方法二:逻辑分析
- 1.首先对电路进行分析,若只看s和l1或者l2则与或门都是可行的,(这里如果是或门对输出进行控制的话,s就没有作用了)但是考虑到交换电路的问题,因此则采用与和非门相结合的方式
- 接下来再实现交换电路的部分,但是在这里发现,我s只用一个非门对两路控制是无法满足后面的条件的,且一旦s为1,则输入与s非后的与运算后一定为0,因此发现s让两个电路交换需要进行更复杂运算,单单一个非是不足够控制的
- 于是之后打算拆开,分解问题来看,首先对l1,l2,s和o2单独分析,在进行多次与非尝试后,发现s的非不能同时对两个输入同时进行与运算,否则,无法进行交换的效果
- 同样的根据逻辑电路图进行复制,对o1进行同样的操作
- 总结:实际上进行交换的原理,是非门和与门的共同选择作用,由或门来进行过滤。
- 以单单o2来看,则是通过非s使得其中一个与门,也即其中一个输入的作用以0而忽略,通过或门由另一运算来决定。