首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅使用NAND而不使用门构建电路

仅使用NAND而不使用门构建电路
EN

Stack Overflow用户
提问于 2016-10-07 23:58:46
回答 2查看 278关注 0票数 1

在图像中,上面的电路是产品的总和

=(B‘+D’) (A+D) (A+C)

而下图是我尝试使用NAND而不是只使用gates。然而,我的感官告诉我,我做错了。请帮帮我!

EN

回答 2

Stack Overflow用户

发布于 2016-10-08 00:02:48

您可以将所有AND门替换为NAND门,然后取消结果。我可以看到您否定了输入,这是错误的,因为:

代码语言:javascript
复制
(ab)'  !=  a'b'

例如,考虑信号(a,b) = (1,0)。如果对它们求反并计算输出,则得到0。如果先计算输出,然后取反输出,则得到1。

关于OR门:

代码语言:javascript
复制
a + b + c  ->  ((a + b + c)')'  ->  (a'b'c')'

所以OR门是与非门,所有的信号都是否定的。

票数 0
EN

Stack Overflow用户

发布于 2016-10-08 01:06:49

第一个电路实际实现了

AD + AC + B'D' http://latex.codecogs.com/gif.download?AD%20+%20AC%20+%20%5Cbar%7BB%7D%5Cbar%7BD%7D

这就是这个电路:

使用De Morgan's Laws,这相当于

((AD)'(AC)'(B'D')')' http://latex.codecogs.com/gif.download?%5Coverline%7B%5Coverline%7BAD%7D%5Ccdot%5Coverline%7BAC%7D%5Ccdot%5Coverline%7B%5Cbar%7BB%7D%5Cbar%7BD%7D%7D%7D

这就是这个电路:

此Python程序可用于比较电路:

代码语言:javascript
复制
import itertools
# Create all the possible input combinations
x = (True, False)
comb = set(itertools.product(x, x, x, x))
# AD + AC + B'D'
def c1(a, b, c, d):
    return ((a and d) or (a and c) or ((not b) and (not d)))
# ((AD)'(AC)'(B'D')')'
def c2(a, b, c, d):
    return not ((not (a and d)) and (not (a and c)) and (not ((not b) and (not d))))
# For each input combination, verify that the results are the same
for x in comb:
    r1 = c1(*x)
    r2 = c2(*x)
    if r1 != r2:
        print "Error: Input %s produced %s != %s" % (x, r1, r2)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39921424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档