燕 威
(1.中國(guó)科學(xué)院大學(xué) 北京100190;2.國(guó)家空間科學(xué)中心復(fù)雜航天系統(tǒng)綜合電子與信息技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京100190)
一種星載數(shù)據(jù)通信高速串行收發(fā)器IP核設(shè)計(jì)
燕 威1,2
(1.中國(guó)科學(xué)院大學(xué) 北京100190;2.國(guó)家空間科學(xué)中心復(fù)雜航天系統(tǒng)綜合電子與信息技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京100190)
提出一種可在星載設(shè)備上進(jìn)行高速串行通信的收發(fā)器IP核方案。包括整體結(jié)構(gòu)的設(shè)計(jì),關(guān)鍵技術(shù)的原理及實(shí)現(xiàn),IP核的測(cè)試及仿真。該IP核可以在FPGA設(shè)計(jì)中直接調(diào)用,實(shí)現(xiàn)對(duì)上級(jí)數(shù)據(jù)的8B10B編解碼,時(shí)鐘數(shù)據(jù)恢復(fù)和字節(jié)對(duì)齊等功能。仿真測(cè)試表明,該IP設(shè)計(jì)在spartan6 xc4slx-45t型FPGA能夠?qū)崿F(xiàn)300Mbps的數(shù)據(jù)吞吐率,非常適用于星載設(shè)備間的高速串行通信,提高衛(wèi)星可靠性,降低發(fā)射成本,具有較高應(yīng)用價(jià)值。
高速串行;8B10B;星載;時(shí)鐘數(shù)據(jù)恢復(fù)
傳統(tǒng)衛(wèi)星星載設(shè)備使用并行傳輸結(jié)構(gòu)提高數(shù)據(jù)傳輸速率,隨著星載設(shè)備數(shù)據(jù)處理能力的提高,繼續(xù)采用并行傳輸?shù)姆绞教岣咚俾蕦⒁胍恍﹩?wèn)題。一是在接收端對(duì)多路并行數(shù)據(jù)的同步將變的困難。二是衛(wèi)星內(nèi)部數(shù)據(jù)傳輸線的過(guò)多會(huì)增加衛(wèi)星重量,增加衛(wèi)星發(fā)射成本。目前市面上的主流工業(yè)級(jí)FPGA芯片都集成各自開發(fā)的高速串行收發(fā)器,能達(dá)到很高的數(shù)據(jù)傳輸速率,但是衛(wèi)星上使用的宇航級(jí)FPGA芯片中,卻少有集成高速串行收發(fā)器,在國(guó)防軍事衛(wèi)星上使用國(guó)外廠商的黑盒IP核對(duì)于整個(gè)衛(wèi)星系統(tǒng)的可靠性控制會(huì)產(chǎn)生不可預(yù)測(cè)的風(fēng)險(xiǎn)。
文中通過(guò)對(duì)現(xiàn)有的各主流廠商的FPGA集成的高速串行收發(fā)器不同方案的分析,提出一種能夠在FPGA設(shè)計(jì)中方便調(diào)用的高速串行收發(fā)器IP核,該IP核具有8B10B[1]編解碼,時(shí)鐘數(shù)據(jù)恢復(fù)等功能,具有實(shí)現(xiàn)資源消耗少,速度快,移植性好,可靠性高等特點(diǎn)。
高速串行收發(fā)器原理圖[2]如圖1。

