案發現場:抹開的脈衝與闔上的眼
想像你對著一條又長又軟的走廊喊出一個清脆的字。等聲音傳到另一頭,它已不再清晰——而是一聲悶悶的、拖長的「嗡——」,回音甚至在你開口說下一個字之後才陸續抵達。聽者聽見你的字一個個糊在一起。一條 1 公尺的銅走線在 56 Gbaud 下,對一個位元做的正是這件事。第三級用一個數字為這場傷害命名:在奈奎斯特頻率處 20–35 dB 的插入損耗,意思是通道只放行你高頻能量的百分之一左右。原本尖銳的發射脈衝,抵達時成了一個又長又矮的隆起,尾巴疊到後面好幾個位元上。
這種重疊,有個你在第二級見過的名字:符元間干擾(ISI)。每個位元的殘餘能量會加到或減去它的鄰居,而是哪些鄰居,取決於資料樣式——所以每個位元被抹開的程度都不一樣。把幾千個位元視窗疊在一起,就畫出一張眼圖;ISI 正是把第二級那隻乾淨張開的眼睛,壓成接收機難以下嚥的那團混濁、近乎闔上的污塊。判決器需要垂直空間(電壓裕度)才分得出 1 與 0,需要水平空間(時序裕度)才能在正確的瞬間取樣。ISI 把兩者都偷走了。
ONE bit launched as a clean pulse, received after a lossy channel:
TX pulse (sent) RX pulse (received) = main + ISI tail
___ .-"""-.
| | _.-' '-._____
__| |__ one UI __-' main tail spills into
(T) cursor bits n+1, n+2, n+3 ...
EYE before equalization (many bits overlaid): after EQ:
v | . :::::::::: . v | .-""""-.
| :::::::::::::::: ---> | / OPEN \
| :::::: (shut) :::: | | EYE!! |
| :::::::::::::::: | \______/
+------------------ t +------------- t
slicer is BLIND here room to decide 1/0等化:那把大傘,與「逆通道」的構想
等化是一把大傘,涵蓋任何「重塑訊號以抵銷通道失真」的電路。這個夢想說起來很簡單:如果通道把你的頻譜乘上 H(f),那就造一個響應為 1/H(f) 的濾波器,乘積便成了平的——走廊的悶響被精確地逆轉,尖銳的脈衝又回來了。工程師確實把這稱為逆通道或強制歸零(zero-forcing)目標,因為它試圖把每一個 ISI 游標都逼成零。
但這座伊甸園裡藏著一條毒蛇,點出牠的名字,你就明白為何我們需要三種等化器、而非一種。通道殺掉了你的高頻;逆通道因此必須帶有極大的高頻增益——而雜訊存在於每一個頻率。一個純粹的逆濾波器,會把通道自身的熱雜訊與任何串擾,連同訊號一起開心地放大。在奈奎斯特處補 30 dB,你也把雜訊地板抬高 30 dB。所以真正的工程問題從來不是「我能不能把通道逆轉」——而是「我要怎麼消掉 ISI,又不把雜訊炸開」。三種主力,各自用一筆不同的交易回答這個問題。
CTLE:接收端的類比高通增益
連續時間線性等化器是書裡最單純的點子:既然通道是個低通濾波器,那就在接收機前面放一個偏高通的放大器,做出鏡像的反向動作。它不去碰個別位元;它只是一個小小的類比濾波器,純粹把高音旋鈕轉大。想像音響上的圖形等化器——通道把高音砍掉了,CTLE 就把高音補回來。關鍵在於它跑在連續時間裡,作用於原始類比波形,沒有時脈、幾乎不耗電——通常只要幾毫瓦、接收機前端一小片矽。
內部,CTLE 常是一對差動對,配上一個巧妙的把戲:源極/射極退化路徑上跨接一顆電阻與一顆電容。低頻時電容形同開路,退化電阻完全發揮作用,增益被壓在低檔。頻率升高時,電容阻抗下降、把電阻短路掉,退化消失,增益便爬升。結果是一條帶有一個零點(增益開始上升處)、後面接著極點(增益變平、最終下降處)的轉移函數——正是你要的高頻提升,而你只要微調 R 與 C 就能調校它。
Channel response CTLE response Combined
gain |‾‾‾‾\__ gain | __/‾ gain |‾‾‾‾‾‾‾‾‾
(dB) | ‾‾‾\__ | __/ | (flat-ish!)
| ‾‾‾\___ + |__/ = |
| low-pass ‾‾\_ | high-pass boost | inverse-ish
+------------------- f +-------------- f +------------- f
DC Nyquist zero poles DC Nyquist
CTLE core (degenerated diff pair): low f: C open -> R degenerates -> LOW gain
Vout+ o--[R_L]--+ +--[R_L]--o Vout- high f: C shorts R -> NO degen -> HIGH gain
M1 M2 => peaking transfer function
Vin+ o--| | | |--o Vin- tuned by trimming R_s, C_s
+--[R_s||C_s]--+
|
tail IFFE:預先塑形脈衝的抽頭濾波器
CTLE 塑造的是一條平滑曲線,前饋等化器(FFE)則以外科手術般的精準,一個位元一個位元地對付 ISI。它是一個短FIR 濾波器——一條抽頭延遲線。訊號流經一串「一個 UI」的延遲;在每個抽頭,你把一份副本乘上一個權重,再全部加總。如果通道在兩個位元後加進一道已知回音,你就加進一份延遲兩位元、帶負號的小副本,回音便在判決器處被抵銷。你其實是在雕塑發射脈衝,好讓它在通道之後被攪爛時,恰好落成一根乾淨的單一尖峰。
漂亮的一手,是把 FFE 放在發射端,這時它叫做預強調(pre-emphasis)或去強調(de-emphasis)。為什麼放那裡?因為發射端的訊號仍然純淨、無雜訊。如果你花一個抽頭去削減「跟在跳變之後那些位元」的能量(去強調),你就把脈衝預先扭曲,使它抵達時是乾淨的——而你做這件事沒有付出雜訊,因為此刻根本還沒有雜訊可放大。典型的 SerDes TX-FFE 有 3 到 5 個抽頭:通常一個前游標抽頭(修整前緣)、一個主游標、外加一個或多個後游標抽頭(消除拖尾)。
3-tap FFE (FIR) tapped delay line: y[n] = c-1 x[n+1] + c0 x[n] + c+1 x[n-1]
x ---+---[z^-1]---+---[z^-1]---+
| | |
(c-1=-0.1) (c0=+0.8) (c+1=-0.2) <- weights, often sum-of-|c|=1
| | |
+-----------(+)----------+----> y (pre-shaped pulse)
TX pre/de-emphasis in the time domain (each ___ is one UI):
data: 0 1 1 1 0 de-emphasis lowers the LEVEL of bits
plain TX: ___________ that FOLLOW a transition, so the
___| |___ channel's settling no longer piles
up as ISI:
FFE TX: _
___| |__ __ ___ (tall edge, then backed-off run)
v v
first bit after edge gets full swing; rest de-emphasizedDFE:消掉你已經知道的位元的尾巴
這是整頁最聰明的點子。CTLE 與 FFE 都靠濾類比訊號來對抗 ISI,也都付了雜訊稅,因為它們分不出訊號與雜訊。決策回授等化器(DFE)用一個時機上的把戲,躲過了這筆稅。想想判決器決定第 *n* 個位元的那一刻。抹開第 *n* 位元的 ISI,主要來自更早的位元——*n−1*、*n−2*、*n−3*——而那些位元都已經被判決過了。一個已判決的位元,是一個完美、無雜訊的 1 或 0。所以 DFE 不去濾雜訊波形,而是精確算出這些已知位元在當前取樣上倒了多少尾巴,並在判決器下決定之前把它減掉。
因為它回授的是判決(乾淨的數位位元)而非波形,DFE 帶來零雜訊放大——這是它的超能力,也是它能攻克 CTLE 攻不下的通道的原因。其架構是一個回授迴路:取最近 N 個已判決位元,把每一個乘上一個「等於該位元已知 ISI 貢獻」的抽頭權重,加總後,在判決器正前方的加總節點,從輸入訊號中減去。
summing slicer
in ---->( + )---------> node -------->|>--+---> decided bits d[n]
^ |
| ___________________ |
+-------| sum of w_k * d[n-k] |<-+ one-UI delays z^-1
- ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
SUBTRACT feedback taps w_1..w_N (known POST-cursor ISI)
Why zero noise gain: the feedback contains DECIDED bits d[n-k] = clean +1/-1,
so scaling & subtracting them injects NO channel noise back into the path.
LIMITS:
* only POST-cursor ISI (bits already decided). PRE-cursor ISI (the bit
not yet decided) is invisible to a DFE -> that's the FFE/CTLE's job.
* ERROR PROPAGATION: if the slicer makes one wrong decision, the wrong
bit is fed back and corrupts the next few -> a short burst of errors.
* the first feedback tap is a brutal TIMING problem: decide bit n AND
feed it back before bit n+1 arrives (one UI ~ 18 ps at 56 Gbaud).致勝組合:CTLE + DFE,與判讀重新張開的眼
現在記分卡開始發揮作用。看看每個區塊各自的長短,配對方式自己就寫出來了。CTLE 便宜、能抬起整個高頻段——含前游標與遠端 ISI——但會放大雜訊,所以能耐有限。DFE 以零雜訊增益消除後游標 ISI——但它碰不到前游標 ISI,殘餘尾巴太長時也會吃力。把兩者串接,它們恰好互補:先用 CTLE 把通道粗略的衰減壓平、把線性級搆得到的前游標與長尾 ISI 打下去,再用 DFE 不增添雜訊地、外科手術般歸零剩下的後游標游標。這套 CTLE 加 DFE 的組合,是幾乎每一條現代 SerDes 的預設接收機——PCIe、乙太網路,全都是。
一條完整的鏈路,通常把工作分攤到兩端:一個 3–5 抽頭的 TX-FFE 在發射前先塑形脈衝(在無雜訊的領域裡,便宜地處理前游標 ISI),接著在接收端,一個 CTLE 把頻段壓平、一個多抽頭 DFE 收尾。這些設定不是手調的;一個自適應引擎盯著復原出的資料,持續地微抖每一個抽頭權重以最小化誤差,隨著溫度與電壓漂移而不斷調整。這正是 PCIe 或 100G 乙太網路埠在開機時協商所做的鏈路「訓練」。
- TX-FFE(發射端):一個 3–5 抽頭的 FIR 預先扭曲脈衝——前/後游標去強調,以發射擺幅付帳、不付雜訊。最擅長處理 DFE 永遠看不到的前游標 ISI。
- CTLE(接收前端):一個低功耗的類比提升,把通道粗略的衰減在整個頻段上壓平。搆得到連續線性級能搆的,但放大的雜訊吃掉裕度時便到頂。
- DFE(接收端、判決器之前):一個回授迴路,以零雜訊放大減去已判決位元的後游標 ISI——把眼睛最後一段撐開的肌肉。當心錯誤傳播與第一抽頭的時序競賽。
- 自適應:硬體持續重新調校每一個 CTLE 極點與 FFE/DFE 抽頭,追蹤溫度、電壓與老化——這正是開機時「鏈路訓練」所協商的內容。
那你怎麼知道它成功了?你去判讀眼圖——就是第二級教你畫、又被 ISI 在本文開頭緊緊閉上的那隻眼。等化之前,眼睛是一團闔上的污塊,高度約等於 0,位元錯誤率毫無指望。經過 CTLE + DFE,眼睛豁然張開:高到足夠有電壓裕度(你分得出 1 與 0),寬到足夠有時序裕度(取樣時脈可以飄移卻仍落在裡頭)。晶片上的眼圖監測器,確實在量這個張開的程度,並餵給自適應迴路。一隻重新張開的眼,就是全部的重點——是你「已經抵銷了通道」的可見證明。