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

網表、節點與接地

在 SPICE 能模擬任何東西之前,它得先讀懂你的電路——而在每一張漂亮電路圖底下,它看到的只是一份純文字的元件清單,以及這些元件接到哪些點上。這篇要掀開引擎蓋:網表、節點、那個至關重要的參考節點 0,以及把這份小清單變成答案的節點分析法。

把電路寫成文字

上一篇把 SPICE 介紹為一塊虛擬麵包板——一個在你伸手拿烙鐵之前先驗證設計的地方。但這個程式究竟怎麼把你的電路讀進去?不是當成一張圖。在螢幕上每一張整潔電路圖的底下,SPICE 讀的是一段不起眼的純文字,叫做網表——字面意思就是「網路的清單」,幾乎每個元件佔一行。撇開那張多彩的圖,這份清單才是真正的電路,是引擎唯一看得見的東西。

每一行都依循同樣簡單的文法:一個名稱,接著是這個元件連到的節點,再來是一個數值。`R1 in out 10k` 的意思是:一個叫 R1 的電阻,接在名為 `in` 與名為 `out` 的兩個節點之間,阻值 10 kΩ。整個概念就這樣。一整台放大器或電源供應器,不過是一疊像這樣的行。注意少了什麼:SPICE 全然不在乎元件實際擺在哪、電線多長、板子轉向哪邊。它只在乎什麼接到什麼——也就是電路的拓樸,僅此而已。

節點:電線交會的點

節點不過是一個電氣交會點——任何把元件接腳用電線綁在一起的地方。初學者最常絆倒的就在這裡:凡是用單純電線連起來的,在電氣上就是同一個節點,不管圖畫得多麼散漫。在這個理想化的世界裡電線沒有電阻,所以被它連起來的兩點電位完全相同,算作單一個節點。在最簡單的一次執行中,SPICE 的全部工作就是替每個節點找出一個數字:它的電壓

你替每個節點取一個標籤——可以是像 `3` 的數字,或像 `in`、`out`、`vcc` 的好記字詞。標籤只是個把手;模擬器不在乎你叫它 `out` 還是 `node42`,只在乎哪些接腳共用它。而且既然節點電壓正是 SPICE 報告的答案,取個易讀的名字(`base`、`collector`、`vmid`)會讓輸出讀起來是種享受,而不是一堆光禿禿整數的謎題。

有一條規則遲早會咬到每個人:每個節點都需要一條通往接地的直流路徑。如果某個節點只透過電容相連——比方說一個耦合電容的某一極板,別處再無連接——那麼在穩態直流下,模擬器無從固定它的電壓,你就會碰上那個經典錯誤 「node is floating(節點浮接)」「no DC path to ground(沒有通往接地的直流路徑)」。解法通常是接一個大電阻到地,把這個孤兒拴住。這不是 SPICE 在挑剔;真實世界裡這樣的節點同樣會無法預測地漂移。模擬器只是拒絕憑空捏造一個它無法自圓其說的數字。

接地:節點 0,選定的海平面

電壓從來不是絕對的。就像一座山的高度,在你指定一個海平面來量測之前毫無意義,一個節點的電壓在你挑定一個參考點之前也什麼都不是。那個參考點就是接地——我們宣告為恰好 0 V 的那一個節點,整張地圖的零點。把探棒一端接某個節點、另一端接地,你讀到的就是那個節點的電壓;接地是每一次量測裡沉默的夥伴。

在 SPICE 裡,這個參考點有一個保留的名字:節點 0(數字零)。它特殊而且全域——永遠恰好 0 V,整張網表共用,每個電路都必須有一個。要做出一個接地節點,只要把元件接到節點 `0` 就行。關鍵在於:你把哪一個節點封為接地,是一個自由的選擇,而非物理事實:不管你挑哪個,節點之間的差值都維持不變,就像不論你從海平面量還是從谷底量,每座山的形狀都不會變。我們挑最方便的參考點,讓其餘一切都對著它來讀。

讀懂一張真實的網表

我們來讀一張完整、可執行的網表,描述一個你從直流那一階就認識的電路:一個 9 V 電源,餵給一個由 10 kΩ 接 5 kΩ 組成的分壓器。前三節的每一個觀念,都會在這短短五行裡現身。

