一文講透上下拉電阻
前情提要
本文引用地址:http://2s4d.com/article/202404/457508.htm最近看到一個關(guān)于上下拉電阻的問題,發(fā)現(xiàn)不少人認為上下拉電阻能夠增強驅(qū)動能力。
隨后跟幾個朋友討論了一下,大家一致認為不存在上下拉電阻增強驅(qū)動能力這回事,因為除了OC輸出這類特殊結(jié)構(gòu)外,上下拉電阻就是負載,只會減弱驅(qū)動力。
但很多經(jīng)驗肯定不是空穴來風(fēng),秉承工程師的鉆研精神,我就試著找找這種說法的來源,問題本身很簡單,思考的過程比較有趣~
二極管邏輯
今天已經(jīng)很難看到二極管邏輯電路了,其實用性也不算高,不過因為電路簡單,非常適合用來理解基本概念。
一個最簡單的二極管與門如下圖所示。與門實現(xiàn)邏輯與操作Y=A&B,即A或者B任意為L的時候,輸出Y為L,只有當(dāng)A和B都為H時,Y才為H。
假設(shè)二極管無導(dǎo)通壓降,在這個電路中,二極管充當(dāng)了單向開關(guān)的角色,當(dāng)A和B等于VDD時,兩根二極管反向截至,Y被電阻上拉到VDD,這是Y就是H;當(dāng)A或者B任意一端為GND時,二極管導(dǎo)通,因為二極管導(dǎo)通時電阻很小,遠小于上拉電阻,所以Y被拉到了GND,即邏輯L。
至于二極管或門,只要把二極管轉(zhuǎn)一下,再把電阻從拉到VDD改成拉到GND就可以了,非常簡單。
基本原理
你看,在這么原始的邏輯電路中就已經(jīng)出現(xiàn)了上下拉電阻,這里面的原理也非常簡單粗暴:利用開關(guān)的閉合(電阻為0)和開啟(電阻無窮大)的特性,配合電阻,就可以輕松實現(xiàn)兩種電壓的輸出。
這種電路還有一個變形,就是用恒流源取代電阻,一方面集成電路工藝,恒流源比電阻更容易獲得,另一方面恒流源的驅(qū)動能力也更好。
根據(jù)開關(guān)和電阻(或恒流源)的相對位置,有以下基本電路:即開關(guān)接到GND(L)或開關(guān)接到VDD(H)。
這幾種電路都是由開關(guān)的閉合或開啟決定了VOUT是VDD還是GND。
開關(guān)的相對位置不同,還決定了電路在某一狀態(tài)下的驅(qū)動能力:開關(guān)的導(dǎo)通電阻為0,可視為驅(qū)動力無窮大,可是電阻(或恒流源)的驅(qū)動能力呢,只有VDD/R(或者恒流I),這就導(dǎo)致了電路在輸出H或L的時候驅(qū)動能力不對稱(換一個說法,就是電路在輸出H或者L的時候,輸出阻抗不一樣)。
除了驅(qū)動能力的問題,這種單開關(guān)加電阻的模式還會帶來靜態(tài)功耗的問題,因為只要開關(guān)閉合,不管外部有沒有負載,都會消耗電流。
既然開關(guān)的驅(qū)動力比電阻強,那么能不能把電阻也換成開關(guān)?恭喜你,發(fā)現(xiàn)了現(xiàn)代CMOS邏輯電路的基本單元:倆互補的開關(guān)。這樣不管輸出H還是輸出L,驅(qū)動能力都是無窮大!好的,這時候上下拉電阻就不見了。
這樣兩個開關(guān)的電路還多出來了一種狀態(tài):當(dāng)兩個開關(guān)都開啟時,VOUT即不是VDD也不是GND,而是一個懸空的狀態(tài)(即高阻態(tài),Hi-Z),這時候外部給什么信號它就是什么狀態(tài)。這樣又出現(xiàn)了一個新的邏輯門大類:三態(tài)邏輯門。
上下拉電阻增強驅(qū)動能力?
很多經(jīng)驗不是空穴來風(fēng),只是在流傳的過程中丟失了重要的前提條件。上一節(jié)也看到了有一些邏輯器件,他們輸出高和輸出低時的驅(qū)動能力差別很大。
TTL(70xx、74Fxx、74Sxx、74LSxx等)家族的器件就屬于這種類型,如下圖是7404(TTL反相器)的原理圖,由于非對稱的輸出級設(shè)計,輸出為高時驅(qū)動能力只有0.4mA,而輸出低時居然能輸出16mA的電流(手冊中的輸出電流不是晶體管或者電路本身的極限,而是超過這個電流以后,輸出的電壓可能無法滿足邏輯族的要求)。
這個時候在輸出端口外加一個上拉電阻,就可等效以增強端口在輸出H時的驅(qū)動能力,但代價是端口輸出L時,驅(qū)動能力相應(yīng)地減弱,不過這時候芯片輸出能力足夠強,用這點代價來換取另一個狀態(tài)下驅(qū)動能力的增強,還是劃算。
下表是仿真有無上拉電阻時,負載電流與輸出電壓的關(guān)系,可以看到上拉電阻確實增強了在一定負載下的輸出電壓,不過當(dāng)負載電流較大時效果并不明顯,而且邊際效應(yīng)也很顯著,當(dāng)上拉電阻減小到一定程度以后,增強效果也不太顯著,而且會大大增加靜態(tài)功耗。
既然非對稱的輸出級有這樣的問題,那為啥不能把這個驅(qū)動器設(shè)計成上下對稱的呢?
一方面,如果要設(shè)計成上下對稱的結(jié)構(gòu),上管需要用P管,而當(dāng)時的工藝限制,P管各方面性能都不如N管,速度、功耗和成本都不是很劃算,所以能看到很多上年代的芯片,內(nèi)部幾乎沒有P管(包括MOS工藝的器件也是)。
另一方面,TTL輸入結(jié)構(gòu)的特點,輸入為H時所需電流很小,而輸入為L所需的輸入電流很大,這樣對輸出L時的驅(qū)動能力要求就很高,反而對輸出H時沒有驅(qū)動能力要求(TTL輸入懸空時等效為H)。
但TTL的這種特點,又會帶來一個比較麻煩的問題:下拉電阻值需要很大才能滿足要求,而下拉電阻太大則會導(dǎo)致輸出高時負載太重以至于無法達到規(guī)定電壓,所以TTL要盡量避免使用下拉。
下圖是仿真結(jié)果,因為這是一個反相器,所以下拉時輸出高是所期望的,而下拉電阻超過1.8kΩ時已經(jīng)無法滿足TTL定義的最低高電平標(biāo)準(zhǔn)了;而上拉時,就算上拉電阻達到20kΩ,也絲毫不影響輸出。
CMOS電路
相信現(xiàn)在已經(jīng)沒多少人會在設(shè)計時選用TTL家族的器件了,可能多數(shù)人都沒接觸過這類器件,最常用的還是CMOS家族(HC、HCT、LVC、CD4000等)。
CMOS家族的東西就比較簡單粗暴,上下對稱的結(jié)構(gòu),上下管驅(qū)動能力也基本一致,這個時候輸出的上下拉電阻對增強驅(qū)動能力幾乎沒有幫助不說,還加重了負載,屬于得不償失(其實多數(shù)情況下是無關(guān)痛癢)。
下圖是基本的CMOS反相器,只需要一對互補的MOS管即可實現(xiàn)(現(xiàn)實中的CMOS反相器一般是三對這種管子級聯(lián)出來的,為了提高開環(huán)增益)。
但是CMOS器件的輸入懸空時,不會被拉向任何一個方向,處于一種浮空的狀態(tài),這樣會造成輸出紊亂,不是我們所希望的結(jié)果,這種情況下需要在輸入端接入上拉或者下拉電阻給電路提供一個確定的狀態(tài)。
一般可拔插的對外接口(如JTAG)需要在I/O上加上上下拉電阻,有三態(tài)的總線視工作情況也可能需要上下拉,不過大多數(shù)的CMOS電路不需要額外的上下拉電阻。
因為CMOS輸入是電壓控制型,輸入阻抗很高,所以上下拉電阻的值可以很大,理論上用MΩ級別的電阻都沒問題。
不過理論歸理論,工程師得認清現(xiàn)實?,F(xiàn)實的CMOS輸入結(jié)構(gòu),為了保護MOS管的柵極,會在柵極上加入ESD二極管,二極管反向偏置的時候是有漏電流的,還會隨溫度的升高還會指數(shù)增長!
所以CMOS電路的上下拉電阻一般在100kΩ以下,一些制程比較先進的CPU,I/O口的漏電流或者上下拉電流較大,上下拉電阻一般取在幾kΩ級別。所以設(shè)計上下拉電阻前一定要仔細閱讀芯片手冊,查查I/O的輸入電流,看看取什么樣的電阻值才合理。
其他需要上下拉的情況
開集(Open-Collector)和開漏(Open-Drain)的輸出結(jié)構(gòu)往往也需要加上拉電阻。OC和OD輸出結(jié)構(gòu)只有下管,所以只能輸出L和高阻(Hi-Z)兩種狀態(tài),而高阻態(tài)是難以被電路識別的,所以需要合適的上拉電阻把高阻態(tài)轉(zhuǎn)變?yōu)楦邞B(tài)。
雖然OC和OD輸出結(jié)構(gòu)看起來很復(fù)古,使用時也需要外接電阻有點麻煩,但這種結(jié)構(gòu)最大的好處就是可以做線與,也就是多個OC或者OD可以接到一起,只要其中一個輸出L,總線就是L,這在多外設(shè)中斷和電源時序控制方面很常用。
I2C也是OC/OD結(jié)構(gòu),這樣很輕松就能在一條數(shù)據(jù)線上雙向傳輸數(shù)據(jù)而不需要額外的方向控制信號,而CAN總線則巧妙地利用線與特性來實現(xiàn)總線仲裁。
在處理OC或者OD電路的時候,一定要注意評估總線負載電容、上拉電阻與所需速度的關(guān)系,負載電容越大,速度越快,所需的上拉電阻要越小。
比如I2C總線,如果只掛載了一片從設(shè)備,使用4.75kΩ的上拉電阻可能就滿足400kHz的總線要求了,但如果掛了10片從設(shè)備呢,1kΩ的上拉電阻也不一定能搞定100kHz的總線速度,這種時候可能得考慮總線負載隔離或者降低總線速度了。
下圖是在200pF負載電容情況下,上拉電阻為500Ω、1kΩ、2kΩ、4.75kΩ和10kΩ下的波形,可以看到上拉電阻越大,對電容充電速度越慢,所以上升沿也越慢,當(dāng)上拉電阻不合適時上升沿已經(jīng)嚴重變形,無法保證正常工作。
冷知識
邏輯反相器可以當(dāng)成放大器來用!不是開玩笑,我還真見過產(chǎn)品上用這種騷操作的,只需要把反相器接成反向放大器就可以了,不過邏輯器件當(dāng)線性器件用,性能嘛...
評論