新聞中心

EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的高速數(shù)據(jù)傳輸研究

基于FPGA的高速數(shù)據(jù)傳輸研究

作者:王紅兵 強(qiáng)景 周珍龍 時(shí)間:2016-08-29 來(lái)源:電子產(chǎn)品世界 收藏
編者按:大數(shù)據(jù)發(fā)展如火如荼,解決串行數(shù)據(jù)高速傳輸已成當(dāng)務(wù)之急。本文正是以此為出發(fā)點(diǎn),介紹了Xilinx FPGA內(nèi)嵌的高速串行收發(fā)器RocketIO。測(cè)試結(jié)果表明,RocketIO收發(fā)器的傳輸速度最高可達(dá)6.6Gbps,可以完全勝任各種高速數(shù)據(jù)的傳輸與處理。

摘要:大數(shù)據(jù)發(fā)展如火如荼,解決串行數(shù)據(jù)高速傳輸已成當(dāng)務(wù)之急。本文正是以此為出發(fā)點(diǎn),介紹了Xilinx FPGA內(nèi)嵌的收發(fā)器。測(cè)試結(jié)果表明,收發(fā)器的傳輸速度最高可達(dá)6.6Gbps,可以完全勝任各種高速數(shù)據(jù)的傳輸與處理。

本文引用地址:http://www.butianyuan.cn/article/201608/296187.htm

引言

  近年來(lái),電子行業(yè)的發(fā)展走進(jìn)了黃金時(shí)期,優(yōu)勢(shì)明顯的串行傳輸無(wú)論在速度上還是信號(hào)完整性上都得到了飛速發(fā)展。無(wú)論高速AD采樣后的數(shù)據(jù)接收,還是高速實(shí)時(shí)數(shù)據(jù)的傳輸與處理,都離不開(kāi)總線。尤其對(duì)大型的采集系統(tǒng),往往需要在單位時(shí)間里采集到成百上千個(gè)高精度的實(shí)時(shí)數(shù)據(jù),這就要求在進(jìn)行串行傳輸時(shí)速率達(dá)到百兆,甚至千兆每秒的級(jí)別。而Xilinx FPGA所提出的 正是一種完全可以滿足當(dāng)前需求的解決方案。

  本文主要介紹了RocketIO GTX的原理,并在此基礎(chǔ)上提出設(shè)計(jì)中需要注意的設(shè)計(jì)要點(diǎn),最后進(jìn)行了板間高速數(shù)據(jù)傳輸?shù)臏y(cè)試,給出了實(shí)時(shí)數(shù)據(jù)的采樣波形圖。

1 RocketIO GTX收發(fā)器介紹

  RocketIO GTX是Xilinx公司FPGA內(nèi)嵌的一種可配置的數(shù)據(jù)收發(fā)器,其傳輸速度在600Mbps~6.6Gbps[4]。該公司Virtex-5與Virtex-6系列FPGA都內(nèi)嵌了RocketIO GTX,且其結(jié)構(gòu)和工作原理也基本相同[1],本文將以Virtex-6 系列FPGA內(nèi)嵌的GTX為重點(diǎn)進(jìn)行介紹。

1.1 RocketIO GTX主要特點(diǎn)

  ● 每個(gè)通道收發(fā)器支持從600Mbps~6.6Gbps的全雙工傳輸速率;

  ● 收發(fā)器內(nèi)嵌發(fā)送時(shí)鐘生成電路和接收時(shí)鐘恢復(fù)電路;

  ● 差分輸出端5級(jí)可配置電壓(110mV~1130mV);

  ● 發(fā)送端支持可編程預(yù)加重/去加重,和判定反饋均衡(DFE);

  ● 支持可編程差分輸出電壓擺幅(110mv~1130mv)和可編程預(yù)加重;

  ● 收發(fā)器支持直接和交流耦合方式,可兼容多種高速接口標(biāo)準(zhǔn);

  ● 片內(nèi)集成可編程差分終端電阻;

  ● 支持片內(nèi)多種環(huán)回測(cè)試模式;

  ● PCS集成多種可選編碼功能,如comma字符對(duì)齊、8B/10B編碼、時(shí)鐘修正和通道綁定[2]

