邏輯門(mén):從非門(mén)到異或門(mén)全解析)
邏輯門(mén)是數(shù)字電路的積木MOS管則是造積木的磚頭。這篇文章想做的事情很直白不用任何現(xiàn)成邏輯芯片只靠MOS管在面包板上手搓出7種基礎(chǔ)邏輯門(mén)每一條都配上電路圖和真值表。作為過(guò)來(lái)人我可以負(fù)責(zé)任地說(shuō)當(dāng)我第一次親手用兩個(gè)MOS管拼出非門(mén)再接上LED看到輸出翻轉(zhuǎn)時(shí)“芯片內(nèi)部到底是什么”的疑惑瞬間消散了一大半。這篇文章適合學(xué)數(shù)字電路有點(diǎn)犯迷糊的同學(xué)也適合所有想親自驗(yàn)證CMOS原理的電子愛(ài)好者。1. 動(dòng)手之前為什么我堅(jiān)持用MOS管手搓邏輯門(mén)1.1 用現(xiàn)成芯片不香嗎香但學(xué)不到真東西直接買(mǎi)74HC00里面集成了四個(gè)與非門(mén)插上就能用從實(shí)用角度看當(dāng)然更高效。但問(wèn)題在于芯片是個(gè)黑盒子你只知道引腳功能不知道內(nèi)部那層硅片上到底發(fā)生了什么。邏輯門(mén)是數(shù)字電路的磚MOS管是造磚的原料如果你想真正搞懂“磚頭”是怎么從“泥巴”里燒出來(lái)的就得從MOS管開(kāi)始。我自己剛學(xué)數(shù)字電路時(shí)也有個(gè)誤區(qū)總覺(jué)得真值表背下來(lái)就行。直到某次做項(xiàng)目被問(wèn)到“CMOS與非門(mén)里面幾個(gè)管子、怎么接的”我才發(fā)現(xiàn)單純背真值表根本不夠。從那以后我給自己定了個(gè)規(guī)矩凡是學(xué)過(guò)的邏輯門(mén)都必須能在面包板上用分立MOS管搭出來(lái)眼見(jiàn)為實(shí)。這次一口氣把七個(gè)基礎(chǔ)門(mén)全搭了一遍收獲遠(yuǎn)超預(yù)期。當(dāng)然用分立管子搭邏輯門(mén)并不是為了替代芯片。它的價(jià)值在兩點(diǎn)一是原理驗(yàn)證CMOS數(shù)字IC內(nèi)部用的就是這套互補(bǔ)開(kāi)關(guān)網(wǎng)絡(luò)搭一次勝過(guò)背十遍書(shū)二是故障分析當(dāng)你親手搭的電路出了問(wèn)題你去查線(xiàn)、測(cè)電壓、判斷管子好壞的過(guò)程比任何仿真軟件都能鍛煉實(shí)戰(zhàn)能力。所以我建議把它當(dāng)成一個(gè)“原理體檢項(xiàng)目”來(lái)做而不是追求實(shí)用替代。1.2 材料清單與MOS管選型動(dòng)手之前先把器件選對(duì)。我用的是2N7000作NMOS、BS250作PMOS。選這兩個(gè)型號(hào)主要有幾個(gè)考慮第一它們是邏輯電平MOS管2N7000的開(kāi)啟電壓Vth典型值在1V到2V之間用5V電壓就能可靠開(kāi)啟如果換成某些工業(yè)級(jí)大功率MOS管Vth可能就要4V以上3.3V電壓根本驅(qū)動(dòng)不了實(shí)驗(yàn)會(huì)卡在第一步。第二這兩款的導(dǎo)通電阻都在幾歐到十幾歐量級(jí)帶個(gè)LED負(fù)載毫無(wú)壓力不會(huì)出現(xiàn)輸出被負(fù)載拉垮的問(wèn)題。第三都是To-92直插封裝三只腳間距標(biāo)準(zhǔn)插面包板非常順滑。BS250還要多說(shuō)一句它是P溝道很多人第一次用P溝道容易犯迷糊導(dǎo)通條件是G極比S極電壓低超過(guò)閾值也就是Vgs為負(fù)。它的漏極電流方向和NMOS相反S極通常接VDD。如果你手頭沒(méi)有BS250也可以用BSS92、TP0610之類(lèi)的P溝道邏輯電平管參數(shù)接近就能用。材料清單如下表這些都能在常見(jiàn)電子元件店鋪一站式買(mǎi)到總成本不到二十塊。器件/工具型號(hào)或規(guī)格數(shù)量用途NMOS管2N7000至少10只構(gòu)成下拉網(wǎng)絡(luò)PMOS管BS250或BSS92至少10只構(gòu)成上拉網(wǎng)絡(luò)面包板830孔1塊搭建平臺(tái)面包板電源模塊5V輸出1個(gè)給電路供電撥碼開(kāi)關(guān)2位以上2個(gè)模擬輸入高低電平LED紅色或綠色8個(gè)指示輸入輸出狀態(tài)電阻330Ω到1kΩ10個(gè)LED限流跳線(xiàn)公對(duì)公若干連線(xiàn)萬(wàn)用表普通數(shù)字萬(wàn)用表即可1塊測(cè)量驗(yàn)證工具方面萬(wàn)用表必須有至少要用直流電壓擋和通斷擋示波器有的話(huà)更好能直觀(guān)看到開(kāi)關(guān)波形沒(méi)有也不影響實(shí)驗(yàn)用萬(wàn)用表和LED完全能驗(yàn)證邏輯功能。2. MOS管快速掃盲三個(gè)極、兩個(gè)條件、一個(gè)開(kāi)關(guān)模型2.1 三個(gè)極到底怎么認(rèn)MOS管有柵極G、漏極D、源極S三個(gè)極。柵極是電壓控制端它和下面的導(dǎo)電溝道之間隔著一層極薄的氧化硅絕緣層所以柵極幾乎不取電流這也是MOS管輸入阻抗極高的原因。漏極和源極在物理結(jié)構(gòu)上往往是對(duì)稱(chēng)的實(shí)際使用時(shí)靠外加電壓極性來(lái)判斷哪個(gè)是S哪個(gè)是D。以2N7000為例把平面對(duì)著自己、字符面朝前從左到右依次是S、D、G但不同型號(hào)排布不一定相同所以拿到管子第一步永遠(yuǎn)是查數(shù)據(jù)手冊(cè)不要憑記憶。對(duì)于NMOS電路里通常把S接GNDD通過(guò)負(fù)載接正電源當(dāng)G比S高出的電壓Vgs超過(guò)閾值Vth時(shí)N型導(dǎo)電溝道形成D和S之間像開(kāi)關(guān)一樣閉合。對(duì)于PMOS電路里通常把S接VDDD通過(guò)負(fù)載接GND當(dāng)G比S低出的電壓達(dá)到閾值也就是Vgs小于負(fù)的Vth時(shí)P型導(dǎo)電溝道形成開(kāi)關(guān)閉合。記住這個(gè)“NMOS低端接地、PMOS高端接電源”的接法后面所有電路圖都不會(huì)亂。2.2 為什么邏輯門(mén)必須成對(duì)出現(xiàn)如果只用一個(gè)NMOS當(dāng)開(kāi)關(guān)能不能做一個(gè)簡(jiǎn)單的反相器能但效果很差。設(shè)想A接NMOS的G輸出從D取S接地那A為高電平時(shí)NMOS導(dǎo)通輸出被拉到0V沒(méi)問(wèn)題但A為低電平時(shí)NMOS關(guān)斷輸出懸空既不是高也不是低。要讓它輸出高還得在輸出和VDD之間接一個(gè)大電阻做上拉可上拉電阻會(huì)跟NMOS的導(dǎo)通電阻構(gòu)成分壓輸出低電平永遠(yuǎn)到不了0V而且功耗可觀(guān)。這就是互補(bǔ)CMOS結(jié)構(gòu)出現(xiàn)的根本原因每個(gè)邏輯門(mén)都同時(shí)配置PMOS上拉網(wǎng)絡(luò)PUN和NMOS下拉網(wǎng)絡(luò)PDN輸入信號(hào)同時(shí)控制兩者保證任意時(shí)刻只有一個(gè)網(wǎng)絡(luò)導(dǎo)通。輸出為高時(shí)PMOS網(wǎng)絡(luò)導(dǎo)通把輸出拉到VDD輸出為低時(shí)NMOS網(wǎng)絡(luò)導(dǎo)通把輸出拉到GND輸出永遠(yuǎn)不會(huì)懸空也沒(méi)有持續(xù)的直通電流。靜態(tài)功耗幾乎為零輸出擺幅滿(mǎn)電源軌邏輯電平清晰可靠這就是為什么現(xiàn)代數(shù)字芯片絕大多數(shù)都采用CMOS工藝。2.3 搭建邏輯門(mén)最容易踩的三個(gè)坑第一個(gè)坑是柵極懸空。MOS管柵極輸入阻抗極高懸空時(shí)一點(diǎn)點(diǎn)電荷就能讓它不確定導(dǎo)通還是關(guān)斷邏輯功能完全不可控甚至?xí)舷鹿芡瑫r(shí)導(dǎo)通造成短路。實(shí)驗(yàn)中所有輸入都必須明確接高或接低這句話(huà)值得寫(xiě)三遍。第二個(gè)坑是管腳認(rèn)錯(cuò)。前面說(shuō)過(guò)不同型號(hào)的管腳排布不同特別是P溝道的BS250管腳定義跟2N7000不一樣拿萬(wàn)用表二極管擋測(cè)一下G和其他腳之間發(fā)現(xiàn)有電壓讀數(shù)的那只腳就是G然后再區(qū)分D和S最穩(wěn)。第三個(gè)坑是拿模擬思維看數(shù)字。MOS管本質(zhì)上是個(gè)電壓控制的可變電阻導(dǎo)通時(shí)電阻不為零關(guān)斷時(shí)也有微弱的漏電流。在高速開(kāi)關(guān)里這些參數(shù)影響很大但在我們這種低速邏輯門(mén)實(shí)驗(yàn)中只要管子工作在“充分導(dǎo)通”或“完全關(guān)斷”兩個(gè)狀態(tài)這些非理想效應(yīng)幾乎可以忽略。這也是為什么實(shí)驗(yàn)電壓要選在5V而不是1.8V電壓越高邏輯電平裕量越大越不容易出問(wèn)題。3. 七個(gè)邏輯門(mén)電路圖與真值表3.1 非門(mén)NOT最簡(jiǎn)結(jié)構(gòu)但足以說(shuō)明一切非門(mén)是標(biāo)準(zhǔn)CMOS邏輯門(mén)的基礎(chǔ)架構(gòu)整個(gè)結(jié)構(gòu)只有兩只管子上面的PMOS接VDD下面的NMOS接GND輸入A同時(shí)接到兩個(gè)管的柵極輸出Y從兩只管子中間的節(jié)點(diǎn)取出來(lái)。邏輯功能是一句話(huà)輸出跟輸入反相輸入0輸出1輸入1輸出0。VDD │ ┌───┴───┐ │ PMOS │ └───┬───┘ │ A ───┤ ├────── Y A ───┤ │ ┌───┴───┐ │ NMOS │ └───┬───┘ │ GND工作過(guò)程分成兩半來(lái)看。當(dāng)A為0V時(shí)NMOS的Vgs0V低于閾值關(guān)斷PMOS的S接VDDG接0VVgs-5V滿(mǎn)足導(dǎo)通條件輸出Y被PMOS拉到接近VDDY1。反過(guò)來(lái)A為5V時(shí)NMOS導(dǎo)通把輸出拉到GNDPMOS的Vgs0V關(guān)斷Y0。兩只管子一個(gè)開(kāi)一個(gè)關(guān)輸出電平永遠(yuǎn)不會(huì)懸空。真值表也很簡(jiǎn)單AY0110這里我建議搭完以后把萬(wàn)用表紅表筆放在Y節(jié)點(diǎn)撥動(dòng)輸入開(kāi)關(guān)看電壓是不是在5V和0V之間干凈地跳變。如果出現(xiàn)中間電壓比如2.5V說(shuō)明很可能兩只管子同時(shí)導(dǎo)通了要檢查輸入是不是懸空。3.2 與非門(mén)NAND串并聯(lián)結(jié)構(gòu)的第一次交鋒與非門(mén)在邏輯上就是“先與后非”A和B都為1時(shí)輸出0其它情況輸出1。它在CMOS里的接法是上面兩只PMOS并聯(lián)下面兩只NMOS串聯(lián)。輸入A控制P1和N1輸入B控制P2和N2。VDD ──┬── P1(S) ── P1(D) ──┐ │ ├── Y └── P2(S) ── P2(D) ──┘ A ── P1(G), N1(G) B ── P2(G), N2(G) Y ── N1(D) N1(S) ── N2(D) N2(S) ── GND控制關(guān)系要順著導(dǎo)通路徑梳理。當(dāng)A和B都為高時(shí)N1和N2都導(dǎo)通NMOS串聯(lián)路徑形成完整通路把Y拉到GND同時(shí)P1和P2的Vgs都是0V都關(guān)斷所以輸出為0。只要A、B中有一個(gè)為低對(duì)應(yīng)的那個(gè)NMOS就關(guān)斷串聯(lián)通路斷開(kāi)而對(duì)應(yīng)PMOS導(dǎo)通輸出被拉到VDDY1。ABY001011101110實(shí)際搭建時(shí)NMOS串聯(lián)那部分最容易接錯(cuò)。N1的源極S不是直接接地而是接N2的漏極DN2的源極S才接地。很多人第一次搭會(huì)把兩個(gè)NMOS都直接接地結(jié)果不管輸入怎么變輸出都是0這個(gè)坑我踩過(guò)后來(lái)養(yǎng)成習(xí)慣搭串聯(lián)結(jié)構(gòu)時(shí)先在紙上把D和S的級(jí)聯(lián)路徑畫(huà)清楚再上板子。3.3 或非門(mén)NOR把串并聯(lián)反過(guò)來(lái)就是另一番天地或非門(mén)是“先或后非”A和B都為0時(shí)輸出1其它情況輸出0。CMOS結(jié)構(gòu)跟前一個(gè)正好鏡像上面兩只PMOS串聯(lián)下面兩只NMOS并聯(lián)。VDD ── P1(S) ── P1(D) ── P2(S) ── P2(D) ── Y A ── P1(G), N1(G) B ── P2(G), N2(G) Y ── N1(D) Y ── N2(D) N1(S) ── GND N2(S) ── GND當(dāng)A和B都為低時(shí)N1和N2都關(guān)斷NMOS并聯(lián)網(wǎng)絡(luò)不起作用P1和P2都導(dǎo)通PMOS串聯(lián)路徑從VDD到Y(jié)完全接通輸出高電平。只要任意一個(gè)輸入為高對(duì)應(yīng)的NMOS就導(dǎo)通把Y拉到GND同時(shí)對(duì)應(yīng)PMOS關(guān)斷串聯(lián)路徑斷開(kāi)輸出低。ABY001010100110與非門(mén)和或非門(mén)搭完之后可以放在一起對(duì)比看一個(gè)的關(guān)鍵在下拉串聯(lián)一個(gè)的關(guān)鍵在上拉串聯(lián)。你親手搭過(guò)一次就能明白為什么CMOS電路設(shè)計(jì)里串聯(lián)管子越多速度越慢因?yàn)榈刃щ娮枋钳B加的。這也是進(jìn)階學(xué)習(xí)時(shí)理解門(mén)延遲的重要起點(diǎn)。3.4 與門(mén)AND和或門(mén)OR組合出來(lái)的基礎(chǔ)門(mén)前面已經(jīng)搭出NAND和NOR那AND和OR就變得非常簡(jiǎn)單在它們輸出端再接一個(gè)非門(mén)就行。與非門(mén)后面接非門(mén)得到與門(mén)或非門(mén)后面接非門(mén)得到或門(mén)。從電路上看就是一個(gè)三級(jí)的邏輯網(wǎng)絡(luò)。以與門(mén)為例輸入A、B先進(jìn)入與非門(mén)得到中間信號(hào)SNAND(A,B)S再進(jìn)入非門(mén)最終輸出YNOT(NAND(A,B))A·B。因?yàn)榉情T(mén)的輸入阻抗高、輸出阻抗低還順便起到隔離和整形的作用所以這種組合方式在實(shí)際電路里很常見(jiàn)。ABANDOR0000010110011111搭建時(shí)有一個(gè)很實(shí)用的做法把前面搭好的與非門(mén)模塊和或非門(mén)模塊當(dāng)作“半成品”不要拆掉直接在輸出端再接一套非門(mén)。這樣一方面驗(yàn)證了邏輯門(mén)的級(jí)聯(lián)思想另一方面也為后面異或門(mén)用多個(gè)與非門(mén)拼接打下基礎(chǔ)。3.5 異或門(mén)XOR最復(fù)雜也最有意思的一個(gè)異或門(mén)的邏輯是“相同為0不同為1”也就是只有A和B不相等時(shí)輸出才為1。它是七個(gè)門(mén)里唯一不能直接用串并聯(lián)結(jié)構(gòu)獨(dú)立完成的基礎(chǔ)門(mén)需要多級(jí)組合來(lái)實(shí)現(xiàn)。適合初學(xué)者的方案是用四個(gè)與非門(mén)拼出來(lái)邏輯表達(dá)式是Y(A NAND (A NAND B)) NAND (B NAND (A NAND B))搭建思路是先用一個(gè)與非門(mén)同時(shí)接收A、B產(chǎn)出一個(gè)中間信號(hào)SNAND(A,B)然后把A和S送進(jìn)第二個(gè)與非門(mén)B和S送進(jìn)第三個(gè)與非門(mén)最后把這兩個(gè)門(mén)的輸出再接進(jìn)第四個(gè)與非門(mén)得到的就是XOR。整個(gè)過(guò)程需要16個(gè)MOS管數(shù)量多但路徑清晰很適合驗(yàn)證邏輯。如果管子夠用還有更省的傳輸門(mén)方案只需要8只管子先用一個(gè)反相器把A變成A再用一個(gè)反相器把B變成B然后通過(guò)兩個(gè)傳輸門(mén)做二選一。傳輸門(mén)本質(zhì)上是一個(gè)NMOS加一個(gè)PMOS并聯(lián)靠控制信號(hào)的高低壓來(lái)通斷信號(hào)。當(dāng)A0時(shí)送入B的信號(hào)通過(guò)第一個(gè)傳輸門(mén)到達(dá)輸出當(dāng)A1時(shí)送入B的信號(hào)通過(guò)第二個(gè)傳輸門(mén)到達(dá)輸出。這不就實(shí)現(xiàn)了Y在A0時(shí)等于B、A1時(shí)等于B嗎正好就是異或邏輯。ABY000011101110我建議第一次嘗試時(shí)用四個(gè)與非門(mén)方案因?yàn)樗玫降亩际悄闱懊嬉呀?jīng)驗(yàn)證過(guò)的模塊好排查問(wèn)題。傳輸門(mén)方案等邏輯驗(yàn)證通過(guò)后再玩理解一下雙向開(kāi)關(guān)的用法。3.6 同或門(mén)XNOR異或門(mén)的“反向?qū)\生”同或門(mén)的邏輯是“相同為1不同為0”正好是異或門(mén)的反相。實(shí)現(xiàn)方式就是在異或門(mén)輸出端再接一個(gè)非門(mén)把XOR的輸出再翻轉(zhuǎn)一次。如果你已經(jīng)搭好異或門(mén)那這個(gè)就屬于白送的功能。ABY001010100111這里有一個(gè)值得思考的細(xì)節(jié)從真值表看同或門(mén)就是異或門(mén)取反但在CMOS集成電路里設(shè)計(jì)者通常會(huì)直接在內(nèi)部搭一個(gè)緊湊的XNOR結(jié)構(gòu)而不是先做XOR再接反相器因?yàn)檫@樣能省管子、省面積。你在面包板上用分立元件做“XOR加NOT”理解的是邏輯關(guān)系芯片內(nèi)部?jī)?yōu)化理解的是工程權(quán)衡。兩個(gè)層面都有價(jià)值。七個(gè)門(mén)全部搭完之后把真值表合在一起看會(huì)發(fā)現(xiàn)門(mén)與門(mén)之間存在非常清晰的規(guī)律與門(mén)取反就是與非門(mén)或門(mén)取反就是或非門(mén)異或門(mén)取反就是同或門(mén)。數(shù)字電路的學(xué)習(xí)本質(zhì)上就是建立這張表的過(guò)程有了表再?gòu)?fù)雜的組合邏輯也能拆解成這些基本單元。4. 實(shí)操實(shí)錄從面包板到第一個(gè)穩(wěn)定輸出4.1 第一步先搭非門(mén)建立信心也建立標(biāo)準(zhǔn)我的建議是永遠(yuǎn)從非門(mén)開(kāi)始因?yàn)樗挥袃芍还茏游宸昼姼愣▍s能把電源、輸入、輸出、測(cè)量這四條線(xiàn)全部走通。上電之前先把VDD和GND兩根電源軌檢查一遍萬(wàn)用表通斷擋確認(rèn)沒(méi)有短路然后用跳線(xiàn)把兩個(gè)撥碼開(kāi)關(guān)的一端分別接VDD另一端接GND中間抽頭作為輸入信號(hào)A。這樣做的好處是輸入高低電平非常明確不會(huì)出現(xiàn)懸空。接著把2N7000插到面包板中間G接輸入AS接GNDD接輸出節(jié)點(diǎn)再把BS250的S接VDDG也接輸入AD接同一個(gè)輸出節(jié)點(diǎn)。輸出端接一個(gè)LED到GND串聯(lián)一個(gè)330Ω到1kΩ的限流電阻。上電以后撥動(dòng)開(kāi)關(guān)輸入低電平時(shí)LED亮輸入高電平時(shí)LED滅非門(mén)邏輯就驗(yàn)證通過(guò)了。測(cè)量的時(shí)候有個(gè)小技巧不要只量LED亮不亮要用萬(wàn)用表量一下輸出節(jié)點(diǎn)的實(shí)際電壓。非門(mén)輸出高時(shí)應(yīng)該接近5V輸出低時(shí)接近0V。如果高電平只有3.8V說(shuō)明PMOS沒(méi)有完全導(dǎo)通或者電源壓降太大如果低電平有1V以上說(shuō)明NMOS導(dǎo)通電阻偏大或者地線(xiàn)接觸不良。用數(shù)據(jù)說(shuō)話(huà)比看燈亮靠譜得多。4.2 第二步拆解與非門(mén)和或非門(mén)的搭建差異非門(mén)驗(yàn)證通過(guò)后開(kāi)始搭與非門(mén)。四個(gè)管子在面包板上的布局建議是兩個(gè)PMOS放在最上面一行緊挨VDD軌兩個(gè)NMOS放在下面緊挨GND軌。輸入A和B分別從左右兩側(cè)送進(jìn)來(lái)這樣導(dǎo)線(xiàn)交叉最少不容易短路。NMOS串聯(lián)部分按前面畫(huà)的路徑來(lái)第一個(gè)NMOS的D接輸出節(jié)點(diǎn)YS接到第二個(gè)NMOS的D第二個(gè)NMOS的S接GND。PMOS并聯(lián)部分兩個(gè)PMOS的S都接VDDD都接同一個(gè)輸出節(jié)點(diǎn)Y。A同時(shí)接P1的G和N1的GB同時(shí)接P2的G和N2的G。接線(xiàn)時(shí)我習(xí)慣用不同顏色的跳線(xiàn)區(qū)分紅色接電源黑色接地黃色接輸入藍(lán)色接輸出這樣排查起來(lái)能省一半時(shí)間?;蚍情T(mén)的接法和與非門(mén)剛好反過(guò)來(lái)PMOS串聯(lián)NMOS并聯(lián)。搭的時(shí)候不要想著“把與非門(mén)的圖翻轉(zhuǎn)一下就行”建議重新對(duì)著電路圖一根一根接因?yàn)槊姘宓奈锢聿季植豢赡苤苯隅R像。我踩過(guò)的坑是搭完或非門(mén)后忘記把PMOS串聯(lián)路徑的中間節(jié)點(diǎn)接對(duì)結(jié)果輸出永遠(yuǎn)高電平。后來(lái)習(xí)慣是每接一根線(xiàn)就在電路圖上劃掉一根保證圖實(shí)一一對(duì)應(yīng)。4.3 第三步異或門(mén)的兩種搭法與實(shí)測(cè)感受異或門(mén)用四個(gè)與非門(mén)方案時(shí)最好先把前面搭好的單個(gè)與非門(mén)當(dāng)作“積木塊”使用。如果面包板面積足夠就保留四個(gè)獨(dú)立的與非門(mén)區(qū)域每個(gè)區(qū)域四只管然后按邏輯表達(dá)式把中間連線(xiàn)接好。連線(xiàn)順序建議從輸入端開(kāi)始先給兩個(gè)原始輸入各接一個(gè)與非門(mén)再把兩個(gè)中間信號(hào)分別接到新的與非門(mén)上最后把兩個(gè)結(jié)果匯入第四個(gè)與非門(mén)。實(shí)測(cè)時(shí)重點(diǎn)驗(yàn)證兩組最容易出錯(cuò)的組合A0、B1時(shí)Y應(yīng)為1A1、B0時(shí)Y也應(yīng)為1。這兩組需要兩級(jí)以上的門(mén)同時(shí)翻轉(zhuǎn)如果出現(xiàn)輸出不定或者電平偏弱多半是中間某個(gè)門(mén)的NMOS下拉和PMOS上拉動(dòng)作不同步。這時(shí)候不要急著改接線(xiàn)先用萬(wàn)用表量中間節(jié)點(diǎn)電壓判斷是哪一級(jí)出了問(wèn)題。傳輸門(mén)方案我后來(lái)也試了一次搭建更清爽兩個(gè)反相器加兩個(gè)傳輸門(mén)總共八只管。傳輸門(mén)的關(guān)鍵是NMOS和PMOS的S和D要相互聯(lián)通一個(gè)管的S接另一個(gè)管的D形成雙向通路控制信號(hào)來(lái)接?xùn)艠O。雖然它比四與非門(mén)方案省管子但對(duì)初學(xué)者來(lái)說(shuō)判斷“什么時(shí)候用A控制、什么時(shí)候用A控制”還是有點(diǎn)繞不如先搭四與非門(mén)來(lái)得踏實(shí)。4.4 用LED和萬(wàn)用表做完整功能驗(yàn)證所有門(mén)都搭完后我習(xí)慣做一個(gè)統(tǒng)一的驗(yàn)證流程先撥動(dòng)輸入開(kāi)關(guān)組合出真值表里的每一種狀態(tài)觀(guān)察對(duì)應(yīng)LED亮滅再拿萬(wàn)用表確認(rèn)輸出電平。輸入狀態(tài)的組合順序建議按00、01、10、11來(lái)也就是先讓A從0變1再讓B從0變1這樣能順便觀(guān)察前一級(jí)變化對(duì)后一級(jí)的影響。如果手頭有雙通道示波器可以把A接到CH1輸出Y接到CH2把A的輸入改成一個(gè)1Hz左右的方波信號(hào)源另一路B用開(kāi)關(guān)設(shè)定高或低。這樣能看到輸出波形的翻轉(zhuǎn)沿能直觀(guān)理解門(mén)的傳播延遲。沒(méi)有示波器也不用糾結(jié)LED加萬(wàn)用表足夠驗(yàn)證所有邏輯正確性。這里再?gòu)?qiáng)調(diào)一遍實(shí)驗(yàn)全程不要讓任何MOS管的柵極懸空。撥碼開(kāi)關(guān)撥到中間位置其實(shí)也算一種懸空狀態(tài)所以最好用那種帶明確高/低檔位的開(kāi)關(guān)或者干脆用跳線(xiàn)帽去插VDD或GND確定性更強(qiáng)。5. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄5.1 故障排查速查表搭建過(guò)程中我整理了遇到過(guò)的問(wèn)題和對(duì)應(yīng)的排查思路整理成一張速查表希望你用不上但收藏好。現(xiàn)象可能原因排查與解決輸出始終為高下拉NMOS不導(dǎo)通檢查NMOS的G是否接對(duì)輸入S是否真的接地用萬(wàn)用表二極管擋確認(rèn)管子類(lèi)型輸出始終為低上拉PMOS不導(dǎo)通檢查PMOS的G是否接對(duì)輸入S是否接VDD確認(rèn)是P溝道管而不是N溝道輸出在2V到3V之間上下管同時(shí)導(dǎo)通或輸入懸空檢查輸入是否懸空測(cè)量?jī)晒躒gs是否都滿(mǎn)足導(dǎo)通條件輸入高時(shí)LED暗NMOS導(dǎo)通電阻偏大Vth過(guò)高的管子不適合5V邏輯換2N7000等邏輯電平管管子燙手VDD到GND直通立刻斷電檢查上下網(wǎng)絡(luò)是否同時(shí)導(dǎo)通排除接線(xiàn)短路邏輯偶發(fā)錯(cuò)亂電源去耦不充分在VDD和GND軌之間加0.1uF陶瓷電容檢查面包板電源軌接觸某只管子換上去就不工作靜電擊穿或腳位判斷錯(cuò)換新管子前先測(cè)G極不要在通電狀態(tài)下插拔管子5.2 靜電防護(hù)和器件保護(hù)MOS管柵極的氧化層非常薄靜電電壓上千伏就能把它擊穿這是實(shí)際工作中常見(jiàn)的情況。雖然2N7000和BS250這類(lèi)小功率管內(nèi)部通常集成了保護(hù)二極管但實(shí)驗(yàn)時(shí)還是要養(yǎng)成好習(xí)慣每次拿起管子之前先摸一下水管或接地金屬把人體靜電放掉管子不從包裝里一次性全倒出來(lái)用一只拿一只焊接或者插拔時(shí)給烙鐵接好地線(xiàn)。還有一種情況要特別注意禁止在電路通電的情況下插拔MOS管。一瞬間的接觸抖動(dòng)可能導(dǎo)致柵極懸空輸出狀態(tài)不可控甚至造成直通短路。穩(wěn)妥的做法是每次改電路前先關(guān)掉電源把輸入都撥到明確的低電平再接好線(xiàn)、檢查無(wú)誤后重新上電。5.3 進(jìn)階現(xiàn)象米勒效應(yīng)、寄生電容和柵極電阻如果只用LED和開(kāi)關(guān)做低速驗(yàn)證你幾乎感覺(jué)不到MOS管開(kāi)關(guān)的速度限制。但只要換成幾十kHz以上的方波信號(hào)立刻能看到輸出波形變得圓潤(rùn)、有延遲這就是柵極寄生電容和米勒效應(yīng)在起作用。柵極與漏極之間有個(gè)很小的寄生電容Cgd開(kāi)關(guān)瞬間輸出端電壓變化會(huì)通過(guò)這個(gè)電容反饋回柵極產(chǎn)生一個(gè)“米勒平臺(tái)”延長(zhǎng)開(kāi)關(guān)時(shí)間。很多MOS管驅(qū)動(dòng)電路里專(zhuān)門(mén)在柵極串一個(gè)小電阻來(lái)抑制這個(gè)效應(yīng)。在邏輯門(mén)實(shí)驗(yàn)里這個(gè)現(xiàn)象不需要刻意解決但理解它有實(shí)際意義為什么單片機(jī)不能直接驅(qū)動(dòng)大功率MOS管為什么驅(qū)動(dòng)芯片都強(qiáng)調(diào)峰值電流本質(zhì)都是要在極短時(shí)間里給柵極電容充放電。你把邏輯門(mén)搭到能工作只是第一步如果能用示波器觀(guān)察到開(kāi)關(guān)沿的斜率再對(duì)比加不加?xùn)艠O電阻的差異那這趟實(shí)驗(yàn)的價(jià)值就直接翻倍了。6. 再往前走一步七個(gè)門(mén)之外還能做什么七個(gè)基本門(mén)全部搭完后可以繼續(xù)挑戰(zhàn)幾個(gè)組合邏輯模塊。比如用四個(gè)與非門(mén)做一個(gè)半加器A和B相加S輸出異或結(jié)果C輸出進(jìn)位這正好用到我們搭過(guò)的異或門(mén)和與門(mén)真值表也現(xiàn)成只有A和B都為1時(shí)進(jìn)位C才為1。這個(gè)實(shí)驗(yàn)?zāi)茏屇阒庇^(guān)看到“運(yùn)算器”的最基礎(chǔ)單元不是魔法就是MOS管的開(kāi)關(guān)網(wǎng)絡(luò)組合而已。還可以嘗試用兩個(gè)與非門(mén)搭一個(gè)RS鎖存器這是最基礎(chǔ)的時(shí)序邏輯單元。把與非門(mén)的輸出交叉反饋到另一個(gè)門(mén)的輸入你會(huì)發(fā)現(xiàn)電路開(kāi)始具備“記憶”能力哪怕把輸入斷開(kāi)輸出狀態(tài)也能保持。這一下就跨出了組合邏輯的范疇進(jìn)入時(shí)序邏輯的大門(mén)而這一切依然只需要前面這四只管子。我個(gè)人在這套實(shí)驗(yàn)里最深的體會(huì)是數(shù)字電路的學(xué)習(xí)如果只停留在真值表和邏輯表達(dá)式層面總有點(diǎn)隔靴搔癢。當(dāng)你親手用MOS管把非門(mén)、與非門(mén)、異或門(mén)一層一層搭起來(lái)之后再看任何芯片的數(shù)據(jù)手冊(cè)、任何復(fù)雜的數(shù)字系統(tǒng)框圖腦子里會(huì)自動(dòng)浮現(xiàn)出管子導(dǎo)通關(guān)斷的畫(huà)面。這種感覺(jué)很難用文字描述但一旦有了就很難再忘記。建議你從非門(mén)開(kāi)始耐心搭完這七個(gè)門(mén)每搭一個(gè)都量一量電壓出問(wèn)題就順著節(jié)點(diǎn)查這套基本功練扎實(shí)了后面無(wú)論是學(xué)單片機(jī)還是學(xué)嵌入式都會(huì)順暢得多。