JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

去耦:最重要的習慣

第 1 篇追捕的是從外部到來、或從物理深處湧出的雜訊。這一篇談的則是電路自找的雜訊——快速的晶片沿著一條會反抗的導線猛灌電流——以及馴服它的那個一分錢習慣:在每一顆飢餓的晶片旁,放上一座小小的本地水塔,一顆去耦電容。

電源軌不是一座平靜的湖

第 1 篇教過你,雜訊以兩種方式到來:它從你自己元件內部的物理深處湧出——熱、散粒、閃爍——也從吵雜的外部世界爬進來。還有第三個源頭,教科書對它有些難以啟齒,而它往往是其中最大聲的一個:電路常常是它自己最大的敵人。一顆現代的邏輯晶片不會平順地啜飲電流。它是大口猛灌。每一次它的閘切換,數百萬個微小的電晶體同時翻轉,從電源猛地扯下一道突起的電流尖峰,接著安靜下來,接著又猛灌一口——每秒鐘上百萬次。

現在想像餵那顆晶片的那條導線。你會很想相信,電源軌是一座平靜、深不見底的湖,穩穩地停在 3.3 V 或 5 V。它不是。每一公分的走線或導線都帶著一點小小的電感——把它想成管路抗拒改變流速的脾氣,那個討厭被加速或減速的飛輪。當晶片要求一陣突然的湧流,那份電感會抵抗這個改變,於是晶片接腳上的電壓會短暫地下陷;當晶片突然停手,電感又會過衝,於是接腳短暫地尖起。原本平坦的電源軌長出參差的凹陷與鈴振,與數位活動完全同步。

這道毛刺有多大?電感的定律是 V = L times (di/dt)——電壓等於電感乘上電流變化的快慢。取一個普通的 10 nH 走線電感(大約幾公分的電路板走線),加上一顆在輸出切換時於 1 ns 內擺動 100 mA 的晶片。那麼 V = 10 times 10^-9 times (0.1 / 10^-9) = 10 times 10^-9 times 10^8 = 1 V。在一條 3.3 V 的電源軌上,每一道切換邊緣就掉整整一伏。那團髒污接著漏進每一顆共用這條軌的其他晶片,從內部抬高它們實際的雜訊基底。這是自找的,而且大得驚人。

為一台口渴的機器準備一座本地水塔

解法在此,而且簡單到近乎侮辱人。想像一台工廠機器,會猛烈地一陣陣猛灌水,由一條來自遠處水庫的細長管路供水。這條管路送不出突然的湧水——每次機器要喝一大口,機器端的水壓就崩潰一次。所以你不會橫跨整個廠區去鋪一條更粗的管。你會在機器正旁邊栓上一座小水塔。這座水塔從幾吋之外瞬間回應每一次突然的猛灌,接著在兩口之間,從那條長管緩緩地把自己補滿。機器再也感受不到管路的遲滯。

那座水塔就是一顆去耦電容:一顆小電容,直接從晶片的電源接腳接到它的接地接腳,盡你物理上所能地貼近晶片擺放。電容剛好就是一個會抗拒電壓突變的微型可充電電荷水桶——這正是你要的性質。當晶片猛灌,電容從幾毫米之外把它儲存的電荷倒進接腳,在那條又長又有電感的電源軌追上來之前,把本地電壓穩穩地撐住。在兩口之間,電源軌再把電荷一點一滴地補回電容。晶片那道猛烈的電流迴路,如今活在晶片與電容之間一個緊湊的小圈圈裡,根本不必再走那條又長又下陷的管路。

一顆小電容真的存得夠嗎?用電荷 Q = C times V 算一遍。一個常見的去耦值是 100 nF。假設在一次猛灌期間,你只能容忍本地電源軌下陷 0.1 V。電容為了那次下陷所能交出的電荷是 Q = C times dV = 100 times 10^-9 times 0.1 = 10 nC。單一次切換猛灌也許會抽取,譬如 50 mA、持續 5 ns,也就是 Q = I times t = 0.05 times 5 times 10^-9 = 0.25 nC。這個小水桶裝著一次猛灌所需的四十倍——綽綽有餘地撐過這場事件,等電源軌補滿。這就是為什麼一個只值幾分之一分錢的零件,能拯救一顆值好幾美元的晶片。

真實的電容並不只是電容

現在來談類比藏起來的那個誠實部分。一顆真實的電容不是一個純粹的水桶。它的引腳、內部的極板,以及把這一切連起來的走線與接地迴路,全都添上一絲寄生電感——它的等效串聯電感,ESL——外加一點電阻,ESR。所以一顆真實的去耦電容,行為像是一顆理想電容串聯著一顆微小的電感。在某個頻率以下,電容性主導,這個零件是一座漂亮的低阻抗水塔,正如你所盼。在那個頻率以上,寄生電感接管了,這顆「電容」就不再像電容了——它的阻抗隨頻率又開始上升,像一顆電感。

