高速serdes技術學習總結

Overview

本身接觸過許多家的高速serdes,無奈數學基礎太差,只能像烏魚爬同樣,一點一點的積累知識和經驗,這裏把平日裏學到的點點滴滴記錄下來,但願對本身和同事有所幫助。算法

基礎知識 (摘錄自李聞界老師的講課內容)

Channel的特性

channel的特性。這裏第一張圖給出了三種它的傳輸函數,或者說它的s21。在不一樣的長度,loss區別很大。咱們看到第一個藍色的,它的loss就會比較小,在2.5Gbps時loss大概不到5db;而紅色的這種比較長,它的loss在2.5Gbps的時候就有10個dB多一些。這個綠色的一根線,它不光loss多一點,還在10Gbps時有一個不好的一個點的loss,到-60多dB。
通常在設計的時候,會拿一個channel的model通常是Sparameter或者是LGC這種model,而後在前仿真/後仿真去驗證咱們的design。
圖片描述
從它的衝擊響應能夠看到紅色的在4ns前面一點開始上升,好比說在4ns前一點去sample它,那麼能夠獲得一個數據。可是在後面,好比說4ns多一點的時候去sample它,也可能獲得1個1,原本應該是獲得了1個0,這就會產生一個錯誤的數據。
單位衝激響應疊加以後,就會產生一個眼圖。或者在PRBS的輸入下,摺疊輸出以後會獲得一個眼圖。咱們看到這個眼圖在不一樣的channel上它的opening,就是高度、寬度差異很是大的編程

SerDes的基本結構

SerDes的基本結構圖。前面就是把並行數據轉換成串行數據(通常也叫MUX),而後再給TX發送出去。由於channel本徵阻抗是50Ω,因此TX這邊加一個termination,50Ω的特徵阻抗來保證阻抗匹配。Rx這邊一樣加一個50Ω特徵阻抗來保證匹配,這樣纔沒有反射。而後RX和TX這邊分別有負責時序的,好比說PLL和Timing Recovery,這些模塊專門爲這些電路提供clock。
圖片描述
把它能夠分紅兩個主要部分,第一部分就是timing,爲發送和接收數據提供clock;第二部分就是signaling,就是信號處理。TX邊主要是把數據發送出去保證必定的眼高,而後Rx這邊把數據恢復出來。由於channel loss以後,signal多是看不到的。這就說RX主要作兩件事,既要恢復數據、又要恢復時序。恢復數據就是要知道是0仍是,對於這種PAM 2也就是NRZ類數據來講。而且要找到怎麼去、在哪一個時間點上去sample這個data,也就是恢復出一個最好的timing。Rx clock的上升沿採在這個數據它的正中間,這樣通常是最好的。
圖片描述函數

Jitter

data上面的jitter其實不是那麼在意,只要保證setuptime、hold time,而clock上的jitter就相當重要。post

發送端的VCO

RING VCO,通常來講可能在5GHz的clock能作到1.5ps的RMS Jitter。有可能會作的更好,但問題是功耗在繼續增長。
對於PAM4來講,它的eye opening會更小,由於它的上升沿有不一樣transition,這樣PAM4的eye opening會小30%。這裏的30%具體指的是EYE的寬度,另外EYE的高度比較明顯的會小1/3,也就是9.5dB。
對於14GHz的clock或者28Gbps datarate來講,用RING產生時鐘比較困難,而且對這種data rate,jitter要求會更高。好比說RMS jitter 0.2ps,這時候大概佔UI的11%。在高頻的時候,數據恢復這邊(signaling)也會更困難,因此要儘可能保證這邊的Jitter margin多留一點。性能

接收端的CDR

另一部分就是在RX的timing recovery。CDR的主要目的就是找到一個最好的sample點,使得sample的數據儘可能是對準數據的中心店,也就是說BER儘可能的小。
CDR的主要性能就是jitter tolerance,它能夠track PLL的一部分jitter。還有就是CDR的bandwidth和它的功耗,bandwidth越高功耗就要更高。ui

發送和接收的均衡(EQ)

數據處理主要是均衡器,TX這邊叫emphasis,或者叫FFE。RX這邊的均衡器會比較多一些,好比說CTLE。有有源的、無源的,可能還會有些其它的濾波器。而後最重要的還有DEF,它有各類結構。
圖片描述spa

TX FFE

若是channel的insertion loss特別小(<15dB),TX那邊直接把信號給發送出來,經過一個50Ω的阻抗匹配。而後RX這邊有個50Ω的阻抗匹配,最後直接一個比較器就把它收過來了,這樣也是能夠的。
可是,當channel的insertion loss比較大(>25dB)的時候,這個問題就十分重要了,TX FFE可使得頻率響應曲線變得平坦,減小ISI。TX輸出阻抗和RX端口阻抗要保證50Ω來匹配channel的阻抗,保證沒有反射。
在下面的三張圖表示均衡器的做用。好比說,Channel一開始時隨着頻率升高loss愈來愈大的,可是若是在5GHz的點給一個gain,而在低頻時候沒有gain。這樣就把5GHz這個頻點給boost上去,看到第三張圖綠色的這個就顯得比較平坦,這樣的ISI就會小。
圖片描述
TX端的Equalization是TX的equalization。通常用4-tap FFE,除了一個主的之外,前面有一個,後面還有個POST一、POST2,而後都加在一塊兒後通過50Ω輸出。
看一下TX FFE的做用,它是如何消除ISI的。若是沒有FFE就是沒有post-emphasis。那麼data出來以後高頻的信號就變得小。而若是有第一個post的emphasis,能夠看到第二張圖紅色的輸出的響應,高頻的信號明顯變大了,低頻信號稍微小一點
圖片描述設計

