異或門
![本頁使用了標題或全文手工轉換](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.
|
|