呂 浩
(中國電子科技集團公司第二十研究所,西安 710068)
軟件通信體系架構(Software Communication Architecture,SCA)是一組實現軟件無線電系統的規則和方法的集合,定義了統一的軟件無線電體系結構規范,解決了不同廠家軟件無線電產品的兼容問題[1]。本文基于SCA 架構,提出一種通用的波形設計方法,將波形功能封裝成接口標準的波形組件,通過硬件抽象層接口屏蔽底層驅動差異,并通過SCA 核心框架進行管控,可滿足“一種波形適應多種平臺,一種平臺加載多種波形”的要求。
硬件體系架構采用面向對象的類結構,硬件結構中的各部分被劃分為硬件類,硬件類再細分為各硬件子類,可涵蓋所有電子裝備應用領域通用硬件。硬件架構如圖1所示。每個子類設備都可以通過繼承的方式來獲得父類設備通用的屬性,同時每個子類也可以有自己的特定屬性。

圖1 SCA 硬件架構
硬件類的劃分方法依據硬件設備的物理和接口特性,而不是硬件設備的特定功能,從而保證了硬件設備的通用性和可擴展性,降低系統成本[2]。而軟件架構采用分層結構,并將應用與底層硬件分開,如圖2所示。應用與硬件平臺中間的部分成為操作環境(Operating Environment,OE),由操作系統、組件間通信機制、核心框架、設備與服務組成,為波形應用的開發提供統一的底層支持和服務,使波形應用開發具有最大的可移植性和可重用性。

圖2 SCA 軟件架構
對于通信波形而言,一般的處理流程如圖3所示。傳統的波形開發方法是將各個分功能緊密耦合在一起來實現波形完整功能,這樣就導致了軟件重用和功能升級比較困難,使得波形開發難度大、開發速度慢、周期長[3]。

圖3 通信波形典型功能組成及流程
為了提高波形應用的可復用性以及可移植性,降低波形開發難度,本文基于SCA 架構,提出一種通用的波形設計方法,將波形應用劃分為多個標準應用組件,封裝業務功能實現,通過核心框架實現波形管理控制,通過中間件及硬件抽象層進行數據交互。
下面以某波形為例說明波形開發步驟,將其移植到通用軟無設備上,并驗證該方法的可行性。通用軟無平臺硬件組成為PPC+FPGA,PPC 和FPGA之間通過LVDS 通信,如圖4所示。

圖4 通用軟無硬件平臺示意圖
組件劃分粒度大小決定了對平臺資源的需求和組件功能的可移植性、可復用性。組件劃分時,可以根據硬件架構處理器類的不同,將波形組件分為運行在通用處理器(如PPC、ARM 等)和非通用處理器(如FGPA、DSP 等)兩類。
此外,也可以按照功能進行組件劃分[2]。對于該波形,可分為信息處理組件和信號處理組件,其中信息處理IP 組件完成接口協議處理以及數據處理功能運行在PPC 上;信號處理SP 組件完成編解碼、調制解調、上下變頻等功能,運行在FPGA 上,如圖5所示。

圖5 組件劃分示意圖
IP 組件和SP 組件運行在異構處理器,需要借助硬件抽象層(Hardware Abstraction Layer,HAL)完成通信[3]。波形組件IP 通過中間件與HALDevice進行數據交互,然后通過HALDevice 提供的標準接口與波形組件SP 進行數據交互,HALDevice 標準接口中封裝 LVDS 驅動。IP 和 SP 組件以及HALDevice 連接關系如圖6所示。

圖6 波形組件間連接關系
通過軟件無線電集成開發環境(Integrated Development Environment,IDE)對組件建模和應用建模,選擇恰當的組件類型,將IDL 文件映射生成C++框架代碼文件,同時設置組件參數,建立組件間的連接關系,設置裝配控制器,生成域描述文件(包括SCD、PRF、SPD、SAD 等)。
波形組件屬于 SCA 規范[1]中定義的標準ApplicationComponent 類,繼承核心框架定義的LifeCycle 、 PortAccessor 、 PropertySet 、Controllable-Interface 等標準接口,用來實現波形組件的初始化(initialize)、釋放對象(releaseObject),端口連接(connectUsesPorts)、斷開連接(disconnectPorts)、開始(start)和停止(stop)等操作。
通用硬件平臺的GPP 和FPGA 屬于SCA 規范中的DeviceComponent 類,需繼承核心框架定義的LifeCycle 、 PortAccessor 、 PropertySet 和ControllableInterface 等標準接口,并根據各自特定的屬性,分別繼承 ExecutableInterface 和LoadableInterface,為波形應用提供標準訪問硬件接口,使得波形應用與硬件解耦,可實現波形在包含相同類型處理器的不同硬件平臺的移植。
HALDevice 屬于 SCA 規范中定義的標準DeviceComponent 類,除LifeCycle、PortAccessor、PropertySet 和ControllableInterface 等標準接口外,還需繼承MHAL::MHALPacketConsumer 接口,將底層驅動封裝成統一的pushPacket 接口,實現異構處理器間的數據交互。利用該接口可屏蔽底層硬件的差異,便于波形在不同硬件平臺的移植。
將實現波形功能的代碼填入建模生成的框架代碼中進行封裝,如圖7所示。波形組件模型由外部接口和內部封裝的功能代碼組成。外部接口的主接口繼承了核心框架中的接口,用于組件的控制和管理;數據端口主要用于組件之間的數據傳遞。

