基于FPGA的CORBA通信系統(tǒng)設(shè)計方案
雖然使用CORBA方式實現(xiàn)的SCA/SDR既保持SCA的兼容性,又減小了傳輸負載,而且,開發(fā)者也無需開發(fā)通用GPP上的定制代理。但由于FPGA的設(shè)計實現(xiàn)方式與GPP完全不同,其編程主要集中于底層硬件,往往同特定的可編程資源緊密聯(lián)系在一起,而且FPGA不能提供等效的操作系統(tǒng)中虛擬地址等機制,從而使FPGA上CORBA功能的實現(xiàn)比較困難。目前為止,在FPGA上實現(xiàn)ORB的主要的方案有以下兩種:
(1)Prismtech公司開發(fā)了一款集成電路ORB(ICO)產(chǎn)品,該產(chǎn)品提供了一個使用VHDL語言編寫的ORB模塊,能夠運行于Xilinx,Altera等公司的多款FPGA上。整個產(chǎn)品包括ORB引擎、IDL-to-VHDL代碼產(chǎn)生器和SCA應(yīng)用組件等幾個部分。ORB引擎負責GIOP報文的解析和封裝,對于到達的GIOP請求報文,ORB引擎對報文中的對象鍵值、操作名稱、參數(shù)等信息進行解析,然后將數(shù)據(jù)傳遞給特定的FPGA邏輯模塊進行處理;如果處理結(jié)果需要向外部發(fā)送,則ORB引擎根據(jù)預(yù)先獲得的一些信息,將結(jié)果封裝為GIOP請求報文或應(yīng)答報文,并通過網(wǎng)絡(luò)進行傳輸。
盡管ICO實現(xiàn)了FPGA程序與分布式系統(tǒng)的直接ORB通信,但由于其ORB引擎的實現(xiàn)代碼是由IDL-to-VHDL代碼生成器根據(jù)特定的應(yīng)用生成的,這就使其ORB引擎的實現(xiàn)邏輯與特定的FPGA應(yīng)用程序密切相關(guān),從而也就導致了ORB的引擎不具備通用性。一旦FPGA的應(yīng)用程序做了修改,原有的ORB引擎往往無法對新應(yīng)用程序的GIOP報文進行正確的解析和封裝,此時必須再次使用IDL-to-VHDL代碼生成器重新生成新的邏輯。目前有很多FPGA在硬件上已經(jīng)具備了部分重配置功能,而且有一部分分布式應(yīng)用,也需要實現(xiàn)FPGA的動態(tài)部分重配置,這就需要在動態(tài)改變FPGA部分邏輯功能的同時,依然保持ORB引擎和其他FPGA模塊的正常工作,但ICO與FPGA應(yīng)用程序的緊密相關(guān)性使這一功能無法實現(xiàn)。
(2)OIS公司在一項專利中提出了一種新的基于FPGA的CORBA實現(xiàn)方法。該方法是將ICO的ORB引擎的分為4個功能模塊,包括ORB接收模塊、ORB發(fā)送模塊、接收操作適配器和發(fā)送操作適配器。其中ORB接收模塊和ORB發(fā)送模塊僅負責解析和封裝GIOP的報文頭信息,而接收操作適配器和發(fā)送操作適配器負責解析和封裝與每個應(yīng)用模塊相關(guān)的操作名稱和參數(shù)。這樣,每個應(yīng)用模塊都有自己專屬的處理操作名稱和參數(shù)的處理單元,從而保證了FPGA上應(yīng)用模塊的靈活性和通用性,也可以滿足部分重配置的需求。
然而,由于在OIS公司的專利中所提出的解決方案中,必須為每個應(yīng)用模塊都實現(xiàn)一個接收操作適配器和一個發(fā)送操作適配器,由此導致應(yīng)用模塊的實現(xiàn)十分復雜,必然會給應(yīng)用模塊的開發(fā)人員帶來一定的負擔;同時,F(xiàn)PGA內(nèi)部各應(yīng)用模塊之間的信息傳遞必須經(jīng)過發(fā)送操作適配器和接收發(fā)送操作適配器的處理,這對于FPGA內(nèi)部乃至FPGA之間高速數(shù)據(jù)傳輸?shù)囊箫@然是不恰當?shù)?;而且,當一塊FPGA中運行的應(yīng)用模塊數(shù)量較多時,也必然要有大量的計算資源和存儲資源被處理操作名稱和參數(shù)的邏輯所占用,無法實現(xiàn)硬件資源的有效利用,甚至造成資源的浪費,這也是實際應(yīng)用中無法接受的。
3 改進的設(shè)計方案
以上分析表明現(xiàn)存的種實現(xiàn)方案都不夠理想,有必要設(shè)計一種新都實現(xiàn)機制來改善當前的設(shè)計。
根據(jù)實際應(yīng)用中通信系統(tǒng)的需求,結(jié)合上述分析的幾種實現(xiàn)方案的優(yōu)缺點,在兼顧系統(tǒng)的資源利用率、應(yīng)用組件的易開發(fā)性、通用性、靈活性等各方面的性能,在現(xiàn)有設(shè)計方案對基礎(chǔ)上,對FPGA上的ORB實現(xiàn)方案進行了改進,改進后的設(shè)計方案實現(xiàn)結(jié)構(gòu)如圖3所示。
在實際應(yīng)用中,實現(xiàn)各種波形的應(yīng)用模塊一般需要支持初始化、參數(shù)配置、參數(shù)查詢、建立連接、斷開連接、啟動、停止、數(shù)據(jù)傳遞等操作功能,所以在改進后的方案中,根據(jù)應(yīng)用模塊的實際需要抽象出一組與上述操作相對應(yīng)的操作名稱:initialize,configcIre,query,connectPort,disconnectPort,start,stop,pushPacket等,可稱之為公有操作。公有操作名稱的識別和處理由ORB主適配器完成。另外,對那些只是個別應(yīng)用模塊所實現(xiàn)的操作,可稱之為私有操作,其識別和處理則由應(yīng)用模塊的ORB輔助適配器完成。各模塊發(fā)所實現(xiàn)的功能如下:
ORB主適配器(ORB Mian Adapter)實現(xiàn)的功能包括兩個方面:一是解析接收到的GIOP報文信息,從接收到到報文信息中抽取出GIOP報文頭和數(shù)據(jù)域,丟棄填充域。在該過程中,ORB主適配器需要基于GIOP報文頭信息所提供的協(xié)議版本和數(shù)據(jù)大小端標志完成報文格式的識別和數(shù)據(jù)的大小端轉(zhuǎn)換。需要注意的是GIOP報文中的ObjecKey和Operation Name段均是變長的信息,為了便于后續(xù)處理,需要在ORB主適配器的處理過程中將它們轉(zhuǎn)換為固定的編碼,其中ObjectKey轉(zhuǎn)換為用于標識應(yīng)用模塊的地址編碼,而Operation Name則轉(zhuǎn)換為與之對應(yīng)的控制信息;二是封裝需要發(fā)送到GIOP報文信息,負責從應(yīng)用模塊的數(shù)據(jù)總線和控制總線接收數(shù)據(jù)與控制信息,然后加上GIOP報文頭,將控制信息轉(zhuǎn)換為相應(yīng)的操作名稱,填充對齊數(shù)據(jù)等完成GIOP報文信息封裝,之后通過FIFO等類似的接口將數(shù)據(jù)傳送出去。
交叉開關(guān)(Crossbar Switch)實現(xiàn)的功能是根據(jù)接收到的地址編碼完成控制信息和數(shù)據(jù)的轉(zhuǎn)發(fā)。
ORB輔助適配器(ORB Assistant Adapter)實現(xiàn)的功能與ORB主適配器類似,也包括兩個方面:一是接收來自交叉開關(guān)的控制信息,若調(diào)用調(diào)用的是應(yīng)用模塊的私有操作,則將此操作名稱轉(zhuǎn)換為相應(yīng)的操作編碼后發(fā)送給給交叉開關(guān),否則,直接將控制信息轉(zhuǎn)發(fā)給應(yīng)用模塊;二是接收來自應(yīng)用模塊的控制信息,當應(yīng)用模塊調(diào)用私有操作時,則將操作編碼轉(zhuǎn)換為相應(yīng)的私有操作名稱后發(fā)送給給交叉開關(guān),否則,直接將控制信息轉(zhuǎn)發(fā)給交叉開關(guān)。
應(yīng)用模塊(Application Module)根據(jù)控制信息完成對數(shù)據(jù)的處理,給出處理結(jié)果。
在根據(jù)改進后設(shè)計方案所實現(xiàn)的系統(tǒng)中,GPP上的應(yīng)用將保持原有狀態(tài),不會引人任何額外的處理負擔和處理延遲。FPGA上由ORB主適配器統(tǒng)一完成各個應(yīng)用模塊的公有操作,在減小FPGA硬件資源的浪費的同時也減輕了應(yīng)用模塊開發(fā)的負擔。應(yīng)用模塊預(yù)留有私有操作處理接口,可對其實現(xiàn)的私有操作進行擴展,從而也保證了應(yīng)用模塊的靈活性和動態(tài)部分重配置功能的實現(xiàn);而且,F(xiàn)PGA上各應(yīng)用模塊間的數(shù)據(jù)傳遞不需要額外的處理,也滿足了高速處理的要求。
4 方案實現(xiàn)與測試驗證
為了驗證改進后設(shè)計方案的可行性和合理性,在圖5所示的硬件平臺上對該方案進行了實現(xiàn)和性能測試。其中PC計算機用作為數(shù)據(jù)源和接收終端,實現(xiàn)視頻和測試數(shù)據(jù)產(chǎn)生并接收顯示視頻和校對測試數(shù)據(jù);ARM上運行VxWorks 5.5操作系統(tǒng),使用TAO來提供CORBA功能,實現(xiàn)CORBA報文的封裝和解析;FPGA運行根據(jù)前面所描述的改進方案所實現(xiàn)的ORB,完成CORBA報文數(shù)據(jù)的解析、處理和封裝。測試過程中,首先由PC計算機產(chǎn)生視頻或測試數(shù)據(jù),并通過Ethernet傳送給ARM處理器,ARM處理器上運行的應(yīng)用程序?qū)⑵浞庋b成CORBA報文后發(fā)送給FPGA,F(xiàn)PGA接收到CORBA報文后對其進行解析,并對凈荷數(shù)據(jù)進行處理后重新封裝為CORBA報文后再發(fā)送給ARM處理器,ARM接收到FPGA發(fā)送到CORBA報文后對其進行解析處理后將數(shù)據(jù)發(fā)送給PC計算機,最終由PC計算機對接收到到數(shù)據(jù)進行視頻解碼顯示或校對檢測。
驗證過程中先后在FPGA上實現(xiàn)了波形組件間的建立連接操作(connectPort)、數(shù)據(jù)傳遞(pushPaeket),波形組件參數(shù)配置(configure)和波形組件參數(shù)查詢(query)四個操作,并在波形組件到參數(shù)設(shè)置和查詢操作中完成short,float,double,string等類型的支持。通過測試,系統(tǒng)所實現(xiàn)的各種功能均符合設(shè)計需要。此外,還分別實現(xiàn)建立連接、數(shù)據(jù)傳遞2個操作與實現(xiàn)建立連接、數(shù)據(jù)傳遞、參數(shù)配置、參數(shù)查詢4個操作兩種情況對FPGA上對資源占用進行了比較,其結(jié)果見表1。從表中所得到的數(shù)據(jù)可以看出,在FPGA中實現(xiàn)對CORBA報文的操作以及參數(shù)進行解析、封裝處理非常耗費硬件資源。這主要是由于CORBA報文中使用的公共數(shù)據(jù)表示(CDR)來描繪所要傳輸?shù)臄?shù)據(jù)類型所引起的,其也從一個方面證明了OIS公司所設(shè)計的為每個波形組件都實現(xiàn)一個接收操作適配器和發(fā)送操作適配器將極其耗費硬件資源,這在實際應(yīng)用中是不能被接受的。
5 結(jié)論
本文在分析現(xiàn)有的解決方案優(yōu)缺點的基礎(chǔ)上提出了一種在FPGA上實現(xiàn)ORB的改進設(shè)計方案,不但為彼此分離的、工作于多處理器平臺上的各個GPP,DSP和FPGA開發(fā)小組提供了通用的CORBA通信機制,實現(xiàn)波形組件的位置透明性;還克服了現(xiàn)有的FPGA上實現(xiàn)ORB方案的缺點,使FPGA上實現(xiàn)的ORB既可以支持動態(tài)部分重配置,又使波形組件開發(fā)人員盡可能少地處理ORB相關(guān)的工作,大大簡化了波形組件開發(fā)人員所承擔的開發(fā)任務(wù)。最終,所提出的改進設(shè)計方案在實驗平臺進行了實現(xiàn)與驗證,測試結(jié)果也表明了此方案的合理性和可行性。
評論