書名: 計算機系統解密:從理解計算機到編寫高效代碼作者名: (美)喬納森·E.斯坦哈特本章字數: 3981字更新時間: 2021-09-27 16:57:01
2.4 邏輯門
20世紀60年代中期,Jack Kilby任職的德州儀器公司推出了5400和7400系列集成電路。這些芯片包含了執行邏輯運算的現成電路。這些特殊的電路稱為邏輯門(或簡稱門),是布爾函數的硬件實現,我們稱之為組合邏輯。德州儀器公司賣出了幾十億的集成電路。這些集成電路至今仍然有售。
邏輯門對硬件設計者來說是一個巨大的便利:他們不再需要從零開始設計一切,建造復雜的邏輯電路可以像建造復雜的管道一樣輕松。就像水管工可以在五金店找到成箱的三通管、肘管和管接頭一樣,邏輯設計者們也可以找到AND門(與門)、OR門(或門)、XOR門(異或門)和反相器(運行NOT運算的工具)的“工具箱”。圖2-26是這些門的符號。

圖2-26 門符號
正如你所期望的那樣,如果A、B輸入都為真,那AND門的Y輸出為真(可以從圖1-1所示的真值表獲得其他門運算結果)。
圖2-26中反相器符號的關鍵部分是○(圓圈),而不是與圓圈連接的三角形。沒有圓圈的三角形表示緩沖區,作用只是把輸入傳遞給輸出。反相器的符號只在不與其他設備結合使用的情況下才會用到。
使用5400和7400系列零件的晶體管–晶體管邏輯(Transistor-Transistor Logic, TTL)構建AND門和OR門的效率并不高。因為簡單門電路的輸出是反向的,所以需要一個反相器來讓簡單門電路以正確的方向輸出,而這樣會使成本更高、速度更慢、能耗更大。所以,基本的門是NAND(與非)和NOR(或非),它們使用的是圖2-27所示的反向圓圈。

圖2-27 NAND門和NOR門
幸運的是,這種額外的反向并不影響設計邏輯電路的能力,因為我們可以用德摩根定律解決反向問題。圖2-28應用德摩根定律來說明NAND門相當于一個輸入反向的OR門。

圖2-28 應用德摩根定律重繪NAND門
到目前為止,如果不算反相器的話,我們看到的所有門都有兩個輸入,但事實上門可以有兩個以上的輸入。例如,一個三輸入的AND門,只有三個輸入都是真,它的輸出才是真。既然知道了門的工作原理,我們來看看使用門時會出現的一些復雜情況。
2.4.1 利用遲滯現象提高抗噪聲能力
前面提到,由于決策衡量準則的原因,使用數字(離散)器件可以獲得更好的抗噪能力。但在有些情況下這是不夠的。很容易假設邏輯信號從0到1的轉換是瞬間發生的,反之亦然。在大多數情況下這是一個很好的假設,尤其是當我們將門連接在一起的時候。但現實世界中的信號往往變化得更慢。
我們來看緩慢變化的信號會是什么樣的。圖2-29顯示了兩個從0到1緩慢沿斜坡增加的信號。

圖2-29 噪聲干擾
左邊的輸入是沒有噪聲的,右邊的信號有一些噪聲。可以看到,嘈雜的信號導致輸出產生故障,因為噪聲會使信號不止一次地越過閾值。
我們可以使用遲滯現象來解決這個問題,即決策衡量準則受歷史的影響。從圖2-30中可以看出,傳遞函數不是對稱的;實際上,箭頭所示的上升信號(從0到1的信號)和下降信號(從1到0的信號)有不同的傳遞函數。當輸出為0時,應用的是右邊的曲線,輸出為1時,應用的是左邊的曲線。

圖2-30 滯后傳遞函數
兩條曲線給了我們兩個不同的閾值:一個用于上升信號,另一個用于下降信號。這意味著,當一個信號越過其中一個閾值時,它需要跨得更遠才能越過另一個閾值,而這也就轉化為更高的抗噪能力。
可發揮遲滯功能的門被稱為施密特觸發器,以美國科學家Otto H. Schmitt(1913—1998)的名字命名,他發明了具有遲滯效應的電路。因為這種電路比普通的電路更復雜、更昂貴,它們只在最需要的地方使用。如圖2-31所示的反相器,原理圖符號描繪了遲滯現象的疊加。

