在紙上導線就是導線;在銅箔上它是一個電路
到現在,你已經能把電路板想成一疊銅層,也能照這個階段前幾篇所教的去擺走線、導孔、焊盤與封裝。而餵出這一切的電路圖,畫的是一個理想世界:導線是完美的零歐姆、零延遲連接,接地符號則是一個乾淨俐落的點。銅箔可沒這麼大方。每一公分的走線都是一個串聯的小電阻,而且——一旦訊號跑得快——更要命的是一個小電感。沒人畫過這些零件,它們卻免費焊進了你的板子。這就是本篇反覆翻來覆去的那一個觀念:佈線本身就是一個電路,塞滿了你沒選、卻仍得共處的寄生元件。
這些雜散零件有多大?一個方便的拇指法則:一條典型的訊號走線,每一毫米長度大約帶 1 nH 的電感(確切值取決於線寬,以及它離自己的回流路徑多高,所以把 0.5 到 1 nH/mm 當成正確的數量級);而一個導孔再加上約一奈亨。這聽起來小得好笑——直到某個東西變化得很快。電感兩端的電壓是 V = L times (di/dt);它對抗電流的變化。所以一股在 1 ns 內擺動 0.1 A 的電流,有 di/dt = 0.1 / 10^-9 = 10^8 A/s,而僅僅 10 nH 的走線——大約一段 10 mm 的小跳——就會在自己兩端發展出 V = 10 x 10^-9 times 10^8 = 1 V。整整一伏特的雜訊突波,從一條你篤定是死短路的導線裡憑空變了出來。
每股電流都要走一趟來回——而接地層替它鋪好了回家的路
在佈線裡要養成的最深的習慣是:電流從不單向流動。根據克希荷夫電流定律,每一個沿著訊號走線離開電源的電子,都必須找到路回來。每個連接被遺忘的那一半,就是回流路徑。在電路圖上,所有這些回流都收攏成一個整齊的符號——接地——看起來像一個單一而完美的節點。在板子上,那個「單一節點」是帶著真實阻抗的真實銅箔,而回流電流和訊號一樣不折不扣地真實,自己摸索著回家的路。
要給每一股回流鋪好一條輕鬆的回家路,最乾淨的辦法就是一片接地層:把一整層銅留作一片不被切斷的接地之海,正好坐在你的訊號層底下(這正是第一篇對層疊那麼計較的原因)。如今沒有任何回流需要去找一條細瘦的走線——它有一整片銅的海洋。底下這點會嚇到每個新手:在高頻時,回流電流並不會攤開來走那條筆直的最短路。它緊貼在訊號走線正下方的接地層上,亦步亦趨地映照它的路徑。為什麼?因為那條路圍出的迴路面積最小,而高速電流永遠選阻抗(電感)最小的路,不是電阻最小的路。
GOOD: solid ground plane under the signal
top >---[========= signal trace =========]--->
plane <---[======== return current ========]---<
return mirrors the trace = tiny loop
BAD: a slot cut in the plane (a via row or split)
top >---[===== signal trace =====]------------>
plane <--[==== return ====] SLOT [=== ? ===]--<
\___ detour ___/
return must go AROUND = big loop
= ringing, radiation, crosstalk這就是完整接地層那個沉默的超能力:它替板上每一條走線,同時、自動、不需你動腦地生出一個極小的回流迴路。但你一旦在上面切出一道縫——一排不小心的導孔、一條佈線通道、區塊之間的切割——任何需要跨越的回流都被迫繞著缺口走。迴路暴脹、電感飆升,而跨越缺口的那條走線就變成一根小天線,既輻射、也撿拾雜訊。規則自己就寫好了:絕不要在一個快速訊號的正下方切斷接地層。
迴路面積是那個主控變數
為什麼要對那個迴路的大小這麼執著?因為迴路面積是同時掌管三種麻煩的那一個數字。一個電流迴路就是一個單匝線圈,它的電感隨著它圍出的面積而增大。一個更大的迴路:(1) 在它的磁場裡儲存更多能量,所以它震盪得更兇,也發展出更多我們剛見過的那種 L times di/dt 突波;(2) 更強烈地輻射那個變化的場,把你的板子變成一具小發射機——對電磁相容不利;(3) 撿拾更多外界變化的場,也就是讓一個電路的雜訊跳進另一個電路迴路裡的電感耦合。把迴路縮小,這三件事一起變好。良好佈線的功夫,有一半,就字面意義而言,就是把迴路保持得很小。
同樣這些迴路,正是相鄰走線背著你竊竊私語的途徑。當一個快速訊號的迴路靠近另一條走線的迴路時,它們的磁場與電場耦合,於是其中一個的鬼影就出現在另一個身上——串擾。接地層在這裡也幫上忙:它把每股回流緊緊拉到自己走線的正下方,讓每個迴路又小又私密,於是相鄰訊號彼此分享的場就少得多。在兩條敏感線之間拉一片安靜的接地(甚至只是一條接地的「護線」),就等於給它們的場一個可以收尾、卻不是落在對方身上的去處。
去耦:那座在地水塔,擺在真正管用的地方
你在雜訊那個階段見過去耦電容,它是一台口渴機器旁邊的在地水塔:當一顆晶片突然猛灌電流,從電源過來的那條又長又細的管子就會塌陷,而在地的水塔補上去,讓晶片自己的供電軌絕不下垂。在 PCB 上,這個想法變成一個擺放位置的問題,而在這裡,位置勝過容值。電容只有在「從電容到晶片電源腳、穿過晶片、出接地腳、再回到電容」這一圈迴路很小的時候才幫得上忙——因為正是那個迴路自己的電感,限制了水塔能倒得多快。
把數字放上去。假設一顆邏輯晶片在 1 ns 內抽取 0.1 A 的突波。如果電容透過細瘦的走線坐在 10 mm 外——就算是 8 nH 的迴路電感——供電軌就會下陷 V = L times di/dt = 8 x 10^-9 times 10^8 = 0.8 V。在一顆 3.3 V 的零件上,這是一場電壓驟降,晶片可能讀成亂碼、隨機重置。把同一顆電容移到 1 mm 外,用又短又粗的走線、每個焊盤各拉一個導孔直接下到平面——也許 1 nH——同一個突波只讓電軌下陷 0.1 V。同一顆電容,好上八倍,純粹來自你把它擺在哪裡。這就是為什麼一顆 100 nF 電容該死貼在晶片的電源腳上,而不是停在「板上某處」。
- 把電容擺得離晶片的「電源—接地」腳對越近越好——以毫米計,不是公分。靠近,就是這場遊戲的全部。
- 從電容的焊盤拉出又短又粗的走線,並從每個焊盤各下一個導孔,直接通到電源層與接地層,讓供電迴路小到銅箔所能允許的極限。
- 給每顆電容各自一條通到平面的短路徑;別把好幾顆電容串成一串、共用一條又長的走線,那會給它們全體加上電感。
- 讓容值對上速度:一顆大容量電容(比如 10 uF)應付緩慢、大量的需求,而一顆小小的 100 nF 應付快速的邊緣——並把那顆小而快的擺最近。誠實的提醒:超過自共振頻率之後,電容就不再像電容、反而變得像電感,所以決定真正高頻極限的,是迴路電感,不是印在上面的容值。
同一個接地,卻不是同一條線:分隔回流
一個接地符號承諾它上面的每一點都正好坐在 0 V。銅箔打破了這個承諾。把一股吵雜的回流電流推過一段共用接地銅箔的電阻與電感,遠端相對於近端就不再是 0 V 了——它彈跳。如果一個敏感的類比級和一個忙碌的數位級共用同一片銅,數位回流的擺動就直接騎進類比級的參考準位,污染了它賴以量測的那個零點。這就是雜訊階段講過的共用阻抗接地迴路,如今由銅箔做成。
解藥是不讓吵雜與安靜的回流電流共用同一段銅箔。星形接地把每一級的回流各自分開、繞回到單一個共同點,於是沒有任何一級的電流會流過另一級的路徑。在平面上,比較溫和的版本是分隔:讓類比區保有自己那塊安靜的平面,數位區保有它自己的,兩者由電源或資料轉換器附近的單一一座橋連起來,於是數位回流電流永遠不必橫越類比區才能回家。誠實的提醒——分隔是手術刀,不是榔頭。一道開在錯誤位置的平面縫隙,會逼一股快速回流繞道,反而製造出你原本想避開的那個迴路,常常比讓平面保持完整還糟。對大多數板子而言,一片不被切斷的平面,加上用心的零件擺放,勝過一片切得很聰明的。