您当前的位置:首页 > 养生 > 内容

请用与非门实现与门,或门和非门(使用与非门或或非门实现非门的案例解析)

请用与非门实现与门,或门和非门(使用与非门或或非门实现非门的案例解析)

本文分为三个部分,解读EDN姊妹媒体EEWeb论坛上一位学生提出的一个问题。其核心如下:他的老师布置了一个布尔方程;然后让他创建相应的真值表;然后告诉他简化卡诺图;最后,他必须只用与非门或或非门来实现这个电路。

所以,首先要考虑的是,为什么一开始会提出这个问题。下一步是研究这个学生更详细地描述具体问题,并将其转化为初步的和/或解决方案。然后,考虑将AND-OR电路转换为NAND-OR电路的一般概念。最后,是用你所学的知识来解决学生的初始问题。

为什么只用与非门或或非门?

那么,为什么老师要求学生只用与非门或只用或非门来实现逻辑函数呢?(请注意,我特意没有不要说只使用与非门或或非门,因为可以理解,可以使用与非门和或非门来代替与门和或门。)

尽管学生们可能会对此感到惊讶,但这并不奇怪。不一定意味着老师是一个不成功的人。他生活中唯一的乐趣就是折磨学生。说到这里,回想起我自己的学生时代,我们我们最好不要排除这个可能的动机。

我可以我不禁会想,老师给学生布置这项作业可能有以下原因:

1.给出一个用与门或或门(乘积和或和的乘积形式)描述的电路,然后让学生用仅用与非门、仅用或非门或与非门和或非门的组合转换成另一种表达式。这是确保学生理解各种逻辑门如何工作的好方法。这也有助于确保学生了解德摩根变换等等。

2.如果您想使用简单的逻辑器件——设计印刷电路板(PCB),例如双列直插式(DIL)封装集成电路(IC)——,其中包含六个与非门或四个2输入与门、或门、与非门或或非门,您可能没有任何类似与门的器件,但您碰巧有一个与非门和一个非门作为备用(或者可能有一个或门和三个非门)。

3.最简单的逻辑门不是门。假设一个CMOS电路,一个非门需要两个晶体管。与非门和或非门更复杂。这两个门各包含四个晶体管。然后是与门和或门,每个门包含六个晶体管。也就是说,如果用与非门或或非门代替与门或或门,所用的晶体管数量可以减少三分之一。

4.关于上面这一点,与门其实是由与非门后接非门组成的(同理,或门是由或非门后接非门组成的)。除了使用4 ^ 2=6个晶体管外,还表明与门(AND OR门)有两级延迟。所以,如果可以用与非门代替与门(也可以用或非门代替或门),得到的电路运行速度会更快。

5.顺便说一下,本文中讨论的所有内容在我的书布尔布吉舞的bebop

其实现在很少有人做门级的设计了。而是用高层抽象来捕获设计,然后用逻辑综合引擎生成相应的门级等效设计。这说明上面的2到4点已经没有以前那么重要了。

你可以争辩说第一点也是如此,但我不同意。我不太同意。我的想法是,类似于用计算器计算的概念。如果你有一个计算器,那么你不实际上不需要知道整数、实数和浮点数的加减乘除。但是,如果你掌握了这类知识,那么你的计算器在电池没电的时候就能派上用场了。同样的,虽然你可能不用每天和布尔结构打交道,但是在需要的时候知道怎么处理还是很方便的。

思考问题

所以,这里这是那个学生给我的。他说,首先,老师向全班展示了下面的等式:

这位学生还告诉我,他曾用这个方程生成了下面的真值表,但从那时起,他就陷入了困境,无法我再也不干了。

嗯,我得告诉他我我对他遇到的问题并不感到意外,因为他的方程中有六个乘积项,每个乘积项在他的真值表的输出列中都应该有对应的1,但实际上他的真值表的输出列中只有五个1。

我反复考虑过这种情况,我觉得潜在的问题是他对基本原理的不了解。另一件事是,如果一个学生感到困惑,很可能他不是唯一的一个。但最后一点,我记得我一开始有点迷茫,所以我会花一点时间来一步步解决这个问题(如果你觉得无聊,请随意跳过;或者,你可以随时试着找出我可能引入的任何有意的错误,从而知道你是否在集中注意力)。