* --- voltage divider: 9 V across 10k + 5k ---
* element   node+   node-    value
V1          in      0        9
R1          in      out      10k
R2          out     0        5k
.op
.end
一份完整的 SPICE 檔。以 * 開頭的是註解;節點 0 是接地;.op 要求求出直流工作點,.end 結束這個檔案。

一行一行走過。`*` 那幾行是註解,引擎略過,對人卻無比珍貴。`V1 in 0 9` 在節點 `in` 與接地(節點 0)之間放了一個 9 V 電源。`R1 in out 10k` 與 `R2 out 0 5k` 是兩顆分壓電阻,在中間共用節點 `out`。`in` 與 `out` 是我們發明的名字;節點 `0` 則是保留的。`.op` 是一個點命令——一道指令,不是元件——要求求出直流工作點,也就是一切靜止不動時的靜態電壓。最後 `.end` 標出這份檔案的底端。執行它,SPICE 會報告 `out = 3 V`。實務上你很少手打這樣的清單:你會在 LTspice 或 KiCad 這類工具裡畫電路圖,而電路圖擷取軟體會在幕後寫出網表——但懂得讀它,正是讓你能除錯的本事,藉此確認「你畫的」是否真的就是「SPICE 看到的」。

  1. 替你的節點命名,並決定哪一個是接地——那個節點就成為 0。先把拓樸畫個草圖,這樣你才知道哪些接腳共用一個節點。
  2. 每個元件寫一行:它的名稱(第一個字母要對!)、它的兩個節點,然後是它的數值。各行之間的順序對 SPICE 並不重要。
  3. 至少放進一個電源(一行 V 或 I),否則沒有東西去驅動電路,每個電壓都會解成零。
  4. 加上一個點命令,指定你要的分析——現在用 .op 求工作點,後續幾篇會用 .tran 或 .ac——然後以 .end 收尾並執行。

引擎蓋下:從網表到答案

SPICE 怎麼把那份小清單變成電壓?靠的是節點分析法——就是你在直流那一階親手做過的同一套方法,如今由機器以驚人的規模執行。引擎走到每一個節點,套用克希荷夫電流定律:流進的電流必須等於流出的電流,因為電荷不會在交會處堆積。每個元件都貢獻一項,把它的節點電壓與流過它的電流連結起來。每個未知節點疊一條這樣的方程式,你就得到一組線性方程組,電腦把它當成矩陣,一口氣解出來。

看它在分壓器上動起來。只有一個未知數——節點 `out` 的電壓——因為電源把節點 `in` 釘在 9 V,而節點 0 依定義固定在 0 V。在 `out` 套用 KCL:經 R1 抵達的電流等於經 R2 離開的電流:(9 - Vout) / 10k = Vout / 5k。交叉相乘:5000 times (9 - Vout) = 10000 times Vout,於是 45000 = 15000 times Vout,得 Vout = 3 V。這正好就是分壓的捷徑 9 times 5/(10+5) = 3 V——而 SPICE 完全沒走捷徑就抵達了,只靠 KCL 與算術。妙就妙在,同一套機制處理一萬個節點的方式,和處理一個節點一模一樣。

現在你看得出來,為什麼接地是結構上必需的,而非僅僅慣例。N 個節點你只有 N - 1 個未知數,因為把一個節點固定在 0 V,就替整個系統下了錨。拿掉這個參考點,方程組就無解了:每個電壓都可以一起上下浮動任意量,卻依然滿足 KCL,於是不存在唯一答案。這就是為什麼每張網表都必須含有節點 0 的深層原因——少了一個錨,矩陣就是奇異的,SPICE 根本無從解起。

像這樣的純電阻電路,給出的是單一次乾淨的線性求解。一旦你加進電容、電感與電晶體,方程式就變成非線性,必須沿時間一步步推進,那正是收斂與時間步在本階後面贏得自己一篇的地方。三種核心分析(直流、交流、暫態)緊接著來,而決定這些答案是否有意義的元件模型則隨後登場。眼下誠實的結論是:節點分析法讓模擬能廉價地抓出接線失誤與拓樸錯誤,但它那張無瑕的理想化圖,依舊看不見你的佈線——所以模擬是建構與量測的補充,它從不取代它們。