导读:20世纪60年代中期,Jack Kilby任职的德州仪器公司推出了5400和7400系列集成电路。这些芯片包含了执行逻辑运算的现成电路。这些特殊的电路称为逻辑门(或简称门),是布尔函数的硬件实现,我们称之为组合逻辑。
作者:乔纳森·E.斯坦哈特(Jonathan E. Steinhart )
译者:张开元、张淼
来源:华章计算机(ID:hzbook_jsj)
逻辑门对硬件设计者来说是一个巨大的便利:他们不再需要从零开始设计一切,建造复杂的逻辑电路可以像建造复杂的管道一样轻松。
就像水管工可以在五金店找到成箱的三通管、肘管和管接头一样,逻辑设计者们也可以找到AND门(与门)、OR门(或门)、XOR门(异或门)和反相器(运行NOT运算的工具)的“工具箱”。图2-26是这些门的符号。
▲图2-26 门符号
正如你所期望的那样,如果A、B输入都为真,那AND门的Y输出为真。
图2-26中反相器符号的关键部分是○(圆圈),而不是与圆圈连接的三角形。没有圆圈的三角形表示缓冲区,作用只是把输入传递给输出。反相器的符号只在不与其他设备结合使用的情况下才会用到。
使用5400和7400系列零件的晶体管–晶体管逻辑(Transistor-Transistor Logic, TTL)构建AND门和OR门的效率并不高。因为简单门电路的输出是反向的,所以需要一个反相器来让简单门电路以正确的方向输出,而这样会使成本更高、速度更慢、能耗更大。所以,基本的门是NAND(与非)和NOR(或非),它们使用的是图2-27所示的反向圆圈。
幸运的是,这种额外的反向并不影响设计逻辑电路的能力,因为我们可以用德摩根定律解决反向问题。图2-28应用德摩根定律来说明NAND门相当于一个输入反向的OR门。
到目前为止,如果不算反相器的话,我们看到的所有门都有两个输入,但事实上门可以有两个以上的输入。例如,一个三输入的AND门,只有三个输入都是真,它的输出才是真。既然知道了门的工作原理,我们来看看使用门时会出现的一些复杂情况。
01 利用迟滞现象提高抗噪声能力
前面提到,由于决策衡量准则的原因,使用数字(离散)器件可以获得更好的抗噪能力。但在有些情况下这是不够的。很容易假设逻辑信号从0到1的转换是瞬间发生的,反之亦然。在大多数情况下这是一个很好的假设,尤其是当我们将门连接在一起的时候。但现实世界中的信号往往变化得更慢。
我们来看缓慢变化的信号会是什么样的。图2-29显示了两个从0到1缓慢沿斜坡增加的信号。
左边的输入是没有噪声的,右边的信号有一些噪声。可以看到,嘈杂的信号导致输出产生故障,因为噪声会使信号不止一次地越过阈值。
我们可以使用迟滞现象来解决这个问题,即决策衡量准则受历史的影响。从图2-30中可以看出,传递函数不是对称的;实际上,箭头所示的上升信号(从0到1的信号)和下降信号(从1到0的信号)有不同的传递函数。当输出为0时,应用的是右边的曲线,输出为1时,应用的是左边的曲线。
两条曲线给了我们两个不同的阈值:一个用于上升信号,另一个用于下降信号。这意味着,当一个信号越过其中一个阈值时,它需要跨得更远才能越过另一个阈值,而这也就转化为更高的抗噪能力。
可发挥迟滞功能的门被称为施密特触发器,以美国科学家Otto H. Schmitt(1913—1998)的名字命名,他发明了具有迟滞效应的电路。因为这种电路比普通的电路更复杂、更昂贵,它们只在最需要的地方使用。如图2-31所示的反相器,原理图符号描绘了迟滞现象的叠加。
02 差分信号
有时候噪声太大,连迟滞都不能减弱噪声。想象一下走在人行道上,我们把人行道的右侧边缘称为正向阈值,左侧边缘称为负向阈值。你可能边走边想些自己的事情,这时有人推着一辆很宽的推车,把在人行道右侧的你撞了下去,然后一群慢跑者又迫使你闪避到左侧。在这种情况下,我们也需要保护。
到目前为止,我们都是根据一个绝对阈值(在触发施密特触发器的情况下为一对阈值)来衡量信号。但在某些情况下,由于噪声太大,已越过施密特触发器的阈值,导致触发器失效。
让我们试试“好哥们”系统吧。想象一下你正和一个朋友在人行道上走着,如果你的朋友在你的左边,我们就称这种情况为0,如果你的朋友在你的右边,我们就称为1。
当那些推车和慢跑者过来时,你和你的朋友都会被推向人行道另一边,但你们并没有改变相对位置,所以如果这就是我们要测量的,那噪声对此没有任何影响。当然如果你们两个人只是在彼此附近走着的话,你们可能会被推来推去。所以牵着手或者搂着腰会更好。依偎在一起能更好地抵御噪声!这被称为差分信号,因为我们测量的是一对互补信号之间的差值。图2-32为一个差分信号电路。
从图2-32可以看到,驱动器将输入信号转换为互补输出,接收器将互补输入转换回单端输出。接收器中通常包含一个施密特触发器,以获得额外的抗噪能力。
当然,图2-32中的设备存在局限性。太多的噪声会将电子元件推到指定的工作范围之外—想象一下,人行道旁边有一栋楼,你和你的朋友都被推到了这栋楼墙边上。共模抑制比(Common-Mode Rejection Ratio, CMRR)是元件特性的一部分,表示可处理的噪声量。之所以称为“共模”,是因为它针对的是一对信号中两个信号共同的噪声。
差分信号应用于很多地方,比如电话线。在19世纪80年代,有轨电车首次出现时,差分信号大显身手。因为有轨电车会产生大量噪声,对电话信号造成了干扰。
苏格兰发明家亚历山大·格雷厄姆·贝尔(Alexander Graham Bell)(1847—1922)发明了双绞线,将成对的电线缠绕在一起,相当于交缠在一起的电子等效物(见图2-33)。在今天双绞线无处不在,在USB、SATA(磁盘驱动器)和以太网电缆中均可找到它。
美国某乐队使用的音墙演唱会音响系统,是一个关于差分信号传导的有趣应用。音墙演唱会音响系统通过使用成对的麦克风,使一个麦克风的输出中减去了另一个麦克风的输出,从而解决了麦克风的反馈问题。这样一来,任何传进两个话筒中的声音都是共模并被抵消掉的。歌手对着其中一个话筒唱歌,他们的声音就会由音响系统传出。
从乐队的现场录音中可以听到,来自观众的噪声听起来很尖锐,这是这套系统的一个缺陷。这是因为低频声音的波长比高频声音的波长长,与高频噪声相比,低频噪声更可能是共模的,所以来自观众的噪声没有被共模。
03 传播延迟
在《计算机系统解密:从理解计算机到编写高效代码》2.2.1节,我就提到过传播延迟。传播延迟是一个统计测量值,指输入的变化反映到输出中所需要的时间。传播延迟因制造工艺和温度的差异而产生,还受到和门的输出端相连接的元件数量和类型的影响。门有最小和最大延迟,实际延迟介于两者之间。
传播延迟是限制逻辑电路最大速度的因素之一。设计人员如果想让设计的电路正常工作,就得使用最坏情况下的值。这意味着他们在设计时必须考虑最短和最长延迟的情况。
在图2-34中,灰色区域表示因传播延迟不能依赖输出的地方。
输出可能在灰色区域的左边缘处就发生变化,但不能保证到右边缘前一定会发生变化。而且随着更多的门被串联起来,灰色区域的长度也会增加。
传播延迟的范围很大,它的时间长度取决于工艺技术。单个元件,如7400系列零件,其延迟时间可以达到10纳秒(即亿分之一秒)。现代大型元件(如微处理器)内部的门延迟可以达到皮秒(万亿分之一秒)级。在元件的规格说明中,传播延迟通常以tPLH和tPHL表示,分别代表从低到高和从高到低的传播时间。
既然我们已经讨论了输入和在通往输出的电路上发生的事情,现在可以看看输出了。
04 输出的变化
我们已经讨论了一些关于门输入的问题,但我们还没有讨论很多关于输出的内容。针对不同的应用场合,有几种不同类型的输出。
1. 图腾柱输出
普通门输出称为图腾柱,因为一个晶体管堆叠在另一个晶体管上的方式类似于图腾柱。我们可以用如图2-35所示的开关来模拟这种类型的输出。
图2-35中左边的示意图说明了图腾柱输出是如何得名的。最上面的开关叫主动上拉开关,因为它把输出端连接到高逻辑电平,使输出端得到1。图腾柱的输出不能连接在一起。从图2-35可以看出,如果把一个0输出和一个1输出连接到一起,就会把正负电源连接在一起—就像穿越1984年电影Ghostbusters中的流一样糟糕,而且可能会使元件熔化。
2. 开路集电极输出
另一种类型的输出称为开路集电极或开路漏极,具体称呼取决于所用晶体管的类型。该输出的原理图和开关模型如图2-36所示。
乍一看,这似乎很奇怪,我们期望得到0作为输出,但输出会浮动,不是0的时候,我们并不知道它的值是多少。
由于开路集电极和开路漏极类型的输出没有主动上拉,我们可以将它们的输出连接在一起而不损害真实值。我们可以使用被动上拉,用一个上拉电阻将输出端连接到电源电压,也就是1的来源。对于双极型晶体管来说,电源电压叫作VCC,对于MOS(金属氧化物半导体)晶体管来说叫作VDD。被动上拉的效果是形成一个有线AND,如图2-37所示。
可能发生的情况是,当两个开路集电极输出都很低时,电阻将信号拉到1。电阻器限制了电流,所以不会使电路着火。当任何一个开路集电极输出很低时,输出为0。你可以通过这种方式将大量的东西连接到一起,用大量输入消除AND门的需求。
开路集电极和开路漏极输出的另一个用途是驱动LED(发光二极管)之类的设备。开路集电极和开路漏极器件通常是为驱动设备而设计的,能够处理的电流要高于图腾柱输出器件。一些类型的输出允许将输出拉到一个比逻辑1更高的电压水平,这使它们可以与其他类型的电路相连。这一点很重要,虽然7400门系列的阈值是一致的,但其他的门系列阈值不同。
3. 三态输出
虽然开路集电极电路允许输出连接在一起,但它们没有主动上拉的速度快。因此,我们暂时放下两态解决方案,引入三态输出。第三状态是“关闭”。有一个额外的使能输入可以打开和关闭输出,如图2-38所示。
关闭被称为hi-Z,或高阻抗状态。Z是阻抗的符号,在数学上是电阻的复数形式。可以把三态输出想象成图2-35的电路。分别控制基极可以得到四种组合:0、1、hi-Z和熔断。显然,电路设计者必须确保选择的组合不会使电路熔断。
三态输出允许大量的设备组合在一起,但需要注意的是,一次只能使能一个设备。
本文摘编自《计算机系统解密:从理解计算机到编写高效代码》。
延伸阅读👇
延伸阅读《计算机系统解密》
推荐语:计算机程序硬件软件从底层实现到高层展现原理讲解,对底层知识的多个主题进行了公平的覆盖。在本书中,资深工程师Jonathan E. Steinhart深入探讨了计算机背后的基础概念,比如计算机硬件,软件在硬件上的行为,如何编写高效的程序,计算机安全基础知识,以及在编写代码时需要考虑的现实问题。
干货直达👇
更多精彩👇
在公众号对话框输入以下关键词
查看更多优质内容!
读书 | 书单 | 干货 | 讲明白 | 神操作 | 手把手
大数据 | 云计算 | 数据库 | Python | 爬虫 | 可视化
AI | 人工智能 | 机器学习 | 深度学习 | NLP
5G | 中台 | 用户画像 | 数学 | 算法 | 数字孪生
据统计,99%的大咖都关注了这个公众号
👇