1.2 RockerIO GTX內(nèi)部結(jié)構(gòu)

  RocketIO GTX收發(fā)器由兩部分組成:PCS(Physical Coding Sublayer)和PMA(Physical Media Attachment,物理媒介層),如圖1所示。

  其中 PMA部分主要包括串行和解串器、發(fā)送和接收驅(qū)動(dòng)器、時(shí)鐘產(chǎn)生和恢復(fù)單元;PCS 部分主要包括 8B/10B 編解碼、通道綁定、時(shí)鐘修正和 CRC校驗(yàn)?zāi)K。

  ● 8B/10B 編解碼

  8B/10B編碼機(jī)制是進(jìn)行高速串行傳輸時(shí)普遍采用的編碼方式,其實(shí)現(xiàn)原理是將8位字符根據(jù)對(duì)應(yīng)碼表轉(zhuǎn)化為10位字符,這種轉(zhuǎn)換保證了通道的直流平衡性,有利于交直流耦合,提高信道傳輸質(zhì)量。

  ● 通道綁定

  通道綁定(Channel Bonding),一種通過(guò)一定協(xié)議將多個(gè)串行通道綁定達(dá)到并行傳輸,目的在于實(shí)現(xiàn)對(duì)數(shù)據(jù)吞吐率增大的技術(shù)。綁定原理是,在所有并列的串行通道中,定義一個(gè)主通道,其它均為從通道,主通道發(fā)送同步使能信號(hào)來(lái)與其它從通道進(jìn)行對(duì)齊,從而解決各個(gè)通道數(shù)據(jù)同步問(wèn)題,實(shí)現(xiàn)串行通道的并行綁定。

  ● 串行器和解串器

  在發(fā)送端,收發(fā)器把輸入GTX的參考時(shí)鐘作20倍頻,作為發(fā)送線路的參考時(shí)鐘,然后將經(jīng)過(guò)編碼的并行數(shù)據(jù)轉(zhuǎn)化為串行數(shù)據(jù),從串行差分端發(fā)送出去;在接收端,時(shí)鐘恢復(fù)電路從比特流中提取出時(shí)鐘相位和頻率,恢復(fù)出接收時(shí)鐘,將串行數(shù)據(jù)解碼并轉(zhuǎn)化為并行數(shù)據(jù),送入用戶接口以進(jìn)行其他操作。

  ● 時(shí)鐘修正

  時(shí)鐘修正(Clock Correction)目的在于發(fā)送端與接收端的時(shí)鐘匹配,在收發(fā)器的TX端,對(duì)要發(fā)送的串行數(shù)據(jù)中插入特定的修正序列,RX端通過(guò)這些修正序列提供的信息對(duì)時(shí)鐘進(jìn)行修正。

2 RocketIO GTX設(shè)計(jì)要點(diǎn)

  要使RocketIO模塊以最佳性能工作,實(shí)際設(shè)計(jì)中需要考慮到諸多設(shè)計(jì)因素,本節(jié)將對(duì)設(shè)計(jì)中經(jīng)常遇到的問(wèn)題進(jìn)行討論。

2.1 參考時(shí)鐘

  高速串行數(shù)據(jù)的傳輸中,為了實(shí)現(xiàn)高速,對(duì)時(shí)鐘的要求當(dāng)然就更為苛刻,這就要求用來(lái)驅(qū)動(dòng)收發(fā)器的時(shí)鐘必須具備高性能、低抖動(dòng)的特點(diǎn)。一般來(lái)講,GTX收發(fā)器提供了3種參考時(shí)鐘的驅(qū)動(dòng)方式:

 ?、?gòu)耐獠縂TX專用時(shí)鐘端口輸入來(lái)驅(qū)動(dòng)時(shí)鐘路由;

 ?、趶南噜廞uard的專用時(shí)鐘路由獲取;

 ?、蹚腇PGA內(nèi)部獲取。

  每個(gè)Quad中都擁有兩個(gè)專用差分時(shí)鐘輸入MGTREFCLK0[P/N]和MGTREFCLK1[P/N],它們是時(shí)鐘源的接口,為整個(gè)GTX的時(shí)鐘提供保障。在設(shè)計(jì)中,當(dāng)選用這種方式的時(shí)鐘供應(yīng)時(shí),需要對(duì)原語(yǔ)IBUFDS_GTXE1進(jìn)行例化。需將原語(yǔ)IBUFDS_GTXE1的輸出做為GTXE1的端口MGTREFCLKTX[0]和MGTREFCLKRX[0]的輸入。需要注意的是,即使在設(shè)計(jì)中未使用TX PLL,MGTREFCLKTX[0]仍然需要被連接[5]。單個(gè)外部參考時(shí)鐘用法如圖2所示。

  前兩種參考時(shí)鐘的驅(qū)動(dòng)方式都是使用GTX所集成的專用時(shí)鐘路由,在精度上能得到很好的保障。第三種由內(nèi)部全局時(shí)鐘網(wǎng)絡(luò)提供,會(huì)引入更大的抖動(dòng),而且驅(qū)動(dòng)能力也有限,因此要盡量避免使用。

