梁光勝,劉倩茹,姚海洋
(華北電力大學(xué) 電氣與電子工程學(xué)院,北京 102206)
隨著處理器性能的飛速提高,互連通信已成為制約嵌入式系統(tǒng)整體性能提高的瓶頸,而RapidIO技術(shù)是突破這一瓶頸的手段。目前,Rapid IO技術(shù)是世界上惟一的嵌入式系統(tǒng)互連國(guó)際標(biāo)準(zhǔn)。它支持芯片到芯片和背板間的互連,適用于高實(shí)時(shí)性、高可靠性的多器件嵌入式系統(tǒng)的互連。文中設(shè)計(jì)的Rapid IO應(yīng)用系統(tǒng)可用于嵌入式系統(tǒng)內(nèi)模塊間的通信,提高嵌入式系統(tǒng)的實(shí)時(shí)性。
Rapid IO互連通信協(xié)議采用3層體系結(jié)構(gòu),分別為邏輯層、傳輸層和物理層。RapidIO邏輯層規(guī)范位于最高層,定義全部協(xié)議和包的格式,為端點(diǎn)器件發(fā)起和完成事務(wù)提供必要的信息;傳輸層規(guī)范在中間層,定義Rapid IO地址空間和包在終端器件間傳輸所需的路由信息;物理層規(guī)范在分級(jí)結(jié)構(gòu)底部,包括器件級(jí)接口的細(xì)節(jié)[1]。RapidIO操作是基于請(qǐng)求和響應(yīng)事務(wù)的,過(guò)程如下:發(fā)起器件或主控器件產(chǎn)生一個(gè)請(qǐng)求事務(wù)并傳送到目標(biāo)器件,目標(biāo)器件執(zhí)行完事務(wù)后產(chǎn)生一個(gè)響應(yīng)事務(wù)并返回至發(fā)起器件來(lái)完成這次操作[1]。
文中的Rapid IO應(yīng)用系統(tǒng)是基于Altera公司的CycloneⅡEP2C35F6芯片和Rapid IO IP核v9.0的設(shè)計(jì)。
Rapid IO IP核v9.0支持Rapid IO協(xié)議v2.1版本,有1通道(1x)和4通道(4x)串行物理層可供選擇,所有4個(gè)通道支持1.25、2.5、3.125和5.0 Gbaud的串行數(shù)據(jù)傳輸速率。
CycloneⅡ芯片支持所有Rapid IO IP核功能和1x最高3.125 Gbaud、4x最高1.250 Gbaud的通信速率。應(yīng)用系統(tǒng)結(jié)構(gòu)圖如圖1所示[2]。
圖1 Rapid IO應(yīng)用系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure diagram of rapid IO application
圖1中,Rapid IO IP核連接整個(gè)系統(tǒng)與外界進(jìn)行數(shù)據(jù)傳輸。Avalon端口通過(guò)將數(shù)據(jù)變成統(tǒng)一的數(shù)據(jù)格式,幫助系統(tǒng)內(nèi)各模塊間進(jìn)行數(shù)據(jù)傳輸。Avalon端口分為從端口和主端口,Avalon主端口和從端口并不直接進(jìn)行連接,Avalon總線交換結(jié)構(gòu)負(fù)責(zé)在Avalon主端口和從端口之間傳輸信號(hào)[3]。Avalon總線是為可編程片上系統(tǒng)中連接片內(nèi)處理器和片內(nèi)外設(shè)而設(shè)計(jì)的一種較為簡(jiǎn)單的總線協(xié)議。它采用交換式的總線結(jié)構(gòu),在系統(tǒng)加入模塊或接入優(yōu)先權(quán)改變時(shí),Avalon總線能簡(jiǎn)單高效地產(chǎn)生最佳交換架構(gòu),非常適用于Rapid IO應(yīng)用系統(tǒng)的互連結(jié)構(gòu)。直接內(nèi)存存取(DMA)控制Avalon接口的數(shù)據(jù)傳輸。DMA在控制器下達(dá)指令后,可以控制數(shù)據(jù)直接在模塊間進(jìn)行交換。由于RapidIO互連通信多用于多個(gè)器件間大量的數(shù)據(jù)傳輸,這樣可以在很大程序上減輕控制器的資源占有率,提高數(shù)據(jù)傳輸速率。On-Chip FIFO是一種操作簡(jiǎn)單的片內(nèi)先進(jìn)先出數(shù)據(jù)緩存器,由于Rapid IO IP核可進(jìn)行異步數(shù)據(jù)通信,需要FIFO作為數(shù)據(jù)緩沖確保不同時(shí)鐘域之間的數(shù)據(jù)傳輸。片內(nèi)存儲(chǔ)器(On-Chip Memory)是基于FPGA的嵌入式系統(tǒng)可使用的存儲(chǔ)器中具有最高吞吐量和最低反應(yīng)延時(shí)的存儲(chǔ)器,可用于Rapid IO系統(tǒng)數(shù)據(jù)緩存和高速便利的FIFO存儲(chǔ)。
采用SOPC設(shè)計(jì)該系統(tǒng)時(shí),設(shè)置Rapid IO IP核物理層為1X2.5GBaud串行物理層。由于采用1X物理層,RapidIO IP核與外部通信的Atlantic接口為32 bits寬,需設(shè)置其他模塊參數(shù)與之對(duì)應(yīng)。
Rapid IO規(guī)范規(guī)定RapidIO器件的每個(gè)接口必須能同時(shí)處理呼入和呼出事務(wù)。RapidIO接口的呼入和呼出模塊可以單獨(dú)設(shè)計(jì),也可以設(shè)計(jì)成一個(gè)模塊[4]。Altera公司的Rapid IO IP核將呼入和呼出模塊單獨(dú)設(shè)計(jì),基于此設(shè)計(jì),Rapid IO應(yīng)用系統(tǒng)的功能模塊如圖2所示。
圖2 Rapid IO應(yīng)用系統(tǒng)功能模塊圖Fig.2 Function module diagram of rapidIO application
由圖2可知,時(shí)鐘模塊為各個(gè)模塊的Avalon接口提供時(shí)鐘信號(hào),除此之外 Rapid IO內(nèi)部 PLL(Phase Locked Loop,鎖相環(huán))電路利用外部時(shí)鐘信號(hào)變換出適合Rapid IO工作的內(nèi)部時(shí)鐘信號(hào),并利用該內(nèi)部時(shí)鐘信號(hào)進(jìn)行數(shù)據(jù)的傳輸。Rapid IO控制模塊控制RapidIO的工作方式。通過(guò)更改Rapid IO控制模塊內(nèi)部功能寄存器 (Capability registers,CARs)的值來(lái)定義和控制程序的執(zhí)行。RapidIO呼出模塊通過(guò)更改其內(nèi)部命令和狀態(tài)寄存器 (Command and status registers,CSRs)的值,向 DMA發(fā)送讀寫事務(wù)請(qǐng)求,然后 DMA控制模塊進(jìn)行數(shù)據(jù)傳輸,事務(wù)操作完成后,DMA將更改其狀態(tài)寄存器的值。RapidIO呼入模塊通過(guò)檢查DMA控制器的狀態(tài)寄存器來(lái)確定傳輸是否結(jié)束。當(dāng)RapidIO執(zhí)行流寫事務(wù)時(shí),流寫事務(wù)模塊直接和FIFO模塊相連:當(dāng)Rapid IO系統(tǒng)需要與外部進(jìn)行大量數(shù)據(jù)交換時(shí),流寫事務(wù)呼出模塊向FIFO發(fā)送事務(wù)請(qǐng)求,傳送數(shù)據(jù)到FIFO中或從FIFO中讀出數(shù)據(jù),操作事務(wù)完成后,F(xiàn)IFO模塊向Rapid IO呼入模塊發(fā)送操作事務(wù)完成結(jié)果。
ModelSim是業(yè)界最優(yōu)秀的HDL語(yǔ)言仿真軟件,仿真速度快,操作簡(jiǎn)單,故采用ModelSim仿真平臺(tái)對(duì)Rapid IO應(yīng)用系統(tǒng)進(jìn)行仿真。在SOPC Builder中設(shè)置各IP核的參數(shù),生成如上所述Rapid IO應(yīng)用系統(tǒng)并生成其測(cè)試模型。將RapidIO應(yīng)用系統(tǒng)作為一個(gè)終端設(shè)備進(jìn)行測(cè)試。
測(cè)試模型例化一個(gè)與RapidIO應(yīng)用系統(tǒng)中RapidIO模塊完全一樣的Rapid IO Sister模塊[5],并通過(guò)其與RapidIO應(yīng)用系統(tǒng)進(jìn)行數(shù)據(jù)通信,測(cè)試其功能。測(cè)試模型內(nèi)部結(jié)構(gòu)如圖3所示。
圖3 測(cè)試模型內(nèi)部結(jié)構(gòu)圖Fig.3 Internal structure diagram of the verification model
測(cè)試頂層模塊內(nèi)部調(diào)用了一個(gè)RapidIO BFM(Bus Function Model,總線功能模型)模塊。RapidIO BFM是由RapidIO協(xié)會(huì)研發(fā)的Rapid IO總線測(cè)試標(biāo)準(zhǔn)模塊,它提供了RapidIO事務(wù)測(cè)試任務(wù)函數(shù)[6]。通過(guò)調(diào)用這些任務(wù)函數(shù),可以簡(jiǎn)單方便地更改RapidIO內(nèi)部CARs和CSRs,以達(dá)到測(cè)試RapidIO系統(tǒng)功能的目的。由圖3可知,測(cè)試信號(hào)收發(fā)模塊調(diào)用Rapid IO BFM模塊更改Rapid IO Sister邏輯層模塊的CARs和CSRs的值,發(fā)起請(qǐng)求事務(wù),通過(guò)其物理層模塊傳到Rapid IO模塊物理層,Rapid IO應(yīng)用系統(tǒng)模塊響應(yīng)后會(huì)經(jīng)由其物理層更改RapidIO Sister模塊CSRs的值,測(cè)試頂層模塊通過(guò)調(diào)用RapidIO BFM模塊讀取Rapid IO Sister模塊CSRs值,查看響應(yīng)結(jié)果,以此來(lái)監(jiān)視Rapid IO應(yīng)用系統(tǒng)模塊的功能。
Rapid IO測(cè)試模型測(cè)試Rapid IO應(yīng)用系統(tǒng)模塊作為終端設(shè)備時(shí)的讀、寫、流寫和維護(hù)事務(wù)。測(cè)試程序流程如圖4所示,圖中Sister模塊即為Rapid IO Sister模塊。測(cè)試程序首先初始化Sister模塊端口,使其可以工作。然后設(shè)置Sister模塊為維護(hù)讀寫工作狀態(tài),讀取其內(nèi)部寄存器的值,確認(rèn)其工作模式設(shè)置是否正確。之后設(shè)置Sister模塊與RapidIO應(yīng)用系統(tǒng)內(nèi)部的RapidIO模塊,使它們可以互相通信。Rapid IO模塊的設(shè)置完成之后,向DMA模塊發(fā)出讀寫指令,測(cè)試RapidIO應(yīng)用系統(tǒng)的讀寫功能。最后Sister模塊向Rapid IO應(yīng)用系統(tǒng)發(fā)起流寫事務(wù),測(cè)試Rapid IO系統(tǒng)的流寫功能。
圖4 測(cè)試程序流程Fig.4 Flow chart of test program
圖5為仿真監(jiān)視的部分結(jié)果,由圖可知,2 012 ns,測(cè)試程序完成了Rapid IO Sister模塊的初始化;31 108 ns,測(cè)試程序完成了Rapid IO Sister模塊設(shè)置任務(wù),并讀取其內(nèi)部寄存器進(jìn)行驗(yàn)證;36 052 ns,完成了DMA模塊的讀操作;38 289 ns,完成了DMA模塊的寫操作并驗(yàn)證所寫結(jié)果正確;39 544 ns,完成了流寫事務(wù)的檢驗(yàn)任務(wù)。由測(cè)試結(jié)果可知,該測(cè)試系統(tǒng)可完成RapidIO應(yīng)用系統(tǒng)的正常測(cè)試工作。
在工業(yè)控制的特定領(lǐng)域,需要高實(shí)時(shí)性的復(fù)雜嵌入式系統(tǒng)。文中設(shè)計(jì)的Rapid IO應(yīng)用系統(tǒng)及其驗(yàn)證模型易于實(shí)現(xiàn)、操作簡(jiǎn)單,對(duì)提高復(fù)雜嵌入式系統(tǒng)的實(shí)時(shí)性有一定作用,同時(shí)對(duì)未來(lái)徹底解決嵌入式系統(tǒng)內(nèi)互連通信也有借鑒意義。
圖5 測(cè)試模型仿真結(jié)果Fig.5 The simulation results of the verification model
[1]Fullert S.Rapid IO嵌入式系統(tǒng)互連[M].王勇,林粵偉,吳冰冰,譯.北京:電子工業(yè)出版社,2006.
[2]Altera Corporation.Rapid IO MegaCoer Function User Guide(V10.1)[EB/OL].[2011-08-20].http://www.altera.com.cn/literature/ug/ug_rapidio.pdf.
[3]李蘭英.NiosII嵌入式軟核SOPC設(shè)計(jì)原理及應(yīng)用 [M].北京:北京航空航天大學(xué)出版社,2006.
[4]Fullert S.Rapid IO嵌入式系統(tǒng)互連[M].王勇,林粵偉,吳冰冰等,譯.北京:電子工業(yè)出版社,2006.
[5]謝智勇,羅明,蔣俊.串行RapidIO驗(yàn)證模型[J].計(jì)算機(jī)工程,2008,34(增刊):16-21.XIE Zhi-yong,LUO Ming,JIANG Jun.Verification model of serial rapid IO[J].Computer Engineering,2008,34 (Supplementary Issue):16-21.
[6]Fuller S,Salieva M.An introduction to the rapidIO Bus functional models[EB/OL].[2011-08-21].http://www.rapidio.org/education/documents/RTA_BFM_documentation.pdf.