使用 2 个 4:2:1 MUX 以及常数 0 和 1 构建全加器
计算机结构中的一个问题,
使用 2 个 4:2:1 MUX 和常量 0 和 1 构建全加器。使用最少量的常量。
显然这个问题也可以使用非门来解决,但我对没有门的问题感兴趣。
A question in computer structures,
Build a full adder using 2 4:2:1 MUXes and the constants 0 and 1. Use minimum amount of constants.
Obviously this question is solvable using not gates too, but I am interested in the question without them.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您的意思是四输入多路复用器,您可以执行以下操作(添加
a
、b
和c
):我不知道如何无需其他门即可获得
sum
。一种选择是(使用“与”和“或”):使用“异或”(可能很明显):
以下是为什么不能使用两个多路复用器执行此操作的概述:
由于您有两个多路复用器和两个输出,因此每个多路复用器必须产生一个输出;因此,您需要从
carry
计算sum
或从sum
计算carry
。如果没有非门,您无法仅使用三个输入来计算sum
,因此您需要首先计算carry
。你可以这样做;那么您需要从输入中获取sum
并carry
。由于输入是对称的,sum
的多路复用器可以将其控件设置为两个输入或一个输入和进位
。第一种情况失败的原因与您无法首先计算sum
的原因相同。查看真值表以及carry
和一个输入(称为a
)的所有可能组合,无法唯一地计算sum
carry
和a
相同,仅使用一个变量或常量作为sum
多路复用器的每个数据输入的输入。If you mean a four-input mux, you can do (to add
a
,b
, andc
):I'm not sure how to get
sum
without some other gate. One option is (with AND and OR):With XOR (probably obvious):
Here's a sketch of why you can't do it with two muxes:
Since you have two muxes and two outputs, each mux must produce one output; thus, you need to compute
sum
fromcarry
or computecarry
fromsum
. You can't computesum
with just the three inputs without a NOT gate, and so you need to computecarry
first. You can do that; then you need to getsum
from the inputs andcarry
. Since the inputs are symmetric, the mux forsum
can have its controls be either two inputs or one input andcarry
. The first case fails for the same reason that you can't computesum
first. Looking at the truth table and all possible combinations ofcarry
and one input (call ita
), there is no way to computesum
uniquely for the case wherecarry
anda
are the same using only one variable or constant as the input to each data input of thesum
mux.我只是编写了一个简单的 C# 小程序来检查每种可能的输入组合,但未能找到解决方案。所以,除非我犯了某种程序错误,否则这个问题没有解决办法。
I just wrote a simple little C# program to check every possible input combination, and it fails to find a solution. So, unless I made some kind of program error, there is no solution to this problem.
通过采用
A
作为两个 2*1 多路复用器的选择线,我们在输入编号 0B XOR Cin
的第一个多路复用器中拥有输入编号 1B XNOR 的输入Cin
->这个多路复用器用于S
在输入编号 0 的第二个多路复用器中,我们有
B AND Cin
在输入编号 1 中,我们有B OR Cin
->这对于
Cout
。By taking
A
, as the selection line to two 2*1 muxs we have in the first mux in input number 0B XOR Cin
in input number 1B XNOR Cin
-> this mux forS
in the second mux in input number 0 we have
B AND Cin
in input number 1 we haveB OR Cin
-> this for
Cout
.VB中的全加器
A Full adder in VB