
《计算机是如何工作的人人都能懂的计算机软硬件工作原理》第 4 章 数字电路 阅读笔记 4第 4 章 数字电路到目前为止我们已经介绍了计算机的两个方面。首先计算机在 0/1 二进制系统中工作。其次计算机是建立在电路上的电子设备。现在是时候把这两个方面结合起来了。本章将定义数字电路的含义。我们将研究实现数字电路的方法探讨晶体管在其中所扮演的角色。最后我们将研究逻辑门和集成电路它们是我们将在后面章节介绍的更复杂组件的基础模块。4.1 什么是数字电路你可能已经注意到我们在第 3 章搭建的电路不是数字电路—它们是模拟电路。在这些电路中电压、电流和电阻的值可以在很大范围内变化。这并不奇怪我们的世界本身就是模拟世界不过计算机是在数字领域中工作的要理解计算机就需要了解数字电路。如果我们想让电路是数字的首先必须在电子学的背景下定义其含义这样我们就可以利用模拟组件来搭建数字电路。数字电路处理表示有限状态的信号。本书涉及的是二进制数字电路所以只考虑 0 和 1 两种状态。我们一般用电压来表示数字电路中的 0 或 1其中 0 表示低电压1 表示高电压。通常“低电压” 意味着 0 V“高电压” 往往是 5 V、3.3 V 或 1.8 V具体值取决于电路的设计。实际上数字电路不需要精确的电压来记录 1 或 0相反常常是用某电压范围来记录 1 或 0。例如在标称 5 V 的数字电路中25 V 之间的任何电压都被记录为 100.8 V 之间的任何电压都被视为 0。任何其他电压等级都会导致电路的未定义行为应该避免。一般接地是数字电路中的最低电压电路中所有其他的电压相对于接地而言都是正的。如果数字电路由电池供电我们就认为电池的负极是接地的。其他类型的 DC 电源也是这样的负极被认为是接地的。当说到数字电路中的 0 和 1 时会出现大量的术语和缩写它们表示的意思都是一样的。这些术语常常可以互换使用。下面是一些常见的表示 0和 1 的术语0低电压、低电平、LO、关、接地、GND、假1高电压、高电平、HI、开、V、真。4.2 用机械开关实现逻辑运算现在我们已经确定了用高电压和低电压表示数字电路中的 1 和 0接下来就考虑如何构建一个数字电路。我们想要一个电路其输入和输出电压始终是预定的高值或低值或者至少在允许范围之内。为了完成这个任务我们引入一个非常简单和熟悉的电路元件机械开关。开关很有用因为它本质上就是数字化的。它要么闭合要么断开。当开关闭合时它就像一根单纯的铜线电流可以自由通过。当开关断开时它就像一个开路没有电流通过。我们用图 4-1 所示的符号表示开关。图 4-1 开关的电路图符号——断开左闭合右开关符号传递了这样一个想法即当开关断开时是开路当开关闭合时是闭合电路。你可以把开关符号或开关本身看成可以打开或关闭的栅栏门。当开关闭合时电流流经开关。在真实世界中开关有各种形状和大小如图 4-2 所示。图 4-2 一些开关注意图 4-2离我们最近的两个开关是按钮你可能不会把它们当作开关。按钮也称为瞬时开关因为只有在按下按钮的时候开关才会闭合。释放按钮上的压力开关就会断开。现在我们已经引入了一个容易打开和关闭的电路元件就让我们用开关来构建一个数字电路使其行为类似于 AND 运算符。如果你还记得第 2 章的内容的话那么就会知道仅当两个输入都为 1 时逻辑 AND 的输出才为 1否则输出都为 0。提醒一下表 4-1 重复给出了 AND 的真值表。表 4-1 AND 真值表AB输出000010100111现在我们按照下面的规则把它转换成电路输入 A 和 B 用机械开关表示。用打开的开关表示 0用关闭的开关表示 1。输出由电路中特定点的电压决定称为 Vout。如果 Vout 近似为 5 V输出就是 1如果 Vout 近似为 0 V输出就是 0。考虑图 4-3 所示的电路这是用开关实现的逻辑 AND。只要图 4-3 中的任何一个开关是断开的 (0)就没有电流流动Vout 为 0 V。只要两个开关都是闭合的 (1)就能形成一条接地的路径电流流动Vout 为 5 V。也就是说如果 A 和 B 都是1那么输出就为 1。图 4-3 用开关实现的逻辑 AND让我们对逻辑 OR 采用同样的方法。OR 的真值表如表 4-2 所示。看一下图 4-4 中的电路这是用开关实现的逻辑 OR。表 4-2 OR 真值表AB输出000011101111图 4-4 用开关实现的逻辑 OR在图 4-4 中当两个开关都断开 (0) 时没有电流经过Vout 为 0 V即逻辑 0。当任何一个开关闭合 (1) 时就会有电流经过Vout 为 5 V。也就是说如果 A 或 B 是 1那么输出就是 1。4.3 神奇的晶体管在我们设计数字电路的任务中刚才讨论的基于开关的电路是一个很好的起点。但是在计算机设备中我们实际上不能使用机械开关。计算机的输入数量巨大通过切换开关来控制这些输入不是很好的设计。此外计算机设备需要把多个逻辑电路连接到一起使一个电路的输出成为另一个电路的输入。要实现这一点开关需要电气控制而不是机械控制。我们不想要机械开关想要电子开关。幸运的是有个电路元件可以当作电子开关晶体管晶体管是一种控制电流通断开关功能或放大电流的器件。在这里我们重点关注晶体管的开关功能。晶体管是现代电子产品包括计算机设备的基础。晶体管主要有两种类型双极结晶体管 (Bipolar Junction TransistorBJT) 和场效应晶体管(Field-Effect TransistorFET)。这两种类型的差异与我们这里的讨论无关为了简单起见我们只关注一种类型BJT。BJT 有三个端子基极、集电极和发射极。BJT 有两种类型NPN 和 PNP。两者的差异在于它们对基极电流应用的响应方式。在这里我们关注的是 NPN BJT。图 4-5 给出了 NPN 晶体管的电路图符号和照片。在 NPN 晶体管中在基极施加小电流可使更大的电流从集电极流向发射极。换句话说如果我们把晶体管当作开关那么在基极施加电流就像打开晶体管一样而移除电流就像关闭晶体管。让我们看看晶体管怎样用作电子开关如图 4-6 所示。图 4-5 NPN 晶体管的电路图符号左和照片右图 4-6 用作开关的 NPN 晶体管在图 4-6 中NPN 晶体管连接了一对电阻。Vcc 是施加到集电极的正电源电压。它为电路供电。Vcc中的 “cc” 代表 “公共集电极” (common collector)Vcc 是 NPN 电路中正电源电压的典型名称。Vout 是我们想要控制的电压我们希望当作为开关的晶体管打开时这个电压为高电压当这个开关关闭时这个电压为低电压。Vin 充当开关的电气控制电压。我们可以用电压 Vin 来控制开关而不是像开闭机械元件那样控制开关。让我们考虑一下如果把 Vin 设置为低电压或高电压时会发生什么。如果 Vin 为低电压如接地时那么没有电流经过晶体管的基极。由于基极没有电流因此晶体管集电极和发射极之间开路。这意味着 Vout 也为低电压如图 4-7 所示。图 4-7 的左边是我们正在讨论的晶体管电路右边是表示同样状态的开关电路。换句话说左边的电路实际上和右边的一样右边只是用开关替换了晶体管以表明在这种状态下晶体管就像是断开的开关。图 4-7 NPN 晶体管如处于断开状态的开关如果 Vin 为低电压那么没有电流经过如果 Vin 为高电压那么电流流向晶体管的基极。这个电流使得晶体管把电流从集电极传导到发射极。这意味着 Vout 有效连接到 Vcc所以输出为高电压如图 4-8 所示。图 4-8 NPN 晶体管如处于闭合状态的开关图 4-8 的左边是我们正在讨论的晶体管电路右边是具有同样状态的开关电路在这种状态下晶体管就像是闭合的开关。4.4 逻辑门现在我们已经确定了晶体管可以当作电控开关可以搭建电路组件来实现逻辑功能其中的输入和输出可以是高电压和低电压。这种组件称为逻辑门。让我们从之前设计的 AND 电路开始并用晶体管替换机械开关。这样做的好处是只需要改变电压就能修改电路的输入不再需要拨动机械开关。虽然机械开关是人类和电路交互的好方法但电子开关允许多个电路相互交互——一个电路的输出可以很容易成为另一个电路的输入。前面我们用机械开关搭建了一个 AND 电路见图 4-3。现在我们用晶体管作为开关完成同样的事情如图 4-9 所示。图 4-3 用开关实现的逻辑 AND在图 4-9 中如果 VA 和 VB 是高电压逻辑 1那么电流流经两个晶体管Vout 也为高电压逻辑 1。如果 VA 和 VB 是低电压逻辑 0那么没有电流流动Vout 也为低电压逻辑 0。这个电路实现了逻辑 AND。图 4-9 用晶体管实现的逻辑 AND我们刚才看到了如何用晶体管和电阻搭建逻辑门即实现逻辑功能的电路。从现在开始我会隐藏实现逻辑门的细节把整个门看作一个电路组件。这不仅是观察逻辑门的理论方法也是这些电路元件实际的使用方法。我们可以购买已经组装好并物理封装成一个组件的逻辑门所以一般没必要使用晶体管自己搭建逻辑门除非是在教学练习时。各种逻辑门已经被定义了标准电路图符号你可以在图 4-10 中看到一些常用的逻辑门电路图符号。图 4-10 常用逻辑门电路图符号在查看图 4-10 中的各种逻辑门时请注意加在符号上的小圈圈它代表的是 NOT 或取反。NOT 门是最简单逻辑门它只有一个输入其输出就是这个输入的取反结果所以输入 1 变成 0输入 0 变成 1。NAND 门的输出和 NOT AND 是一样的它的输出是常规 AND 门输出的取反结果。NOR 也是如此因此你会在逻辑门中看到小圈圈它代表 NOT 或取反。在继续讨论其他内容之前让我们先暂停一下反思一下我们刚才讨论的某些方面。首先我们研究了逻辑门内部是如何工作的。其次我们使用这个设计打包封装并赋予其名称和表示符号。我们有意隐藏了电路的实现细节同时继续记录其预期行为。我们把逻辑门的设计细节放入所谓的 “黑盒” 中“黑盒” 指一种已知输入和输出但隐藏内部细节的元件。这种方法的另一个术语是封装这是一种隐藏组件内部细节但同时记录如何与该组件交互的设计选择。封装是一种贯穿现代技术的设计原则。当组件设计人员希望他人能方便地使用自己的创造并能在其上进行其他构建同时还无须完全了解其实现细节时就会使用封装。这种方法还允许在 “盒子” 内部进行改进只要输入和输出继续保持相同的行为盒子就能像之前一样继续使用。封装的另一个优点是团队可以在大型项目上合作并将项目的一部分封装起来。这使得每个人不需要了解每个组件的所有细节。在逻辑门中封装晶体管是本书中的第一个封装例子但随着我们学习的推进你将会多次看到它。4.5 用逻辑门进行设计在第 2 章中我们看到了如何把多个逻辑运算符组合起来以构成更复杂的逻辑语句。现在我们把这个思路扩展到逻辑门。一旦写好了逻辑语句或真值表就能用逻辑门在物理上把这个逻辑实现成硬件。我们把这个原则应用到之前为如下语句创建的真值表见表 2-6上IF it is sunny AND warm,OR it is my birthday,THEN I am going to the beach.如果天气晴朗且温暖或者是我生日那么我就去海滩。我们把它简化为(A AND B) OR C现在把这个语句用逻辑门表示为图如图 4-11 所示。如果 A 和 B 都是 1那么 AND 门的输出将为 1。AND 门的输出和 C 一起作为 OR 门的输入。如果 AND 输出或 C 为 1那么整个输出将为 1。当我们按照输出是当前输入的函数这种方式来组合逻辑门时这种电路被称为组合逻辑电路。也就是说一组特定的当前输入总是能产生相同的输出。时序逻辑电路与之相反时序逻辑电路的输出是当前输入和之前输入的函数。第 6 章将会介绍时序逻辑电路。图 4-11 (A AND B)OR C 的逻辑门图4.6 集成电路如前所述已有公司制造销售即用型数字逻辑门。硬件设计人员可以购买这些逻辑门并以此为基础搭建自己的硬件逻辑电路而无须担心门电路的内部是如何工作的。这些逻辑门是集成电路的一个例子。集成电路 (Integrated CircuitIC)在一个硅片上包含了多个组件封装后具有外部电接触点或引脚。IC 也称为芯片。本书主要研究双列直插式封装 (Dual In-line PackageDIP) 的IC它有具备两排平行引脚的矩形外壳。这些引脚间隔排列所以它们可以方便地插在面包板上。制造商用微型晶体管制作 IC这种晶体管比图 4-5 所示的分立晶体管小得多。分立组件是只包含一个元件比如电阻或晶体管的电子设备。和用分立晶体管制作的电路相比IC会让同样的小电路运行更快价格更低。我们之前讨论的使用电阻和晶体管的逻辑电路被称为电阻——晶体管逻辑 (Resister-Transistor LogicRTL) 电路。制造商用这种方法制作了早期的数字逻辑电路但后来它们采用了其他方法其中就包括二极管-晶体管逻辑 (Diode-Transistor LogicDTL) 和晶体管-晶体管逻辑 (Transistor-Transistor LogicTTL)。TTL 电路中最流行的是 7400 系列。这个系列的集成电路包含了逻辑门和其他数字组件。自 20 世纪 60 年代推出以来7400 系列及其后代仍然是数字电路的标准。我将重点关注 7400 系列以便为你提供如何使用集成电路的真实例子。让我们研究一个特定的 7400 系列集成电路。图 4-12 所示的是包含了 4 个 OR 门的 7432 芯片。图 4-12 双列直插式封装的 SN7432N 集成电路右侧为插在面包板上的效果7432 IC 封装有 14 个引脚。每个 OR 门需要 3 个引脚所以 4 个门就需要 12 个引脚再加上 1 个正电源电压 (Vcc) 引脚和 1 个接地引脚总共是 14 个引脚。说到电压7400 系列的工作电压 Vcc 是 5 V。也就是说高电压逻辑 1理想状态下是 5 V低电压是 0 V。但实际上介于 2 V到 5 V之间的任何输入电压都被视为高电压介于 0 V到 0.8 V之间的任何电压都被视为低电压。从图 4-12 可以看到7432 封装每边有 7 个引脚可以整齐地插入面包板。当把这样的芯片插入面包板时要保证芯片跨在面包板中心的缝隙上以确保直接相对的引脚比如引脚 1 和引脚 14之间不会意外连接。注意封装上的半圆形凹口它能告诉你在识别引脚时芯片的方向。图 4-13 给出了封装内的电路排布。这是个引脚图——标记组件电接触点或引脚的图。这种图的目的是展示组件的外部连接点不过引脚图一般不会记录电路的内部设计。图 4-13 展示 7432 IC 引脚排布的引脚图假设你想使用 7432 IC 4 个 OR 门中的一个而且你选择了图 4-13 引脚图中左下方的门连接引脚为 1、2 和 3。要使用这个门需要按照表4-3 来连接引脚。表 4-3 连接 7432 IC 中的单个门7400 系列包含上百个组件。这里不会全部都介绍但图 4-14 给出了该系列中 4 个常见逻辑门的引脚排布。你可以快速在线搜索到其他 7400 IC的引脚排布。图 4-14 常用 7400 系列集成电路的引脚图4.7 总结本章介绍了二进制数字电路这是一种用高低电压表示逻辑 1 或 0 的电路。你学习了开关如何被用于在物理电路中构建逻辑运算比如 AND。我们介绍了使用机械开关的局限性并引入了一种可以用作电控开关的新电路元件—晶体管。你了解了逻辑门一种实现逻辑功能的电路元件。我们以 7400 系列为例介绍了集成电路。