馬友科
(中國電子科技集團公司第五十四研究所,河北石家莊050081)
隨著多種處理器協(xié)同處理數(shù)字信號的要求不斷增加,處理器間數(shù)據(jù)交換的帶寬不斷擴大,數(shù)據(jù)交換能力的強弱直接影響著數(shù)字信號處理的能力。近年來,新興的高性能互連交換技術相繼涌現(xiàn),其中專為嵌入式系統(tǒng)提出的串行RapidIO總線(SRIO)被認為是最佳的選擇之一[1],為了適應信號并行處理技術發(fā)展的趨勢,有必要設計一種SRIO總線交換模塊。
在相關研究方面,文獻[2]采用FPGA芯片來實現(xiàn)SRIO交換,可靠性和兼容性沒有經過充分的驗證和測試,可能會存在一定問題,同時成本也比較大;文獻[3]和文獻[4]分別采用 TSI568和 TSI578作為接口芯片來實現(xiàn)SRIO交換,但是這2款芯片只支持到RapidIO協(xié)議1.3版本,存在傳輸帶寬小,端口個數(shù)少等問題,越來越不能夠滿足寬帶傳輸與交換的需求;文獻[5]采用CPS1848設計了一種基于光纖的SRIO交換模塊,交換模塊的單對差分線的最高數(shù)據(jù)傳輸速率為3.125 Gbit/s,與 CPS1848可以支持的最高速率6.25 Gbit/s相比,還有一定的提升空間。
本文基于CPS1848芯片設計了一種SRIO總線交換模塊,該交換模塊單對差分線工作在5 Gbit/s,傳輸帶寬最高可達192 Gbit/s,為需要進行數(shù)據(jù)高速傳輸和交換的工程應用奠定了堅實的基礎。
SRIO交換模塊的解決方案框圖如圖1所示,它由時鐘模塊、交換芯片、電源模塊、配置模塊和節(jié)點設備5部分組成。電源模塊為所有其他芯片提供需要的各種電壓,交換芯片的初始化配置主要由C8051F單片機或EEPROM來完成,交換芯片連接到系統(tǒng)中的各種節(jié)點設備或用于管理系統(tǒng)各節(jié)點設備的主設備,例如:DSP、FPGA和PowerPC等,交換芯片根據(jù)系統(tǒng)的規(guī)??梢詥纹褂没驇灼壜?lián)使用,時鐘模塊為一片或多片交換芯片提供高精度的穩(wěn)定時鐘。
圖1 SRIO總線交換模塊總體結構
SRIO交換模塊的核心器件SRIO交換芯片選用IDT公司的CPS1848,其原理如2所示。
圖2 CPS1848原理
CPS1848是IDT公司最新推出的支持SRIO2.1標準的交換芯片[6],有48個雙向的數(shù)據(jù)差分對(lane),可以配置成1x、2x和4x三種端口模式,最多可以配置成18個1x或12個4x端口,每個lane的速 率 可 以 設 置 為 1.25 Gbit/s、2.5 Gbit/s、3.125 Gbit/s、5 Gbit/s或 6.25 Gbit/s。CPS1848 還有一個標準I2C接口,I2C接口可以用來完成對CPS1848的初始化配置,也可以通過讀取CPS1848內部寄存器來監(jiān)視它的工作狀態(tài)。CPS1848的應用面向大型處理器集群或背板,支持多種拓撲結構,可以采用靈活的方式進行配置,可選的配置方案也非常豐富。
2.1.1 I2C接口電路設計
因為I2C接口中的SCL、SDA是漏極開路的,所以必須各加10 K上拉電阻,否則I2C總線是不能正常工作的。CPS1848在I2C總線上分配的地址,是由引腳ID0-ID9的高低電平來決定的。ADS引腳上的高低電平決定是采用7 bit還是10 bit的地址。引腳MM_n決定I2C總線是主模式還是從模式。
2.1.2 復位設計
CPS1848的復位有上電復位、硬復位、軟復位和寄存器復位4種方式。上電復位對參考時鐘穩(wěn)定度和電源的上電順序是有特定要求的。硬復位引腳RST_n連接到FPGA,由FPGA來完成CPS1848的硬復位,硬復位完成后,CPS1848和所連接的節(jié)點設備間立刻開始鏈接。CPS1848的芯片到目前有A、B和C三個版本,其中A版本的硬件復位不一定能成功復位芯片,需要在初始化CPS1848的程序開始時加上軟復位。寄存器復位可以復位指定的PORT和PLL,與上述3種復位不同的是,它不能復位已配置的寄存器。
2.1.3 端口設計
使用多個不同寬度端口的時候要通過設置QCFG來進行規(guī)劃,lane組合成不同寬度的端口是有約束的,例如配置成2x模式的端口 PORT3由lane12和lane13組成,當PORT3連接到1x的節(jié)點設備時,PORT3會降級使用,此時只有l(wèi)ane12可以當成 1x使用,而 lane13不能當成 1x的端口。CPS1848只支持AC耦合,lane上的耦合電容要盡量靠近接收端放置。為了得到更大的數(shù)據(jù)傳輸帶寬,SRIO交換模塊中CPS1848配置引腳QCFG[0∶7]都設置為低電平,即48條lane配置成12個4x的端口。受所連接的節(jié)點設備的限制,速度引腳SPD[2∶0]配置成010,即每條lane的數(shù)據(jù)傳輸速率為5 Gbit/s。
JTAG電路等比較簡單,不再贅述。
CPS1848有多種配置方式,非常靈活。EEPROM配置模式主要用于在芯片上電復位后,對CPS1848進行初始化配置。通過JTAG口可以直接對片內寄存器進行配置,這種方式一般在調試時使用。通過I2C接口和SRIO的Maintenance數(shù)據(jù)包不僅能完成CPS1848配置,而且還能監(jiān)控鏈路通信狀況,提高系統(tǒng)的可靠性。多片CPS1848級聯(lián)使用,需要進行配置時,可以采用單片機作為I2C總線的主設備,來同時完成幾片作為從設備的CPS1848的配置。在交換模塊運行的過程中,如果需要改變數(shù)據(jù)傳輸?shù)姆较?,可以通過Maintenance數(shù)據(jù)包設置CPS1848內部的相關寄存器,重新配置路由表,來動態(tài)地更改交換模塊節(jié)點設備間的拓撲關系[7]。
交換模塊的配置方法[8]如下:
①在上電復位時,通過配置引腳的上下拉電阻完成需要的配置;
②復位引腳RST_n由低變高后,立刻開始鏈接初始化直至完成;
③采用單片機通過I2C接口來完成CPS1848的寄存器初始化;
④通過maintenance數(shù)據(jù)包來完成CPS1848的路由表動態(tài)更改、狀態(tài)監(jiān)測等。
整個交換模塊的關鍵技術主要包括:阻抗穩(wěn)定、相互間串擾小的高速傳輸線設計,紋波小、上電順序符合芯片要求的電源電路設計和抖動低、精度高的時鐘電路設計等3個方面的內容。
交換模塊外圍的Lane都工作在5 GHz,為了保證信號的完整性和電磁兼容性,使用MENTOR公司的Hyperlynx仿真軟件[9]對交換模塊PCB上的高速信號線進行了仿真分析,使得每對差分線的阻抗保持恒定100 Ω,同一個端口內的各差分線之間的信號傳輸偏移時間小于11 ns,差分線之間沒有大的串擾,從而保證了信號的高質量要求。
CPS1848需要的電源有核電壓+1.0 V、PLL模擬電壓+1.0 V、IO電壓+3.3 V、SerDes電壓模擬+1.0 V和模擬+1.2 V。各種電壓所耗電流大小必須滿足手冊中的要求。所有模擬電壓需用紋波非常小的線性電源來提供,該SRIO交換模塊采用的是TI公司的TPS74401線性電源模塊。CPS1848對各電壓的上升和下降時間沒有要求,但是對各電壓的上電順序有著嚴格的要求,SerDes的VDDS電壓先上電,然后是SerDes的VDDT電壓,其余電壓順序沒有要求,上電順序通過控制電源模塊使能端來實現(xiàn)。最后利用Allegro PCB PI工具對所有電源進行電源完整性分析,確保電源噪聲不會干擾高速信號。
時鐘模塊原理框圖如圖3所示。
圖3 時鐘模塊原理
CPS1848的REF_CLK引腳為芯片內部的PLL提供參考時鐘,它要求在1~20 MHz范圍的相噪要低于 2 ps RMS,頻率精確度要好于 100 ppm(156.25 MHz),再考慮到交換模塊以及其所連各節(jié)點設備的時鐘同源可以進一步改善信號完整性,因此選用高精度的VCXO作外部參考,使用ADI公司有兩級PLL的時鐘芯片AD9523 m提供所需的多路高精度時鐘[10]。
結合實際信號處理過程中的數(shù)據(jù)傳輸和交換方式,編寫DSP和FPGA測試程序,DSP和 FPGA的SRIO端口都設為4x(4對差分線組成一個端口使用),以SRIO協(xié)議中的NWRITE、NREAD方式為例,通過DSP(型號為TMS320C6678)與FPGA(型號為VC6VSX315T)之間的數(shù)據(jù)傳輸,對SRIO交換模塊的性能進行了實測[11]。
將DSP內存空間0x10800000開始的4 KB數(shù)據(jù)循環(huán)發(fā)送131 072次,共512 MB數(shù)據(jù)至FPGA,然后再回讀同樣次數(shù)至DSP,分別測試寫的時間和讀的時間。DSP發(fā)送數(shù)據(jù)采用NWRITE方式,讀取數(shù)據(jù)采用NREAD方式,調用TI公司的MCSDK庫中的兩個函數(shù)分別為 SRIO_DIO_NWRITE_BLK()和SRIO_DIO_NREAD_BLK(),使用CCS5軟件來統(tǒng)計所耗的時鐘周期數(shù),由于DSP主頻1 GHz,即每個時鐘周期1 ns,據(jù)此可以計算出所耗時間。通過CPS1848內部的相關寄存器可以看到,接收并轉發(fā)的數(shù)據(jù)包的個數(shù)正確,無壞包,無重新發(fā)送的情況發(fā)生。最終的整個通道的測試結果如表1所示。
表1 DSP與FPGA之間數(shù)據(jù)傳輸帶寬測試結果
對RapidIO協(xié)議進行分析可知,當SRIO數(shù)據(jù)包中數(shù)據(jù)有效載荷為256 bytes時,RapidIO的有效數(shù)據(jù)傳輸效率約為72%[12]。因此在5 Gbit/s和4x模式下,RapidIO的理論數(shù)據(jù)傳輸速率為14.4 Gbit/s。
實測結果與理論值有一定差距。由于進行測試時,DSP的測試程序進行了131 072次的循環(huán),循環(huán)程序的執(zhí)行占用一定的時間開銷。另外,DSP內集成的SRIO模塊,將最多可達1 Mbyte的數(shù)據(jù)拆成每包256 bytes的SRIO協(xié)議數(shù)據(jù)包再發(fā)送,這種機制也占用一些時間開銷。
采用IDT公司最新的CPS1848芯片設計了一種新型的高性能SRIO總線交換模塊,作為節(jié)點設備(FPGA、DSP等)間的高速數(shù)據(jù)通道,保證了大數(shù)據(jù)量的高速傳輸穩(wěn)定可靠。該模塊的配置方法靈活,性能優(yōu)良,通過動態(tài)改變路由表來改變數(shù)據(jù)流路徑,使得系統(tǒng)的可重構可擴展變得非常容易,具有很強的適應性。隨著支持SRIO總線的設備越來越多,SRIO總線交換模塊將會有越來越廣泛的應用。
[1] 高 毅,劉永強,梁小虎.基于串行RapidIO協(xié)議的包交換模塊的設計與實現(xiàn)[J].航空計算技術,2010,40(3):123-126.
[2] 翟彥彬,蔣志焱,張保寧.大規(guī)模RapidIO協(xié)議交換的FPGA 實現(xiàn)[J].現(xiàn)代雷達,2011,33(12):33 -35.
[3] 王學寶,鄭波祥,朱 勇.基于TSI568的RapidIO交換模塊設計[J].微計算機信息,2009,25(6):104 -105.
[4] 張 靜,李漢波.基于TSI578的串行RapidIO交換模塊設計[J].電子元器件應用,2010,12(11):30 -32.
[5] 千應慶,王曉鋒,勞 力,等.一種基于RapidIO協(xié)議的光纖總線硬件架構設計與分析[J].兵工學報,2012,33(12):1 480-1 484.
[6] 姚 鋼.全新SerialRapidIOGen2交換器提升嵌入式互聯(lián)性能[J].EDN 電子設計技術,2010(10):10-11.
[7] 謝麗斌,劉 凱,尚 煜.串行RapidIO交換技術[J].電子科技,2012,25(9):129 -131.
[8] 石海洋.一種RapidIO交換網絡配置方法的設計與實現(xiàn)[J].航空計算技術,2012,42(2):132 -134.
[9] 齊青茂,馮 鶴,馬友科.基于Hyperlynx的高速數(shù)據(jù)傳輸板 SI研究[J].計算機與網絡,2012,38(14):47 -49.
[10]張婭婭,張 磊,崔海龍.分相位時鐘組的高速數(shù)據(jù)采樣[J].無線電通信技術,2012,38(6):52-55.
[11]饒 坤.基于DSP和FPGA的串行RapidIO系統(tǒng)性能測試與分析[J].信息與電子工程,2012,10(6):680-684.
[12]許烈華.一種基于openVPX的通用信號處理平臺設計[J].電訊技術,2012,52(5):796-799.