圖1 高速串行收發(fā)器原理框圖
在發(fā)送端,將外部電路發(fā)送過(guò)來(lái)的并行數(shù)據(jù)在編碼器進(jìn)行8B10B編碼,將編碼后的并行數(shù)據(jù)通過(guò)串并轉(zhuǎn)換器轉(zhuǎn)變?yōu)榇袛?shù)據(jù),由LVDS器件高速發(fā)送出去。在接收端,由LVDS器件將傳輸線上的差分信號(hào)恢復(fù)為串行信號(hào)并送入時(shí)鐘數(shù)據(jù)恢復(fù)單元(CDR),由CDR從接受到的串行數(shù)據(jù)流中恢復(fù)出同步時(shí)鐘和傳輸?shù)拇a元,經(jīng)過(guò)串并轉(zhuǎn)換單元將恢復(fù)出的串行數(shù)據(jù)流轉(zhuǎn)變?yōu)椴⑿袛?shù)據(jù),再將并行數(shù)據(jù)經(jīng)過(guò)8B10B解碼器的解碼后傳輸給后續(xù)的電路,完成數(shù)據(jù)的高速串行收發(fā)。
2.1 8B10B編解碼器
8B10B編解碼技術(shù)是主流傳輸標(biāo)準(zhǔn)中采用的編解碼技術(shù)之一,廣泛應(yīng)用于各種高速串行通信標(biāo)準(zhǔn)如PCI-Express、串行ATA、1394b等。8B10B編碼采用冗余方式,將 8位的數(shù)據(jù)和一些特殊字符按照特定的規(guī)則編碼成 10位的數(shù)據(jù),具有如下特點(diǎn):通過(guò)編碼保證“1”和“0”的個(gè)數(shù)基本一致,從而確保傳輸?shù)闹绷鞒煞纸咏悖绷髌茰p至最小。8B/10B編解碼技術(shù)設(shè)定傳輸數(shù)據(jù)流擁有連續(xù)“1”或連續(xù)“0”不能超過(guò)5個(gè),保證豐富的脈沖跳變,減少接收端時(shí)鐘漂移或同步丟失引起數(shù)據(jù)丟失。通過(guò)以上各種措施,8B10B編碼方式能夠確保數(shù)據(jù)在高速傳輸過(guò)程中正確傳送和識(shí)別。
2.1.1 編碼器原理和設(shè)計(jì)
8B10B編碼器將8B數(shù)據(jù)按照特殊的規(guī)則編碼成10B數(shù)據(jù),而且保證每10B數(shù)據(jù)中0和1的個(gè)數(shù)差在“0”,“+2”,“-2”三種情況中,編碼過(guò)程中由一個(gè)極性偏差控制器,保證碼流中“1”的個(gè)數(shù)和“0”的個(gè)數(shù)接近相等,誤差保持在2個(gè)以內(nèi)。為了簡(jiǎn)化編碼電路,文獻(xiàn)[2,3]提出的設(shè)計(jì)中數(shù)據(jù)編碼,采用將8B數(shù)據(jù)分為3B和5B,再對(duì)3B數(shù)據(jù)和5B數(shù)據(jù)分別進(jìn)行編碼,同樣在3B和5B編碼后的4B和6B數(shù)據(jù)中也有中0和1的個(gè)數(shù)差在“0”,“+2”,“-2”3種情況。對(duì)于控制碼的編碼則直接采用8B10B編碼。
為了使編碼更為簡(jiǎn)單,充分利用FPGA結(jié)構(gòu)特點(diǎn),提出設(shè)計(jì)采用查找表的方式實(shí)現(xiàn)編碼。例如5B6B編碼器的設(shè)計(jì)就是將所有5B對(duì)應(yīng)的編碼和不平衡度(rd)在 RAM中存儲(chǔ),只需要根據(jù) 5B和 rd輸入信息,找到對(duì)應(yīng)的編碼和rd即可。

圖2 8B10B編碼器原理框圖
2.1.2 解碼器原理和實(shí)現(xiàn)
8B10B解碼器是將接收到的10B的數(shù)據(jù)解碼為8B數(shù)據(jù)的過(guò)程。解碼的過(guò)程是編碼的逆過(guò)程,輸入的10B數(shù)據(jù)拆分成6B和4B,分別輸入到6B5B,4B3B解碼器,解碼后輸出8B數(shù)據(jù)和rd值,rd值用來(lái)校驗(yàn)數(shù)據(jù)的解碼是否正確,與編碼器一樣采用查找表的方式實(shí)現(xiàn)。解碼器原理框圖如圖3。

圖3 8B10B解碼器原理框圖
2.2 時(shí)鐘數(shù)據(jù)恢復(fù)模塊
基于過(guò)采樣的時(shí)鐘數(shù)據(jù)恢復(fù)[4-6]原理。
時(shí)鐘數(shù)據(jù)恢復(fù)模塊的主要功能是從接收到的碼流中恢復(fù)出同步采樣時(shí)鐘和數(shù)據(jù)。主流的時(shí)鐘恢復(fù)模塊主要有PLL和過(guò)采樣兩種方式,PLL時(shí)鐘恢復(fù)適合于更高速時(shí)鐘的恢復(fù),過(guò)采樣適合于相對(duì)速率較低的場(chǎng)合。文中采用過(guò)采樣的方式進(jìn)行數(shù)據(jù)時(shí)鐘恢復(fù)。過(guò)采樣的原理圖如圖4。

