【邏輯門的奇妙冒險】第3篇 造物的起點(diǎn):與或非邏輯門
本篇目標(biāo):
1.理解與或非三個邏輯門的結(jié)構(gòu)與特性;
?
在上一篇中,我們理解了CMOS管的特性,總結(jié)起來也就兩個電路符號和兩句話:

左圖:X點(diǎn)高電平,AB導(dǎo)通;
右圖:X點(diǎn)低電平,AB導(dǎo)通。
在本篇中,我們要理解的目標(biāo)也就三個電路符號和三個表:

這三個電路符號分別叫做:與門、或門、非門。下面的三個表分別是這三個門對應(yīng)的“真值表”。只要看懂了這仨電路符號和仨表,我們這一篇也就完事了。好,目標(biāo)很明確,我們開始吧~
首先,我們先從最簡單的非門開始,也就是最右邊的那個圖,只有一個輸入一個輸出。我們用上篇介紹的PMOS管和NMOS管各一個,搭建出以下結(jié)構(gòu):

圖中的VDD表示高電平,誰和它連接了,誰就是“1”;GND是接地線,誰和它連接了,誰就是“0”。其中A點(diǎn)是輸入,而Y點(diǎn)是輸出。
簡單分析一下,如果A點(diǎn)是高電平,那么根據(jù)CMOS管的特性,下面的N管導(dǎo)通,而P管截止,相當(dāng)于Y點(diǎn)被連接到了GND上了,也即“A1則Y0”;相反,如果A點(diǎn)是低電平,那么對應(yīng)的P管導(dǎo)通,N管截止,相當(dāng)于Y點(diǎn)被連接到了VDD上了,也即“A0則Y1”。好勒,借助這個結(jié)構(gòu),我們就算完成了一次簡單的取反運(yùn)算,一個“叛逆的”“故意搗蛋的”電路。
這就是非門。它的電路符號是一個三角形末端一個圓圈,它的數(shù)學(xué)符號是“~”,它的真值表就兩行,也就是下圖的最右邊(此圖梅開二度,反復(fù)強(qiáng)調(diào).jpg):

接下來我們要用類似的手段,用CMOS管來搭建與門、或門。但是在這之前,我們可以回想一下中學(xué)學(xué)過的電路知識:并聯(lián)和串聯(lián)

左邊是兩個串聯(lián)的開關(guān),需要AB兩個同時連接,電路才導(dǎo)通;右邊是兩個并聯(lián)的開關(guān),只要AB有一個連接,電路就導(dǎo)通。誒嘿,這個特性是不是和與門、或門的邏輯要求有些類似呢?我們注意到:與門要求,兩個輸入都是1,結(jié)果才是1,像不像串聯(lián)電路呢?或門要求,兩個輸入只要有一個是1,結(jié)果就是1,像不像并聯(lián)電路呢?
由此啟發(fā),我們可以這樣擺弄我們的CMOS管,把與門電路的上半部分復(fù)制一份,然后并聯(lián)一下;把下半部分也復(fù)制一份,但是串聯(lián)一下,變成這個樣子:

上邊是兩個并聯(lián)的P管,下邊是兩個串聯(lián)的N管。我們分析一下可以發(fā)現(xiàn):如果AB都是1,那么下面?zhèn)zN管導(dǎo)通,上面?zhèn)zP管截止,Y就連接到GND上了,得到0;而AB只要有一個是0,則下面至少一個截止,上面至少一個導(dǎo)通,Y就連接到VDD上了,得到1。誒嘿,怎么跟我們想要的與門“AB都1才得到1”的邏輯相反了呀?怎么肥事?
沒事,咱們不是已經(jīng)有了非門了嘛,反了就反了,不怕,后面再接上一個非門就是了,于是電路就變成這樣了:

我們再分析一下,AB兩點(diǎn)都是1的時候,X點(diǎn)被連接到GND,得到0,同時X點(diǎn)后面連接這一個非門,又把X點(diǎn)的值反過來,Y點(diǎn)得到1;AB中任意一個是0的情況也符合預(yù)期。Nice,我們成功地用CMOS管搭建出了一個與門。它的電路符號是一個半圓,它的數(shù)學(xué)符號是“&”,它的真值表正是下圖的最左邊(此圖反復(fù)梅開三度,反復(fù)強(qiáng)調(diào).jpg):

接下來的故事線就順理成章了,似曾相識燕歸來,我們同樣對非門施展串聯(lián)并聯(lián)的把戲,這次是把上面的P管串聯(lián),把下面的N管并聯(lián),就變成了這樣:

我們再分析一下,不出意外:當(dāng)AB中有一個是1,下面并聯(lián)的N管至少有一個導(dǎo)通,上面的P管至少有一個截止,則Y連接到了GND,得到0;當(dāng)AB都是0時,下面的N管都是截止,上面的P管都是導(dǎo)通,則Y連接到了VDD,得到0。真巧,這個邏輯正好和非門相反。但是不慌,這次我們有經(jīng)驗(yàn)了——來,給它上一個非門:
最后分析一通:只要AB有一個是1,則X點(diǎn)連接到GND,得到0,再被非門翻過來,得到1;只有AB都是0,X點(diǎn)才連接到VDD,得到1,最后再被非門翻過來,得到0。完美~我們成功用CMOS管搭建出了或門。它的電路符號是個月牙型,它的數(shù)學(xué)符號是“|”,它的真值表就是下圖的中間部分(此圖梅開四度,再次強(qiáng)調(diào).jpg):