圖2-31 施密特觸發器原理圖符號
2.4.2 差分信號
有時候噪聲太大,連遲滯都不能減弱噪聲。想象一下走在人行道上,我們把人行道的右側邊緣稱為正向閾值,左側邊緣稱為負向閾值。你可能邊走邊想些自己的事情,這時有人推著一輛很寬的推車,把在人行道右側的你撞了下去,然后一群慢跑者又迫使你閃避到左側。在這種情況下,我們也需要保護。
到目前為止,我們都是根據一個絕對閾值(在觸發施密特觸發器的情況下為一對閾值)來衡量信號。但在某些情況下,由于噪聲太大,已越過施密特觸發器的閾值,導致觸發器失效。
讓我們試試“好哥們”系統吧。想象一下你正和一個朋友在人行道上走著,如果你的朋友在你的左邊,我們就稱這種情況為0,如果你的朋友在你的右邊,我們就稱為1。當那些推車和慢跑者過來時,你和你的朋友都會被推向人行道另一邊,但你們并沒有改變相對位置,所以如果這就是我們要測量的,那噪聲對此沒有任何影響。當然如果你們兩個人只是在彼此附近走著的話,你們可能會被推來推去。所以牽著手或者摟著腰會更好。依偎在一起能更好地抵御噪聲!這被稱為差分信號,因為我們測量的是一對互補信號之間的差值。圖2-32為一個差分信號電路。

圖2-32 差分信號
從圖2-32可以看到,驅動器將輸入信號轉換為互補輸出,接收器將互補輸入轉換回單端輸出。接收器中通常包含一個施密特觸發器,以獲得額外的抗噪能力。
當然,圖2-32中的設備存在局限性。太多的噪聲會將電子元件推到指定的工作范圍之外——想象一下,人行道旁邊有一棟樓,你和你的朋友都被推到了這棟樓墻邊上。共模抑制比(Common-Mode Rejection Ratio, CMRR)是元件特性的一部分,表示可處理的噪聲量。之所以稱為“共模”,是因為它針對的是一對信號中兩個信號共同的噪聲。
差分信號應用于很多地方,比如電話線。在19世紀80年代,有軌電車首次出現時,差分信號大顯身手。因為有軌電車會產生大量噪聲,對電話信號造成了干擾。蘇格蘭發明家亞歷山大·格雷厄姆·貝爾(Alexander Graham Bell)(1847—1922)發明了雙絞線,將成對的電線纏繞在一起,相當于交纏在一起的電子等效物(見圖2-33)。在今天雙絞線無處不在,在USB、SATA(磁盤驅動器)和以太網電纜中均可找到它。

圖2-33 雙絞線以太網電纜
美國某樂隊使用的音墻演唱會音響系統,是一個關于差分信號傳導的有趣應用。音墻演唱會音響系統通過使用成對的麥克風,使一個麥克風的輸出中減去了另一個麥克風的輸出,從而解決了麥克風的反饋問題。這樣一來,任何傳進兩個話筒中的聲音都是共模并被抵消掉的。歌手對著其中一個話筒唱歌,他們的聲音就會由音響系統傳出。從樂隊的現場錄音中可以聽到,來自觀眾的噪聲聽起來很尖銳,這是這套系統的一個缺陷。這是因為低頻聲音的波長比高頻聲音的波長長,與高頻噪聲相比,低頻噪聲更可能是共模的,所以來自觀眾的噪聲沒有被共模。
2.4.3 傳播延遲
在2.2.1節,我就提到過傳播延遲。傳播延遲是一個統計測量值,指輸入的變化反映到輸出中所需要的時間。傳播延遲因制造工藝和溫度的差異而產生,還受到和門的輸出端相連接的元件數量和類型的影響。門有最小和最大延遲,實際延遲介于兩者之間。傳播延遲是限制邏輯電路最大速度的因素之一。設計人員如果想讓設計的電路正常工作,就得使用最壞情況下的值。這意味著他們在設計時必須考慮最短和最長延遲的情況。
在圖2-34中,灰色區域表示因傳播延遲不能依賴輸出的地方。

