基于RocketIO接口的高速互連應(yīng)用研究與實(shí)現(xiàn)
摘要:在此立足于嵌入式應(yīng)用的背景,在理解RapidIO協(xié)議和Fibre Channel協(xié)議的基礎(chǔ)上,通過(guò)對(duì)嵌入在FPGA內(nèi)的RocketIO高速串行收發(fā)器工作原理的研究,結(jié)合某信號(hào)處理接口模塊的實(shí)際應(yīng)用,在系統(tǒng)內(nèi)實(shí)現(xiàn)RapidIO接口功能,在系統(tǒng)間實(shí)現(xiàn)Fibre Channle接口功能,總結(jié)出基于RocketIO接口的高速信號(hào)完整性設(shè)計(jì)的應(yīng)用特點(diǎn),并進(jìn)行簡(jiǎn)單的鏈路傳輸特性的測(cè)試,為高速互連系統(tǒng)的設(shè)計(jì)與研究提供了可靠的技術(shù)支撐。
關(guān)鍵詞:RocketIO;RapidI();Fibre Channel;嵌入式應(yīng)用
0 引言
近年來(lái),多種新興的高性能互連技術(shù)相繼出現(xiàn),如RapidIO,PCI Express,F(xiàn)ibre Channel和InfiniBand等,它們大都采用基于報(bào)文交換的點(diǎn)到點(diǎn)互連結(jié)構(gòu)替代傳統(tǒng)并行總線結(jié)構(gòu),提供了高帶寬、低延遲、可擴(kuò)展的I/O互連,很大程度上克服了傳統(tǒng)并行總線結(jié)構(gòu)的種種弊端。其中RapidIO屬于系統(tǒng)內(nèi)部互連技術(shù),主要針對(duì)高性能嵌入式系統(tǒng)內(nèi)部互連,它可以作為處理器總線、本地I/O總線,還可以跨越背板連接處理器、存儲(chǔ)器和外部設(shè)備。RapidIO技術(shù)被定義為一種高性能,低引腳數(shù),基于報(bào)文交換的互連體系結(jié)構(gòu),能廣泛滿足嵌入式系統(tǒng)應(yīng)用的需求,支持芯片到芯片和板到板之間的互連技術(shù)。光纖通道(Fiber Channel,F(xiàn)C)是一種高速串行傳輸協(xié)議,具有高帶寬、高實(shí)時(shí)性、高可靠性、擴(kuò)展性好、傳輸速率高、抗干擾性強(qiáng)、拓?fù)浣Y(jié)構(gòu)和服務(wù)類型靈活、支持多種上層協(xié)議和底層傳輸介質(zhì)等特性,且可以在一路傳輸線上實(shí)現(xiàn)高達(dá)2.5 Gb/s的速率,具有相對(duì)于萬(wàn)兆以太網(wǎng),PCIe更高的傳輸速率。
在嵌入式應(yīng)用方面,主流的FPGA中都已對(duì)差分信號(hào)提供了硬件支持,并且在片上集成了固化的Rocket IO模塊,以提供高超高速的串行通信支持。RocketIO位于數(shù)據(jù)傳輸協(xié)議的物理層,用以實(shí)現(xiàn)最基本的數(shù)據(jù)通信環(huán)境。
本文從Xilinx的Virtex5系列FPGA的RocketIO高速串行收發(fā)器的工作原理入手,分別闡述了在一片F(xiàn)PGA上利用RapidIO協(xié)議和Fibre Chan nle協(xié)議實(shí)現(xiàn)高速信號(hào)傳輸?shù)姆椒ǎ⒎治隽薘ocketIO接口在硬件設(shè)計(jì)上需要注意的問(wèn)題。
1 RocketIO介紹
RocketIO為FPGA中內(nèi)嵌的硬核資源,是一種高速串行收發(fā)器,采用兩對(duì)差分線來(lái)進(jìn)行數(shù)據(jù)的發(fā)送和接收,可以實(shí)現(xiàn)兩個(gè)單工或一對(duì)全雙工的數(shù)據(jù)傳輸,通信碼率可以達(dá)到600 Mb/s~3.125 Gb/s。RocketIO收發(fā)器發(fā)送和接收串行差分信號(hào),工作于2.5 V的直流電壓下,采用CML(Current Mode Logic)模式,內(nèi)部帶有50 Ω或75 Ω的匹配電阻,采用串行數(shù)據(jù)收發(fā),可以在高頻條件下很好地避免數(shù)據(jù)間的串?dāng)_。
RocketIO收發(fā)器結(jié)構(gòu)如圖1所示,主要包括PMA和PCS兩個(gè)子層,PMA子層中集成了SERDES,發(fā)送和接收緩沖,時(shí)鐘發(fā)生器及時(shí)鐘恢復(fù)電路。SERDES是一個(gè)串并轉(zhuǎn)換器,負(fù)責(zé)FPGA中本地的32位并行數(shù)據(jù)(也可以是16位或8位)與Rocket IO接口的串行數(shù)據(jù)之間的轉(zhuǎn)換。時(shí)鐘發(fā)生器及時(shí)鐘恢復(fù)電路用于將時(shí)鐘與數(shù)據(jù)綁定發(fā)送及將時(shí)鐘從接收到的數(shù)據(jù)流中恢復(fù)出來(lái),從而避免了在高速傳輸條件下時(shí)鐘與數(shù)據(jù)分開(kāi)傳輸所帶來(lái)的時(shí)鐘抖動(dòng)等問(wèn)題。PCS子層負(fù)責(zé)8 b/10 b編碼解碼和CRC校驗(yàn),并集成了負(fù)責(zé)通道綁定和時(shí)鐘修正的彈性緩沖。8 b/10 b編碼可以避免數(shù)據(jù)流中出現(xiàn)連0連1的情況,便于時(shí)鐘的恢復(fù)。通道綁定通過(guò)在發(fā)送數(shù)據(jù)流中加入字符來(lái)將幾個(gè)RocketIO通道綁定成一個(gè)一致的并行通道,從而來(lái)提高數(shù)據(jù)的吞吐率。彈性緩沖可以解決恢復(fù)的時(shí)鐘與本地時(shí)鐘不一致的問(wèn)題,并進(jìn)行數(shù)據(jù)率的匹配,從而使得通道綁定成為可能。
2 RocketIO在高速信號(hào)互連中的應(yīng)用
以某信號(hào)處理模塊FC接口板卡為例,該模塊是一種高性能、具有高速串行接口、采用統(tǒng)一互連網(wǎng)絡(luò)的通用信號(hào)處理接口模塊,信號(hào)傳輸速率達(dá)到幾千兆位每秒,這時(shí)就需要具有足夠高傳輸速率的信號(hào)傳輸機(jī)制對(duì)信號(hào)進(jìn)行轉(zhuǎn)發(fā)。實(shí)現(xiàn)與主機(jī)板卡通信時(shí),采用RapidIO傳輸協(xié)議;實(shí)現(xiàn)系統(tǒng)網(wǎng)絡(luò)間通信時(shí),則可使用FibreChannle光纖通信協(xié)議。而RocketIO對(duì)多種高速傳輸協(xié)議的支持,可以使得RapidIO協(xié)議、Fibre Chan nle協(xié)議在同一片F(xiàn)PGA內(nèi)實(shí)現(xiàn),提高了系統(tǒng)的集成度,并使得信號(hào)的處理機(jī)制更加靈活。在本文的設(shè)計(jì)中,以Xilinx的Virtex5系列FPGA為平臺(tái),采用了RapidIO傳輸協(xié)議來(lái)實(shí)現(xiàn)與主機(jī)板卡的通信,采用Fibre channle協(xié)議來(lái)實(shí)現(xiàn)系統(tǒng)網(wǎng)絡(luò)間通信。本文涉及的接口模塊架構(gòu)如圖2所示。
[!--empirenews.page--]
2.1 應(yīng)用RapidIO協(xié)議買現(xiàn)板間互連
RapidIO是一種基于高性能包交換的開(kāi)放式互連技術(shù),主要功能是完成系統(tǒng)內(nèi)部芯片到芯片和板到板之間的高速傳輸數(shù)據(jù),能夠提供高帶寬、低時(shí)延、軟件獨(dú)立和高容錯(cuò)性的數(shù)據(jù)傳輸解決方案。同時(shí)支持點(diǎn)對(duì)點(diǎn)或點(diǎn)對(duì)多點(diǎn)的通信、DMA操作、消息傳遞模式交換數(shù)據(jù)以及多種拓?fù)浣Y(jié)構(gòu)等功能。
RapidIO采用3層分級(jí)體系結(jié)構(gòu),分別為物理層、傳輸層、邏輯層。物理層規(guī)范在整個(gè)分級(jí)結(jié)構(gòu)的底部,包括器件級(jí)接口的細(xì)節(jié),如包傳輸機(jī)制、流量控制、電氣特性和低級(jí)錯(cuò)誤管理。傳輸層規(guī)范在中間層,定義RapidIO地址空間和在端點(diǎn)器件間傳輸包所需的路由信息。邏輯層規(guī)范定義全部協(xié)議和包的格式,它們?yōu)槎它c(diǎn)器件發(fā)起和完成事物提供必要的信息。
RapidIO串行物理層,通常稱為串行RapidIO,是針對(duì)板上或通過(guò)背板的器件間的電氣連接。串行物理層定義器件間的全雙工串行鏈路,在每個(gè)方向上使用單向差分信號(hào)。RapidIO串行物理層實(shí)現(xiàn)鏈路訓(xùn)練、鏈路初始化,支持RapidIO器件間的包傳送,包括包和控制符號(hào)的傳送、流量控制、錯(cuò)誤管理和其他器件到器件的功能。RapidIO物理層核與RocketIO收發(fā)器連接邏輯結(jié)構(gòu)框圖如圖3所示。
由于RapidIO邏輯層包被定義為一連串的比特,并且與物理層實(shí)現(xiàn)無(wú)關(guān),所以RapidIO協(xié)議在串行與并行接口,銅線與光纖介質(zhì)下都能正確工作。
其RapidIO串行物理層有如下特征:
(1)采用8 b/10 b編碼方案將發(fā)送時(shí)鐘嵌入到數(shù)據(jù)中。
(2)在每個(gè)方向上支持一個(gè)串行差分對(duì)或支持4個(gè)并列的串行差分對(duì)。
(3)使用專用的8 b/10 b碼(稱為K碼)來(lái)管理鏈路,管理流量控制、包定界和錯(cuò)誤報(bào)告。
(4)支持每通道1.25 Gb/s,2.5 Gb/s和3.125 Gb/s波特率(數(shù)據(jù)速率分別為1.0 Gb/s,2.0 Gb/s和2.5 Gb/s)的傳送速率。
2.2 應(yīng)用Fibre Channel協(xié)議實(shí)現(xiàn)系統(tǒng)間互連
光纖通道技術(shù)是綜合計(jì)算機(jī)通道和數(shù)據(jù)網(wǎng)絡(luò)概念提出的一個(gè)不同于傳統(tǒng)的通道和網(wǎng)絡(luò)結(jié)構(gòu)的互連方案,采用通道技術(shù)控制信號(hào)傳輸,使用仲裁或交換方式處理共享沖突,并采用了基于信用的流量控制策略。
Fibre Channel模型分為5層,分別為:FC-0,F(xiàn)C-1,F(xiàn)C-2,F(xiàn)C-3和FC-4。FC-0層定義了連接的物理端口特性,包括介質(zhì)和連接器、驅(qū)動(dòng)器、接收機(jī)、發(fā)射機(jī)等的物理特性、電器特性和光特性、傳輸速率以及其他的一些連接端口特性。在本設(shè)計(jì)中,F(xiàn)C-0層處理由光電收發(fā)器實(shí)現(xiàn)光信號(hào)與電信號(hào)轉(zhuǎn)換;FC-1層是信號(hào)編碼和解碼層,F(xiàn)C-1層處理由FPGA的RocketIO完成串并/并串轉(zhuǎn)換、8 b/10 b編解碼、有序集及位同步等;FC-1層使用8 b/10 b編碼方式,這意味著每傳輸10 b數(shù)據(jù),實(shí)際得到8 b的有效數(shù)據(jù),其他兩位是冗余位。信號(hào)可以被編碼成2種字符集:K字符集(特殊的控制信號(hào)和命令)和D字符集(普通數(shù)據(jù))。FC-2層是幀協(xié)議層,是FC用來(lái)識(shí)別、解釋和處理FC網(wǎng)絡(luò)信息流的核心層。FC-2層規(guī)定信息單元的組成格式、原語(yǔ)序列協(xié)議、端口類型、服務(wù)類型、數(shù)據(jù)的分段與重組、流量控制、差錯(cuò)恢復(fù)策略、節(jié)點(diǎn)初始化、節(jié)點(diǎn)的注冊(cè)和節(jié)點(diǎn)的注銷等功能。FC-0,F(xiàn)C-1和FC-2層這3層共同組成了FC物理層。FC-3層是FC的公共服務(wù)層,定義了如帶寬頻率分片、搜索組和多播等通用服務(wù)。FC-4:該層是FC協(xié)議模型的最高層,在本系統(tǒng)的設(shè)計(jì)中,使用了匿名簽署消息傳輸協(xié)議(FC-AE-ASM)來(lái)滿足系統(tǒng)中數(shù)據(jù)的傳輸需要。
在FC核的嵌入式應(yīng)用中。使用一個(gè)或2個(gè)RocketIO收發(fā)器來(lái)提供1 Gb/s,2 Gb/s或4 Gb/s的接口速率,利用FPGA中的8 b/10 b編解碼器、CRC產(chǎn)生和校驗(yàn)單元以及接收彈性緩沖進(jìn)行設(shè)計(jì)。FC核內(nèi)部提供了32 b寬的Client接口,F(xiàn)C幀數(shù)據(jù)采用32 b/s訪問(wèn)。FC核的時(shí)鐘在配置時(shí)已固定,分別可采用53.125 MHz和106.25 MHz。
FC核與RocketIO收發(fā)器連接邏輯結(jié)構(gòu)框圖如圖4所示。[!--empirenews.page--]
3 RocketIO接口的信號(hào)完整性設(shè)計(jì)
在實(shí)際應(yīng)用中,參考時(shí)鐘、電源供電以及高速傳輸線路的設(shè)計(jì)與布局是影響數(shù)據(jù)傳輸效果的最重要因素。為了保證Rocket IO能可靠工作,在RocketIO接口設(shè)計(jì)過(guò)程中需要注意以下的問(wèn)題:
(1)電源供電。該系列FPGA器件中每個(gè)RocketIO高速串行收發(fā)器包括5類電源引腳,分別為MGTAVCCPLL,MGTAVCC,MGTAVTTRX,MGTAVTT TX,MGTAVTTRXC,這些引腳對(duì)噪聲的影響都非常敏感,為了保證高速電路能夠可靠工作,RocketIO需要和周圍的噪聲源進(jìn)行隔離。因此需要對(duì)RocketIO收發(fā)器進(jìn)行專門的供電,且每個(gè)供電引腳必須有獨(dú)立的LC濾波網(wǎng)絡(luò),其連接關(guān)系如圖5所示。
(2)高速信號(hào)。RocketIO高速串行收發(fā)器采用高速差分信號(hào)線,由于所傳輸?shù)牟罘中盘?hào)頻率很高,高速差分對(duì)走線應(yīng)當(dāng)有最高的優(yōu)先級(jí),兩根差分信號(hào)線必須在長(zhǎng)度上盡量匹配,長(zhǎng)度失配會(huì)產(chǎn)生共模噪聲和輻射,嚴(yán)重的失配會(huì)產(chǎn)生時(shí)鐘抖動(dòng)和不可預(yù)知的時(shí)序問(wèn)題,差分線必須盡量匹配,端接電阻50 Ω和75 Ω可選,50 Ω用于芯片和芯片之間互連,75 Ω用于芯片和電纜之間互連;高速差分線不要打孔,要布在電路板中同一層。
(3)參考時(shí)鐘。RocketIO不能使用經(jīng)過(guò)數(shù)字時(shí)鐘管理模塊(DCM)倍頻的參考時(shí)鐘,因?yàn)镈CM倍頻會(huì)引入過(guò)大的時(shí)鐘抖動(dòng),在RocketIO的高速數(shù)據(jù)傳輸條件下會(huì)引起不必要的錯(cuò)誤。RocketIO的時(shí)鐘由差分時(shí)鐘輸入后,只經(jīng)過(guò)一級(jí)BUFG,將時(shí)鐘引入FPGA的全局時(shí)鐘樹(shù),然后直接連入到RocketIO的參考時(shí)鐘引腳上。
4 測(cè)試驗(yàn)證
在完成硬件設(shè)計(jì)后,可利用ChipScope Proh分析工具測(cè)試RocketIO的工作性能,通過(guò)內(nèi)置在收發(fā)器內(nèi)的誤碼率測(cè)試器,設(shè)置RocketIO為串行閉環(huán)方式,并運(yùn)行軟件進(jìn)行測(cè)試即可得到實(shí)時(shí)的數(shù)據(jù)傳輸狀態(tài)。如圖6所示可觀察到鏈路上的傳輸特性,并可得誤碼率可達(dá)到10-12,符合設(shè)計(jì)指標(biāo)要求。
5 結(jié)語(yǔ)
本文從Virtex5系列FPGA的RocketIO高速串行收發(fā)器入手,根據(jù)接口設(shè)計(jì)需要闡述了應(yīng)用RapidIO協(xié)議和FC協(xié)議實(shí)現(xiàn)高速傳輸?shù)脑O(shè)計(jì)思想及工作原理。并分析了高速傳輸在硬件設(shè)計(jì)過(guò)程需要注意的一些問(wèn)題,為高速接口設(shè)計(jì)的研究奠定了基礎(chǔ),具有一定的科研價(jià)值和實(shí)踐意義。