2.2 用戶時(shí)鐘

  GTX的接收端和發(fā)送端都有兩個(gè)用戶時(shí)鐘,這里以發(fā)送端為例進(jìn)行介紹。這兩個(gè)時(shí)鐘分別為:TXUSRCLK和TXUSRCLK2。其中TXUSRCLK2是發(fā)送端TX的用戶時(shí)鐘,允許用戶直接使用,由GTX的內(nèi)部時(shí)鐘TXOUTCLK驅(qū)動(dòng)。用戶將并行數(shù)據(jù)傳輸?shù)桨l(fā)送接口,在用戶時(shí)鐘上升沿被采樣并送入發(fā)送緩沖,經(jīng)過(guò)編碼以及串行化之后發(fā)送出去。TXUSRCLK是PCS內(nèi)部邏輯時(shí)鐘,不允許用戶直接使用,其大小取決于如下公式[3]

  由于在設(shè)計(jì)中通常會(huì)選擇8B/10B編碼,因此16bit并行數(shù)據(jù)經(jīng)過(guò)編碼后變?yōu)?0bit。這里需要注意的是,需要設(shè)置屬性GEN_TXUSRCLK=TRUE。此時(shí),TXUSRCLK端口必須拉低,邏輯時(shí)鐘TXUSRCLK由GTX內(nèi)部提供,并且用戶時(shí)鐘TXUSRCLK2大小與TXUSRCLK相同[4]。當(dāng)設(shè)計(jì)中線速率選為3Gbps,可知用戶時(shí)鐘TXUSRCLK應(yīng)為150MHz。時(shí)鐘結(jié)構(gòu)如圖3所示。

  GTX的接收端RX與TX基本相似,也包括兩個(gè)用戶時(shí)鐘分別為:RXUSRCLK和RXUSRCLK2。其中,RXUSRCLK2是GTX接收端的用戶時(shí)鐘,由恢復(fù)時(shí)鐘RXRECCLK驅(qū)動(dòng)。RXUSRCLK的驅(qū)動(dòng)方式和屬性設(shè)置與發(fā)送端一致[5]。

2.3 Comma 檢測(cè)對(duì)齊

  Comma檢測(cè)對(duì)齊模塊是高速數(shù)據(jù)傳輸中必不可少的重要模塊,高速數(shù)據(jù)的識(shí)別對(duì)齊是傳輸中的核心問(wèn)題。在RX接收模塊中,串行數(shù)據(jù)轉(zhuǎn)換為并行前,必須經(jīng)過(guò)邊界字符對(duì)齊才能對(duì)所傳輸?shù)臄?shù)據(jù)進(jìn)行識(shí)別,才能有后續(xù)的并行數(shù)據(jù)。在實(shí)現(xiàn)高速串行信號(hào)發(fā)送時(shí),TX端會(huì)先發(fā)送comma字符,然后再發(fā)送數(shù)據(jù)。對(duì)應(yīng)的RX接收端通過(guò)comma探測(cè),當(dāng)檢測(cè)到comma字符后,需要進(jìn)行對(duì)齊,然后接收數(shù)據(jù)[6]。

  GTX收發(fā)器的comma模塊在實(shí)際解碼應(yīng)用中通常選K28.1、K28.5和K28.7為comma字符,具體根據(jù)項(xiàng)目需求來(lái)選擇。設(shè)計(jì)中,為了確保數(shù)據(jù)的對(duì)齊,通常會(huì)選擇發(fā)送2000個(gè)左右的同步字符。在TX端發(fā)送K字符時(shí),賦值TXCHARISK=2’b01,TXDATA=16’h43BC。這里TXCHARISK=2’b11表明對(duì)應(yīng)數(shù)據(jù)的低字節(jié)為K字符,對(duì)應(yīng)比特流中的comma字符。需要注意的是,當(dāng)TXCHARISK=2’b11,發(fā)送TXDATA=16’hBCBC時(shí),由于TXDATA中高八位和低八位相同,這樣在接收端容易出現(xiàn)錯(cuò)位8位的情況。如圖4所示。

  造成這種情況的原因是,在進(jìn)行K字符探測(cè)對(duì)齊的過(guò)程中,將兩個(gè)K字符的低字節(jié)和下一個(gè)的高字節(jié)組合,這樣探測(cè)對(duì)齊系統(tǒng)會(huì)認(rèn)為實(shí)現(xiàn)了對(duì)齊過(guò)程,在接下來(lái)的數(shù)據(jù)接收過(guò)程中會(huì)以這種方式進(jìn)行對(duì)齊。

