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

把眼睛打開:CTLE、FFE 與 DFE 等化

第二、三級留給你一個壞消息:到了 56 Gbaud,通道已經丟掉你 30 dB 的高頻、把每個位元抹進相鄰位元裡,於是[[ic-eye-diagram|眼圖]]被緊緊閉上,接收機分不出 1 與 0。這一級就是救援行動。你會認識三大主力等化器——[[ic-continuous-time-linear-equalizer|CTLE]]、[[ic-feed-forward-equalizer|FFE]] 與 [[ic-decision-feedback-equalizer|DFE]]——並親眼看見每一種如何把那隻闔上的眼睛重新撬開。讀完你就會明白,為何幾乎每一條現代鏈路都同時戴著一顆 CTLE 與一顆 DFE。

案發現場:抹開的脈衝與闔上的眼

想像你對著一條又長又軟的走廊喊出一個清脆的字。等聲音傳到另一頭,它已不再清晰——而是一聲悶悶的、拖長的「嗡——」,回音甚至在你開口說下一個字之後才陸續抵達。聽者聽見你的字一個個糊在一起。一條 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
有損通道把尖銳脈衝變成一個長隆起,它的尾巴就是 ISI。把許多位元疊起來,這 ISI 把眼睛閉上。等化的全部工作,就是把它重新打開。

等化:那把大傘,與「逆通道」的構想

等化是一把大傘,涵蓋任何「重塑訊號以抵銷通道失真」的電路。這個夢想說起來很簡單:如果通道把你的頻譜乘上 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 I
CTLE 加入一段高頻提升,鏡像通道的衰減。一對在尾部跨接 RC 的退化差動對,給出一個零點(增益上升)再接極點(變平)。

FFE:預先塑形脈衝的抽頭濾波器

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-emphasized
FFE 是一條 FIR 抽頭延遲線。放在發射端時,它預先扭曲脈衝(去強調),使通道的抹開恰好把它送成乾淨的——代價是發射擺幅,而非接收端雜訊。

DFE:消掉你已經知道的位元的尾巴

這是整頁最聰明的點子。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).
DFE 減去已判決位元的 ISI。回授的是乾淨的數位判決,故零雜訊放大——但它只搆得到後游標 ISI,且會傳播自己的錯誤。

致勝組合:CTLE + DFE,與判讀重新張開的眼

現在記分卡開始發揮作用。看看每個區塊各自的長短,配對方式自己就寫出來了。CTLE 便宜、能抬起整個高頻段——含前游標與遠端 ISI——但會放大雜訊,所以能耐有限。DFE 以雜訊增益消除後游標 ISI——但它碰不到前游標 ISI,殘餘尾巴太長時也會吃力。把兩者串接,它們恰好互補:先用 CTLE 把通道粗略的衰減壓平、把線性級搆得到的前游標與長尾 ISI 打下去,再用 DFE 不增添雜訊地、外科手術般歸零剩下的後游標游標。這套 CTLE 加 DFE 的組合,是幾乎每一條現代 SerDes 的預設接收機——PCIe、乙太網路,全都是。

一條完整的鏈路,通常把工作分攤到兩端:一個 3–5 抽頭的 TX-FFE 在發射前先塑形脈衝(在無雜訊的領域裡,便宜地處理前游標 ISI),接著在接收端,一個 CTLE 把頻段壓平、一個多抽頭 DFE 收尾。這些設定不是手調的;一個自適應引擎盯著復原出的資料,持續地微抖每一個抽頭權重以最小化誤差,隨著溫度與電壓漂移而不斷調整。這正是 PCIe 或 100G 乙太網路埠在開機時協商所做的鏈路「訓練」。

  1. TX-FFE(發射端):一個 3–5 抽頭的 FIR 預先扭曲脈衝——前/後游標去強調,以發射擺幅付帳、付雜訊。最擅長處理 DFE 永遠看不到的前游標 ISI。
  2. CTLE(接收前端):一個低功耗的類比提升,把通道粗略的衰減在整個頻段上壓平。搆得到連續線性級能搆的,但放大的雜訊吃掉裕度時便到頂。
  3. DFE(接收端、判決器之前):一個回授迴路,以零雜訊放大減去已判決位元的後游標 ISI——把眼睛最後一段撐開的肌肉。當心錯誤傳播與第一抽頭的時序競賽。
  4. 自適應:硬體持續重新調校每一個 CTLE 極點與 FFE/DFE 抽頭,追蹤溫度、電壓與老化——這正是開機時「鏈路訓練」所協商的內容。

那你怎麼知道它成功了?你去判讀眼圖——就是第二級教你畫、又被 ISI 在本文開頭緊緊閉上的那隻眼。等化之前,眼睛是一團闔上的污塊,高度約等於 0,位元錯誤率毫無指望。經過 CTLE + DFE,眼睛豁然張開:高到足夠有電壓裕度(你分得出 1 與 0),寬到足夠有時序裕度(取樣時脈可以飄移卻仍落在裡頭)。晶片上的眼圖監測器,確實在量這個張開的程度,並餵給自適應迴路。一隻重新張開的眼,就是全部的重點——是你「已經抵銷了通道」的可見證明。