有一定經驗的工程師都會發現:旁路電容的容值大多數為0.1uF(100nF),這也是數字電路中最常見的。
那這個值是怎么來的呢?這一節我們就來討論一下這個問題。
前面已經提到過,實際的電容器都有自諧振頻率,考慮到這個因素,作為數字電路旁路電容的容量一般不超過 1uF,當然,容量太小也不行,因為儲存的電荷無法滿足開關切換時瞬間要求的電荷,那旁路電容的容量到底應該至少需要多大呢?我們用最簡單的反相器邏輯芯片(74HC04)實例計算一下就知道了。
實際芯片的每個邏輯門基本結構如下圖所示(以下均來自Philips 74HC04數據手冊)
而每個CMOS反相器的基本結構(具體參考文章【邏輯門(1)】)
每個邏輯非門(Gate)由三個反相器串聯組成(芯片為什么會這樣設計可參考文章“邏輯門”):
CI表示芯片信號引腳的輸入電容(Input capacitance),CL表示輸出負載電容(Output Load capacitance)。對于每一級反相器,后一級反相器的輸入電容CI即作為前一級開關的輸出負載電容,當然,反相器開關本身也會有一定的輸出寄生電容。
它們也包含在CL內,一個邏輯非門(包含三個反相器)的所有等效負載電容就是內部邏輯陣列開關在切換時需要向電源VDD索取能量的來源(換言之,開關切換時需要對這個等效負載電容進行充放電操作),這個邏輯陣列開關等效電容在數據手冊中通常用CPD(power dissipation capacitance per gate)表示
注意:在這個數據手冊中,CPD是一個邏輯非門(Per Gate)的開關等效電容。
在74HC04芯片中,CPD就相當于是CL1、CL2、CL3的等效電容(不一定是簡單的相加),而CL4取決于芯片外接負載。
有人問:這個公式怎么來的?權威么?我書讀得少,不要騙我!數據手冊中有呀。
公式分成了兩個部分,但結構是一模一樣的,前面一部分與我們給出的公式是相同的,表示芯片內部邏輯陣列開關等效負載電容CPD的功耗,而后一部分與芯片外接負載CL有關(也稱之為等效IO開關電容),輸出引腳IO連接有多少個負載,就將相應負載電容CL的功耗全部計算起來。
有人問:輸入電容CI就不計算進去嗎?乖乖,對于芯片輸出引腳連接的負載而言,負載的輸入電容CI就是引腳的等效負載電容CL呀,輸出負載連接(并聯)越多,則等效負載電容CL就越大,消耗的功率也就越大,如下圖所示:
一般而言,CL(CI)值是總是相對容易找到的,數據手冊中通常都會有,因為輸出連接什么負載你肯定是知道的,但CPD卻不一定在數據手冊能查得到,因此,我們在計算芯片的功耗時可能會分為芯片內與芯片外兩個部分。
最基礎的數據計算方法我們已經知道了,有兩種方法可以估算旁路電容的最小容量:
第一種計算方法思路:邏輯陣列開關等效電容(CPD)需要獲取足夠的電荷能量,那芯片的旁路電容的容量必定不能比芯片總CPD更小,通常旁路電容的容量比芯片總CPD大25~100倍,我們稱其為旁路電容倍乘系數(bypass capacitor multiplier,這里取個中間數50)。
由于74HC04包含六個邏輯非門,從數據手冊上也可以查到CPD約為21pF,因此,芯片總CPD應為21pF×6=126pF,再考慮到50倍的旁路電容系數,旁路電容的容量必須要大于126pF×50=6.3nF。
以上計算的是芯片輸出未連接負載的情況,假設反相器后面并接了10個邏輯非門(CMOS門電路的扇出系數一般為20~25),則此時等效電路如下圖所示:
對于門1 來說,此時芯片的輸出負載電容CL=10×CI=10×7pF=70pF,對于整個系統而言,這個CL也可以算是門1的邏輯陣列開關等效電容,因為從圖上可以看出,它消耗的是門1的電源能量(而不是門2~門11),這樣根據上述同樣的算法,門1外接旁路電容的容量至少應為(21pF+70pF)×50=4.55nF。
當然,這只是一個邏輯非門的計算結果,如果芯片中其它5個非門也是同樣的負載連接,則需要的旁路電容容量至少應為4.55nF×6=27.3nF,在考慮到電路設計裕量情況下,我們可以直接選擇100nF的旁路電容。
那功耗PD計算的意義在哪里?前面我們是走了狗屎運,芯片夠簡單,所以數據手冊里提供了CPD的具體值,但更多的應用場合下是沒有辦法直接獲取這個值的,我們看看更大規模集成芯片的情況。
大規模邏輯芯片的旁路電容容量的計算原理也是大體一致的,邏輯陣列開關每秒鐘轉換的次數至少會以百方來計算(MHz),我們以ALTERA公司FPGA CYCLONE IV芯片來計算一下外接負載時負載電容(不包括內部邏輯開關陣列等效電容CPD,為什么?下面會提到)所消耗的功率。
假設IO供電電源電壓VCCIO為3.3V,時鐘頻率為100MHz,負載數量為30個(也就是輸出外接了負載的IO引腳),輸出引腳的平均負載電容為10pF,則旁路電容的容量至少應為:10pF×30×50=15000pF=15nF。
對于FPGA之類的大規模集成芯片,內核電壓VCCINT或IO電壓VCCIO都會有多個,如果計算某一個電源引腳所需的旁路電容的容量,還需要除以這些電源引腳的個數。
不同封裝芯片的VCCIO數量是不一樣的,F256/U256(BGA)封裝有20個,而E144(QFP)封裝只有12個,但是FPGA的VCCIO是按BANK來供電的(就是VCCIO后面帶的那個數字,數字相同表示BANK相同,不了解FPGA的讀者不必深究),不應該直接除了這個總數。
如果這30個連接的負載分布在2個BANK,對于E144封裝每個BANK約有2個VCCIO電源,僅需要除以數量4就行了,因此,單個電源引腳所需要的旁路電容容量應至少約為3.75nF。
我們可以用滅火的水龍頭來理解:當芯片只有一個電源引腳時,相當于滅火的水龍頭只有一個,而芯片有多個電源引腳時,相當于滅火的水龍頭有多個,在火災危害程度相同的情況下,需要滅火的用水量是一定的,因此,對于有多個水龍頭的情形而言,單個水龍頭需要的用水量需求就少了,當然,總的用水量肯定是一樣的,亦即總的旁路電容值是不會變化的。
上面只是計算芯片外接負載時需要的旁路電容容量,那如何計算內部邏輯陣列等效電容呢?沒辦法直接去計算,除非知道具體的CPD的值(前面我們是走運),但是這個值通常是不提供的,因為這個值會隨實際電路邏輯規模的大小與功能而有很大的不同,那就沒有辦法了嗎?NO!
我們可以用測量儀器實際測量出FPGA芯片在具體邏輯功能應用時所消耗的動態功率PD,或使用配套的功耗分析軟件進行功耗的計算,總而言之,芯片邏輯陣開關等效電容的功耗PD的值總是可以獲取出來的,再根據之前的功耗計算公式反推出CPD。
27.8nF已經不小了,再乘上50倍旁路電容的倍數,則旁路電容的總容量至少應為27.8nF×50=1390nF=1.39uF,因此,動態功耗越大的芯片需要在旁邊放置更多的旁路電容就是這個道理。
編輯:jq
-
FPGA
+關注
關注
1629文章
21744瀏覽量
603608 -
芯片
+關注
關注
455文章
50851瀏覽量
423914 -
電容
+關注
關注
100文章
6047瀏覽量
150388 -
反相器
+關注
關注
6文章
311瀏覽量
43340
原文標題:資深硬件工程師也未必知道:0.1uF容量的旁路電容原來是這么來的
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論