那個轉捩點是自諧振頻率,在那裡電容性與寄生的 ESL 互相抵消,零件的阻抗觸及最低,然後往上爬。它落在 f = 1 / (2 times pi times sqrt(L times C))。對一顆帶著大約 1 nH 之 ESL 的 100 nF 電容,f = 1 / (2 times pi times sqrt(10^-9 times 100 times 10^-9)) ≈ 16 MHz。在 16 MHz 以下,那顆電容是一個很棒的去耦器;遠在它之上,它幾乎沒用——它自己的電感掐住了它本該供應的那道快速電流。一顆較小的 1 nF 電容,帶著同樣的 1 nH,諧振在 160 MHz 附近,所以它能在高出一個數量級的地方繼續工作。

兩個教訓直接從這裡掉出來。第一,那個迴路和電容本身一樣要緊:一顆帶著長引腳和一條繞來繞去回返走線的 100 nF 零件,光是它的接線就可能帶著比它體內更多的電感,毀掉它伸向高頻的能力。把它緊貼接腳擺,用穿過接地層回去的最短路徑。第二,沒有任何單一的值能涵蓋一切。一顆大的儲能電容處理緩慢而沉重的擺動;一顆貼在接腳上的小陶瓷電容處理快速的尖峰;有時兩者並肩而坐。這就是為什麼你那麼常在一顆晶片旁看見一顆 100 nF 和一顆 10 uF 待在一起。

一步步挑選與擺放它們

  distant supply             local decoupling             chip
  (long inductive rail)      (tight, low-loop)

   +V o----vvv--LLLL--------+------------+----------o  Vcc pin
          R_trace L_trace   |            |
                          [10uF]      [100nF]      <-- fast gulp loop
                          bulk        local            stays in here -->
                            |            |
   GND o---------------------+------------+----------o  GND pin
                          (ground plane: short, wide return)

   slow/heavy demand  ->  10uF answers
   fast spike (ns)    ->  100nF answers, loop = chip<->cap only
   trace V = L di/dt  =  10nH x (0.1A / 1ns)  =  1 V dip without the cap
兩顆電容守護一顆晶片。大的 10 uF 應付緩慢而沉重的擺動;本地的 100 nF 坐在接腳上,好讓那道快速的電流迴路永不離開晶片到電容的小圈圈。讓回返路徑穿過接地層、保持短捷。
  1. 給每一顆主動晶片的每一支電源接腳,配上它自己的一顆 100 nF 陶瓷電容,就在接腳上。這是反射動作——不是一顆你逐案推敲的晶片,而是一個你預設套用的習慣。略過它,才是預設的錯誤。
  2. 每一塊板區、或每幾顆晶片,再加上一顆較大的儲能電容,一座大約 10 uF 的蓄水池,來回應那些小電容應付不來、較慢而較重的電流擺動。
  3. 擺放本地電容時,讓它通往晶片的迴路盡可能小:短走線,回返路徑就近經由一個導孔直直落入接地層。迴路面積就是電感,而電感正是這裡的敵人。
  4. 對非常快的邏輯,你或許會並聯一顆更小的電容(1 nF),把低阻抗區帶往上推——但要心知肚明地做:兩個值會在它們各自自諧振點之間的一個反諧振處互相打架,形成一個小小的阻抗隆起。它在一般速度下很少咬人,但它是真的,所以別只是隨手撒上一堆數量級的值然後祈禱。

請注意,這些決定沒有一個只活在電路圖上。電容實際坐在哪裡、它的迴路有多短、它怎麼接進接地層——這些是你在 電路板佈局裡做的選擇,而它們改變電路行為的程度,和零件的值一樣確鑿。一顆在電路圖上畫得正確、卻被擺在離接腳一吋遠、帶著一條細瘦蜿蜒接地回返的 100 nF 電容,就電氣上而言是一顆更差的電容。佈局不是設計周圍的裝飾;佈局就是設計的一部分。

為何它是最重要的習慣

在這整一階的所有技術之中,去耦之所以贏得「最重要的習慣」這個稱號,有一個直白的理由:它所預防的故障,事後診斷起來令人抓狂。一塊去耦薄弱的板子不會乾淨俐落地壞掉。它在工作檯上能跑,接著每小時出一次毛病;它在室溫下過關,接著在房間另一頭的馬達啟動時重置;它的類比讀數帶著一團無法解釋、任何濾波器都除不太乾淨的雜亂。你會燒掉好幾天去追一個其實是電源軌下陷的邏輯臭蟲。那些你在這一切發生之前、靠反射動作擺下的去耦電容,是電子學裡最便宜的保險。

不過,要誠實面對它的極限。去耦是必要的,而非充分的。它救不了一個根本上糟糕的接地——兩級若共用一條長長的回返線,無論你撒上多少電容,它們仍會透過那條線耦合,這正是緊接著的下一篇要說的接地故事。它也安撫不了一個本該在源頭被濾掉或屏蔽掉的雜訊源,那是第 4 篇的主題。而且它救不了一個迴路巨大的佈局:過了一顆電容的自諧振頻率,再多的電容也無濟於事。去耦是第一道、也最可靠的一道防線,但它是分層防禦中的一道,不是一塊魔法橡皮擦。