圖4 過(guò)采樣原理
由于發(fā)送方的發(fā)送數(shù)據(jù)時(shí)鐘和接收方同步采樣的數(shù)據(jù)時(shí)鐘頻率相同,主要的誤差來(lái)源于相位不同,所以可以采用過(guò)采樣的方式直接恢復(fù)出數(shù)據(jù)。具體的做法是在接收端采用一個(gè)頻率和發(fā)送頻率相同的時(shí)鐘CLK和一個(gè)與CLK相差90度的時(shí)鐘CLK_90。分別采用CLK的上沿,CLK_90的上沿,CLK的下沿,CLK_90的下沿對(duì)收到的數(shù)據(jù)流進(jìn)行采樣。采樣結(jié)果會(huì)有如下4種情況:
Case1:A=0,B=0,C=0,D=0;A=1,B=1,C=1,D=1
Case2:A=1,B=0,C=0,D=0;A=0,B=1,C=1,D=1
Case3:A=1,B=1,C=0,D=0;A=0,B=0,C=1,D=1
Case4:A=1,B=1,C=1,D=0;A=0,B=0,C=0,D=1
如果結(jié)果為case1,那么輸出C的采樣結(jié)果。如果結(jié)果為case2,那么輸出D的采樣結(jié)果。如果結(jié)果為case3,那么輸出A的采樣結(jié)果。如果結(jié)果為case4,那么輸出B的采樣結(jié)果。
時(shí)鐘數(shù)據(jù)恢復(fù)設(shè)計(jì)采用Xilinx推薦方案[3-4]。通過(guò)采用4個(gè)觸發(fā)器,分別用CLK和CLK_90的上下跳變沿對(duì)輸入的數(shù)據(jù)進(jìn)行采樣,然后比較前后兩個(gè)跳變沿采樣輸出的值是否變化。通過(guò)捕捉這種變化來(lái)判斷應(yīng)該輸出那個(gè)采樣時(shí)鐘的采樣數(shù)據(jù)。如圖5所示。
通過(guò)檢測(cè)A1、A2;B1、B2;C1、C2;D1、D2之間的是否發(fā)生跳變,可知A,B,C,D的值從而可以保證獲得最為可靠的采樣數(shù)據(jù)。
2.3 comma檢測(cè)模塊
2.3.1 comma檢測(cè)的原理
Comma字符檢測(cè)是用來(lái)使接收到的信息達(dá)到字節(jié)同步,以便傳遞給后續(xù)的8B10B解碼模塊進(jìn)行解碼。所以comma字符必須具有兩個(gè)特點(diǎn)。一是comma字符必須是唯一的,也就是不能出現(xiàn)在信息數(shù)據(jù)中,也不能出現(xiàn)在其他的控制數(shù)據(jù)中。二是可以使接收到的字節(jié)邊界獲得統(tǒng)一的對(duì)齊。符合這兩個(gè)條件的有0011111和1111100兩種組合。通過(guò)比較,在8B10B編碼表中的控制碼有K.28.1,K.28.5和K.28.7的編碼組合包含有上述組合。本設(shè)計(jì)中選擇K.28.1作為comma字符。

圖5 過(guò)采樣實(shí)現(xiàn)方式

圖6 comma檢測(cè)原理
Comma檢測(cè)器是將0011111組合以窗口的形式滑動(dòng)的與送入的10B數(shù)據(jù)和上一時(shí)刻輸入的10B數(shù)據(jù)組成的數(shù)據(jù)串進(jìn)行比較,查看數(shù)據(jù)串中是否包含有0011111組合,如果有,則輸出其相對(duì)偏移的值送入移位寄存器進(jìn)行移位,然后輸出對(duì)齊的數(shù)據(jù),若沒(méi)有,則下一時(shí)刻重復(fù)上述過(guò)程,直到找到comma信息為止。
2.3.2 comma檢測(cè)模塊的實(shí)現(xiàn)
Comma檢測(cè)模塊設(shè)計(jì)采用文獻(xiàn)[2]方案。Comma檢測(cè)器將輸入的10B數(shù)據(jù)和上一時(shí)刻寄存的10B數(shù)據(jù)數(shù)據(jù)同時(shí)輸入到detector中進(jìn)行檢測(cè),檢測(cè)其中是否含有0011111的數(shù)據(jù)組合,如果偵測(cè)到這樣的組合,就將這個(gè)組合偏移起始位置的值offset_value送到移位寄存器shifter中進(jìn)行移位處理,輸出對(duì)齊后的數(shù)據(jù)。同時(shí)detector也輸出一個(gè)同步標(biāo)志信號(hào)comma_flag作為檢測(cè)到comma信息的指示。
Comma檢測(cè)器設(shè)計(jì)結(jié)構(gòu)如圖7所示:

