摘 要: FPGA的內(nèi)嵌RocketIO模塊在實(shí)際應(yīng)用中需要解決時(shí)鐘不穩(wěn)及通道綁定" title="綁定">綁定同步等問(wèn)題,。通過(guò)精心設(shè)計(jì)DCM單元保證了RocketIO內(nèi)部時(shí)鐘的精確,。同時(shí),,針對(duì)通道不同步的問(wèn)題,,設(shè)計(jì)了一種彈性存儲(chǔ)器方案,很好地解決了通道同步接收問(wèn)題,。該方案在863重大課題“可擴(kuò)展到T比特的高性能IPv4/v6路由器基礎(chǔ)平臺(tái)及實(shí)驗(yàn)系統(tǒng)”中得到了驗(yàn)證,。
關(guān)鍵詞: 同步 彈性存儲(chǔ)器
隨著線(xiàn)路傳輸技術(shù)的迅速發(fā)展,出現(xiàn)了10Gbps的鏈路接口類(lèi)型,,如10Gbps的POS,、WAN、LAN等,。863重大課題“可擴(kuò)展到T比特的IPv4/v6路由器基礎(chǔ)平臺(tái)及實(shí)驗(yàn)系統(tǒng)”要求T比特路由器支持10G的線(xiàn)卡,。
傳統(tǒng)的單端互連方式在傳輸速率上(最高250Mbps)已無(wú)法滿(mǎn)足要求。而差分" title="差分">差分串行方式(如LVDS,、LVPECL等),,雖然采用源同步時(shí)鐘,但數(shù)據(jù)和時(shí)鐘分別發(fā)送,,受信號(hào)瞬時(shí)抖動(dòng)的影響,,破壞了數(shù)據(jù)與時(shí)鐘的定時(shí)關(guān)系,傳輸速率也存在一定的瓶頸,。XILINX的Virtex-ⅡPRO 系列提供了內(nèi)嵌RocketIO模塊,,通過(guò)采用CDR、8B/10B編碼,,預(yù)加重等可在線(xiàn)配置技術(shù),,減少了信號(hào)衰減和線(xiàn)路噪聲的影響,所提供的全雙工高速通道最高支持3.125Gbps,。
但在高速環(huán)境下,,RocketIO易出現(xiàn)時(shí)鐘漂移,同時(shí),,在進(jìn)行通道綁定時(shí),,也易出現(xiàn)通道間不同步的問(wèn)題。針對(duì)時(shí)鐘不穩(wěn)的現(xiàn)象,,筆者利用FPGA 的數(shù)字時(shí)鐘管理器(DCM)對(duì)RocketIO的時(shí)鐘進(jìn)行精心設(shè)計(jì); 對(duì)通道不同步問(wèn)題,,設(shè)計(jì)了一種稱(chēng)為“彈性存儲(chǔ)器”的改進(jìn)方案。經(jīng)工程驗(yàn)證,,本設(shè)計(jì)方案有效地解決了以上兩個(gè)問(wèn)題,。
1 RocketIO的特性
如圖1,RocketIO(也稱(chēng)MGT)由物理媒質(zhì)適配層(PMA)和物理編碼子層(PCS)兩部分組成,。PCS主要包括發(fā)送FIFO,、8B/10B編碼器、8B/10B解碼器,、CRC生成與校驗(yàn),,通路綁定與時(shí)鐘修正的Elastic Buffer等。PMA包括串/并轉(zhuǎn)換器,、差分接收器,、發(fā)送時(shí)鐘生成電路、接收時(shí)鐘恢復(fù)電路等,。
以轉(zhuǎn)發(fā)引擎選取的XC2VP70 FF1704系列為例,,該芯片最多可提供40路高速收發(fā)器,每路可提供最高3.125Gbps的全雙工帶寬,,可支持FibreChannel,、Ethernet、Custom,、XAUI,、Infiniband等高速通信標(biāo)準(zhǔn)。其優(yōu)點(diǎn)有:(1)每個(gè)通道支持最高125Gbps的全雙工速率,; (2)支持直流和交流耦合方式,; (3)可編程差分終端電阻(50Ω、70Ω),;(4)輸出預(yù)加重處理,。
2 時(shí)鐘及復(fù)位
考慮到RocketIO的設(shè)計(jì)傳輸帶寬是10Gbps,,RocketIO的參考時(shí)鐘選用差分輸入時(shí)鐘,這樣可極大地降低時(shí)鐘抖動(dòng),。同時(shí),,利用FPGA內(nèi)部的DCM(數(shù)字時(shí)鐘管理器)產(chǎn)生Rocket IO的主時(shí)鐘,根據(jù)MGT設(shè)計(jì)的四通道綁定,,分別送給RXUSRCLK,、RXUSRCLK2、TXUSRCLK和TXUSRCLK2,。
同時(shí),,由于DCM的輸出時(shí)鐘在LOCKED指示信號(hào)無(wú)效之前處于非穩(wěn)態(tài),不適合直接作后級(jí)邏輯的參考時(shí)鐘,。所以,,選擇LOCKED作RocketIO的復(fù)位信號(hào)TX_RESET和RX_RESET,保證了DCM的輸出時(shí)鐘在RocketIO復(fù)位之后才送給下一級(jí)邏輯,。如再加一級(jí)緩沖,,保證RocketIO足夠的復(fù)位時(shí)間,效果更好,。
DCM和MGT控制信號(hào)的對(duì)應(yīng)關(guān)系,,如圖2所示。
3 通道綁定
理論上,,經(jīng)MGT內(nèi)部緩沖處理及時(shí)鐘修正,,各個(gè)例化模塊應(yīng)嚴(yán)格同步輸出。但由于硬件高頻時(shí)鐘電路" title="時(shí)鐘電路">時(shí)鐘電路的不穩(wěn)定及時(shí)鐘漂移等不確定因素,,在實(shí)際工程應(yīng)用" title="工程應(yīng)用">工程應(yīng)用中經(jīng)常發(fā)生格式錯(cuò)位,、通道之間不同步的現(xiàn)象,導(dǎo)致無(wú)法進(jìn)行通道綁定,。
3.1 錯(cuò)誤情況分析
圖3給出了高速通道的幾種錯(cuò)誤情況,。
K碼指示規(guī)則是:當(dāng)K碼依次為“10”、“00”,、“01”時(shí),,對(duì)應(yīng)數(shù)據(jù)包的包頭(數(shù)據(jù)為“BC95”)、正常數(shù)據(jù)報(bào)文,、包尾(數(shù)據(jù)為“3CFB”),; K碼為“11”時(shí),表示通道空閑(數(shù)據(jù)為“95FB”),。
圖3(a)中,,序列DATA1為正確的接收序列,DATA2,、DATA3均為錯(cuò)誤序列,。
(1)DATA2:發(fā)生了前后兩字節(jié)錯(cuò)位的現(xiàn)象,,數(shù)據(jù)格式不正確;
(2)DATA3:在時(shí)序上與DATA1不同步,,但數(shù)據(jù)格式是正確的,。
對(duì)于錯(cuò)位接收的原因分析,,也可以從圖3(b)看出,。對(duì)串行輸入的數(shù)據(jù),串并轉(zhuǎn)換之前的正確接收采樣操作應(yīng)該是采樣時(shí)鐘(RxClock)一次性采集到數(shù)據(jù)“b1b2b3b4”,。但實(shí)際上,,由于采用時(shí)鐘的不穩(wěn)定及高頻環(huán)境的影響,一次采樣操作卻采集到了數(shù)據(jù)“b1c2b3c4”,。
3.2 彈性存儲(chǔ)器方案
基于以上分析,,在進(jìn)行通道綁定之前,筆者引入了一種彈性存儲(chǔ)器的方案(以四通道綁定為例),,按照先緩存,、后控制輸出的思路,實(shí)現(xiàn)對(duì)高速通道的糾錯(cuò),。彈性存儲(chǔ)器由異步FIFO(4個(gè)),、時(shí)鐘電路(寫(xiě)FIFO 時(shí)鐘電路,讀FIFO時(shí)鐘電路),、內(nèi)部控制邏輯" title="控制邏輯">控制邏輯三部分組成,,如圖4所示。
(1)寫(xiě)FIFO 時(shí)鐘電路
異步FIFO的寫(xiě)時(shí)鐘產(chǎn)生電路,。與內(nèi)部控制邏輯模塊配合,,控制異步FIFO的數(shù)據(jù)接收及K碼序列的緩存。
對(duì)于此時(shí)的輸入數(shù)據(jù),,不必考慮格式和數(shù)據(jù)的同步問(wèn)題,。
(2)讀FIFO 時(shí)鐘電路
4個(gè)異步FIFO及K碼FIFO的讀時(shí)鐘產(chǎn)生電路。與內(nèi)部控制邏輯模塊配合,,控制4個(gè)異步FIFO及K碼序列的同步輸出,。
(3)內(nèi)部控制邏輯
除了配合讀/寫(xiě)時(shí)鐘電路來(lái)控制異步FIFO的讀寫(xiě),依據(jù)K碼序列對(duì)每個(gè)數(shù)據(jù)FIFO的接收數(shù)據(jù)進(jìn)行整包檢測(cè),。
具體判斷依據(jù)是根據(jù)K碼“01”表示的包尾,,判定FIFO接收到了一個(gè)整包。
4個(gè)FIFO都有一個(gè)完整包時(shí),,通過(guò)讀FIFO時(shí)鐘電路控制4個(gè)異步FIFO 的同步輸出,,完成隨后的通道綁定。
可以看出,,整個(gè)設(shè)計(jì)的關(guān)鍵在于對(duì)同步輸出時(shí)刻的把握,。實(shí)現(xiàn)的重點(diǎn)在于內(nèi)部控制邏輯的整包檢測(cè)操作上,。由于4個(gè)FIFO的整包檢測(cè)獨(dú)立進(jìn)行,這需要在實(shí)際編程實(shí)現(xiàn)時(shí)精心設(shè)計(jì)時(shí)序及對(duì)容錯(cuò)情況的考慮,。
4 工程實(shí)現(xiàn)
圖5給出了在863課題“T比特路由器”中,,基于XILINX的VIRTEXⅡPRO系列的XC2VP70芯片,采用彈性存儲(chǔ)器方案得到的MGT測(cè)試數(shù)據(jù),。
4.1軟件仿真
根據(jù)K碼序列指示,,方案在時(shí)序上準(zhǔn)確實(shí)現(xiàn)了4個(gè)通道的數(shù)據(jù)對(duì)齊輸出,無(wú)通道錯(cuò)位或不同步現(xiàn)象,。
4.2 工程應(yīng)用
(1)測(cè)試環(huán)境
利用光電轉(zhuǎn)換小板構(gòu)成環(huán)路,,測(cè)試報(bào)文的處理流程為:CPU→FPGA→光模塊→光電轉(zhuǎn)換小板→GIGA→FPGA→CPU。如圖6所示,。
(2)測(cè)試結(jié)果
圖7為Virtex ⅡPRO-XC2VP70上實(shí)現(xiàn)兩平面接收,、四通道綁定的ChipScope采樣波形。
rxk0、rxk1表示兩個(gè)平面的K碼序列。由K碼與通道的對(duì)應(yīng)關(guān)系得知,,K碼為“AA”(即二進(jìn)制“10101010”),,對(duì)應(yīng)數(shù)據(jù)包頭(BC95);K碼為“FF”(即二進(jìn)制“11111111”),對(duì)應(yīng)包尾(3CFB)。
由圖7知,彈性存儲(chǔ)器方案有效解決了MGT的數(shù)據(jù)同步問(wèn)題,。
RocketIO的難點(diǎn)在于它的鏈路層本質(zhì)及高速傳輸環(huán)境。其靈活的配置方式同時(shí)也增加了工程應(yīng)用上的難點(diǎn),。本文針對(duì)時(shí)鐘部分及通道綁定問(wèn)題,,提出了一種切實(shí)可行的解決方案,并得到了工程驗(yàn)證,。
參考文獻(xiàn)
1 Howard Johnson, Martin Graham.High-Speed Digital Design. A Handbook of Black Magic.北京:電子工業(yè)出版社,,2004.5
3 Xilinx Corporation. RocketIO Transceiver User Guide.2004.6