基于SCA的軟件無線電在FPGA上設計與實現
而且,在以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的運行負擔以及內存資源占用,而且系統中波形組件間的通信不再需要通過代理的轉換,從而也就降低了通信時延,提高了通信效率。本文引用地址:http://www.104case.com/article/190887.htm
同時,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應用程序的緊密相關性使這一功能無法實現。
評論