圖2-34 傳播延遲示例
輸出可能在灰色區域的左邊緣處就發生變化,但不能保證到右邊緣前一定會發生變化。而且隨著更多的門被串聯起來,灰色區域的長度也會增加。
傳播延遲的范圍很大,它的時間長度取決于工藝技術。單個元件,如7400系列零件,其延遲時間可以達到10納秒(即億分之一秒)。現代大型元件(如微處理器)內部的門延遲可以達到皮秒(萬億分之一秒)級。在元件的規格說明中,傳播延遲通常以tPLH和tPHL表示,分別代表從低到高和從高到低的傳播時間。
既然我們已經討論了輸入和在通往輸出的電路上發生的事情,現在可以看看輸出了。
2.4.4 輸出的變化
我們已經討論了一些關于門輸入的問題,但我們還沒有討論很多關于輸出的內容。針對不同的應用場合,有幾種不同類型的輸出。
圖騰柱輸出
普通門輸出稱為圖騰柱,因為一個晶體管堆疊在另一個晶體管上的方式類似于圖騰柱。我們可以用如圖2-35所示的開關來模擬這種類型的輸出。

圖2-35 圖騰柱輸出
圖2-35中左邊的示意圖說明了圖騰柱輸出是如何得名的。最上面的開關叫主動上拉開關,因為它把輸出端連接到高邏輯電平,使輸出端得到1。圖騰柱的輸出不能連接在一起。從圖2-35可以看出,如果把一個0輸出和一個1輸出連接到一起,就會把正負電源連接在一起——就像穿越1984年電影Ghostbusters中的流一樣糟糕,而且可能會使元件熔化。
開路集電極輸出
另一種類型的輸出稱為開路集電極或開路漏極,具體稱呼取決于所用晶體管的類型。該輸出的原理圖和開關模型如圖2-36所示。

圖2-36 開路集電極/開路漏極輸出
乍一看,這似乎很奇怪,我們期望得到0作為輸出,但輸出會浮動,不是0的時候,我們并不知道它的值是多少。
由于開路集電極和開路漏極類型的輸出沒有主動上拉,我們可以將它們的輸出連接在一起而不損害真實值。我們可以使用被動上拉,用一個上拉電阻將輸出端連接到電源電壓,也就是1的來源。對于雙極型晶體管來說,電源電壓叫作VCC,對于MOS(金屬氧化物半導體)晶體管來說叫作VDD。被動上拉的效果是形成一個有線AND,如圖2-37所示。

圖2-37 有線AND
可能發生的情況是,當兩個開路集電極輸出都很低時,電阻將信號拉到1。電阻器限制了電流,所以不會使電路著火。當任何一個開路集電極輸出很低時,輸出為0。你可以通過這種方式將大量的東西連接到一起,用大量輸入消除AND門的需求。
開路集電極和開路漏極輸出的另一個用途是驅動LED(發光二極管)之類的設備。開路集電極和開路漏極器件通常是為驅動設備而設計的,能夠處理的電流要高于圖騰柱輸出器件。一些類型的輸出允許將輸出拉到一個比邏輯1更高的電壓水平,這使它們可以與其他類型的電路相連。這一點很重要,雖然7400門系列的閾值是一致的,但其他的門系列閾值不同。
三態輸出
雖然開路集電極電路允許輸出連接在一起,但它們沒有主動上拉的速度快。因此,我們暫時放下兩態解決方案,引入三態輸出。第三狀態是“關閉”。有一個額外的使能輸入可以打開和關閉輸出,如圖2-38所示。

圖2-38 三態輸出
關閉被稱為hi-Z,或高阻抗狀態。Z是阻抗的符號,在數學上是電阻的復數形式。可以把三態輸出想象成圖2-35的電路。分別控制基極可以得到四種組合:0、1、hi-Z和熔斷。顯然,電路設計者必須確保選擇的組合不會使電路熔斷。
三態輸出允許大量的設備組合在一起,但需要注意的是,一次只能使能一個設備。
- 少兒人工智能趣味入門:Scratch 3.0動畫與游戲編程
- 小程序實戰視頻課:微信小程序開發全案精講
- 圖解Java數據結構與算法(微課視頻版)
- 編寫高質量代碼:改善C程序代碼的125個建議
- AutoCAD VBA參數化繪圖程序開發與實戰編碼
- 深入RabbitMQ
- Python忍者秘籍
- JBoss:Developer's Guide
- 交互式程序設計(第2版)
- C# 7.1 and .NET Core 2.0:Modern Cross-Platform Development(Third Edition)
- AutoCAD基礎教程
- JavaScript Concurrency
- C/C++代碼調試的藝術
- 樹莓派開發從零開始學:超好玩的智能小硬件制作書
- Opa Application Development