這三個邏輯門,是數(shù)字電路的基礎(chǔ),是我們造物的起點(diǎn)。后期我們搭建出復(fù)雜的數(shù)字電路,包括中央處理器CPU,都是從這三個門開始的。因此,這三個門的邏輯非常重要,需要牢記。對此,筆者以前是這么記的,初學(xué)者可以參考,分享一下:
非門是“叛逆的”,給1得到0;
與門是“認(rèn)真的”,全都是1才是1;
或門是“隨便的”,只要有1就是1。
最后再看一眼這個圖,很重要,要記住,梅開五度了屬于是:

拓展閱讀:
與、或、非三個門分別對應(yīng)布爾代數(shù)里面的加法、乘法、取反。這三個門就已經(jīng)是完備的了,也即,這三門的組合可以完成一切布爾代數(shù)的運(yùn)算。而布爾代數(shù)和我們從小學(xué)習(xí)的一般數(shù)學(xué)運(yùn)算,也就是加減乘除開方三角取對數(shù)等等等等是相通的。那些東西都可以變換成布爾代數(shù)里的加、乘、取反的組合。換言之,與或非三門,就可以完成四則運(yùn)算開方三角取對數(shù)等等花里胡哨的運(yùn)算,想想就很神奇,想想就很美妙!哇哦,與或非邏輯門,真是漂亮呀~
稍微有些不秒的是:與門、或門是冗余的!因?yàn)榕c門加上非門可以代替或門;或門加上與門也可以代替與門——非A與非B,再取反,就是A或B了;同樣的,非A或非B,再取反,就是A與B了。也即,或門、非門,這倆就已經(jīng)完備了;與門、非門,這倆也完備了,并不需要仨呀!壞了,與或非邏輯門,不漂亮了......
?
(前方高能,全是數(shù)學(xué),歡迎靚仔來挑戰(zhàn))
更加不妙的是:隨便一個“奇怪門”就可以完備了。什么是奇怪門,我們不妨先想想,二輸入的邏輯門有幾個呢?

二輸入邏輯門的真值表也就4項(xiàng),對應(yīng)的輸出都打上問號,我們直接窮舉,也就16種邏輯門:

分析一下,我們可以發(fā)現(xiàn):
1號門、16號門直接就是常量,沒有用,辣雞門;
4號門、6號門直接就是導(dǎo)線,沒有用,廢物門;
11號門、13號門直接就是非門,只有非門,肯定是不完備的;
2號門就是與門,它再加上非門,就完備啦;
8號門就是或門,它再加上非門,也完備啦;
7號門是有名字的,叫異或門,它就算加上非門,也不會完備;
10號門也是有名字,叫同或門,它就算加上非門,同樣不會完備;
9號門是或非門,也就是或門再取反,可以抽象出非門,然后完備;
15號門是與非門,也即與門再取反,也可以抽象出非門,然后完備;
3號、5號、12號、14號門,沒有名字,暫且統(tǒng)稱為奇怪門,有趣的是,它們就算不加上非門,也是完備的;
例如:用3號奇怪門搭建一個非門,我們可以將A設(shè)定成常量1,這樣一來,3號奇怪門就會變成單輸入的,并且邏輯上等于取反B,好嘞,我們就得到一個基于奇怪門搭建的非門了。也即非B,等價于1 3 B。(注意紅色的3是運(yùn)算符)

接下來,我們用3號奇怪門搭建一個與門,先把B信號取反,我們不難發(fā)現(xiàn):A與B,等價于A 3?非B。(注意紅色的3是運(yùn)算符)

誒嘿,非門、與門有了,或門也就組合一下,非A與非B,再取反就是或門了,于是乎,我們得到(注意紅色的3是運(yùn)算符):
~B ?= 1 3 B
A&B = A 3?~B = A 3?(1 3 B)
A|B = ~(~A & ~B) = ~((1 3A) & (1 3 B)) = 1 3?((1 3 A) 3?(1 3 (1 3 B)))?
真有意思,我們只用一個3號奇怪門,就可以完成與或非運(yùn)算,完成布爾代數(shù)的加乘取反,進(jìn)而完成四則運(yùn)算開方三角取對數(shù)等等數(shù)學(xué)運(yùn)算。更有意思的是,5號、12號、14號奇怪門都可以哦,構(gòu)造方法類似,我就不再贅述了。
那為什么7號異或門、10號同或門無法完備呢?我們嘗試了一下,確實(shí)無法構(gòu)造出與或非等邏輯,但是要怎么證明它們不完備呢?這里就要有請抽象代數(shù)的群論登場了。筆者學(xué)藝不精,不會(流下了不學(xué)無術(shù)的淚水.jpg)
既然3、5、12、14都可以單門完備,難道不是更加簡潔嗎?與門、或門,都要配上非門才能完備,看起來差點(diǎn)意思呀?
其實(shí),與門、或門(包括與非、或非)有特別特別好、特別特別重要的性質(zhì),就是結(jié)合律和交換律?;貞浺幌旅烽_五度的那個圖和表,是不是AB對換位置也一樣?而且再來一個C,先算AB還是先算BC也都一樣?好像是的誒!好勒,基于此我們就可以定義出三輸入的與門、或門:

相應(yīng)的,3、5、12、14等奇怪門就沒有辦法定義三輸入了,也沒有交換律沒有結(jié)合律,真是越琢磨越奇怪了,很不好辦。這么一想,與門、或門有干凈利索的三輸入、可以交換可以結(jié)合。誒嘿,與或非邏輯門,又漂亮了呢!
?
最后預(yù)告一下,下一篇組合電路,內(nèi)容量超級飽滿哦~