RX CTLE

Rx的均衡技術。第一個就是CTLE,連續時間線性均衡器。它主要來補償channel對高頻信號的insertion loss。它是一種無源的,只有RC或者有L。無源的就意味着沒有Gain。它只能把低頻的減弱,把高平的相對來講是增高能量。而且無源design有個好處就是它不會產生noise,除了R會產生的noise,可是通常來講R會比較小。而晶體管的noise相對多一些。
CTLE通常是RX的第一級。
在奈奎斯特頻率,CTLE通常都會有一些Gain。這樣後邊的noise就不那麼敏感了,好比後面VGA、DFE、sampler。
CTLE通常都是採用可編程的CS、RS,由於channel都不同,甚至有時還會有自適應算法來自動配置RS、CS(有待商榷??)。
下圖中的fp1就是Nyquist頻率,對於10Gbps的baud rate而言,fp1=5GHz。
圖片描述3d

RX DFE

圖片描述

DFE技術(decisionfeedback equalization)code

  1. decision,決定輸入的數據是1仍是0
  2. feedback。也就是說它把這個收到的數據,經過一條鏈路返回到輸入,而後再輸入上直接減掉一些信息。那麼減掉的量的多少,也就是它輸入的數據會乘以一個係數。它減掉多少電壓,就是這個信號的加權(W)是多少。
  3. 非線性,channel就是非線性的,不少時候非線性還很是大

因此總結下來,DFE包含3點,一個就是decision,第二個就是feedback,而後第三個就是它非線性。
圖片描述

這裏有兩個channel,這兩個channel的insertion loss不同,那麼接收端的DFE就要自適應這兩個channel。而且通常的自適應電路是always on,用它來去cover一些電路或者是那些channel的溫飄效應獲得。自適應的話就須要額外的比較器,而且一直工做。
圖片描述

知識點進階

不一樣介質的衝擊響應曲線

  • PCB Backplane的衝擊響應曲線相似像泊松分佈
  • Fiber Optic的衝擊響應曲線相似高斯正態分佈
  • DAC的衝擊響應曲線則介於上面二者之間

Nyquist頻率

通常對於10Gbps信號咱們用@5GHz Nyquist頻率來看它的Insertion Loss點,25.78125Gbps速率的信號用12.89GHz
以25.78125Gbps速率信號爲例,serdes內部的恢復時鐘不會是25.78125GHz,由於這樣時鐘信號過高了,只會恢復出12.89GHz的時鐘,而後經過移相90度,對於25.78125Gbps這麼高速信號,通常只會sample一個點
對於10Gbps信號,會用2個不一樣相位的時鐘(0相位的5GHz,和移相90度的5GHz)採樣4個點。
另外,能夠把25.78125Gbps速率的信號接入到頻率分析儀的輸入端,能夠看到它的能量最大的頻點是12.89GHz,因此這也能夠說明內部恢復出來的時鐘不是25.78125GHz,而是12.89GHz.

CDR的類型

Muller-Muller
Bang-Bang

  • CDR其實反而喜歡信號有ISI,若是沒有任何ISI,那麼CDR確定會失鎖CDR鎖定的點是在H(-1)和H(1)之間。
  • Muller-Muller CDR兩邊的採樣點是在一半Peak的電平處,Bang-Bang會高一些。
  • CDR帶寬的需求, CDR支持的帶寬主要取決於CDR可以跟蹤抖動的速度,速率過高的jitter,CDR沒法跟蹤,這是因爲CDR的反饋是從FFE或者DFE以後過來的,Latency比較大,因此通常CDR只能follow 4MHz的Jitter,有的廠商的實現比較特別,爲CDR特別設計了3個dedicated tap的FFE(pre, main , post),不和data共用,因此latency特別小,能夠作到10MHz的帶寬
  • CDR的RMS jitter是經過phase noise的各個點作積分,計算每一個點鏈接的折線下面的面積。

ISI

  • FFE通常能夠configurable,分配多少個Tap給Pre,多少個Tap給Post,1個給Main, 好比16個tap, H0~H3分配給Pre, H4給Main, H5~H15分配給Post
  • H0~H3的規律,若是Main是正的, H3(-), H2(+), H1(-), H0(+),實際上H1和H0每每是0,若是H3(-)的絕對值> 30%*Main, 說明對端發送的Pre須要增強一些
  • H5~H15的規律, 若是Main是正的, H5~H15不像pre那樣會bounce,通常都是正的或者都是負的,一樣的若是H5的絕對值 > 30%*Main,那麼說明對端發送的Post須要增強一些
  • CTLE, 通常靠手工配置,根據信道的loss來配置相應的值,信道的插損越大,CTLE須要配置的peaking值越大,以保證CTLE的輸出知足VGA的輸入要求。CTLE主要是壓低低頻信號,等效於放大高頻信號,第一個主要極點是放大Nyquist頻率點。有的設計還把CTLE細分紅LFP, MFP, HFP

