接收機的難題:埋在嘶聲裡的已知波形
想像一位燈塔守夜人,在黑夜裡守候某艘船發出的特定閃光樣式——三短一長。海面上滿是隨機反光:浪上的月光、遠處的燈、守夜人自己疲倦的雙眼。他的任務不是看見「光」,而是看見「那個樣式」。無線電接收機面對的正是同一件事。發射端為每個位元送出一個已知的脈衝波形 p(t);通道把它埋進熱雜訊之下。接收機早就知道自己在獵捕什麼形狀。這一級的核心問題是:既然你知道形狀,找它的最佳辦法究竟是什麼?
從第五級你帶著一個硬邦邦的數字:位元錯誤率(BER)。對最常用的調變 BPSK 來說,BER 隨 Eb/N0 這個比值急遽下降——它是每位元能量除以雜訊功率譜密度。把 Eb/N0 往上推幾分貝,BER 就掉好幾個數量級。所以這篇指南裡的每一招,骨子裡都是一台機器:在不調高發射功率的前提下,提高判決電路所看到的有效 Eb/N0。
匹配濾波器:與你預期的波形做相關
把守夜人的訣竅化成數學就是這樣。別只盯著某一瞬間的原始波形 r(t),而是把它與已知脈衝 p(t) 的副本逐點相乘,再在整個符元上加總。這個累加和就是一次相關——它在問:「我收到的東西,有多像我送出的形狀?」當收到的能量與樣板對齊時,乘積全為正,總和便鼓脹成一個峰值。隨機雜訊對形狀毫無忠誠,把乘積等量地推高又拉低,大致自相抵消。匹配濾波器正是這個相關器,做成一個脈衝響應為脈衝時間反轉的濾波器,h(t) = p(T − t)。
Transmitted pulse p(t) Received r(t) = p(t) + noise
___ .--._.-'`-.__.'\ . _.
/ \ .'\/ `. `' `
_/ \_ _.' noise everywhere
(which sample do you trust?)
Matched filter = slide a time-reversed copy of p(t) along r(t),
multiply & integrate (this IS correlation):
y(t) = INTEGRAL r(tau) * p(tau - (t - T)) d tau
noise-only stretch SIGNAL aligns -> PEAK
___ _ __ |
y(t): / \_/ \_/ \___ . . . __/ \__ . . .
(small, wobbly) ^
SAMPLE EXACTLY HERE (t = T)
-> maximum SNR, minimum BER為什麼這是「那個」最佳解,而不只是「一個」好點子?可以證明,對加性白高斯雜訊而言,匹配濾波器是在某個選定取樣瞬間讓訊雜比最大化的線性濾波器。證明用的是柯西–施瓦茲不等式:在所有對輸入波形加權的方式中,唯有「對每一段的權重恰與該處的訊號能量成正比、其餘一律不理」的那一種,才能在單位雜訊下榨出最多訊號。它給出的峰值 SNR 是 2·Eb/N0,而且妙的是只取決於脈衝的能量,與形狀無關。只要攜帶相同能量,一個寬而緩的脈衝與一個窄而尖的脈衝表現完全相同。
當濾波器還不夠:錯誤仍然漏網
匹配濾波器是最佳的,但最佳不等於完美。即使表現到極致,一道深邃的雜訊尖峰仍可能把取樣值推過判決門檻,讓判決器把 0 叫成 1。在 Eb/N0 = 9.6 dB 時,BPSK 大約每十萬個位元還是會翻一個。對一條 1 Gbit/s 的鏈路而言,那是每秒一萬個錯誤——每張照片、每筆付款、每行程式碼,都被翻轉的位元灑得滿身。你無法靠濾波擺脫這件事;匹配濾波器已經把濾波器能做的全做完了。
舊辦法是再問一次:偵測到收到的東西亂了,就要求重傳(ARQ)。對網頁可行,但對 20 光分外的火星探測器、對即時視訊通話、對一張無法打電話回家的藍光光碟而言,這是場災難。現代的辦法是把解藥連同病一起送出。加入精心設計的冗餘位元,讓接收機不只能偵測錯誤發生,還能自行定位並修正它。這就是前向糾錯(FEC)——第二台偉大的 SNR 換購機器。
實作範例:能修好一個翻轉位元的漢明碼
Richard Hamming 受夠了週末的電腦運算被單一壞位元毀掉,1950 年他問:要找出並修好一個錯誤,最少需要幾個額外位元?他的答案——漢明 (7,4) 碼——取 4 個資料位元,加上 3 個同位位元,組成 7 位元的碼字。訣竅在擺放位置。把同位位元放在位置 1、2、4(二的次方),資料位元放在 3、5、6、7。每個同位位元恰好守護那些「二進位索引含有它那一位」的位置。如此一來,任何單一位元錯誤都會讓這些同位檢查以某種樣式失敗,而那樣式正好用二進位拼出出錯的確切位置。
Position: 1 2 3 4 5 6 7
Role: p1 p2 d1 p4 d2 d3 d4
Parity coverage (position's binary index has that bit set):
p1 (001) checks positions 1,3,5,7 -> bit 0 of the index
p2 (010) checks positions 2,3,6,7 -> bit 1 of the index
p4 (100) checks positions 4,5,6,7 -> bit 2 of the index
Each p is set so its group has EVEN parity.
--- ENCODE data 1011 (d1 d2 d3 d4) ---
p1 over {d1,d2,d4}=1,0,1 -> need even -> p1=0
p2 over {d1,d3,d4}=1,1,1 -> need even -> p2=1
p4 over {d2,d3,d4}=0,1,1 -> need even -> p4=0
codeword = 0 1 1 0 0 1 1 (pos 1..7)
--- CHANNEL flips bit 5 --- received = 0 1 1 0 1 1 1
--- DECODE: recompute the 3 checks ---
c1 = parity of pos 1,3,5,7 = 0,1,1,1 = ODD -> 1
c2 = parity of pos 2,3,6,7 = 1,1,1,1 = EVEN -> 0
c4 = parity of pos 4,5,6,7 = 0,1,1,1 = ODD -> 1
syndrome (c4 c2 c1) = 1 0 1 (binary) = 5
==> bit 5 is wrong. FLIP IT BACK. Error corrected, no resend.細細品味這有多優雅。三個檢查給出一個 3 位元的症候,有 8 種可能值:000 代表「沒有錯誤」,其餘 7 種精確指向 7 個位置中該翻哪一個。完全不必去查資料表;症候本身就是故障的地址。代價是額外開銷:你送了 7 個位元只承載 4 個,碼率 4/7 ≈ 0.57。花掉一點頻寬,換回每個區塊自我修復一個錯誤的能力。
從漢明到你口袋裡的那些碼
漢明碼是親切的第一步;真實系統倚靠更重型的機器,各自為它面對的錯誤型態而調校。串起它們的線索始終如一:結構化的冗餘,加上一個聰明的解碼器。
- 里德–所羅門碼作用在整個符元(位元組)上,而非單一位元,因此能抖落成串的損傷——光碟上的一道刮痕、一次衰落造成的中斷。它統治了 CD、DVD、QR 碼與深空鏈路數十載。一張航海家號的影像得以倖存,正因 RS 默默修好了那片汙跡。
- 摺積碼 + 維特比解碼把每個位元的影響攤在一個滑動視窗上,找出最可能被送出的序列。把它與外層 RS 碼配對(串接式架構),便得到穩健的分層保護——這是深空與早期行動通訊的經典配方。
- 渦輪碼(1993)與 LDPC 碼採迭代解碼,來回傳遞軟性機率估計,直到收斂。它們進逼到距理論極限不到一分貝之處。LDPC 如今守護 Wi‑Fi 6、5G 資料通道與現代儲存;渦輪碼則扛起了 3G/4G。
「理論極限」這個詞不是隨口說說。它就是夏農的通道容量——一條雜訊通道每秒能承載多少無錯位元的硬性天花板。夏農在 1948 年證明:能在容量以內達成可靠通訊的碼必然存在;他只是沒說怎麼造。從漢明到 LDPC 這六十五年的追逐,正是工程界要真正觸及他所畫那條線的歷程。今日最好的碼坐落在距夏農極限不到十分之幾分貝之處——這場追逐大致已經勝出。
編碼增益:你買回來的那些分貝
我們該如何為一個碼打分,而且分數要是工程師花得出去的?答案是編碼增益:開啟編碼後,達到目標 BER 所需 Eb/N0 的減少量。先定個目標,比如 BER = 10⁻⁵。未編碼的 BPSK 約需 9.6 dB 才到得了。一個像樣的摺積碼也許在 5 dB 就達到同樣 BER——編碼增益約 4.6 dB。良好碼率下的現代 LDPC 可買到 7 dB 以上。記得前面說過 3 dB 等於功率加倍;所以 6 dB 的編碼增益,就像擁有一台強四倍的發射機,純粹由接收端的算術變出來。
BER
1e-2 |* uncoded BPSK
| *\
1e-3 | * \ coded (e.g. LDPC)
| * \ .
1e-4 | * \ .
| * \ .
1e-5 |......*....\..*................. <- target BER
| * \ .
1e-6 | * \ .
+--+----+----+--+----+---- Eb/N0 (dB)
3 5 7 9.6 11
|<-- ~4-7 dB -->|
CODING GAIN (= cheaper transmitter)把兩者疊起來,就是現代接收機的脊梁。匹配濾波器從類比的霧氣中拉出可能最乾淨的判決,把物理所允許的最佳 Eb/N0 交到判決器手上。FEC 接著清掃殘餘的錯誤,再往上買進好幾分貝。你手機裡的每一台數據機、每一顆 Wi‑Fi 晶片、每一座衛星地面站,跑的都是這套一拳接一拳的組合——先榨乾訊號,再治癒位元——好讓自己活在矽片所能企及、距夏農之線最近的地方。