一、SERDES介紹
隨著大數據的興起以及信息技術的快速發展,數據傳輸對總線帶寬的要求越來越高,并行傳輸技術的發展受到了時序同步困難、信號偏移嚴重,抗干擾能力弱以及設計復雜度高等一系列問題的阻礙。與并行傳輸技術相比,串行傳輸技術的引腳數量少、擴展能力強、采用點對點的連接方式,而且能提供比并行傳輸更高帶寬,因此現已廣泛用于嵌入式高速傳輸領域。
Xilinx公司的許多FPGA已經內置了一個或多個MGT(Multi-Gigabit Transceiver)收發器,也叫做SERDES(Multi-Gigabit Serializer/Deserializer)。MGT收發器內部包括高速串并轉換電路、時鐘數據恢復電路、數據編解碼電路、時鐘糾正和通道綁定電路,為各種高速串行數據傳輸協議提供了物理層基礎。MGT收發器的TX發送端和RX接收端功能獨立,而且均由物理媒介適配層(Physical Media Attachment,PMA)和物理編碼子層(Physical Coding Sublayer,PCS)兩個子層組成,結構如下圖所示
PMA子層內部集成了高速串并轉換電路,預加重電路、接收均衡電路、時鐘發生電路和時鐘恢復電路。串并轉換電路的作用是把FPGA內部的并行數據轉化為MGT接口的串行數據。預加重電路是對物理連接系統中的高頻部分進行補償,在發送端增加一個高通濾波器來放大信號中的高頻分量進而提高信號質量,但預加重電路會導致功耗和電磁兼容(Electro Magnetic Compatibility,EMC)增加,所以如非必要一般情況下都把它屏蔽掉。接收均衡電路主要用來補償由頻率不同引起的阻抗差異。時鐘發生電路與時鐘恢復電路在發送端把時鐘和數據綁定后發送,在接收端再從接收到的數據流中恢復出時鐘,這樣可以有效地避免在高速串行傳輸的條件下時鐘與數據分開傳輸帶來的時鐘抖動問題。
PCS子層內部集成了8B/10B編/解碼電路、彈性緩沖電路、通道綁定電路和時鐘修正電路。8B/10B編/解碼電路可以有效的避免數據流中出現連續的‘0’或者‘1’,以保證數據傳輸的平衡性。通道綁定電路的作用是通過在發送數據流中加入K碼字符,把多個物理上獨立的MGT通道綁定成一個時序邏輯上同步的并行通道進而提高傳輸的吞吐率。彈性緩沖電路用來解決恢復的時鐘與本地時鐘不一致的問題并可以通過對緩沖區中的K碼進行匹配對齊來實現通道綁定功能。
下面將詳細討論SERDES用到的各種關鍵技術。
二、SERDES關鍵技術
簡化的SERDES結構圖如下圖所示
SERDES的優勢在于其帶寬很高,引腳數目較少而且支持目前多種主流的工業標準,比如Serial RapidIO ,FiberChannel(FC),PCI-Express(PCIE),Advanced Switching Interface,Serial ATA(SATA),1-Gb Ethernet,10-Gb Ethernet(XAUI),Infiniband 1X,4X,12X等。它的線速度能達到10Gb/s甚至更高,主要原因是因為它采用了多種技術來實現這些功能。
2.1 多重相位技術
如果輸入的串行數據流比特率為x, 那么可以使用多重相位以x/4的低速時鐘來重新組織數據流。輸入的數據流直接連接到4個觸發器,每一個觸發器運行在時鐘的不同相位上(0、90、180以及270)。多重相位技術的數據提取電路如下圖所示
對應的時序圖如下圖所示
每個觸發器的輸出連接到時鐘相位小90度的觸發器,直到到達時鐘相位為0 的觸發器。這樣,輸入數據流就被分解成了1/4輸入速率, 4bit寬度的并行數據流。
在上述的示例電路中,相位等差排列,時鐘頻率嚴格等于輸入數據流速率的1/4。怎樣才能實現呢?我們必須和輸入的數據流保持鎖定。我們可以使用典型的鎖相環來實現這一點,但是鎖相環需要一個全速率的時鐘,這是很難滿足的。鎖相環是高速SERDES設計中最重大的改進之一,它主要用于時鐘和數據恢復。一般的鎖相環需要有運行在數據速率上的時鐘,不過可以通過多種技術來避免這種要求,包括分數鑒相器、多重相位鎖相環、并行采樣以及過采樣數據恢復。
2.2 線路編解碼技術
線路編碼機制將輸入的原始數據轉變成接收器可以接收的格式,并保證有足夠的切換提供給時鐘恢復電路。編碼器還提供一種將數據對齊到字的方法,同時線路可以保持良好的直流平衡。線路編碼機制也可選擇用來實現時鐘修正、塊同步、通道綁定和將帶寬劃分到子通道。線路編碼機制主要有兩種方式,分別為數值查找機制和擾碼機制。
2.2.1 8B/10B編解碼
8b/10b編碼機制是由IBM開發的,已經被廣泛采用。8b/10b編碼機制是Infiniband,千兆位以太網, FiberChannel以及XAUI 10G以太網接口采用的編碼機制。它是一種數值查找類型的編碼機制,可將8位的字轉化為10位符號。這些符號可以保證有足夠的跳變用于時鐘恢復。下表是兩個8-bit數據編碼為10-bit數據的例子。
在上面的例子中8-bit數據會導致線路很長時間不出現切換而丟失同步信息。所以8B/10B編解碼電路采用了一種叫做運行不一致(Running Disparity)的技術來保證線路良好的直流平衡性能。
2.2.2 運行不一致(Running Disparity)
8B/10B編解碼機制中的直流平衡是通過一種稱作“運行不一致性”的方法來實現的。實現直流平衡的最簡單辦法是:只使用有相同個數0和1的符號,但是這將限制符號的數量。而8B/10B則為各個數值分配了兩個不同的符號。其中一個符號有6個0和4個1,這種情況稱為正運行不一致符號,簡寫為RD+,另一個符號則有4個0和6個1,這種情況稱為負運行不一致符號,簡寫為RD-。編碼器會檢測0和1的數量,并根據需求選擇下一個符號,以保證線路的直流平衡。下表給出了一些符號示例
“運行不一致性”技術的另一個優點是如果數據違反了運行不一致性規則,那么接收器可以通過監控輸入數據的運行不一致性規則來檢測數據中的錯誤。
2.2.3 控制字符(Control Characters)
8B/10B編解碼技術將12個特殊字符編碼成12個控制字符,通常也稱作“K”字符。這些控制字符用于數據對齊,控制以及將帶寬劃分成為子通道。下表是12種控制字符的編碼情況
2.2.4 Comma檢測
Comma指的是用于對齊序列的一個7-bit符號。數據的對齊是解串器的一項重要功能,下圖給出了串行流中的有效8B/10B數據示例。
在Serdes中,數據被Comma序列隔開,Comma序列可以自行設置,也可以預先定義好。接收器在輸入數據流中掃描搜尋特定的比特序列。如果找到序列,解串器調整字符邊界以匹配檢測到的Comma字符序列。掃描是連續進行的,一旦對齊確定,所有后續的Comma字符均會發現對齊已經確定。當然,在任意的序列組合里comma字符序列必須是唯一的。
例如,如果我們使用符號K28.7作為Comma字符,則我們必須確保任意有序符號集xy中都不包含比特序列K28.7。使用預定義協議時是不會出現這個問題的,因為Comma字符都是已經定義好的。
常用的K字符是全部控制字符中的一個或多個特定子集。這些子集中包含K28.1,K28.5,K28.7,這些字符的頭7位都是1100000。這種比特序列模式只可以在這些控制字符中出現。其他任意的字符序列或者其他K字符都不包含這一比特序列。因此,這些控制字符是非常理想的對齊序列。在使用自定義協議的情況下,最安全且最常用的解決方案是從比較著名的協議中“借”一個序列。千兆位以太網使用K28.5作為Comma字符。鑒于這個原因,盡管在技術上還有其他的選擇,這個字符還是經常被當作Comma字符。
控制字符的命名方式源于編碼器和解碼器構建方式,例如:D0.3和K28.5,下圖描述了這種方法。
輸入的8位比特被分成5位和3位的數據分別進行5B/6B編碼和3B/4B編碼,這就是其名字的來源。舉例說明, Dx.y表示最低5位的數值對應十進制值x,而最高3位的數值對應十進制值y的輸入字節。字母D表示數據字符,而字母K表示控制字符。另一種命名方式中, 8位比特對應于HGF EDCBA,而10位比特對應于abcdei fghj。開銷是8b/10b機制的一個缺陷。為了獲得2.5Gbit的帶寬,需要3.125Gb/s的線路速率。但使用擾碼技術可以很容易地解決時鐘發送和直流偏置問題,并且不需要額外的帶寬。
2.2.4 擾碼(Scrambling)
擾碼是一種將數據重新排列或者進行編碼以使其隨機化的方法,但是必須能夠解擾恢復。我們希望打亂長的連0和長的連1序列,將數據隨機化。顯然,我們希望解擾器在解擾時不需要額外的對齊信息。具有這種特性的碼稱作自同步碼。
一個簡單的擾碼器包含一組排列好的觸發器,用于移位數據流。大部分的觸發器只需要簡單地輸出下一個比特即可,但是某些觸發器需要和數據流中的歷史比特相與或者相或。下圖描述了此概念。
擾碼方法通常是伴隨著多項式出現的,因為擾碼的數學原理中使用了多項式。多項式的選擇通常是基于擾碼的特性,包括生成數據的隨機度,以及打亂長的連0、連1的能力。擾碼必須避免生成長的連0或連1序列。
我們希望能夠加快觸發器的時鐘速率。但是想要達到諸如10Gb/s的高速率不是能輕易辦到的。但是,還是有方法可以將任意形式的串行數據并行化為y位寬度的并行數據,從而加快進程。如下圖所示。
擾碼器消除了長連0、連1序列以及其他會對接收器接收能力有負面影響的序列。但是線路編碼機制(例如:8B/10B)的其他功能不是由擾碼器提供的,包括:
1、 字對齊(Word Alignment)
2、 時鐘修正機制(Clock Correction Mechanism)
3、 通道綁定機制(Channel Bonding Mechanism)
4、 子通道生成(Sub-Channel Creation)
某些情況下后三種功能可能是不需要的,而字對齊通常是必要的。如果線路編碼使用了擾碼,那么字對齊也必須采用相應的方法。例如,我們可以將某些數值排除在容許的數據(或者有效載荷)數值之外。此后,我們可以使用這些禁用的值來創建一個比特流,這個比特流不會在序列的數據部分中出現。如下圖所示
通常,因為存在不允許的數值,所以需要設計數據流中不能出現連0或連1的長度。長的連0、連1會被擾碼器打亂,并在解擾時進行恢復。接收數據流的解擾邏輯在數據流中搜尋這些符號并對齊數據。類似的技術還可用于建立其他特性。
2.2.5 4B/5B與64B/66B編解碼技術
4B/5B和8B/10B是類似的。顧名思義,這種機制將4個比特編碼成5個比特。4B/5B的編碼器和解碼器要比8B/10B簡單一些。4B/5B的控制字符要少一些,并且不能處理直流平衡和運行不一致性問題。由于編碼開銷相同但是功能卻比較少,所以4B/5B編碼機制并不經常使用。它的最大優勢是設計的尺寸,不過隨著邏輯門價格的降低這個優勢也不再明顯。4B/5B仍用在各種標準中,包括低速率版本的FiberChannel、音頻工程協會-10(AES-10)以及多通道數字音頻接口(MADI,一種數字音頻復接標準)。
還有一種新的編碼方式稱作64B/66B 。我們可以認為64B/66B是8B/10B的簡化版本,它具有更低的編碼開銷,但是實現細節相當不同。在現有的技術用戶需求下,人們開發出了64B/66B機制。10G以太網協會要求實現基于以太網的10Gb/s通信。他們可以通過使用4條有效載荷速率為2.5Gb/s、線路速率為3.125Gb/s的鏈路來實現,但此時SERDES已經可以在單個鏈路上實現10Gb的解決方案。此時新型SERDES的運行速率已經可以略高于10Gb/s了,但還不能達到12.5Gb/s以支持8B/10B的開銷。
更多的64B/66B編解碼技術的實現細節請查看參考文獻1。
2.3 包傳輸技術
包是一種確切定義的字節集合,包括頭部、數據和尾部。
注意,定義中沒有包括源地址和目的地址、 CRC校驗碼、最小長度、或者開放系統互連協議層。包只不過是一個定義了起點和終點的數據結構。局域網的包通常有很多特性,但是其他用途的包則通常要簡單得多。
包用于各種場合下的信息傳遞。例如汽車動力布線、手機以及家庭娛樂中心等等。但是,包和千兆位串行鏈路有什么關系呢?
通過千兆位串行鏈路傳輸的數據多數都是嵌入在某種類型的包中的。Serdes自然需要一種將輸入的數據流對齊成字的方法。如果系統需要時鐘修正,還必須發送特殊的比特序列或者Comma字符。Comma字符是指示幀的開始和結束的天然標識。如果需要時鐘修正,時鐘修正序列常常是比較理想的字符。加入有序集合用于指示包的開始、結束以及包的特殊類型之后,我們就有了一個簡單而又強大的傳輸通道。
idle符號或序列是包的概念的另一要點。如果沒有信息需要發送,則發送idle符號。數據的連續傳輸保證鏈路能夠維持對齊,同時PLL可以保持恢復時鐘鎖定。下圖給出了一些不同標準的包格式。
2.4 參考時鐘要求
千兆位級收發器的輸入時鐘、或是參考時鐘的規格定義是非常嚴格的。其中包含非常嚴格的頻率要求,通常用每百萬次容許頻率錯誤的單位PPM來定義。抖動要求也是十分嚴格的,通常用時間(皮秒)或者時間間隔(UI)定義。
如此嚴格的規定才使得PLL和時鐘提取電路能夠正常工作。通常系統的每一個印刷電路板都需要有一個精確石英晶體振蕩器供MGT使用。這些晶體振蕩器的精確度比大多數用在數字系統中的晶體振蕩器要高一個級別,而且價格也要高出一截。很多情況下,一般的時鐘發生芯片和PLL因為帶有很大的抖動,而不能用于MGT。
2.5 時鐘修正技術
千兆位Serdes對傳輸時鐘有非常嚴格的抖動要求,所以通常不能將恢復時鐘作為傳輸時鐘。每一個PCB集合都有唯一的振蕩器和唯一的頻率。如果兩個1GHz的振蕩器僅僅有1PPM的頻差,同時提供1/20th的參考時鐘,則數據流的時鐘每秒鐘可能會增加或者缺失20,000個周期。因此,在8B/10B編碼的系統中,每秒將會額外增加或者損失2萬個符號。
大多數的Serdes都有時鐘修正功能。時鐘修正需要使用唯一的符號或者符號序列,它們在數據流中是不會出現的。因為時鐘修正是對齊的后續處理,所以可以比較容易地通過保留一個K字符、或者一組有序的K字符、或者一個時鐘修正數據序列來實現。
某些情況需要使用4個符號的時鐘修正序列。時鐘修正通過檢測接收FIFO來完成其工作。如果FIFO接近于滿,則查找下一個時鐘修正序列而不將數據序列寫入FIFO。這種操作稱作丟棄。相反地,如果FIFO接近于空,則查找下一個時鐘修正序列,同時它會被兩次寫入FIFO。這種操作通常也稱作重復。
時鐘修正進行的頻數必須足夠多,從而可以通過丟棄或者重復來補償時鐘的差異。時鐘修正序列和idle序列通常也是一樣的。
有些系統并不需要時鐘修正。例如,在很多芯片到芯片(chip-to-chip) 的應用中,同一個振蕩器為所有收發器提供參考時鐘。相同的參考時鐘和相同的速率意味著不需要進行時鐘修正。同樣,如果所有接收電路的時鐘都來自恢復時鐘,那么時鐘修正也是不需要的。如果FIFO的寫入速率和讀出速率相等,也沒有必要進行時鐘修正。
如果所有的傳輸參考時鐘都是通過一個外部的PLL鎖定在一個公共的參考頻率上,那么也不需要時鐘修正。對于高精確度的串行數字視頻鏈路來說,這是常用的一種結構。所有的傳輸時鐘都是從一個公共的視頻參考中獲取的。無法鎖定到這個信號往往將導致自由滑動的視頻流,相對于其他的鎖定信號。在1G或2G速率上實現是比較簡單的,但是設計一個能夠用于10Gb鏈路且有足夠精度的參考時鐘是非常有挑戰性的。
下表給出了在不同晶振頻率和晶振精度下時鐘修正序列之間的最大時鐘周期數。
2.6 接收和發送緩沖器
接收和發送緩沖器,即FIFO,是千兆位級收發器的主要數字接口。FIFO通常是數據寫入和讀出的地方。發送端通常有一個小型的FIFO,它要求讀取和寫入的時鐘是等時同步(isochronous)的(等時同步是指頻率匹配但相位不一定匹配)。
如果tx_write和tx_read選通信號不是工作在精確相同的頻率,則通常采用另外的方法。此時,需要使用一個較大的FIFO,同時要求持續不斷地檢測FIFO的當前狀態。如果FIFO被不斷地填充,將最終導致溢出。在這種情況下,必須在輸入數據流中檢測idle符號。如果檢測到idle符號,則不把idle符號寫入FIFO。
反過來,如果FIFO運行較慢則在輸出數據流會出現idle符號,數據被傳送給用戶。此時寫指針保持不動,不斷重復idle符號。使用idle符號而不使用字節對齊、 Comma字符、時鐘修正序列或者通道綁定序列,這一點是非常重要的。為了保證一定的發送速率,所有這些序列都是必需的。
相對于發送緩沖器而言, MGT內建的接收FIFO通常需要有更深層次的考慮。它的主要目的是為了實現時鐘修正和通道綁定。
2.7 通道綁定
有時候我們需要傳送的數據會超過一條串行鏈路的承載能力。在這種情況下,可以同時使用多條鏈路來并行傳輸數據。如果使用這種方式,則輸入的數據流必須是對齊的。這個過程通常稱作通道綁定。通道綁定可以吸收兩個或多個MGT之間的偏差,將數據提交給用戶,就像只使用一條鏈路進行傳送一樣。通道綁定的過程如下圖所示
不同MGT間數據偏差的一些主要原因:
1、 傳輸通道長度的偏差
2、 傳輸通道的有源中繼器
3、 時鐘修正引起的偏差
4、 鎖定和字節對齊引起的時間偏差
因為通道綁定需要涉及到收發器之間的通信,所以具體的細節因廠家、器件而異。但是它們有一些共同的特性,例如:指定一個通道作為主通道,指定從通道,還可能需要指定前向從通道。三級通道綁定包括一個主通道和前向從通道,所以通常也稱為兩-跳通道綁定。
通道綁定序列必須是唯一的而且是可擴展的,因為可能會添加或丟棄通道綁定序列,所以下行鏈路中必須忽略。通常時鐘修正序列和通道綁定序列之間會有最小間隔符號數。很多基于8B/10B的標準協議規定時鐘修正序列和通道綁定序列之間至少需要間隔四個符號。因此,四個符號或字節是比較常用的間隔距離。
2.8 物理信號
千兆位級Serdes的物理實現普遍采用基于差分的電氣接口。常用的差分信號方法有三種:低電壓差分信號(LVDS)、低電壓偽射級耦合邏輯(LVPECL)和電流模式邏輯(CML)。千兆位鏈路通常使用CML。CML采用最常用的接口類型,并且通常都會提供AC或DC端接以及可選的輸出驅動。部分輸入還提供了內建的線路均衡和/或是內部端接。通常端接的阻抗也是可選的。
下圖給出了一個CML型的驅動電路。這些高速驅動電路的原理非常簡單。兩個電阻中的一個始終都有電流通過,并且此電流和通過另一個電阻的電流不同。
下圖給出了一個MGT接收器的示意圖。
2.9 預加重
千兆位級驅動器最重要的特性可能就是預加重的能力。預加重是在轉變開始前的有意過量驅動。如果沒有相關的經驗,這看起來會像是一個缺陷;看起來就象是一個不好的設計可能發生的上沖和下沖。為了弄懂這么做的意圖,我們需要理解符號間干擾。
如果串行流包含多個比特位時間的相同數值數據,而其后跟著短比特位(1或2)時間的相反數據數值時,會發生符號間干擾。介質(傳輸通道電容)在短位時間過程中沒有足夠的充電時間,因此產生了較低的幅度。符號間干擾的示意圖如下:
在符號間干擾的情況下,長時間的恒定值將通道中的等效電容完全的充電,在緊接著的相反數據數值位時間內無法反相補償。所以,相反數據的電壓值有可能不會被檢測到。這個問題的解決方法是:轉變開始時加入過量驅動,而在任意的連續相同數值時間內減少驅動量,這種過程有時也稱作去加重。
2.10 差分傳輸
數字設計工程師和PCB設計師們曾經一度認為布線只不過是簡單的互連或連線。實際上,原型建造時通常采用一種叫做蛇行布線的技術。實際中并不是一定要運用傳輸線和傳輸線理論。如果線路的傳輸延時只是信號上升時間中的很小一部分,我們可以不使用傳輸線理論。
但是隨著信號的傳輸速率的增大,PCB設計過程中就必須使用傳輸線理論。對于千兆位級操作而言,不僅包括傳輸線和阻抗控制,還包括差分線路對的阻抗控制。差分線路對阻抗匹配的兩條線路是相鄰的。兩條線路之間的間隔使得兩線路相互耦合。如果兩線路相隔較遠,則稱作弱耦合。如果相隔較近,則為強耦合。
如果給定線路的長度以及疊層結構(會帶來給定的阻抗),耦合還會影響線路的阻抗。相同幾何形狀的差分線路對也會有不同的阻抗。阻抗的精確大小因材料而異,但是板制作廠商通常會提供精確的數據。下表給出了受控阻抗差分線路的各種類型。
2.11 線路均衡
均衡主要用于補償由頻率不同而引起的阻抗/衰減差異。均衡器有很多種形式,但總體上可以分為有源和無源兩種。
無源均衡器是無源電路,其頻率響應可以補償傳輸衰減。無源均衡器可以認為是一個濾波器。如果我們的濾波器可以使傳輸線所使用的各頻率通過,而將傳輸線沒有使用的其他頻率濾除,那么整體的頻率響應就會變得平坦許多。
有源均衡器可以認為是依賴頻率的放大器/衰減器。有源均衡器主要有兩種:固定形式有源均衡器和自適應有源均衡器。對于任意的輸入數據流,固定形式有源均衡器的頻率響應都是一樣的。
固定形式均衡器的增益/衰減量通常是用戶可選擇的,或者可編程的。部分均衡器有一個簡單的控制參數—n 用于設置高增益或低增益,類似于簡單音響系統中的低音設置。還有一些均衡器可以獨立設置不同頻率的增益/衰減量,這和復雜音響系統中的均衡設置是類似的。
自適應均衡器(也稱學習型均衡器)要復雜的多,自適應均衡器需要分析輸入信號并檢測哪些頻率在傳輸通道中被削弱。測量和調節是以閉環形式實現的。自適應均衡器的頻率響應取決于輸入的比特流。
自適應均衡器通常和特殊形式的線路編碼機制協同工作。自適應均衡器對于可變通道的鏈路來說是最合適的,可變通道可以是可變的電纜長度,或是顯著的位置依賴的背板系統。固定形式均衡器比較適合于不變系統中,例如:芯片到芯片,平衡化的背板系統以及固定長度電纜的系統。均衡器通常包含在SERDES的模擬前端,或者作為系統的一個獨立部分。
2.12 光解決方案
如果系統中電纜要傳輸的距離很遠(遠大于相鄰底板的距離),那么通常采用光解決方案。使用光纖可以實現多種長距離傳輸,例如:樓下到樓上,樓與樓之間,街區之間或者城鎮之間。
光纖系統使用光信號取代電信號來傳輸信息。最基本的光纖系統包括發送器或信號源、光纖以及接收器,接收器將光脈沖重新轉變為電信號。信號源通常是注入型激光二極管(ILD)或者發光二極管(LED),如下圖所示。
光纖中的光脈沖傳輸是基于全反射定理的。全反射定理:如果入射角大于臨界值,則光線不會透射而會全部反射回來。簡單的說,光纖可以看作是一個內部全是鏡子的彈性管線。光線在管道中不停反射前進,就算管道發生了彎曲,光線也能一直前進到達末端。
光線有兩種類型——單模光纖和多模光纖。單模的價格較高,可以傳輸的距離也較長。多模光纖的價格較低,只能用于短距離傳輸。
單模光纖的示意圖如下圖所示
多模光纖的示意圖如下圖所示
2.13 循環冗余校驗碼(CRC)
設計師還是需要設計一個穩健的系統。首先,他需要檢查系統的要求,看是否能夠使用常用的方法來解決問題。
一種方法是錯誤檢測數據重傳。檢查輸入數據中是否有錯。如果發現錯誤,則發送信息給發送者要求重傳數據。錯誤檢測的首選方法是CRC。因為CRC十分常用,所以許多SERDES內部都有CRC發生器和檢測邏輯。通常重傳請求是由上層協議定義的。如果協議支持CRC和重傳,或者數據要求正是其所能滿足的,那么這種方法將會是最好的選擇。
如果情況不是這樣的話,設計師還可以有其他的選擇。設計師可以建造并測試所設計的系統,以觀察其能否正常工作。SERDES發布的BER可以用來確定測試需要進行到什么程度,所以設計師還是有一些機動空間的。設計師不可能設計出一個遠優于發布數據的系統。除了持續測試直到達到發布的BER,設計師還需要在各種極限情況下進行測試(例如,輸入抖動十分靠近容限)。如果給系統設計提供更好的輸入流,那么結果會更好。
數據還提供了另一種值得考慮的選擇。多數的數據流都是有模式的,和用于BER測試的偽隨機比特流相比,數據流更容易預測。這一點可能是好處也可能是壞處,這取決于傳輸通道和均衡器適配數據流的情況。所以必須進行測試和調整。所以建造一個系統并觀察其能否正常工作,這種方法并不是十分牽強的。盡管如此,如果這種方法會出現操作上的問題,那么前向糾錯(FEC)可能會有所幫助。
2.14 前向糾錯(FEC)
由于設計師知道可能會發生錯誤,所以可以通過提供冗余數據位來恢復這些錯誤。常用的方法就是利用一些前向糾錯碼來對數據流中的錯誤進行糾正。
前向糾錯的定義:添加額外的位,用于幫助恢復錯誤數據。
考慮一個待傳輸的數據塊,其大小為NxR字節,分為R行,每行N字節。現在給矩陣的每一行附加額外的一個字節,并給矩陣附加額外的一行。這些地方就是額外的位置。
數據塊的附加信息就保存在這些額外的位置中。此例中,額外的信息是奇偶位。附加字節的每一位代表此行中各字節對應位的奇偶性。也就是說,P[1][0]是D[1.1][0] D[1.2][0]D[1.3][0] …. D[1.N][0]的奇偶性。而對于額外的行而言,其中的每一位就是對應列中各位的奇偶性。也就是說, P[R+1.0][0]是 D[0.0][0], D[1.0][0] D[2.0][0] ….D[N.0][0]的奇偶性。矩陣的示意圖如下圖所示。
數據和附加位同時通過鏈路傳輸。在另一側,接收器會檢查矩陣的奇偶性。如果數據的任一位是錯誤的,那么它會標記出來,并通過行值和列值來確定位置。只需要簡單的取反,即可糾正該位的錯誤。多位的錯誤即可能被糾正,也可能會導致混亂而且會阻止其他錯誤的糾正,這取決于錯誤發生的位置。
這種方法通常稱作簡單矩陣奇偶性法,而且也是FEC的最初類型。這也是多數FEC方法基本模塊。這個例子是簡單易懂的,但是它有局限性。針對惡劣環境和性能不好的傳輸通道,已經開發出多種FEC 方法,例如Viterbi,Reed-Soloman 和 Turbo 編碼。所有這些方法都有強大的糾錯能力,但是糾錯也是有代價的:
1、運行速度不夠快:與大多數可以在常規結構下發揮作用的方法相比,千兆位級 SERDES的速度較快。
2、編解碼器太過龐大:編碼器和解碼器的電路邏輯數量可能會是MGT及其剩余部分的十倍。
3、編碼開銷過大:編碼開銷就是那些附加的位。編碼開銷過大常常可以使一種 FEC方法不可行。
三 總結
Serdes技術中的各種可用功能極大地促進了I/O設計的發展。SERDES的各種功能例如RX定位、時鐘管理器、發送/接收FIFO、線路編碼器/解碼器等被廣泛用于提高速度和精確度。SERDES在未來I/O設計中扮演著重要角色,它提供的各種功能也將是高效 I/O器件設計的重要工具。
審核編輯:劉清
-
收發器
+關注
關注
10文章
3438瀏覽量
106077 -
濾波器
+關注
關注
161文章
7846瀏覽量
178415 -
FPGA設計
+關注
關注
9文章
428瀏覽量
26553 -
fifo
+關注
關注
3文章
389瀏覽量
43747 -
SerDes
+關注
關注
6文章
200瀏覽量
34964
原文標題:【設計經驗】4、SERDES關鍵技術總結
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論