互斥或閘
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
基本邏輯閘 | |
緩衝 | 非 |
及 | 反及 |
或 | 或非 |
互斥或 | 同或 |
蘊含 | 蘊含非 |
輸入 A B |
輸出 A XOR B | |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
互斥或閘(英語:Exclusive-OR gate,簡稱XOR gate,又稱EOR gate、ExOR gate)是數位邏輯中實現邏輯互斥或的邏輯閘,功能見右側真值表。若兩個輸入的電平相異,則輸出為高電平(1);若兩個輸入的電平相同,則輸出為低電平(0)。
這一函式能實現模為2的加法,因此,互斥或閘可以實現電腦中的二進位加法。半加器是由互斥或閘和及閘組成的。
概述
下列包括邏輯閘的3種符號:形狀特徵型符號(ANSI/IEEE Std 91-1984)、IEC矩形國標符號(IEC 60617-12)和不再使用的DIN符號(DIN 40700)。其他的邏輯閘符號見邏輯閘符號表。
表達式 | 符號 | 功能表 | 繼電器邏輯 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ANSI/IEEE Std 91-1984 | IEC 60617-12 | DIN 40700 | ||||||||||||||||||
![]() |
![]() |
![]() 或 ![]() |
|
![]() |
等價於。
互斥或的運算順序如下:
輸入的順序對輸出沒有影響,因為互斥或滿足結合律。
反及邏輯實現的互斥或運算的邏輯表達式如下:
硬體描述和引腳分配
互斥或閘是基本的邏輯閘,因此在TTL和CMOS積體電路中都是可以使用的。標準的4000系列CMOS積體電路為4070,包含四個獨立的2輸入互斥或閘。4070替換了可靠性差的4030,但二者的引腳分配相同。下面是引腳分配表:
![]() |
|
包括NXP在內的很多半導體製造商都生產這一元件,封裝方式分為直插DIP封裝和SOIC封裝兩種。元件的資料表可在大多數元件資料庫查詢到。
傳輸閘連線
互斥或閘可以用MOSFET組成。下圖是CMOS實現的互斥或閘。[1]
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/d/d8/CmosXORGate.png)
備選方案
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/7/70/Cmos_xor.svg/220px-Cmos_xor.svg.png)
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Overzicht_XOR.jpg/220px-Overzicht_XOR.jpg)
輸入1和1時,XOR會輸出0。因此,不可能只使用AND和OR組成XOR,必須包含反相器(NOT)。
如果沒有特定的邏輯閘,我們可以用其他現有的邏輯閘構建。顯而易見的一個方法是用反互斥或閘後接一個反閘來實現互斥或閘。如果按照邏輯表達式,我們可以利用及閘、或閘和反閘來構建互斥或閘。但是,這種方法需要3種共5個邏輯閘。
互斥或閘可利用四個反及閘或五個反或閘來實現,連線方法見下圖。因為反及閘和反或閘是「通用的閘電路」,因此任何一個邏輯函式都可單獨由反及邏輯或反或邏輯來實現。
![]() |
![]() |
留意下表,OR和NAND中間兩行輸出跟XOR相同,第一和第四行不同。所以,利用OR和NAND再加上AND可以組成XOR。
A | B | OR | NAND | XOR |
---|---|---|---|---|
0 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 0 |
2個輸入以上的情況
若嚴格的理解邏輯互斥或的定義,或觀察IEC符號,我們就會提出關於2輸入以上的互斥或閘是否能有正確表現的問題。如果一個邏輯閘能有3個或更多的輸入,並能得到正確的輸出,而且輸入中的一個為真,那麼這個邏輯閘在效果上是一個獨熱檢測器,而其實這是僅有2個輸入的情況。不過,實際中極少用這種方法來實現這一裝置。
將連續相接的輸入接入級聯的互斥或閘是很常見的連接方式。首先將2個訊號作為一個互斥或閘的輸入,然後將其輸出以及第3個訊號作為第二個互斥或閘的輸入,對需要接入的其他訊號反覆進行以上操作,這樣就會得到如下結果:若輸入中高電平(1)的個數是奇數,輸出為高電平(1);若輸入中高電平(1)的個數是偶數,輸出為低電平(0)。這種特性在實際應用中可實現奇偶產生器或模2加法器。
例如,74LVC1G386微型積體電路是3輸入互斥或閘,可實現奇偶產生器[2]。
Verilog的縮減運算子"^"能將任意位輸入進行從高位到低位逐次互斥或運算,得到一位輸出。
其他應用
加法器
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Half_Adder.svg/180px-Half_Adder.svg.png)
互斥或閘可以作為一位加法器,可將任何2位相加得到1個輸出。若兩個輸入的值均為1,則得到10的結果,而及閘由兩個輸入的值控制進位的輸出。以上是半加器的主要原理。
互斥或密碼
安全加密演算法一次性密碼本就是利用互斥或閘實現的。加密的原理是將要加密的檔案(明文)編碼成二進位序列,然後將與被加密的訊息長度相同的隨機二進位序列作為金鑰,再將明文與金鑰的每一位依次進行按位元互斥或運算,得到密文。若將密文與金鑰的每一位依次進行按位元互斥或運算,就能得到原文。
互斥或校驗
101 XOR 011 = 110 |
110 XOR 011 = 101 |
110 XOR 101 = 011 |
將兩個3位二進位序列101和011進行互斥或奇偶校驗可得到互斥或校驗和110(右表第一行右側)。若序列101遺失,我們可以將已知序列011與互斥或校驗和進行互斥或運算得到遺失的序列(右表第二行)。
互斥或閘倍頻器
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Frequenzverdoppler_mit_XOR.png/220px-Frequenzverdoppler_mit_XOR.png)
將方波訊號和利用RC電路延遲的方波訊號作為互斥或閘的兩個輸入,可以很容易的得到頻率達到100 MHz以上的方波。輸出得到的針尖脈衝是鎖相的,其頻率會與RC電路的時間常數基本保持同步。由於這種倍頻器不需要共振濾波器,輸入訊號可以具有經過調頻的任意占空比,也可以是強訊號。
可控反相器
將互斥或閘的一個輸入作為訊號輸入端,另一個輸入作為控制端,若控制端為低電平(0),訊號輸出不變;若控制端為高電平(1),互斥或閘表現為反相器,訊號輸出反相。
參見
參考文獻
- ^ Paul Falstad's Circuit Simulator Applet. [2010-08-04]. (原始內容存檔於2013-01-21).
- ^ 74LVC1G386 網際網路檔案館的存檔,存檔日期2009-12-29.資料表
- Tietze, Ulrich; Schenk, Christoph. Halbleiter-Schaltungstechnik. Springer. 2002年12月. ISBN 3-540-42849-6.
- Beuth, Klaus. Digitaltechnik. Vogel. 1998年10月. ISBN 3-8023-1755-6.
- Seifart, Manfred; Beikirch, Helmut. Digitale Schaltungen. Technik. 1998年5月. ISBN 3-341-01198-6.
|
|