作者:Giovanni Di Maria, 来源:EDN姊妹网站EEWeb
上一篇文章(《数电中的逻辑门》)探讨了逻辑门的概念。它们可以由分立和有源电子元件制成,尽管今天逻辑门可以在集成电路中使用。然而,在本文中,将研究其他逻辑门。通过适当地组合多个逻辑门,可以构建具有更重要功能的复合逻辑系统。
1. 逻辑门的组合
正如我们在上一篇文章中看到的,单独使用的单个逻辑门执行非常简单的任务。但是复杂系统和解决方案的创建意味着使用更复杂的逻辑网络,由许多适当连接在一起的逻辑门组成。它们可以由多个输入和输出组成,并通过组合简单的逻辑门制成。在接下来的文章中,将详细探讨这些方面,我们将探讨由许多逻辑门相互适当连接在一起组成的更复杂的电子方案。
2. “NAND”门和“NOR”门
图1显示了本文将研究的三个门。当“与”门与“非”门一起使用,或是“或”门与“非”门一起使用时,我们分别得到“与非”门(“NAND”门)和“或非”门(“NOR”门)。在这些门中,输出值是相反的;事实上,开头的“N”准确地说是否定(Not AND)。门输出端的小圆圈表示逻辑信号的反转功能。该门还可以提供两个以上的输入。为了在输出端获得逻辑电平0,所有输入都必须采用逻辑电平1。与非门用于在电子设备中进行数字存储。描述与非门的逻辑命题如下:
Y=NOT(A AND B)
与非门是通用的,因为它们可用于实现任何其他逻辑功能。事实上,仅使用与非门,就可以构建所有其他逻辑门。这使得它们在电子数字电路设计中非常有用。这方面将在以后的文章中更详细地讨论。或非门是一种实现布尔或非(NOT-OR)功能的数字逻辑门。一个或非门通常有两个输入,用字母A和B表示,一个输出用字母Y表示。它的逻辑命题如下:
Y=NOT(A OR B)
或非门也是通用的,也就是说,它们可以用来实现任何其他逻辑功能。事实上,仅使用或非门,就可以构建所有其他逻辑门。或非和与非是最有趣的两个门,因为可以用它们创建电路来表示任何其他类型的逻辑门。它们比与和或门更灵活,因为它们也可以转换为反相器。这些功能将在未来进行探索。
图1:NAND、NOR和XOR门
图2显示了使用两个晶体管和一个LED二极管的与非门的等效图。它和与门非常相似。如果两个开关断开或者只有其中一个打开(0-0、0-1、1-0),电流不会流过晶体管,二极管阳极的集电极电位很高,允许被点亮。另一方面,当两个开关闭合(1-1)时,两个晶体管处于饱和状态,集电极电压设置为0V。在这种情况下,LED二极管保持关闭状态。值得注意的是,无论门的逻辑状态如何,电路的功耗始终相同,并且电阻R1始终流过最大可用电流。
图2:由两个晶体管构成的与非逻辑门
图3显示了NOR端口的等效图,使用两个晶体管和一个LED二极管。同样,该图与“或”门的图非常相似。可以只使用一个晶体管来构建或非门。如果两个开关断开(0-0),则电流不会流过晶体管,LED二极管阳极的集电极电位很高,从而可以点亮。另一方面,当两个开关中的至少一个打开时(0-1、1-0、1-1),集电极电压为0V,LED二极管保持关闭状态。
图3:由两个晶体管构成的或非逻辑门
3. 异或门
XOR(异或)逻辑门是一种数字逻辑门,只有当输入不同时才返回高逻辑值(1),否则返回低逻辑值(0)。如果输入相同(1-1或0-0),则门返回假值(0)。换句话说,仅当两个输入之一等于1但不是两个都等于时,它才返回布尔值1作为输出。其逻辑命题如下:
Y=A XOR B
异或门广泛用于数字电路中,用于执行比较运算、创建二进制加法电路以及数据奇偶校验。和“或”门不同,如果两个输入信号都等于1,则异或门返回值0,而或门返回值1。
4. 晶体管逻辑门平均消耗多少?
图4中的表格显示了与逻辑门相关的平均电路消耗,是有两个输入的逻辑状态的函数。此表有助于理解低逻辑电平结果不一定对应于低功耗。电子电路在产生低逻辑电平的同时,通常会消耗大量电流,因为电流会使晶体管上拉或下拉电阻饱和。因此,如果电路的功耗很高,即使它导致逻辑电平较低,也不足为奇。从这个意义上说,最线性的操作可能正是由与逻辑门和或逻辑门决定的,其中高逻辑电平对应于电路的高功耗,低逻辑电平对应于低功耗。
图4:用晶体管制成的逻辑门的平均功耗
5. 使用C语言试验逻辑门
虽然逻辑门的真值表非常简单,但有时设计者可能会忘记一些东西。任何编程语言都可以帮助实施和试验它们,因为它们基于完全使用数字逻辑工作的数字系统(CPU)。使用C语言,或者一般来说,任何编程语言,都可以通过布尔表达式和逻辑运算符的实现来试验逻辑门。下面的简单列表,建议您好好研究和理解,它显示了输入(A,B)的所有可能组合,并显示了相关门的逻辑输出。
C语言的逻辑运算符如下:
否定运算符:!
与运算符:&&
或运算符:||
异或运算符:^
该程序使用了一个不太常见的特性,即它实现了“bool”类型。它是C语言中表示布尔值的一种数据类型。布尔值可以是true或false。bool类型主要用于处理程序中的逻辑和条件表达式。bool类型是在C99标准中引入的,定义在标准库stdbool.h中。该库还包含true和false常量,它们代表了相应的布尔值。bool类型只使用一位内存,因此可以认为它是一种双状态数据类型。真值表示为非零值(通常为1),而假值表示为零。此外,布尔表达式可以根据其逻辑真值被评估为真值或假值。图5显示了C语言中程序执行的结果。
图5:C语言程序执行显示与、或、与非、或非、异或门的所有输出值
6. 结论
文章中观察到的逻辑门也是基本的,并用于许多数字电路中。与非门和或非门可以用来实现与、或、非等逻辑功能,从而降低电路的成本和复杂度。它们还具有抗电噪声的能力,这意味着即使存在干扰,它们也能产生可靠的结果。了解与非和或非逻辑门对于复杂数字电路的设计和实现至关重要。了解这些逻辑门的属性和特性可以帮助工程师创建更高效、可靠和低成本的电路。
参考原文:Digital Electronics Course – Part 6: The other logic gates,由Ricardo Xie编译。
本文转载自:EDN电子技术设计