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

量化、解析度與有效位元數

第 1、2 篇切的是時間軸:取樣夠快、先濾波,就沒有混疊。這篇切的是另一條軸——電壓——把它切成一道有限的數字階梯。來認識 LSB、躲不掉的量化雜訊、SNR 那條俐落的 6.02n + 1.76 dB 規則,以及 ENOB:那個告訴你轉換器標榜的位元裡,到底有幾位是真的的數字。

另一條軸:把電壓切開

前兩篇講的全是時間取樣把訊號切成一張張快照,奈奎斯特定理告訴你,對在場最快的那件東西,每個週期要取超過兩張快照,而抗混疊濾波器在任何高頻能折返、偽裝成低頻(混疊)之前,就把那個承諾強制執行。但在某一瞬間拍下的快照,仍然是一個類比電壓——像 2.71828… 伏特這樣的一個實數。電腦存不了實數。它必須把那個電壓四捨五入到一份有限清單裡的某個值。這第二步,把電壓軸切成一道允許的層級階梯,就是量化,也是本篇的全部主題。

想像一個類比數位轉換器(ADC)的轉移曲線。一條完美筆直的對角線,會把每個輸入電壓都映射到屬於它自己、精確的輸出數字。真實的東西是一道階梯:一整段輸入電壓全映射到同一個輸出碼,接著輸入再爬高一點點,碼就往上跳一階。轉換器永遠在把那道平滑進來的電壓,四捨五入到一道固定階梯最近的那一階上。本篇的功夫,就在於弄懂那些階有多高、四捨五入要你付出什麼代價,以及怎麼把誠實的階數,從行銷的階數裡分辨出來。

解析度:階梯有多細(LSB)

階梯有幾階?這由位元數 n 決定。有 n 位元的轉換器,剛好有 2^n 個相異的輸出碼——8 位元給 256 階,12 位元給 4096 階,16 位元給 65536 階。但碼只是數字;要把它們變成伏特,你得知道整道階梯有多高。那個總高度,滿量程範圍(FSR),由一個電壓參考錨定——一個轉換器信任、當作「刻度頂端」的穩定電壓。以位元計的解析度,與以伏特計的滿量程,是兩件不同的事,在任何碼能代表一個電壓之前,你都得把兩者都釘死。

單獨一階的高度就是最低有效位元,LSB:LSB = FSR / 2^n。這是轉換器所能察覺的、最細的電壓差。具體算算。拿一個跑在 5 V 參考上的轉換器,所以 FSR = 5 V。在 12 位元時,LSB = 5 V / 4096 = 1.22 mV——輸入變動小於這個數,輸出碼就動都不動。掉到 8 位元,階就膨脹到 5 V / 256 = 19.5 mV;爬到 16 位元,又縮到 5 V / 65536 = 76 uV。每多一位元,就把階高砍半——這就是「更高解析度」字面上替你買到的東西。

  bits   levels (2^n)   LSB at 5 V FSR    ideal SNR  (6.02n + 1.76 dB)
  ----   ------------   --------------    -----------------------------
    8        256          19.5 mV            ~50 dB
   10       1024           4.88 mV           ~62 dB
   12       4096           1.22 mV           ~74 dB
   14      16384            305 uV           ~86 dB
   16      65536             76 uV           ~98 dB

   one extra bit  =  half the LSB  =  +6.02 dB of SNR
位元數,對上它所決定的一切。每一列都把上一列的階高砍半,並加上約 6 dB 的訊雜比。最右欄是「最佳情況」,在 SNR 一節推導——真實零件達不到它。

因為 LSB 騎在參考之上,參考的品質就直接落在每一筆讀數上。如果你的 5 V 參考隨溫度悄悄漂到 5.05 V,整道階梯就拉長 1%,每一個轉換後的電壓都錯 1%——再多位元也救不了。這就是為什麼精密系統倚靠一個低漂移的能隙參考,而非生猛的電源軌,也是為什麼一個叫做比例式量測的巧招,會刻意用同一個參考去供電給感測器,好讓任何漂移在比值裡抵消。沒有一個可信賴的滿量程當尺,解析度就毫無意義。

量化雜訊:四捨五入的代價

四捨五入到最近的階,總會留下一個零頭。既然真實的電壓可以落在一階之內的任何地方,四捨五入的誤差最多就是兩個方向各半階:它住在 LSB/2 之負與 LSB/2 之正之間的某處。對一個四處遊走、踩遍整道階梯的真實忙碌訊號,那個誤差會逐一樣本地不可預測地跳動,而對待它最乾淨的方式,就是當作轉換器替你的訊號添了一陣微弱的嘶聲——量化雜訊。它不是某顆晶片的瑕疵;它是用有限多個碼去表示連續電壓,躲不掉的後果。

