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

回授與穩定性

你將來搭建的幾乎每一個精密類比電路,都是靠負回授撐起來的——正是這個技巧,把鬆垮、隨溫度漂移、參數大起大落的電晶體,變成了你真正信得過的放大器。但回授是要付代價的:那個為你換來精度的迴路,一不小心就可能開始振鈴,甚至振盪。這是本課程的數學高峰。我們會把迴路增益、1/beta 定律、極點與相位裕度、頻率補償和轉動率一個個講清楚——永遠是先講直覺,再上數字。

為什麼類比世界由回授說了算

先說一個關於類比元件的難堪真相:它們糟透了。一個裸的共源級,今天增益可能是 40,明天就變成 80,會隨溫度、電源電壓、以及矽晶片出 fab 時那場隨機抽獎而漂移。單個電晶體的本徵增益 gm*ro 很大,卻極不精確。如果你只想著挑一個『增益差不多對』的電晶體來搭精密放大器,必敗無疑——你實際拿到的增益會上下浮動到兩倍之多。

負回授就是那條逃生通道。一句話概括它的思路:測量自己的輸出,拿它跟你想要的值比一比,再把誤差回授回去自我糾正。把電晶體的裸增益拉到要多高有多高——鬆垮也好、漂移也罷、隨它去——然後在它外面套一個迴路,這個迴路不停地說『你有點偏高,退一點』或『你有點偏低,再使勁』。令人驚嘆的回報是:閉迴路行為不再依賴那個糟糕的電晶體,而幾乎完全取決於兩個電阻的比值(或電容比值)——這些元件你*能夠*在晶片上匹配到零點幾個百分點的精度。

可以把它想成開車。引擎(裸增益)動力強勁卻很粗糙——你絕不會把油門固定在某個精確位置,然後就信任汽車自己保持在車道裡。相反,你會*盯著車道*,不停地微調方向盤。你的眼睛就是回授。汽車的精準不是來自一台完美的引擎,而是來自套在一台不完美引擎外面的糾正迴路。負回授對電壓和電流做的正是這件事。

負回授與迴路增益

我們給各個部件起個名字。把放大器裸的開迴路增益叫做 A(很大——也許 10,000 或 100,000)。輸出的一部分 beta 被回授回去,並從輸入中減掉。乘積 **T = A*beta 是整個迴路裡最重要的一個數字;我們稱之為迴路增益**。直觀地說,它就是*迴路自我糾正的力道有多猛*——那句『你跑偏了,快修正』的喊話,比起引發它的誤差,到底響了多少倍。

A_closed = A / (1 + A*beta)
; when loop gain T = A*beta >> 1:
A_closed  ~=  1 / beta
閉迴路增益。當迴路增益 A*beta 很大時,那個亂糟糟的 A 在分子分母裡互相抵消,閉迴路增益便坍縮為 1/beta——完全由你掌控的回授網路決定。

盯著這個結果多看幾眼,因為它就是全部的要害。當 **T = A*beta 很大時,閉迴路增益就簡單地變成 1/beta。那個反覆無常的 A 消失了。如果 beta 是由兩個匹配電阻構成的分壓器,那麼你放大器的增益此刻就是一個電阻比值——穩定到零點幾個百分點,A 翻倍還是減半都無所謂。我們沒有把 A 做好;我們是讓電路不在乎** A。

迴路增益還告訴你這個近似到底*有多準*。閉迴路增益並不正好等於 1/beta——它會差出大約 1/T 的相對誤差。所以迴路增益為 1,000(60 dB)時,大致能給你 0.1% 的增益精度;迴路增益為 100 時,約為 1%。迴路增益越大,意味著精度越高、線性越好、對各種擾動的抑制也越強。這就是為什麼類比設計師對增益永遠飢渴:每一分貝迴路增益,都是存進銀行的精度。

代價:穩定性

假如回授是免費的,那每個放大器都能有無窮大的迴路增益,咱們就可以收工回家了。問題出在時間上。『把輸出回授回輸入』這句話,悄悄假設了輸出會*瞬間*響應。可它並不會。每一級都有需要時間去充電的電容,所以回授回來的信號總會晚到一點——既有延遲,相位也被移動了。

一點小延遲沒什麼害處。但接下來是噩夢場景。負回授之所以管用,是因為回授回來的信號反相 180 度——它做減法、它對抗、它糾正。現在假設在某個頻率上,電路自身的種種延遲又額外攢出了 180 度相移。把這一份加到原本有意為之的 180 度上,就得到 360 度——而 360 度跟 0 度是一回事。你的負回授悄無聲息地變成了正回授。此刻那個『糾正』不再對抗誤差,反而在助長誤差。

所以回授的代價,是不穩定這把始終懸著的劍。你為了精度而堆上去的迴路增益越多、為了那份增益而級聯的級數越多,累積的相移就越大——你也就越靠近那道 360 度的懸崖。接下來要講的補償之道,正是在盡量保住更多迴路增益的同時,讓自己穩穩退在懸崖邊之外的藝術。精度與穩定性彼此向相反方向拉扯;設計,就是在二者之間談成的那紙停戰協議。

極點與相位裕度

要管好穩定性,我們得把『在哪個頻率、有多少相移』這件事說具體。信號路徑裡每一個 RC 時間常數都會產生一個極點:在這個頻率以上,增益以每十倍頻程 20 dB 的速率滾降,信號也開始累積相位滯後,每個極點漸近地貢獻 90 度。單獨一個極點最多只能讓你損失 90 度——它自己是安全的。麻煩從*第二個*極點的相位滯後疊加到第一個之上時開始,把總相移一步步推向那致命的額外 180 度。