接收端眼圖的測量

  • 接收端眼圖的眼圖的測量通常位於FFE或者DFE以後,接收端眼圖的外眼表徵的是低頻信號的幅度,內眼表徵的是高頻信號的幅度。通常只能sample外眼的眼高和眼寬,若是外眼的眼高已經很小,那麼內眼的幅度就更小了。因此能夠經過外眼的眼高間接的推斷出內眼(高頻份量)的幅度
  • 有的時候,儘管接收的眼圖幅度很大,可是寬度很小,這是因爲FFE和DFE補償過頭了,這時光看眼高不足以判斷接收信號質量的好壞,還必須經過眼寬的數值來綜合判斷。然而,每每在56G速率以上,眼寬應該比較難以採樣。

FFE和DFE比較

  • FFE是非因果關係,對於發送端而言,它能夠預先知道下面一個或者幾個要發送的bit信號是「0」仍是"1",這樣才能夠消除Pre的ISI。而後對於接收端而言,它沒法知道下面要接收的一個或者多個bit信號是"0"仍是「1」,全部在接收端實現FFE的serdes都玩了一個trick,就是把ADC以後的串行碼流延遲幾個cycle,好比延遲4個cycle,獲得bit0, bit1, ... bit[N], 而後把"如今"的bit時間點指向bit4,這樣就知道"將來"要接收的bit0..3是"0"仍是"1"了。FFE能夠出了不會有錯誤傳遞以外,還可以補償pre的ISI干擾
  • DFE是因果關係,對於post的ISI干擾補償很是有效,可是對於pre的ISI干擾無能爲力,同時級數多了,會致使錯誤傳遞,即多個bit的burst錯誤。因此56G及之後的serdes,多采用FFE以後只有1個tap的DFE設計

如何調節TX FFE參數

  • 根據scope測量的眼圖來調節,對於Insertion Loss比較大的信道,要相應增長pre-emphsis和post-emphasis。其實是作de-emphasis,即變相壓低低頻信號的幅度,來實現加強高頻信號的幅度
  • 根據接收端的眼圖來調整:

    • 若是發現最靠近main Cursor的第一級pre-cursor,稱爲H(-1)的絕對值 > 1/3*Main絕對值,那麼說明發送端的pre-cursor須要適當增長,若是適當增長了發送端的pre-cursor以後,發現接收端的FFE的H(-1)的絕對值下降下來了,說明調整有效
    • 若是發現最靠近main Cursor的第一級post-cursor,稱爲H(+1)的絕對值 > 1/3*Main絕對值,那麼說明發送端的post-cursor須要適當增長,若是適當增長了發送端的post-cursor以後,發現接收端的FFE/DFE的H(+1)的絕對值下降下來了,說明調整有效
    • 若是發現接收端的VGA的peaking值(放大倍數)已經達到了極限值,那麼說明接收信號的幅度太小,接收端須要拼命加大VGA的放大倍數,把信號調整到適合ADC的輸入端(典型的400mv~500mv),這是須要相應調整發送端的Main或者Amplitude,若是發現接收端的VGA的peaking值相應下降了,說明調整有效
  • 根據接收端的BER來作相應的調整

如何調整RX參數

  • 接收端雖然有不少模塊用於EQ,可是通常只有CTLE是手工配置的,VGA, FFE和DFE都是靠算法自動調節的。CTLE須要事先根據信道的Insertion Loss配置相應的值,CTLE的最主要做用是壓低低頻信號,等效於放大高頻信號(實際沒法放大,由於CTLE通常是無源的)

關於re-timer或者repeater的做用

高速串行信號通過一段距離傳輸以後,每每在接收端每一個bit信號的信號寬度會發生變化,好比發送端發送 1111_0_1111, 這樣在接收端的"0"這個數據bit的信號寬度就會特別窄,極可能時鐘沒法對準信號的中間採樣,致使誤碼。通過re-timer或者repeater的信號從新整形以後,把過窄的信號寬度從新整造成1個UI,而後再發送出去,這樣後續的接收器就不容易出錯

眼圖預加劇: Pre-cursor and Post-cursor1,2,3

post-cursor和pre-cursor名稱中的post和pre的由來:

  • 「post」是指數據"0" -> "1"或者"1" -> "0"跳變以後的預加劇
  • 「pre」是指數據"0" -> "1"或者"1" -> "0"跳變以前的預加劇

圖片描述

參考文獻

  1. 模擬混合信號設計驗證的講課,謝謝李聞界老師的掃盲課程: serdes Introduction
相關文章
相關標籤/搜索