圖7comma檢測(cè)實(shí)現(xiàn)
本IP核設(shè)計(jì)采用verilog語(yǔ)言實(shí)現(xiàn)。在ISE14版本的開發(fā)環(huán)境下,使用spartan6芯片中的xc4slx-45t完成功能仿真,綜合,布局布線,后仿真。仿真工具使用ModelSim 6.5。
使用仿真工具M(jìn)odelSim 6.5對(duì)提出的高速串行IP核設(shè)計(jì)進(jìn)行后仿真,仿真波形如圖:

圖8 串行收發(fā)器IP核功能仿真
仿真中Fpga設(shè)置的工作頻率為30 Mhz。高速串行收發(fā)器編解碼的數(shù)據(jù)吞吐速率為300 Mbps,從圖10和圖11中可以看出發(fā)送的數(shù)據(jù)與接受到的數(shù)據(jù)一致,說(shuō)明整個(gè)高速串行收發(fā)器的功能正確,且在數(shù)據(jù)中出現(xiàn)0011111組合時(shí),完成了字節(jié)對(duì)齊,然后對(duì)輸出的串行數(shù)據(jù)進(jìn)行譯碼并輸出,同時(shí)輸出字節(jié)對(duì)齊指示comma_flag信號(hào)。
提出的高速串行收發(fā)器IP核設(shè)計(jì)可以實(shí)現(xiàn)與目前主流FPGA公司提供的相關(guān)設(shè)計(jì)一致的功能,包括8B10B編解碼和時(shí)鐘恢復(fù)功能,且能達(dá)到較高的傳輸速率,可以基本滿足星載高速傳輸需求。具有一定的實(shí)現(xiàn)價(jià)值。
[1]WIDMER A X,F(xiàn)RANASZEK P A.A DC-balanced,partitionedblock,8b10b transmission code[J].IBM Journal of Research and Development,1982,27(5):440-451.
[2]李永乾.基于8b/10b編碼技術(shù)的SerDes接口電路設(shè)計(jì)[D].成都:電子科技大學(xué),2010.
[3]李宥謀.8B/10B編碼器的設(shè)計(jì)及實(shí)現(xiàn)[J].電訊技術(shù),2005(6):26-32.
[4]XILINX.xapp224:data recovery,application note:virtex,Virtex-II,Spartan-IIE,and Spartan-3 series[EB/OL][2013-12-21].http://www.xilinx.com/.
[5]郭淦.高速串行通信中的時(shí)鐘恢復(fù)技術(shù)[D].上海:復(fù)旦大學(xué),2005.
[6]尹晶,曾烈光.一種快速同步的時(shí)鐘數(shù)據(jù)恢復(fù)電路的設(shè)計(jì)實(shí)現(xiàn)[J].光通信技術(shù),2007(1):52-54.
A design of IP core of high-speed serial transceiver in satellite data communication system
YAN Wei
(1.University of Chinese Academy of Science,Beijing 100190,China;2.National Space Science Center,Key Laboratory of Integrated Avionics and Information Technology for Complex Aerospace Systems,Beijing 100190 China)
Introducing a design of high-speed serial transceiver IP core used in satellite data communication system.Including the design of framework architecture,operating theory and implementing of key technology,testing and simulating of IP core.This IP core can be called in some FPGA designs,implemented function such as 8B10B encoding and decoding,recovering of clock and data aligning of byte etc.Simulation show that the design's data throughput can archive about 300Mbps.It's very adapt to be applied to satellite communication system.This will improve the satellite reliability and decrease project cost.
high-speed SerDes;8B10B;satellite;CDR
TN911.22
A
1674-6236(2016)18-0037-03
2015-08-31 稿件編號(hào):201508180
燕 威(1989—),男,湖北荊門人,碩士研究生。研究方向:信道編解碼技術(shù)。