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