我要做的第一件事是给等式中的产品项编号,这样我们就可以跟踪我们在哪里,我们做了什么(如果我们是认真的,那么我们就不不必费心给产品术语编号):

下一步是创建真值表。可以从所有用标准二进制数表示的输入组合开始,如下图(a)所示;然后把六个乘积项对应的六个1加起来,如(b)到(g)所示;最后,填写剩余的输出位置用0,如下图(h)所示。

这里要注意的重要一点是,把一个方程转换成真值表一点也不难。说了这么多,不管是谁做的,都要明白这个过程背后的基本逻辑。再看看这个等式。它的本质可以表述如下:如果第一个乘积项(第一个AND函数)为真,则输出为真(逻辑1),或者第二个乘积项为真,或者第三个乘积项为真…)。那这就是为什么您只需在对应于每个产品术语的输出列中填入1——。如果这些乘积项中的任何一项为真,则输出为真(1),否则输出为假(0)。

下一步是创建卡诺图。首先是创建网格本身。由于总共有三个输入,因此可以使用两种方法(方案)来完成此步骤,如下所示:

这不你选择哪一个方案并不重要。两种情况答案都是一样的(如果不是,确实有问题)。这里,使用方案1,这是我更喜欢的。如果有同学正在看这篇文章,我建议你在完成这一步后,从这里开始,用卡诺图方案2自己重做一遍,这样才能保证你真正理解这个过程。

查看卡诺图方案1,观察AB 。右边是与AB输入相关的四个0和1的组合:00 ,01 ,11 和10 。需要注意的是,这四种组合是以格雷码的形式排列的,这样当我们从一个值移动到相邻的值时,只有一位会发生变化。这是卡诺图操作的关键。

在二进制代码中,当从01转换到10时,两个位会发生变化。相比之下,如果观察格雷码(01至11)中的相应转换,只有一位发生变化。

另外,请注意二进制代码的最后一行。如果你想从这一行过渡到第一行(11到00),那么两个数字会再次改变。但是,如果您查看格雷码中相应的行(10到00),您会再次看到只有一位发生了变化。

好,现在让让我们填写卡诺图。这一步是在对应于等式中乘积项的每个框中填入1。这里,再一步一步地按照下面的步骤(圆圈中的小数字1到6对应于初始方程中的乘积项):

这里要注意的另一点是,卡诺图可以不用真值表来填充。我们要做的就是一个接一个地遵循这个等式,在相应的卡诺图中填入方框对于每个产品术语。

下一步是使用卡诺图来简化逻辑表达式。从上面最终的卡诺图(F)可以立即看出,它可以简化为三项。像往常一样,我们一遍又一遍地完成每一步。

查看下图中用红色圈出的两个1,我们知道这两种情况下的输出都是1。对于这两个框中的每一个,都有A=0和C=1,所以这两个值很重要。但是,这两个盒子一个是B=0,一个是B=1。也就是说,只要A=0,C=1,那么我们就不我不在乎B是0还是1。

接下来,看看下图中用红色圈出的第二组两个1。对于这两个框中的每一个,都有A=1和C=0,所以这两个值很重要。但是,这两个盒子一个是B=0,一个是B=1。也就是说,只要A=1,C=0,那么我们就不我不在乎B是0还是1。

但最后但同样重要的是,让让我们看看下图中用红色圈出的一组四个1(卡诺图之一的诀窍是,你可以使用相同的1作为多个组的一部分)。

在这种情况下,这四个盒子中的两个是A=0,另外两个盒子是A=1,这意味着我们不我不在乎A是0还是1。同样,这四个盒子中的两个是C=0,另外两个是C=1,所以我们不我不在乎C是0还是1。实际上,对于所有四个框,唯一的常量输入是B,它总是1。

这样就可以用卡诺图最简单的表达式写出最优化的积和方程,如下所示:

因此,使用非门、与门和或门可以很容易地画出相应的门级原理图,如下所示:

