?
隨著對無線通信帶寬、速率等提出的更高要求,GPP受工作方式、處理能力的限制,難以滿足這些要求,這就需要FPGA(Field Program-mable Gate Array)的加入來實現波形組件的并行處理和高速運算等功能。雖然SCA為GPP上的波形組件提供了很好的可移植性和可重用性,但目前還沒有一個標準能夠為FPGA上的波形組件提供這種支持。為了實現FPGA上波形組件的可移植性和可重用性,一些方案是在GPP上實現FPGA上波形組件的代理,其中比較典型的是JTRS JPEO提出的MHAL(Modem Hardware Abstraction Layer),同時,也有部分公司或團體提出了直接在FPGA上實現CORBA的方案。本文將在分析MHAL和現存的CORBA方案優缺點的基礎上,提出一種在FPGA上實現CORBA的改進設計方案,并對該方案進行了測試驗證。
1 技術介紹
1.1 CORBA簡介
CORBA中間件標準是SCA必需的中間件層,它為SDR系統提供所需的通信架構。CORBA位于應用程序和操作系統之間,屏蔽了不同平臺、操作系統、網絡協議等的差別,為開發者提供了一致的調用模式。通過CORBA,應用組件可以獲得良好的可移植性、可重用性和互操作性。
ORB(Object ReqLtest Broker)是CORBA的核心,其任務是幫助客戶調用對象上的方法,包括:定位對象、激活對象、把客戶的請求傳遞給對象。ORB能夠屏蔽與底層平臺有關的細節,保證了信息在分布式環境中不同平臺上的應用組件間透明地傳輸。為了使由不同開發者開發的實現之間能相互通信,CORBA規范定義了GIOP(General Inter-ORB Protocol)協議標準,能夠在任何具有連接的傳輸層上實現。
1.2 SCA簡介
SCA是美軍在JTRS中制定的軟件通信架構標準,是JTRS的主干。SCA通過面向對象方法劃分軟件/硬件結構,建立了開放的系統標準,提供了與具體實現無關的軟件無線電開發框架,保證了軟、硬件的可移植、可重構及設備的互操作性。SCA規范包含軟件體系結構定義、硬件體系結構定義、安全體系結構定義和應用程序接口(API)四部分。
通過SCA所定義的分布式構件規范,可將應用與操作環境分離,同時使應用功能模塊化,并為管理和使用軟件構件定義了通用接口,通用業務和API以支持軟/硬件模塊移植。
2 現有實現方案分析
GPP處理器受其處理能力的限制,無法滿足當前通信業務需求,使通信設備越來越多地依靠DSP(Digital Signal Processor)、FPGA等專用處理器來完成高速的數據處理任務,這就使SDR系統的設計和實現必須面對由GPP,DSP和FPGA共同組成的多處理器平臺。雖然通過使用COR BA中間件技術可以很容易地實現分布式波形應用,但由于CORBA標準是針對GPP的,在DSP,FPGA等處理器上沒有相應的標準可用。這導致SCA /SDR的研究焦點分別集中在應用程序接口(API)和商用中間件上,使SCA/SDR的設計和實現出現了兩種主要模式:使用使用硬件抽象層(如MHAL)和使用分布式中間件技術(如CORBA)。
2.1 使用MHAL方式實現的SCA/SDR系統
MHAL是JTRS JPEO提出的一種基于硬件抽象層的解決方案。其實現方法是通過在核心框架與FPGA之間加入代理,并明確規范代理與FPGA之間的數據格式來實現FPGA在SCA中的應用的。圖1是以MHAL方式實現的分布式SCA/SDR系統布局結構示意圖。這種方式下,GPP需要為FPGA上的每個波形組件實現一個代理,以實現分布式波形組件間的通信。通過使用代理,系統可以將FPGA上的波形組件當作GPP上的波形組件一樣處理,這樣就可以實現對FPGA上波形組件的靈活、高效的管理和使用。
在FPGA上實現的MHAL波形組件并通過接收帶參數的操作來調用波形組件所實現的功能,雖然這樣的實現方式對于FPGA開發人員而言,可以減小編寫波形組代碼的難度,但對于GPP開發人員來說,卻要在GPP上為每個FPGA上的波形組件實現一個組件代理,大大增加了開發的負擔。而且這這種實現方式也必然會相應地增加GPP的運行負擔以及內存資源占用,同時,在進行GPP上的波形組件與FPGA上的波形組件問通信時,必須要經過組件代理的處理,實現GIOP報文與MHAL報文格式的轉換,這也就必然會給整個通信過程引入一定的延遲的增加、吞吐量的降低和低層次的重用。
而且,在以MHAL方式實現的SCA/SDR系統中,開發者需要在GPP上設計實現適配器來完成GIOP報文和MHAL報文的轉換,以便使用CORBA
機制的波形組件和使用MHAL機制的波形組件間的通信。但對于適配器的實現,目前還沒有統一的標準,而且,MHAL也不是一個針對通用市場的可用標準,它受到ITARS(International Traffic in Arins Regulations)限制,其實現細節并不公開,且MHAL報文結構的細節并不足以完成波形組件的實際需要,從而必然會導致不同的MHAL實現方式,且彼此間相互不兼容,這也必然會破壞MHAL波形組件的可移植性和可重用性。
2.2 使用CORBA方式實現的SCA/SDR系統
由于GPP上的波形組件是使用CORBA實現的,所以只要將CORBA擴展到DSP和FPGA上,就能夠很容易地實現布署在各種類型處理器上的波形組件間的通信。圖2是以CORBA方式實現的分布式SCA/SDR系統布局結構示意圖。在以CORBA方式實現的SCA/SDR系統中,GPP保持原有狀態即可,而DSP和FPGA上的ORB負責完成CORBA報文的處理。這使系統中所有波形組件使用CORBA中間件進行通信,而不需要在GPP上實現代理,不僅減輕了GPP的運行負擔以及內存資源占用,而且系統中波形組件間的通信不再需要通過代理的轉換,從而也就降低了通信時延,提高了通信效率。
同時,CORBA為不同類型的處理器提供統一的通信架構,使任何組件都能夠以簡單的函數調用方式獲得分布于系統中的其他組件的服務。軟件客戶端和硬件服務程序之間由此變得連接無縫、快速并且使用較少的系統資源。與MHAL實現方式相比,該架構提供了波形組件的移動性和位置透明性,使得在同一處理器與在遠程處理器中調用對象相比沒有什么差別,使設計人員可以很容易地將波形組件從一個處理器中轉移到另一個處理器中。這意味著,設計人員一開始可以在他們的工作站上構建SDR,然后很容易地將部件一塊塊轉移到GPP、DSP和FPGA上,來優化系統總性能。
雖然使用CORBA方式實現的SCA/SDR既保持SCA的兼容性,又減小了傳輸負載,而且,開發者也無需開發通用GPP上的定制代理。但由于FPGA的設計實現方式與GPP完全不同,其編程主要集中于底層硬件,往往同特定的可編程資源緊密聯系在一起,而且FPGA不能提供等效的操作系統中虛擬地址等機制,從而使FPGA上CORBA功能的實現比較困難。目前為止,在FPGA上實現ORB的主要的方案有以下兩種:
(1)Prismtech公司開發了一款集成電路ORB(ICO)產品,該產品提供了一個使用VHDL語言編寫的ORB模塊,能夠運行于Xilinx,Altera等公司的多款FPGA上。整個產品包括ORB引擎、IDL-to-VHDL代碼產生器和SCA應用組件等幾個部分。ORB引擎負責GIOP報文的解析和封裝,對于到達的GIOP請求報文,ORB引擎對報文中的對象鍵值、操作名稱、參數等信息進行解析,然后將數據傳遞給特定的FPGA邏輯模塊進行處理;如果處理結果需要向外部發送,則ORB引擎根據預先獲得的一些信息,將結果封裝為GIOP請求報文或應答報文,并通過網絡進行傳輸。
盡管ICO實現了FPGA程序與分布式系統的直接ORB通信,但由于其ORB引擎的實現代碼是由IDL-to-VHDL代碼生成器根據特定的應用生成的,這就使其ORB引擎的實現邏輯與特定的FPGA應用程序密切相關,從而也就導致了ORB的引擎不具備通用性。一旦FPGA的應用程序做了修改,原有的ORB引擎往往無法對新應用程序的GIOP報文進行正確的解析和封裝,此時必須再次使用IDL-to-VHDL代碼生成器重新生成新的邏輯。目前有很多FPGA在硬件上已經具備了部分重配置功能,而且有一部分分布式應用,也需要實現FPGA的動態部分重配置,這就需要在動態改變FPGA部分邏輯功能的同時,依然保持ORB引擎和其他FPGA模塊的正常工作,但ICO與FPGA應用程序的緊密相關性使這一功能無法實現。
(2)OIS公司在一項專利中提出了一種新的基于FPGA的CORBA實現方法。該方法是將ICO的ORB引擎的分為4個功能模塊,包括ORB接收模塊、ORB發送模塊、接收操作適配器和發送操作適配器。其中ORB接收模塊和ORB發送模塊僅負責解析和封裝GIOP的報文頭信息,而接收操作適配器和發送操作適配器負責解析和封裝與每個應用模塊相關的操作名稱和參數。這樣,每個應用模塊都有自己專屬的處理操作名稱和參數的處理單元,從而保證了FPGA上應用模塊的靈活性和通用性,也可以滿足部分重配置的需求。
然而,由于在OIS公司的專利中所提出的解決方案中,必須為每個應用模塊都實現一個接收操作適配器和一個發送操作適配器,由此導致應用模塊的實現十分復雜,必然會給應用模塊的開發人員帶來一定的負擔;同時,FPGA內部各應用模塊之間的信息傳遞必須經過發送操作適配器和接收發送操作適配器的處理,這對于FPGA內部乃至FPGA之間高速數據傳輸的要求顯然是不恰當的;而且,當一塊FPGA中運行的應用模塊數量較多時,也必然要有大量的計算資源和存儲資源被處理操作名稱和參數的邏輯所占用,無法實現硬件資源的有效利用,甚至造成資源的浪費,這也是實際應用中無法接受的。
3 改進的設計方案
以上分析表明現存的種實現方案都不夠理想,有必要設計一種新都實現機制來改善當前的設計。
根據實際應用中通信系統的需求,結合上述分析的幾種實現方案的優缺點,在兼顧系統的資源利用率、應用組件的易開發性、通用性、靈活性等各方面的性能,在現有設計方案對基礎上,對FPGA上的ORB實現方案進行了改進,改進后的設計方案實現結構如圖3所示。
在實際應用中,實現各種波形的應用模塊一般需要支持初始化、參數配置、參數查詢、建立連接、斷開連接、啟動、停止、數據傳遞等操作功能,所以在改進后的方案中,根據應用模塊的實際需要抽象出一組與上述操作相對應的操作名稱:initialize,configcIre,query,connectPort,disconnectPort,start,stop,pushPacket等,可稱之為公有操作。公有操作名稱的識別和處理由ORB主適配器完成。另外,對那些只是個別應用模塊所實現的操作,可稱之為私有操作,其識別和處理則由應用模塊的ORB輔助適配器完成。各模塊發所實現的功能
如下:
ORB主適配器(ORB Mian Adapter)實現的功能包括兩個方面:一是解析接收到的GIOP報文信息,從接收到到報文信息中抽取出GIOP報文頭和數據域,丟棄填充域。在該過程中,ORB主適配器需要基于GIOP報文頭信息所提供的協議版本和數據大小端標志完成報文格式的識別和數據的大小端轉換。需要注意的是GIOP報文中的ObjecKey和Operation Name段均是變長的信息,為了便于后續處理,需要在ORB主適配器的處理過程中將它們轉換為固定的編碼,其中ObjectKey轉換為用于標識應用模塊的地址編碼,而Operation Name則轉換為與之對應的控制信息;二是封裝需要發送到GIOP報文信息,負責從應用模塊的數據總線和控制總線接收數據與控制信息,然后加上GIOP報文頭,將控制信息轉換為相應的操作名稱,填充對齊數據等完成GIOP報文信息封裝,之后通過FIFO等類似的接口將數據傳送出去。
交叉開關(Crossbar Switch)實現的功能是根據接收到的地址編碼完成控制信息和數據的轉發。
ORB輔助適配器(ORB Assistant Adapter)實現的功能與ORB主適配器類似,也包括兩個方面:一是接收來自交叉開關的控制信息,若調用調用的是應用模塊的私有操作,則將此操作名稱轉換為相應的操作編碼后發送給給交叉開關,否則,直接將控制信息轉發給應用模塊;二是接收來自應用模塊的控制信息,當應用模塊調用私有操作時,則將操作編碼轉換為相應的私有操作名稱后發送給給交叉開關,否則,直接將控制信息轉發給交叉開關。
應用模塊(Application Module)根據控制信息完成對數據的處理,給出處理結果。
圖4為CORBA請求報文的接收處理流程。
在根據改進后設計方案所實現的系統中,GPP上的應用將保持原有狀態,不會引人任何額外的處理負擔和處理延遲。FPGA上由ORB主適配器統一完成各個應用模塊的公有操作,在減小FPGA硬件資源的浪費的同時也減輕了應用模塊開發的負擔。應用模塊預留有私有操作處理接口,可對其實現的私有操作進行擴展,從而也保證了應用模塊的靈活性和動態部分重配置功能的實現;而且,FPGA上各應用模塊間的數據傳遞不需要額外的處理,也滿足了高速處理的要求。
4 方案實現與測試驗證
為了驗證改進后設計方案的可行性和合理性,在圖5所示的硬件平臺上對該方案進行了實現和性能測試。其中PC計算機用作為數據源和接收終端,實現視頻和測試數據產生并接收顯示視頻和校對測試數據;ARM上運行VxWorks 5.5操作系統,使用TAO來提供CORBA功能,實現CORBA報文的封裝和解析;FPGA運行根據前面所描述的改進方案所實現的ORB,完成CORBA報文數據的解析、處理和封裝。測試過程中,首先由PC計算機產生視頻或測試數據,并通過Ethernet傳送給ARM處理器,ARM處理器上運行的應用程序將其封裝成CORBA報文后發送給FPGA,FPGA接收到CORBA報文后對其進行解析,并對凈荷數據進行處理后重新封裝為CORBA報文后再發送給ARM處理器,ARM接收到FPGA發送到CORBA報文后對其進行解析處理后將數據發送給PC計算機,最終由PC計算機對接收到到數據進行視頻解碼顯示或校對檢測。
驗證過程中先后在FPGA上實現了波形組件間的建立連接操作(connectPort)、數據傳遞(pushPaeket),波形組件參數配置(configure)和波形組件參數查詢(query)四個操作,并在波形組件到參數設置和查詢操作中完成short,float,double,string等類型的支持。通過測試,系統所實現的各種功能均符合設計需要。此外,還分別實現建立連接、數據傳遞2個操作與實現建立連接、數據傳遞、參數配置、參數查詢4個操作兩種情況對FPGA上對資源占用進行了比較,其結果見表1。從表中所得到的數據可以看出,在FPGA中實現對CORBA報文的操作以及參數進行解析、封裝處理非常耗費硬件資源。這主要是由于CORBA報文中使用的公共數據表示(CDR)來描繪所要傳輸的數據類型所引起的,其也從一個方面證明了OIS公司所設計的為每個波形組件都實現一個接收操作適配器和發送操作適配器將極其耗費硬件資源,這在實際應用中是不能被接受的。
5 結論
本文在分析現有的解決方案優缺點的基礎上提出了一種在FPGA上實現ORB的改進設計方案,不但為彼此分離的、工作于多處理器平臺上的各個GPP,DSP和FPGA開發小組提供了通用的CORBA通信機制,實現波形組件的位置透明性;還克服了現有的FPGA上實現ORB方案的缺點,使FPGA上實現的ORB既可以支持動態部分重配置,又使波形組件開發人員盡可能少地處理ORB相關的工作,大大簡化了波形組件開發人員所承擔的開發任務。最終,所提出的改進設計方案在實驗平臺進行了實現與驗證,測試結果也表明了此方案的合理性和可行性。
評論
查看更多