3 應(yīng)用系統(tǒng)

  基于RcoketIO GTX的高速串行傳輸,設(shè)計(jì)出了一個(gè)高速數(shù)據(jù)采集存儲(chǔ)系統(tǒng),采集端使用XC6VLX240T,存儲(chǔ)端使用XC5VFX240T。由圖5可以看出,ADC的高速數(shù)據(jù)是通過(guò)其自帶JESD204B接口與V6實(shí)現(xiàn)GTX互聯(lián)的,V6與V5兩FPGA間的數(shù)據(jù)傳輸也采用GTX傳輸,后面SATA設(shè)計(jì)中還是使用GTX來(lái)實(shí)現(xiàn)的。

  從數(shù)據(jù)流來(lái)看,AD將采集的高速數(shù)據(jù)通過(guò)GTX(配置成JESD204B接口)送入Virtex-6,經(jīng)過(guò)一定的數(shù)據(jù)處理后通過(guò)GTX發(fā)送至Virtex-5 FPGA,最終通過(guò)GTX(配置成SATA接口)存入磁盤(pán)陣列。由此可見(jiàn),RocketIO GTX是整個(gè)系統(tǒng)中高速數(shù)據(jù)傳輸?shù)暮诵摹?/p>

4 實(shí)驗(yàn)結(jié)果和分析

  通常對(duì)系統(tǒng)設(shè)計(jì)中GTX通路的連接需要進(jìn)行測(cè)試,以下將通過(guò)本V6端的PCS遠(yuǎn)端測(cè)試來(lái)驗(yàn)證其工作性能,也就是V6端發(fā)送測(cè)試數(shù)據(jù)至V5然后通過(guò)PCS環(huán)回至V6接收端,來(lái)看數(shù)據(jù)的正確與否。chipscope采樣如圖6所示。

  由于遠(yuǎn)端PCS環(huán)回模式可以同時(shí)測(cè)試兩端GTX的通信情況,故由圖6可知,XC6VLX240T、XC5VFX240T可以正常通信。

  高速數(shù)據(jù)傳輸中,經(jīng)常要對(duì)數(shù)據(jù)進(jìn)行各種轉(zhuǎn)換,而數(shù)據(jù)的拼接與拆分是最常用的手段,圖7是對(duì)一路 0000-FFFF的遞增碼,將遞增碼拆分成兩路分別為4K數(shù)據(jù)和43BC。也就是將一個(gè)遞增碼分成TRIG1和TRIG2的兩路GTX數(shù)據(jù)進(jìn)行發(fā)送來(lái)測(cè)試數(shù)據(jù)的正確性。

  由數(shù)據(jù)總線圖可以看出,兩路數(shù)據(jù)成完美遞增狀態(tài)。

5 結(jié)束語(yǔ)

  本文以高速數(shù)據(jù)傳輸為出發(fā)點(diǎn),介紹了基于RocketIO GTX 的解決方案,并給出了以GTX為核心的應(yīng)用系統(tǒng)設(shè)計(jì)。由此可見(jiàn),采用 RocketIO收發(fā)器進(jìn)行高速串行數(shù)據(jù)的傳輸,在保證速度的前提下,傳輸過(guò)程中的信號(hào)完整性也得到了極大的保障,為高速數(shù)據(jù)的傳輸提供速度和質(zhì)量上的保證 。

參考文獻(xiàn):

  [1]Xilinx. Virtex-6 Family Overview[M]. USA:Xilinx, 2012.

  [2]Xilinx. Virtex-6 FPGA GTX Transceivers User Guide[M]. USA:Xilinx,2011.

  [3]李大鵬,陳長(zhǎng)勝,王世奎等.基于FPGA的高速串行傳輸接口研究與實(shí)現(xiàn)[J]. 航空計(jì)算技術(shù),2008,38(2):100-103.

  [4] Abhijit Athavale,Carl Christensen.High-Speed Serial I/O Made Simple[J].USA:Xilinx

  Corporation.2005.4.

  [5]徐文波,田耘.Xilinx FPGA 開(kāi)發(fā)使用教程[M].北京:清華大學(xué)出版社,2012.7. [4] Xilinx.Virtex-5 FPGA [6]RocketIO GTX Transciver Wizard v1.5 Getting Started Guid[S].USA:Xilinx,2008

本文來(lái)源于中國(guó)科技期刊《電子產(chǎn)品世界》2016年第8期第42頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