戴玲琳,羅劼夫
(中國電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
在目前通信設(shè)備中,千兆以太網(wǎng)通信接口已成為最常見和通用的數(shù)據(jù)傳輸通道。本文采用較低成本的國產(chǎn)化處理器、國產(chǎn)化FPGA和國產(chǎn)化PHY芯片搭建多路千兆以太網(wǎng)接口交互處理平臺(tái),可滿足多路以太網(wǎng)數(shù)據(jù)內(nèi)外交互需求,也可根據(jù)自身需求,基于FPGA設(shè)計(jì)實(shí)現(xiàn)自定義功能。
為了確保平臺(tái)的應(yīng)用推廣性,國產(chǎn)化平臺(tái)設(shè)計(jì)以實(shí)現(xiàn)數(shù)據(jù)交互性能達(dá)到1 000 Mb/s為硬性指標(biāo),采用較低成本和較低規(guī)格的國產(chǎn)化器件。本文采用CPU(龍芯2K1000)、FPGA(國微SMQ2V6000)和PHY芯片(JEM88E111)等國產(chǎn)化器件。它的平臺(tái)架構(gòu)如圖1所示。
多路千兆以太網(wǎng)接口國產(chǎn)化交互平臺(tái)對(duì)外提供2個(gè)通信網(wǎng)口,與背板采用Serdes總線進(jìn)行交互,可實(shí)現(xiàn)自定義協(xié)議數(shù)據(jù)高速傳輸。FPGA與CPU連接接口為RGMII,與以太網(wǎng)芯片連接接口為GMII,可在FPGA內(nèi)部實(shí)現(xiàn)自定義多路千兆數(shù)據(jù)交互。SMQ2V6000資源情況,如表1所示[1]。
表1 SMQ2V6000資源情況
FPGA設(shè)計(jì)主要包括GMII接口模塊、RGMII接口、時(shí)鐘模塊和自定義交互處理模塊,總體設(shè)計(jì)框圖如圖2所示。
GMII和RGMII接口模塊主要使用廠家提供的IP core,經(jīng)過剪裁實(shí)現(xiàn)數(shù)據(jù)收發(fā),對(duì)內(nèi)統(tǒng)一將GMII接口和RGMII接口數(shù)據(jù)轉(zhuǎn)化為SPI-3(System Packet Interface)總線,便于平臺(tái)內(nèi)部進(jìn)行自定義交互處理[2]。時(shí)鐘模塊對(duì)FPGA全局時(shí)鐘進(jìn)行管理規(guī)劃,分別為各個(gè)功能模塊提供處理時(shí)鐘;自定義交互模塊用戶可根據(jù)自身需求進(jìn)行代碼開發(fā)。
根據(jù)廠家提供的IP Core用戶手冊(cè),GMII和RGMII接口數(shù)據(jù)接收、發(fā)送均需獨(dú)立處理時(shí)鐘。單路GMII接口時(shí)鐘方案較為簡單,其時(shí)鐘邏輯框圖如圖3所示。接收時(shí)鐘通過1個(gè)BUFG驅(qū)動(dòng)作為IP Core的gmii_rx_clk時(shí)鐘源,發(fā)送時(shí)鐘經(jīng)過1個(gè)BUFG作為gtx_clk時(shí)鐘源和GMII接口線路發(fā)送時(shí)鐘[3]。
由于RGMII接口是用時(shí)鐘上下沿處理數(shù)據(jù),其時(shí)鐘處理較復(fù)雜。發(fā)送方向,時(shí)鐘通過1個(gè)DCM和4個(gè)BUFG驅(qū)動(dòng)相位為0、90、180、270的4種時(shí)鐘。接收方向,線路時(shí)鐘通過1個(gè)DCM和2個(gè)BUFG恢復(fù)相位為0°和180°的2種時(shí)鐘。它的時(shí)鐘邏輯框圖如圖4所示。
通過以上分析可得,F(xiàn)PGA實(shí)現(xiàn)2路GMII接口和2路RGMII接口所需全局時(shí)鐘緩沖器為16個(gè),已將SMQ2V6000全局時(shí)鐘緩沖器資源全部占用,導(dǎo)致FPGA其他邏輯模塊無法使用時(shí)鐘資源。所以,必須優(yōu)化時(shí)鐘資源。時(shí)鐘緩沖器使用數(shù)量對(duì)比,如表2所示。
表2 時(shí)鐘緩沖器使用數(shù)量對(duì)比
時(shí)鐘資源可通過以下方案進(jìn)行優(yōu)化:
(1)2路GMII接口和2路RGMII線路發(fā)送時(shí)鐘可共用1個(gè),時(shí)鐘源為FPGA內(nèi)部全局輸入時(shí)鐘,可減少使用3個(gè)時(shí)鐘緩沖器;
(2)RGMII發(fā)送時(shí)鐘模塊只產(chǎn)生0°相位和90°相位的時(shí)鐘,其180°相位和270°相位的時(shí)鐘采用0°相位和90°相位的時(shí)鐘直接取反得到,2路RGMII接口則可減少使用6個(gè)時(shí)鐘緩沖器;
(3)RGMII接收時(shí)鐘180°相位也可使用取反方式代替,可節(jié)約2個(gè)時(shí)鐘緩沖器資源[4]。
通過時(shí)鐘優(yōu)化后,2路GMII和2路RGMII僅使用7個(gè)時(shí)鐘緩沖器,因此SMQ2V6000資源完全滿足設(shè)計(jì)需求。
RGMII接口所有數(shù)據(jù)以及指示信號(hào)是時(shí)鐘上下沿采樣,時(shí)鐘頻率為125 MHz高頻。在FPGA設(shè)計(jì)中必須對(duì)RGMII接口時(shí)鐘、線路IOB、電平/驅(qū)動(dòng)、上下沿采樣以及時(shí)鐘相位和位置進(jìn)行約束,否則會(huì)引起線路數(shù)據(jù)恢復(fù)錯(cuò)誤或不穩(wěn)定現(xiàn)象[5]。本文將對(duì)國產(chǎn)化FPGA的多路RGMII接口調(diào)試常遇到的問題進(jìn)行排查和分析。
2.3.1 單路RGMII接口調(diào)試
單路RGMII接口接收方向無數(shù)據(jù),一般是由硬件問題和接收時(shí)鐘與數(shù)據(jù)時(shí)序問題引起的。因此,需從這兩方面入手進(jìn)行問題排查。排查流程如圖5所示。
硬件問題主要包括線路時(shí)鐘頻率穩(wěn)定問題、PCB布線等長以及接口電平是否符合IPCore要求。若硬件設(shè)計(jì)均滿足要求,RGMII接口接收方向依然無數(shù)據(jù),則可能是由于接收時(shí)鐘與數(shù)據(jù)時(shí)序問題引起的。RGMII接口采用接收時(shí)鐘上升沿恢復(fù)低4 bit,下降沿恢復(fù)高4 bit。若時(shí)鐘不穩(wěn)定或者出現(xiàn)相位差,則導(dǎo)致恢復(fù)數(shù)據(jù)不正確,下一個(gè)模塊采不到正確的幀頭則會(huì)丟棄數(shù)據(jù)。該問題可在約束文件中對(duì)接收時(shí)鐘進(jìn)行頻率和相位調(diào)整解決。
2.3.2 多路RGMII接口調(diào)試
由于國產(chǎn)化FPGA時(shí)鐘資源限制,本文采用多路RGMII接口共用發(fā)送時(shí)鐘解決該問題。但是,各路時(shí)鐘FPGA內(nèi)部不同的布局則會(huì)引起一路RGMII接口收發(fā)正常、另一路收發(fā)不正常的現(xiàn)象,需對(duì)多路RGMII多個(gè)接收、發(fā)送時(shí)鐘時(shí)序同時(shí)進(jìn)行約束和優(yōu)化,具體步驟如下文所述。
(1)先調(diào)A路,記錄各個(gè)時(shí)鐘BUFG、DCM的位置,約束A路所有收方向時(shí)鐘的BUFG位置。
(2)再調(diào)B路,記錄各個(gè)時(shí)鐘BUFG、DCM的位置,約束B路所有收方向時(shí)鐘的BUFG位置。
(3)對(duì)比兩次BUFG的位置,將相同的BUFG位置寫入U(xiǎn)CF文件。一般來說,RGMII數(shù)據(jù)收發(fā)不正常是由于發(fā)送方向時(shí)鐘和數(shù)據(jù)存在相位差,所以在FPGA盡量將兩路共用的發(fā)送BUFG設(shè)置在相近的位置。
(4)約束好時(shí)鐘位置后,每路采用偏移相位的方法進(jìn)行調(diào)試,根據(jù)數(shù)據(jù)恢復(fù)情況將時(shí)鐘相位調(diào)整到最佳位置。
本文在多路千兆以太網(wǎng)接口國產(chǎn)化交互平臺(tái)上進(jìn)行結(jié)果驗(yàn)證。FPGA內(nèi)部對(duì)RGMII0接口與GMII0接口、RGMII1接口與GMII1接口客戶側(cè)數(shù)據(jù)進(jìn)行交換,外部在背板上對(duì)兩路Serdes進(jìn)行環(huán)回處理。它的驗(yàn)證平臺(tái)如圖6所示。
驗(yàn)證過程主要在CPU網(wǎng)口0和網(wǎng)口1之間進(jìn)行數(shù)據(jù)收發(fā)。FPGA內(nèi)部對(duì)各個(gè)接口客戶側(cè)信號(hào)采集,其時(shí)序圖如圖7、圖8所示,可得多路GMII和RGMII接口數(shù)據(jù)收發(fā)均正常。網(wǎng)口0和網(wǎng)口1數(shù)據(jù)收發(fā)均正常,證明該國產(chǎn)化平臺(tái)多路千兆以太網(wǎng)接口數(shù)據(jù)交互正確穩(wěn)定。目前,該硬件平臺(tái)已成功應(yīng)用于隔離交換項(xiàng)目。
本文搭建了一種低成本的國產(chǎn)化CPU+FPGA硬件平臺(tái),針對(duì)多路GMII和RGMII接口時(shí)鐘資源沖突和時(shí)序不穩(wěn)定問題,采用時(shí)鐘共享、時(shí)序優(yōu)化、相位調(diào)整等措施進(jìn)行解決。大量數(shù)據(jù)的傳輸驗(yàn)證了其穩(wěn)定性和可靠性,實(shí)現(xiàn)了多路千兆以太網(wǎng)接口交互。目前,該平臺(tái)已成功應(yīng)用于相關(guān)項(xiàng)目,同時(shí)可以廣泛應(yīng)用于需要多路以太網(wǎng)接口交互和數(shù)據(jù)處理的平臺(tái)。