衡量你這道安全緩衝的乾淨辦法,是 [[phase-margin|相位裕度]]。先找到迴路增益 |T| 正好掉到 1(0 dB) 的那個頻率——這就是交越頻率或單位增益頻率,是迴路還能維持信號的最後一個頻率。然後讀出迴路在這個頻率上有多少相移。相位裕度就是你在撞上 180 度之前還剩多少度相位

phase_margin = 180 deg + angle(T)   evaluated at the frequency where |T| = 1

; PM >= 60 deg  ->  smooth, well-damped, no ringing   (the design target)
; PM ~  45 deg  ->  acceptable, mild overshoot/ringing
; PM ->  0  deg  ->  on the verge of oscillation
相位裕度就是單位迴路增益處剩下的那點相位——是迴路回授翻成正回授之前的緩衝。大多數放大器把目標定在 60 度;低於約 45 度,階躍響應就會振鈴,到 0 度就振盪了。

對這個數字的直覺:相位裕度就是你這個回授迴路的阻尼,跟汽車的減震器一模一樣。相位裕度大(60 度及以上)就是阻尼充足——拿一個階躍去打它,輸出會乾淨俐落地升到目標值。相位裕度寒酸(低於 45 度)就是欠阻尼——輸出會過衝並振鈴,在目標值上下來回彈跳幾下才安定下來,就像減震器磨壞了的車壓過一個坎。零相位裕度意味著完全沒有阻尼:它會永遠振鈴下去。那就是一台振盪器。

頻率補償

於是你測了自己的迴路,相位裕度是嚇人的 20 度——它振鈴,甚至直接振盪。解藥是 [[frequency-compensation|頻率補償]]:刻意重新塑造迴路的增益-頻率曲線,讓 |T| *在你還剩有舒服的相位餘量時*就穿過 1。你並沒有在增加正確性;你是在贖回穩定性,而且通常要拿一些頻寬去換。

最常用的主力技術是主極點補償(dominant-pole compensation)。訣竅在於:挑出一個極點,故意把它的頻率推得*很低*——低到光靠這一個極點,增益就已經一路滾降到 1,趕在其他那些更快的極點有機會添上各自的相位滯後*之前*。如果在交越頻率處只有一個極點在起作用,那麼最壞情況的相位滯後也不過 90 度,留給你一份闊氣的約 90 度相位裕度。你拿頻寬(迴路如今變慢了)換來了堅如磐石的穩定性。

在晶片上,製造那個主極點的優雅辦法是米勒效應(Miller effect)。把一個小小的補償電容 Cc 跨接在一個高增益反相級兩端,從輸入端看過去,這一級自身的增益會把電容的等效大小*放大*約 (1 + 增益) 倍。一個區區 2 pF 的電容就能表現得像幾百 pF,把主極點大幅往下拽,卻幾乎不佔晶片面積。額外的好處是,米勒補償還會劈開極點(splits the poles)——它把主極點往下拉的*同時*,把次極點往上推,拓寬了二者之間的安全間隔。這就是為什麼你日後碰到的幾乎每一個兩級 op-amp 裡頭,都藏著一個米勒電容。

.ac dec 100 1 1G      ; sweep frequency, plot loop gain & phase
; read GBW (where |T| crosses 0 dB) and the phase there:
GBW ~= gm1 / (2*pi*Cc)   ; bigger Cc  ->  lower GBW, more phase margin
在 SPICE 裡,.ac 掃頻正是你實際測量迴路穩定性的手段:找到 0 dB 交越點,讀出那裡的相位裕度。對於一個米勒補償的 op-amp,[[gain-bandwidth-product|增益頻寬積]]由輸入 gm 除以補償電容決定——加大 Cc 就是拿頻寬去換裕度。

轉動率:大信號下的極限

到目前為止的一切——極點、相位裕度、GBW——都活在小信號的世界裡,在那裡我們假設放大器表現得是線性的,擺動幅度很小。但只要你讓一個 op-amp 去做一次*大幅度*的快速跳變,一個截然不同、毫不留情的極限就會接管:[[slew-rate|轉動率]],也就是輸出電壓所能變化的最大速率,單位是伏每微秒。

它的成因簡單得讓人愉快,而且很物理。要讓輸出動起來,放大器必須給那個補償電容 Cc 充電或放電,而它能用來幹這件事的,只有輸入級所能提供的那點有限的尾電流。當輸入階躍很大時,輸入差動對會把它全部的尾電流一股腦灌進 Cc——它滿負荷、完全偏向一側、再也不待在自己那溫柔的線性區裡了。於是輸出以一個恆定速率爬升,這個速率由『可用電流除以電容』決定:

slew_rate = I_tail / Cc          ; volts per second, large-signal limit

; small-signal speed (different beast):
GBW = gm / (2*pi*Cc),   gm = 2*I_d / V_ov
; -> SR = (I_tail / Cc) is set by CURRENT;
;    GBW is set by gm. You can have great GBW and lousy slew rate.
轉動率就是 I/C——一個由多大電流能給補償電容充電所決定的大信號極限。它和小信號頻寬(GBW)是兩個不同的極限,二者並不同步變化。

這裡有個能讓人少踩坑的心智模型:頻寬是你對一句耳語能反應多快;轉動率是你對一聲大喊能反應多快。一隻擴音喇叭也許能忠實重現一段輕聲細語(小信號頻寬很好),卻會把一聲突如其來的大喊徹底搞糊,因為它沒法那麼快地推動空氣(受轉動率限制)。在轉動過程中,放大器*根本不是*一個線性系統——回授實際上變成了開迴路,直到輸出追上為止,而你精心設計的那條乾淨的指數建立曲線,會退化成一條難看的直線斜坡。