那陣嘶聲有多響?如果誤差在它那一個 LSB 寬的窗裡均勻地等可能出現,均勻分布的一個標準結果說,它的均方根值是窗寬除以根號十二:量化雜訊均方根 = LSB / sqrt(12),約為 0.29 LSB。(那個 sqrt(12) 不過是一個平坦分布的離散程度——和算骰子標準差是同一套數學。)在我們 12 位元、5 V、LSB = 1.22 mV 的轉換器上,那就是 1.22 mV / 3.46 = 0.35 mV,一份躺在你所量一切之下、無法縮減的雜訊。你在數位域裡濾不掉它;它在你四捨五入的那一刻就被烤了進去。

SNR 與神奇的 6.02n + 1.76

現在我們能把訊號拿來和那陣嘶聲相比,得出轉換器的頭條數字,它的訊雜比(SNR)。用最仁慈的測試訊號——一個擺遍整道階梯的滿量程正弦波。它的峰值是 FSR/2,所以均方根是 (FSR/2) / sqrt(2)。把它除以 LSB / sqrt(12) 的量化雜訊均方根,代入 LSB = FSR / 2^n,FSR 乾淨地約掉,剩下 SNR = 2^n times sqrt(1.5)。以分貝表示,這就塌縮成一條著名的式子:SNR = 6.02 times n + 1.76 dB。

這條俐落的公式值得背下來,因為它一眼就把位元換成分貝。每多一位元就加 6.02 dB——正是先前那個「LSB 砍半」,因為把雜訊砍半就是 +6 dB。一個 12 位元轉換器頂多到 6.02 times 12 + 1.76 = 74 dB;16 位元到 6.02 times 16 + 1.76 = 98 dB;卑微的 8 位元約 50 dB。但把假設大聲唸出來:這是一個理想轉換器、用滿量程正弦波量出來的。餵給它一個只用到一半範圍的訊號,你立刻丟掉 6 dB——整整一位元的有效效能——因為嘶聲固定,你的訊號卻變小了。你沒用到的餘裕,就是你沒得到的解析度。

  1. 找出你真正必須解析的最小變化。比方說一個感測器跨 0 到 5 V(所以 FSR = 5 V),而規格要求你能分辨 1 mV 的階。
  2. 要求 LSB 不大於那個目標:LSB = FSR / 2^n 必須 <= 1 mV,所以 2^n >= 5 V / 1 mV = 5000。既然 2^12 = 4096 太少、2^13 = 8192 才夠,你至少需要 13 位元。
  3. 加上餘裕。你會希望想要的細節坐在雜訊地板之上好幾個 LSB,而不是危危顫顫地立在最後一階上,所以拿一顆 14 或 16 位元的零件,別卡在剛好 13 位元勉強過關。
  4. 拿前端做現實檢查。如果轉換器前面的放大器自己就已添了 2 mV 雜訊,一顆 13 位元(0.6 mV LSB)的零件只是把那份雜訊量得更細。先把類比側修好——買一個比你雜訊地板還小的 LSB 毫無意義。

ENOB:誠實的位元數

最後那一步揭穿了整篇一直繞著打轉的那道鴻溝。6.02n + 1.76 那條線是任何真實零件都碰不到的天花板,因為量化雜訊從來不是唯一的雜訊。轉換器自己的熱雜訊、第 1 篇那個取樣時脈上的時序抖動、當階梯偏離直線時的諧波失真,以及各階高度本身的靜態誤差——以 INLDNL 來描述——全都疊上來。把它們全加起來,你得到量到的 SINAD(訊號對雜訊與失真比)。任何轉換器最誠實的一項規格,就是那個真實 SINAD 對應到幾位元。

把那條神奇公式反過來,你得到的正是它:有效位元數(ENOB)= (SINAD - 1.76) / 6.02。它問一個直白的問題——「一個有這麼多總雜訊的理想轉換器,會是幾位元?」拿一顆行銷稱作 16 位元的晶片,誠實地讀它的規格書,列著 SINAD = 84 dB。那麼 ENOB = (84 - 1.76) / 6.02 = 13.7 位元。你付的是 16 位元,拿到的卻是一顆完美 13.7 位元零件的真實效能;最底下兩位多埋在雜訊與失真裡。你拿來做設計依據的,是 ENOB,不是銘牌。

有一根真正能把解析度買回來的槓桿:過取樣。量化雜訊的功率大致固定,但它平均散布在直到取樣率一半的整個頻帶上。用遠快於所需的速率取樣,再以數位低通與抽取,你就留下全部訊號、丟掉大半的雜訊帶——取樣率每 4 倍,贏得約 6 dB、多一位元。再裝上雜訊整形,把量化雜訊推離你關心的頻帶,每八度的回報就大得多;這個搭配正是一顆 Σ-Δ 轉換器如何拿驚人的速度去換許多安靜位元的方法,也正是第 5 篇要去的地方。