在这一点上,我知道你会告诉我,我们没有不要用它!b信号(使用!"这里)字符来表示非B,因为在文本中的一个字母上画一条横线有点困难),但是我们在不久的将来会用到它。说到这里,未来比你想象的更近。这是我们必须考虑的重点,因为讨厌的老师布置作业只用与非门或或非门来展示最终电路。

用与非门或或非门实现非门。

让让我们从简单的开始,先解决这个例子中的三个非门。让我们首先回忆一下五种常见基本门的真值表如下:

也就是说,如果与非门的输入连接在一起,产生的功能就是与非门。如果NOR门的输入连在一起,结果是一样的。也就是说,以下功能是相同的:

德摩根变换是在与门、或门、与非门和或非门上进行的。

奥古斯都德摩根(1806-1871)是乔治布尔的贵族。他在符号逻辑领域做出了巨大贡献,尤其是我们现在使用的一套规则——德摩根变换。

为了对布尔表达式执行德摩根变换,需要以下步骤:

1.用OR运算符替换所有AND运算符,反之亦然。

2.反转所有输入变量,或将任何0改为1,反之亦然。

3.反转整个函数。

4.减少任何多次反转。

一般来说,我们倾向于对多项式进行德摩根变换,但也可以对单个门进行变换,这样可以得到以下结论:

我不我不认识你,所以我不能我无法解释它,但在检查了上面的德摩根变换后,我感到非常满意,觉得在(逻辑)世界中一切都是对的。

只有与非门被用来表示电路。

说实话,现在我们已经打好了基础,这部分就很容易了。让让我们回想一下用非门、与门和或门实现的电路是什么样的:

我给它们标上了颜色,这样我们就能清楚地知道我们在做什么。让让我们做个决定吧。我们只想用与非门。所以,利用上面讨论的所有内容,你可以用与非门代替非门、或门和与门。

像往常一样,我们一步一步来。首先,从左边用粉红色表示的三个非门开始。我们知道这三个门的每一个都可以用一个2输入的与非门代替(它们的输入捆绑在一起),所以这里没有问题。

接下来,研究电路右侧绿色表示的3输入OR门。根据德摩根变换,我们知道它可以用一个3输入的与非门代替(它的输入有一个非门),如下图。

当然,这三个“非”门中的每一个都可以用一个2输入“与非”门代替,如下所示:

因此,现在我们只需要考虑电路中间蓝色的两个与门。当然,德摩根转型可以这里帮不上忙,因为AND门的等效电路是用NOT门把NOR门的所有输入相加,但是这个赋值不不允许我们使用或非门。

有时候,我们倾向于把事情弄得比需要的更复杂。在这种情况下,你要做的就是记住,与门实际上是由与非门后接非门构成的(同理,或门由或非门后接非门构成)。也就是说,与门可以替换如下:

当然,由于运算只需要与非门,与非门必须用其等效的2输入与非门代替,如下所示:

现在,一切都好了。因此,如果将上述所有变换结合起来,仅使用与非门的实现如下:

虽然上面的电路可以执行所需的功能,但是这里浪费了几个门,因为如下图红框所示,有两个地方既没有门连接也没有门(当然都是与非门实现的):

每当偶数个反演以非函数形式出现时,可以用一条简单的线来代替它们。因此,稍加修改,就可以得到如下所示的最终电路:

如果与非门、与非门和或非门分别等于第一延迟,与门和或门分别等于两个延迟,那么在与非门、与门和或门的初始实现中,最差情况的输入输出路径等于1.22=5个延迟。相比之下,仅使用与非门的优化实现将仅具有1 1 1=3级的最大延迟。

同样,如果任何学生正在阅读本文,只是为了确保您100%掌握以上所有内容,建议您基于以上讨论创建一个仅使用NOR门的实现。同时,欢迎任何评论和问题,更有经验的读者愿意分享任何相关的提示和技巧。hfy

标签:门与非门学生


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 雷克萨斯es300h混动多少钱(雷克萨斯es300h属于什么档次雷克萨斯es300h值不值得购买)

下一篇: 详解电路的串联方式是什么(详解电路的串联方式)



推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号