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

從波形到位元:取樣與數位調變

麥克風產生的是平滑、起伏的電壓——然而你的通話卻以一連串的 1 與 0 環遊世界。連續的波形如何變成位元流?這些位元又如何搭上無線電載波橫越房間?在這一階,我們要跨越從類比到數位的橋樑:取樣、量化,以及把位元印在正弦波上的三種經典方法。讀完後,你將親手把一段位元樣式編成 BPSK,並明白為何數位鏈路能甩開那些會慢慢毀掉類比鏈路的雜訊。

沒人看見的那座橋

對著手機說話,一片薄膜跟著震動,推出一個電壓,精確描摹你聲音的形狀——一條平滑、連續、毫無斷裂的曲線。但離開天線的無線電波卻完全不帶曲線,它帶的是位元:一連串永不停歇的 1 與 0。在那支手機裡,藏著一座橋:把起伏的波形變成往外送的位元,再把回來的位元變回起伏的波形。這座橋是現代通訊最重要的一個觀念,一旦看見就再也回不去——它正是為什麼一張五十年的黑膠唱片每播一次就更難聽,而你串流過一千遍的歌,聽起來卻和母帶定稿那天一模一樣。

在第 2 階,我們靠輕輕扭曲類比載波來傳送語音——AM 是拉伸它的振幅,FM 是推動它的頻率。這很優雅,但有一個致命缺陷,我們稍後就會碰到。這一階是整條軌道的樞紐:從這裡開始,一切都是數位的。所以我們要依序回答兩個問題。第一,我們如何誠實地把連續波形捕捉成一串有限的數字?那就是[[sampling|取樣]][[quantization|量化]]。第二,我們如何把這些數字——也就是位元——放上一個真正能發射出去的無線電波?那就是[[ee-digital-modulation|數位調變]]

取樣:把波形凍結在時間裡

想像你在拍一個轉動中的腳踏車輪。你不會記錄每一瞬間——而是每隔幾分之一秒拍一張照片,眼睛則自動補上影格之間的動作。取樣對電壓做的正是這件事:一個電路在完全均勻的時刻伸手出去,抓住波形那一瞬間的高度,其餘的全部丟棄。結果是一排數字,彼此間隔一個取樣週期 Ts。每秒做 44,100 次(CD 音質),你就把一條無限細緻的曲線縮成每秒 44,100 個數字——一份電腦能儲存、複製、運算的清單。

但這裡有個陷阱,而且正是讓老電影裡馬車輪看起來倒轉的那個陷阱。如果你拍輪子拍得太慢,一個快速的正轉看起來會像緩慢的倒轉——你的取樣是誠實的,但它們同時也符合錯的運動。在訊號上,這叫做[[ee-aliasing|混疊]],解藥就是你在「訊號與系統」學過的奈奎斯特—夏農取樣定理:要捕捉一個最高頻率為 fmax 的訊號,你的取樣速率必須高於 2·fmax。人耳上限約在 20 kHz,所以 CD 音質以 44.1 kHz 取樣——舒服地高過 40 kHz,還留一點餘裕讓抗混疊濾波器發揮作用。

量化:四捨五入到價目表

取樣搞定了時間軸——我們現在只在整齊的時刻才有數值。但每個捕捉到的值仍是個帶著無窮小數的實數,而沒有任何電腦能存下無窮小數。[[quantization|量化]]把每個取樣對齊到一把固定階梯上最接近的那一階,就像商店把每個價格四捨五入到最近的分。用 N 個位元你得到 2^N 階:8 位元給你 256 階,16 位元給你 65,536 階。四捨五入造成的縫隙是無法避免的誤差——量化雜訊——它替品質設下一個硬天花板,用訊號雜訊比來衡量。

Analog wave        Sample (time grid)      Quantize (level grid)
  ___                  o                        o-> 110
 /   \               o   o                    o   o-> 101
|     |    ==>      o     o      ==>          o     o
 |   |             o       o                o       o-> 011
  \_/            o           o            o           o-> 001
  (smooth)      |---Ts---|                snap each to nearest level

  Each kept value -> nearest of 2^N rungs -> N-bit number
  3-bit ladder shown:  000 001 010 011 100 101 110 111  (8 levels)
取樣在時間格點上挑值;量化把每個值四捨五入到階位格點,產出位元。

有一條漂亮又簡單的拇指法則,每個音訊與儀器工程師都記在腦裡:每多一個量化位元,大約替你買到 6 dB 的 SNR。對一個滿刻度正弦波,完整公式是 SNR ≈ 6.02·N + 1.76 dB。所以 16 位元的 CD 音質達到約 6.02·16 + 1.76 ≈ 98 dB——意思是最大聲的音量比那層四捨五入的嘶聲強約 80,000 倍,遠遠超出你耳朵能察覺的範圍。現代錄音室轉換器用 24 位元,不是因為你聽得出差別,而是為了在混音時留下充裕的餘裕。

為何數位致勝:再生勝過累積

現在回到類比那個致命缺陷。想像影印一張影印的影印本。每印一次就多一點模糊,而這些模糊永不消失——它們一層層堆疊,直到整頁糊成一團。一個類比訊號沿著長纜線傳遞正是如此:每一公里都加進一絲雜訊,每一個放大器把訊號連同累積的雜訊一起放大,而你根本無法把原本的波形和騎在上面的雜訊分開。跳接夠多次之後,聲音就被埋掉了。

數位玩的是完全不同的遊戲。一個位元永遠只會是 1 或 0,所以接收端不必重現任何形狀——它只需要判定送來的是兩個符元中的哪一個。只要雜訊小到 1 看起來仍然比較像 1 而不像 0,接收端就輸出一個全新、完美的 1——所有雜訊的痕跡都被抹除。這個清乾淨再重送的動作叫做再生,正因如此,一串數位中繼器能橫跨整片海洋而毫無累積劣化,而同樣長度的類比鏈路抵達時只會是一片嘶聲。

