隨着大數據的興起以及信息技術的快速發展,數據傳輸對總線帶寬的要求愈來愈高,並行傳輸技術的發展受到了時序同步困難、信號偏移嚴重,抗干擾能力弱以及設計複雜度高等一系列問題的阻礙。與並行傳輸技術相比,串行傳輸技術的引腳數量少、擴展能力強、採用點對點的鏈接方式,並且能提供比並行傳輸更高帶寬,所以現已普遍用於嵌入式高速傳輸領域。前端
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)增長,因此如非必要通常狀況下都把它屏蔽掉。接收均衡電路主要用來補償由頻率不一樣引發的阻抗差別。時鐘發生電路與時鐘恢復電路在發送端把時鐘和數據綁定後發送,在接收端再從接收到的數據流中恢復出時鐘,這樣能夠有效地避免在高速串行傳輸的條件下時鐘與數據分開傳輸帶來的時鐘抖動問題。api
PCS子層內部集成了8B/10B編/解碼電路、彈性緩衝電路、通道綁定電路和時鐘修正電路。8B/10B編/解碼電路能夠有效的避免數據流中出現連續的‘0’或者‘1’,以保證數據傳輸的平衡性。通道綁定電路的做用是經過在發送數據流中加入K碼字符,把多個物理上獨立的MGT通道綁定成一個時序邏輯上同步的並行通道進而提升傳輸的吞吐率。彈性緩衝電路用來解決恢復的時鐘與本地時鐘不一致的問題並能夠經過對緩衝區中的K碼進行匹配對齊來實現通道綁定功能。安全
下面將詳細討論SERDES用到的各類關鍵技術。數據結構
簡化的SERDES結構圖以下圖所示ide
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甚至更高,主要緣由是由於它採用了多種技術來實現這些功能。工具
若是輸入的串行數據流比特率爲x, 那麼可使用多重相位以x/4的低速時鐘來從新組織數據流。輸入的數據流直接鏈接到4個觸發器,每個觸發器運行在時鐘的不一樣相位上(0、90、180以及270)。多重相位技術的數據提取電路以下圖所示性能
對應的時序圖以下圖所示學習
每一個觸發器的輸出鏈接到時鐘相位小90度的觸發器,直到到達時鐘相位爲0 的觸發器。這樣,輸入數據流就被分解成了1/4輸入速率, 4bit寬度的並行數據流。測試
在上述的示例電路中,相位等差排列,時鐘頻率嚴格等於輸入數據流速率的1/4。怎樣才能實現呢?咱們必須和輸入的數據流保持鎖定。咱們可使用典型的鎖相環來實現這一點,可是鎖相環須要一個全速率的時鐘,這是很難知足的。鎖相環是高速SERDES設計中最重大的改進之一,它主要用於時鐘和數據恢復。通常的鎖相環須要有運行在數據速率上的時鐘,不過能夠經過多種技術來避免這種要求,包括分數鑑相器、多重相位鎖相環、並行採樣以及過採樣數據恢復。
線路編碼機制將輸入的原始數據轉變成接收器能夠接收的格式,並保證有足夠的切換提供給時鐘恢復電路。編碼器還提供一種將數據對齊到字的方法,同時線路能夠保持良好的直流平衡。線路編碼機制也可選擇用來實現時鐘修正、塊同步、通道綁定和將帶寬劃分到子通道。線路編碼機制主要有兩種方式,分別爲數值查找機制和擾碼機制。
8b/10b編碼機制是由IBM開發的,已經被普遍採用。 8b/10b編碼機制是Infiniband,千兆位以太網, FiberChannel以及XAUI 10G以太網接口採用的編碼機制。它是一種數值查找類型的編碼機制,可將8位的字轉化爲10位符號。這些符號能夠保證有足夠的跳變用於時鐘恢復。下表是兩個8-bit數據編碼爲10-bit數據的例子。
在上面的例子中8-bit數據會致使線路很長時間不出現切換而丟失同步信息。 因此8B/10B編解碼電路採用了一種叫作運行不一致(Running Disparity)的技術來保證線路良好的直流平衡性能。
8B/10B編解碼機制中的直流平衡是經過一種稱做「運行不一致性」的方法來實現的。實現直流平衡的最簡單辦法是:只使用有相同個數0和1的符號,可是這將限制符號的數量。而8B/10B則爲各個數值分配了兩個不一樣的符號。其中一個符號有6個0和4個1,這種狀況稱爲正運行不一致符號,簡寫爲RD+,另外一個符號則有4個0和6個1,這種狀況稱爲負運行不一致符號,簡寫爲RD-。編碼器會檢測0和1的數量,並根據需求選擇下一個符號,以保證線路的直流平衡。下表給出了一些符號示例
「運行不一致性」技術的另外一個優勢是若是數據違反了運行不一致性規則,那麼接收器能夠經過監控輸入數據的運行不一致性規則來檢測數據中的錯誤。
8B/10B編解碼技術將12個特殊字符編碼成12個控制字符,一般也稱做「K」字符。這些控制字符用於數據對齊,控制以及將帶寬劃分紅爲子通道。下表是12種控制字符的編碼狀況
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的線路速率。但使用擾碼技術能夠很容易地解決時鐘發送和直流偏置問題,而且不須要額外的帶寬。
擾碼是一種將數據從新排列或者進行編碼以使其隨機化的方法,可是必須可以解擾恢復。咱們但願打亂長的連0和長的連1序列,將數據隨機化。顯然,咱們但願解擾器在解擾時不須要額外的對齊信息。具備這種特性的碼稱做自同步碼。
一個簡單的擾碼器包含一組排列好的觸發器,用於移位數據流。大部分的觸發器只須要簡單地輸出下一個比特便可,可是某些觸發器須要和數據流中的歷史比特相與或者相或。下圖描述了此概念。
擾碼方法一般是伴隨着多項式出現的,由於擾碼的數學原理中使用了多項式。多項式的選擇一般是基於擾碼的特性,包括生成數據的隨機度,以及打亂長的連0、連1的能力。擾碼必須避免生成長的連0或連1序列。
咱們但願可以加快觸發器的時鐘速率。可是想要達到諸如10Gb/s的高速率不是能輕易辦到的。可是,仍是有方法能夠將任意形式的串行數據並行化爲y位寬度的並行數據,從而加快進程。以下圖所示。
擾碼器消除了長連0、連1序列以及其餘會對接收器接收能力有負面影響的序列。可是線路編碼機制(例如: 8B/10B)的其餘功能不是由擾碼器提供的,包括:
一、 字對齊(Word Alignment)
二、 時鐘修正機制(Clock Correction Mechanism)
三、 通道綁定機制(Channel Bonding Mechanism)
四、 子通道生成(Sub-Channel Creation)
某些狀況下後三種功能多是不須要的,而字對齊一般是必要的。若是線路編碼使用了擾碼,那麼字對齊也必須採用相應的方法。例如,咱們能夠將某些數值排除在允許的數據(或者有效載荷)數值以外。此後,咱們可使用這些禁用的值來建立一個比特流,這個比特流不會在序列的數據部分中出現。以下圖所示
一般,由於存在不容許的數值,因此須要設計數據流中不能出現連0或連1的長度。長的連0、連1會被擾碼器打亂,並在解擾時進行恢復。接收數據流的解擾邏輯在數據流中搜尋這些符號並對齊數據。相似的技術還可用於創建其餘特性。
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。
包是一種確切定義的字節集合,包括頭部、數據和尾部。
注意,定義中沒有包括源地址和目的地址、 CRC校驗碼、最小長度、或者開放系統互連協議層。包只不過是一個定義了起點和終點的數據結構。局域網的包一般有不少特性,可是其餘用途的包則一般要簡單得多。
包用於各類場合下的信息傳遞。例如汽車動力佈線、手機以及家庭娛樂中心等等。可是,包和千兆位串行鏈路有什麼關係呢?
經過千兆位串行鏈路傳輸的數據多數都是嵌入在某種類型的包中的。Serdes天然須要一種將輸入的數據流對齊成字的方法。若是系統須要時鐘修正,還必須發送特殊的比特序列或者Comma字符。 Comma字符是指示幀的開始和結束的自然標識。若是須要時鐘修正,時鐘修正序列經常是比較理想的字符。加入有序集合用於指示包的開始、結束以及包的特殊類型以後,咱們就有了一個簡單而又強大的傳輸通道。
idle符號或序列是包的概念的另外一要點。若是沒有信息須要發送,則發送idle符號。數據的連續傳輸保證鏈路可以維持對齊,同時PLL能夠保持恢復時鐘鎖定。下圖給出了一些不一樣標準的包格式。
千兆位級收發器的輸入時鐘、或是參考時鐘的規格定義是很是嚴格的。其中包含很是嚴格的頻率要求,一般用每百萬次允許頻率錯誤的單位PPM來定義。抖動要求也是十分嚴格的,一般用時間(皮秒)或者時間間隔(UI)定義。
如此嚴格的規定才使得PLL和時鐘提取電路可以正常工做。一般系統的每個印刷電路板都須要有一個精確石英晶體振盪器供MGT使用。這些晶體振盪器的精確度比大多數用在數字系統中的晶體振盪器要高一個級別,並且價格也要高出一截。不少狀況下,通常的時鐘發生芯片和PLL由於帶有很大的抖動,而不能用於MGT。
千兆位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鏈路且有足夠精度的參考時鐘是很是有挑戰性的。
下表給出了在不一樣晶振頻率和晶振精度下時鐘修正序列之間的最大時鐘週期數。
接收和發送緩衝器,即FIFO,是千兆位級收發器的主要數字接口。 FIFO一般是數據寫入和讀出的地方。發送端一般有一個小型的FIFO,它要求讀取和寫入的時鐘是等時同步(isochronous)的(等時同步是指頻率匹配但相位不必定匹配)。
若是tx_write和tx_read選通訊號不是工做在精確相同的頻率,則一般採用另外的方法。此時,須要使用一個較大的FIFO,同時要求持續不斷地檢測FIFO的當前狀態。若是FIFO被不斷地填充,將最終致使溢出。在這種狀況下,必須在輸入數據流中檢測idle符號。若是檢測到idle符號,則不把idle符號寫入FIFO。
反過來,若是FIFO運行較慢則在輸出數據流會出現idle符號,數據被傳送給用戶。此時寫指針保持不動,不斷重複idle符號。使用idle符號而不使用字節對齊、 Comma字符、時鐘修正序列或者通道綁定序列,這一點是很是重要的。爲了保證必定的發送速率,全部這些序列都是必需的。
相對於發送緩衝器而言, MGT內建的接收FIFO一般須要有更深層次的考慮。它的主要目的是爲了實現時鐘修正和通道綁定。
有時候咱們須要傳送的數據會超過一條串行鏈路的承載能力。在這種狀況下,能夠同時使用多條鏈路來並行傳輸數據。若是使用這種方式,則輸入的數據流必須是對齊的。這個過程一般稱做通道綁定。通道綁定能夠吸取兩個或多個MGT之間的誤差,將數據提交給用戶,就像只使用一條鏈路進行傳送同樣。通道綁定的過程以下圖所示
不一樣MGT間數據誤差的一些主要緣由:
一、 傳輸通道長度的誤差
二、 傳輸通道的有源中繼器
三、 時鐘修正引發的誤差
四、 鎖定和字節對齊引發的時間誤差
由於通道綁定須要涉及到收發器之間的通訊,因此具體的細節因廠家、器件而異。可是它們有一些共同的特性,例如:指定一個通道做爲主通道,指定從通道,還可能須要指定前向從通道。三級通道綁定包括一個主通道和前向從通道,因此一般也稱爲兩-跳通道綁定。
通道綁定序列必須是惟一的並且是可擴展的,由於可能會添加或丟棄通道綁定序列,因此下行鏈路中必須忽略。一般時鐘修正序列和通道綁定序列之間會有最小間隔符號數。不少基於8B/10B的標準協議規定時鐘修正序列和通道綁定序列之間至少須要間隔四個符號。所以,四個符號或字節是比較經常使用的間隔距離。
千兆位級Serdes的物理實現廣泛採用基於差分的電氣接口。經常使用的差分信號方法有三種:低電壓差分信號(LVDS)、低電壓僞射級耦合邏輯(LVPECL)和電流模式邏輯(CML)。千兆位鏈路一般使用CML。CML採用最經常使用的接口類型,而且一般都會提供AC或DC端接以及可選的輸出驅動。部分輸入還提供了內建的線路均衡和/或是內部端接。一般端接的阻抗也是可選的。
下圖給出了一個CML型的驅動電路。這些高速驅動電路的原理很是簡單。兩個電阻中的一個始終都有電流經過,而且此電流和經過另外一個電阻的電流不一樣。
下圖給出了一個MGT接收器的示意圖。
千兆位級驅動器最重要的特性可能就是預加劇的能力。預加劇是在轉變開始前的有意過量驅動。若是沒有相關的經驗,這看起來會像是一個缺陷;看起來就象是一個很差的設計可能發生的上衝和下衝。爲了弄懂這麼作的意圖,咱們須要理解符號間干擾。
若是串行流包含多個比特位時間的相同數值數據,而其後跟着短比特位(1或2)時間的相反數據數值時,會發生符號間干擾。介質(傳輸通道電容)在短位時間過程當中沒有足夠的充電時間,所以產生了較低的幅度。符號間干擾的示意圖以下:
在符號間干擾的狀況下,長時間的恆定值將通道中的等效電容徹底的充電,在緊接着的相反數據數值位時間內沒法反相補償。因此,相反數據的電壓值有可能不會被檢測到。這個問題的解決方法是:轉變開始時加入過量驅動,而在任意的連續相同數值時間內減小驅動量,這種過程有時也稱做去加劇。
數字設計工程師和PCB設計師們曾經一度認爲佈線只不過是簡單的互連或連線。實際上,原型建造時一般採用一種叫作蛇行佈線的技術。實際中並非必定要運用傳輸線和傳輸線理論。若是線路的傳輸延時只是信號上升時間中的很小一部分,咱們能夠不使用傳輸線理論。
可是隨着信號的傳輸速率的增大,PCB設計過程當中就必須使用傳輸線理論。對於千兆位級操做而言,不只包括傳輸線和阻抗控制,還包括差分線路對的阻抗控制。差分線路對阻抗匹配的兩條線路是相鄰的。兩條線路之間的間隔使得兩線路相互耦合。若是兩線路相隔較遠,則稱做弱耦合。若是相隔較近,則爲強耦合。
若是給定線路的長度以及疊層結構(會帶來給定的阻抗),耦合還會影響線路的阻抗。相同幾何形狀的差分線路對也會有不一樣的阻抗。阻抗的精確大小因材料而異,可是板製做廠商一般會提供精確的數據。下表給出了受控阻抗差分線路的各類類型。
均衡主要用於補償由頻率不一樣而引發的阻抗/衰減差別。均衡器有不少種形式,但整體上能夠分爲有源和無源兩種。
無源均衡器是無源電路,其頻率響應能夠補償傳輸衰減。無源均衡器能夠認爲是一個濾波器。若是咱們的濾波器可使傳輸線所使用的各頻率經過,而將傳輸線沒有使用的其餘頻率濾除,那麼總體的頻率響應就會變得平坦許多。
有源均衡器能夠認爲是依賴頻率的放大器/衰減器。有源均衡器主要有兩種:固定形式有源均衡器和自適應有源均衡器。對於任意的輸入數據流,固定形式有源均衡器的頻率響應都是同樣的。
固定形式均衡器的增益/衰減量一般是用戶可選擇的,或者可編程的。部分均衡器有一個簡單的控制參數—n 用於設置高增益或低增益,相似於簡單音響系統中的低音設置。還有一些均衡器能夠獨立設置不一樣頻率的增益/衰減量,這和複雜音響系統中的均衡設置是相似的。
自適應均衡器(也稱學習型均衡器)要複雜的多,自適應均衡器須要分析輸入信號並檢測哪些頻率在傳輸通道中被削弱。測量和調節是以閉環形式實現的。自適應均衡器的頻率響應取決於輸入的比特流。
自適應均衡器一般和特殊形式的線路編碼機制協同工做。自適應均衡器對於可變通道的鏈路來講是最合適的,可變通道能夠是可變的電纜長度,或是顯著的位置依賴的背板系統。固定形式均衡器比較適合於不變系統中,例如:芯片到芯片,平衡化的背板系統以及固定長度電纜的系統。均衡器一般包含在SERDES的模擬前端,或者做爲系統的一個獨立部分。
若是系統中電纜要傳輸的距離很遠(遠大於相鄰底板的距離),那麼一般採用光解決方案。使用光纖能夠實現多種長距離傳輸,例如:樓下到樓上,樓與樓之間,街區之間或者城鎮之間。
光纖系統使用光信號取代電信號來傳輸信息。最基本的光纖系統包括髮送器或信號源、光纖以及接收器,接收器將光脈衝從新轉變爲電信號。信號源一般是注入型激光二極管(ILD)或者發光二極管(LED),以下圖所示。
光纖中的光脈衝傳輸是基於全反射定理的。全反射定理:若是入射角大於臨界值,則光線不會透射而會所有反射回來。簡單的說,光纖能夠看做是一個內部全是鏡子的彈性管線。光線在管道中不停反射前進,就算管道發生了彎曲,光線也能一直前進到達末端。
光線有兩種類型——單模光纖和多模光纖。單模的價格較高,能夠傳輸的距離也較長。多模光纖的價格較低,只能用於短距離傳輸。
單模光纖的示意圖以下圖所示
多模光纖的示意圖以下圖所示
基本的光鏈接器以下圖所示
設計師仍是須要設計一個穩健的系統。首先,他須要檢查系統的要求,看是否可以使用經常使用的方法來解決問題。
一種方法是錯誤檢測數據重傳。檢查輸入數據中是否有錯。若是發現錯誤,則發送信息給發送者要求重傳數據。錯誤檢測的首選方法是CRC。由於CRC十分經常使用,因此許多SERDES內部都有CRC發生器和檢測邏輯。一般重傳請求是由上層協議定義的。若是協議支持CRC和重傳,或者數據要求正是其所能知足的,那麼這種方法將會是最好的選擇。
若是狀況不是這樣的話,設計師還能夠有其餘的選擇。設計師能夠建造並測試所設計的系統,以觀察其可否正常工做。SERDES發佈的BER能夠用來肯定測試須要進行到什麼程度,因此設計師仍是有一些機動空間的。設計師不可能設計出一個遠優於發佈數據的系統。除了持續測試直到達到發佈的BER,設計師還須要在各類極限狀況下進行測試(例如,輸入抖動十分靠近容限)。若是給系統設計提供更好的輸入流,那麼結果會更好。
數據還提供了另外一種值得考慮的選擇。多數的數據流都是有模式的,和用於BER測試的僞隨機比特流相比,數據流更容易預測。這一點多是好處也多是壞處,這取決於傳輸通道和均衡器適配數據流的狀況。因此必須進行測試和調整。因此建造一個系統並觀察其可否正常工做,這種方法並非十分牽強的。儘管如此,若是這種方法會出現操做上的問題,那麼前向糾錯(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器件設計的重要工具。
一、ug476_7Series_Transceivers,下載連接:https://www.xilinx.com/support/documentation/user_guides/ug476_7Series_Transceivers.pdf
二、High-speed serial IO made simple,下載連接:https://pan.baidu.com/s/1Is8oZznS4MCHEOPK5Qwufg 密碼:rttp