圖7 波形組件功能封裝示意圖
內部封裝的組件代碼由框架代碼、功能代碼和膠水代碼組成[4]。其中框架代碼的主要作用是封裝組件內部的功能代碼,并負責組件與組件之間、組件與核心框架之間的通信;功能代碼是實現波形功能的算法;膠水代碼作為框架代碼和功能代碼之間的橋梁,其主要作用是轉發框架代碼和功能代碼之間的通信數據,并負責對通信數據進行格式轉換。編譯封裝好的波形組件,生成可執行文件。
不同功能的應用對應不同的功能代碼和膠水代碼,但框架代碼相同且可復用,因此,在組件劃分方式相同的前提下,只需要修改功能代碼和膠水代碼,便可以將不同功能的波形可移植到同一硬件平臺。
核心框架提供了標準的接口對運行在軟件平臺的波形應用進行管理控制,以保證波形能夠正常加安裝、加卸載和運行停止。
(1)波形安裝
波形組件及相關文件安裝到設備存儲空間相應的文件路徑,并且調用核心框架installApplication操作,創建應用工廠實例以及組件注冊器實例,用于創建波形及波形注冊,序列圖如圖8所示。

圖8 波形安裝序列圖
(2)波形部署
建立波形組件和設備組件的部署關系,確保波形可執行程序運行在該硬件處理器上。對于該波形,IP 組件部署在 GPPDevice,SP 組件部署在FPGADevice。
(3)波形加載
調用應用工廠create 接口,生成應用組件實例,根據部署關系,調用allocateCapacity 接口分配處理器的內存及堆棧給波形組件;調用設備的load 接口將波形應用中各個組件部署到符合條件的設備上;運行波形組件可執行程序,初始化組件;根據SAD文件中定義的組件連接關系,調用connectUsesPorts接口建立組件間的連接關系,創建成功后,向域內注冊,序列圖如圖9所示。

圖9 波形加載序列圖
(4)波形啟動
波形加載后,調用start 函數,啟動波形應用。
(5)波形停止
調用stop 函數,使波形組件停止工作。
(6)波形卸載
調用disconnectPorts 操作斷開波形組件間連接關系,調用releaseObject 操作釋放波形組件對象,調用terminate 和unload 操作,刪除部署在處理器的波形可執行文件,并釋放分配空間,完成波形卸載,序列圖如圖10 所示。

圖10 波形卸載序列圖
(7)波形刪除
調用核心框架uninstallApplication 操作,將波形從域內刪除。
按照上述方法進行波形移植,并與非軟無平臺進行通信測試,測試環境如圖11 所示。軟無平臺通過交換機與波形管控軟件以及平臺模擬器相連,非軟無平臺通過交換機與平臺模擬器相連。測試中,通過波形控制軟件下發指令,波形能正常安裝刪除、部署、加卸載和運行停止,通過平臺模擬器發送并接受測試數據,通信測試功能正常。

圖11 通信測試環境示意圖
對該波形進行SCA 符合性測試,軟無平臺與符合性測試軟件通過交換機相連,如圖12 所示。啟動測試用例,測試應用及組件的域描述文件符合性、接口符合性等,測試用例全部通過。

圖12 符合性測試環境示意圖
本文提出一種基于SCA 架構波形設計方法,將波形應用封裝為標準應用組件,通過硬件抽象層屏蔽底層驅動的差異,采用核心框架實現波形管理控制。利用該方法可將不同功能的波形封裝成波形組件庫移植到軟無平臺,為波形數據交互提供統一的接口,保證波形在不同的軟無平臺上移植和復用,縮短研發周期,降低維護成本,滿足“一種波形適應多種平臺,一種平臺加載多種波形”的要求。