ANALOG repeater chain (noise ACCUMULATES):
  clean ~~~~> +noise ~~~> amp(sig+noise) ~~~> +noise ~~~> amp ... = MUSH

DIGITAL repeater chain (noise is ERASED each hop):
  1 0 1 1 --noisy--> [decide >threshold?] --> 1 0 1 1 (perfect) --noisy--> [decide] --> 1 0 1 1
        ^ as long as noise < half the gap between levels, output is flawless
類比中繼器永遠累加雜訊;數位中繼器重新判定後送出全新乾淨的位元。

把位元印上載波:ASK、FSK、PSK

我們手上有一條位元的河流;現在得把它們當無線電發射出去。一個正弦載波恰好只有三個旋鈕能轉——振幅、頻率、相位——每一個給出一族[[ee-digital-modulation|數位調變]]。轉振幅,得到 ASK(振幅鍵移):1 是強脈衝、0 是靜默(或弱脈衝)——摩斯電碼就是它的曾祖父。轉頻率,得到 FSK(頻率鍵移):1 是一個音、0 是另一個音——老式撥接數據機那聲尖叫,就是你真的聽得見的 FSK。轉相位,得到 PSK(相位鍵移):載波的振幅和頻率穩如磐石,但它會突然翻轉相位,藉此表示不同的位元。

Bit stream:    1     0     1     1

ASK  ampl.   /\/\  ____  /\/\  /\/\     strong = 1, off = 0

FSK  freq.   /\/\  /\/\/ /\/\  /\/\     fast tone = 1, slow tone = 0
             (hi)  (lo)  (hi)  (hi)

PSK  phase   /\/\  \/\/  /\/\  /\/\     phase flips 180 deg on a 0
             0deg  180   0deg  0deg     (same amplitude throughout)
同樣的四個位元,用三種方式鍵入載波:振幅、頻率或相位。

為什麼 PSK 是現代鏈路的主力?因為振幅正是雜訊最容易破壞的性質——一場雷雨或一道衰落的多路徑回波會重創訊號強度,卻幾乎不影響波形何時穿過零點。把資訊藏在相位裡,PSK 就能穿越那些會讓 ASK 癱瘓的振幅亂流。工程師用星座圖來想像 PSK:一張二維地圖,每個可能的符元是一個點,它的角度代表相位、它到原點的距離代表振幅。點與點離得越遠,鏈路在接收端把一個誤認成它鄰居之前,能容忍的雜訊就越多。

BPSK constellation (1 bit/symbol)     QPSK constellation (2 bits/symbol)
        Q                                      Q
        |                                   01  |  00
  o-----+-----o   bit0      ->            o     |     o
  1     |     0                       ----+-----+-----+---- I
        |                                 o     |     o
      I axis                             11     |  10
   two phases: 0deg and 180deg          four phases: 45,135,225,315 deg
BPSK 在一條線上擺兩個點(各 1 位元);QPSK 在一個圓上擺四個點(各 2 位元)。

符元與位元之分,以及一個 BPSK 實作範例

這裡有個幾乎所有人一開始都會絆倒的區分。一個位元是一單位的資訊——單一個 1 或 0。一個符元則是載波被傳送出去的一種狀態,維持一個符元週期。兩者並不相同!在 BPSK 裡,每個符元剛好載一個位元,所以符元和位元步調一致。但在 QPSK 裡有四種不同相位,所以每個符元載個位元;在 16-QAM 裡,16 種狀態的每一個載個位元。每符元塞進越多位元,你就能在相同頻寬內傳得更快——但星座圖上的點也擠得更近,於是你需要更乾淨的通道(更高的 SNR)才能把它們分開。這個取捨——每符元位元數對上雜訊容忍度——正是有史以來每一台數據機核心的那筆交易。

我們親手把一段真實的位元樣式編成 BPSK。這道食譜是所有調變裡最簡單的:讓載波的振幅和頻率固定,再依位元選擇它的相位。我們採用常見約定 位元 1 → 0° 相位位元 0 → 180° 相位。180° 翻轉在數學上不過就是把載波乘以 −1,所以 BPSK 其實就是「1 送 +cos、0 送 −cos」。

  1. 拿出要傳送的位元樣式:1 0 1 1 0
  2. 把每個位元對映到相位:1→0°、0→180°。樣式變成相位 0°、180°、0°、0°、180°
  3. 把每個相位對映到載波的正負號:0°→ +cos(2πfc·t)、180°→ −cos(2πfc·t)。
  4. 每個符元週期 Tsym 發送一段這樣的載波脈衝(此處 1 符元 = 1 位元,所以 5 個位元就是 5 段脈衝)。
  5. 在接收端,把進來的波乘上一個乾淨的本地 cos,並在每個 Tsym 上取平均:正的結果讀成 1、負的結果讀成 0。(這就是匹配偵測——也正是 BPSK 如此耐用的原因。)
Bits:      1        0        1        1        0
Phase:     0deg     180deg   0deg     0deg     180deg
Sign:      +cos     -cos     +cos     +cos     -cos

Waveform (each cell = one symbol period Tsym):
   /\  /\   \/  \/   /\  /\   /\  /\   \/  \/
  /  \/  \  /\  /\  /  \/  \  /  \/  \  /\  /\
           \/  \/             ^         \/  \/
  +1 phase  flip 180   back to +1, +1   flip 180

Receiver: integrate (rx * cos) over Tsym ->  +  -  +  +  -  ->  1 0 1 1 0  (recovered!)
親手把 10110 編成 BPSK:每個 0 用 180 度相位翻轉標記,相關器再把位元還原回來。