石磊
(中國電子科技集團公司第二十研究所,西安 710068)
軟件無線電(Software Defined Radio)是指用軟件定義的、能實現(xiàn)多種功能的無線電通信系統(tǒng)。SCA(Software Communication Architecture)[1]架構是為了解決傳統(tǒng)無線電波形可移植性差的問題而提出的一個頂層設計規(guī)范,其目標是最大化軟件的可移植性和可配置性,提高無線電波形的可移植性、可復用和可互操作性等特性,使無線電波形系統(tǒng)升級方便簡單,降低無線電波形開發(fā)和操作管理成本。
SCA規(guī)范要求各波形組件之間的通信由CORBA中間件[2]來完成。但是,目前僅通用處理器(例如 CPU)能夠運行 CORBA,F(xiàn)PGA、DSP等異構處理器無法運行。FPGA、DSP等專用的處理器則通過硬件抽象層設計為FPGA波形組件設計標準化的接口,將波形組件與外部處理單元的通信功能和自身的信號處理功能相分離,極大地降低了波形組件與具體硬件平臺的耦合度,從而使波形開發(fā)人員能夠從繁瑣的數(shù)據(jù)交換過程中解放出來,只需關注波形處理算法本身和軟件平臺架構的設計,因此能夠在很大程度上降低新波形的開發(fā)周期和開發(fā)成本,增強波形的可重用性和可移植能力,與傳統(tǒng)開發(fā)方法相比,具有明顯的優(yōu)勢。
圖1是本文使用的硬件平臺架構圖,其中主控板負責波形的加載管理,部署核心框架和部分設備服務;信息板主要負責處理收發(fā)的信息,該模塊的兩個GPP分別映射到后端的兩個信號處理通道上,部署核心框架和部分設備服務;信號處理板是波形業(yè)務處理模塊,需要部署硬件抽象層。GPP內部組件通過 CORBA中間件通信,GPP-FPGA以及FPGA-FPGA組件間通過硬件抽象層進行通信。參考最新 SCA4.0規(guī)范[3],通過設計軟件平臺各核心模塊的結構和相互之間的互聯(lián)接口,建立滿足多種波形運行需求的通用軟件平臺,為硬件平臺加載各種通信波形提供支撐環(huán)境。
圖1 硬件平臺架構圖
圖2 硬件抽象層與波形組件關聯(lián)模型
圖3 硬件抽象層設計
硬件抽象層設計是為了提高波形跨平臺可移植性,屏蔽與硬件平臺緊密相關的硬件驅動和底層通信機制,與波形組件使用標準的通信接口,實現(xiàn)波形組件間通信方式與具體硬件平臺的分離,保持波形組件底層通信訪問接口的一致性,硬件抽象層與波形組件之間的關聯(lián)模型如圖2所示。
硬件抽象層由通信函數(shù)和接口組件兩部分組成。接口組件提供消息傳輸功能,負責將硬件抽象層消息通過外部傳輸鏈路向外部發(fā)送,或者從外部傳輸鏈路中接收硬件抽象層消息。GPP和DSP硬件抽象層接口組件為硬件驅動程序,F(xiàn)PGA硬件抽象層接口組件為硬件接口實體模塊;通信函數(shù)提供硬件抽象層消息的路由功能,負責將接口組件接收到的硬件抽象層消息或解析后的數(shù)據(jù)轉發(fā)到特定的信宿函數(shù),或者將特定信源函數(shù)傳遞過來的硬件抽象層消息或數(shù)據(jù)通過接口組件向外發(fā)送。
本文中采用的硬件抽象層設計如圖3所示。
在信息板GPP上增加一個HAL Device組件,在信號板 FPGA(KU085)上,同樣需要增加一個HAL硬件抽象層。對于HAL組件來說,F(xiàn)PGA(K7)和FPGA(KU085驅動)對HAL是透明的, LLC通信鏈路與FPGA(KU085)的波形組件互相通信。信息板啟動后,GPP硬件抽象層 HALDevice組件在其初始化階段需要配置到FPGA硬件抽象層控制端口的路由。
當硬件平臺和波形主要功能開發(fā)完成后,需針對設備組件、服務組件以及該波形所包含的所有組件的端口進行LD編號,編號的規(guī)則為:
(1)設備端口LD格式:<5位板卡編號>_<4位芯片編號>_<6位端口編號>,設備端口編號范圍從0~31,芯片編號在板卡內部唯一,板卡編號在整個平臺內唯一,板卡編號可為槽位號。其中,端口號為全0表示硬件抽象層設備控制端口。
(2)波形組件端口 LD格式:<5位波形編號>_<4位組件編號>_<6位端口編號>,端口編號在組件內部唯一,同時,波形組件的端口編號不能與設備和服務的端口編號沖突,由于設備和服務端口編號為0~31,所以波形組件端口編號范圍是32~63。波形組件編號在一個波形內部唯一,波形編號由軟件平臺通過硬件抽象層配置報文進行配置。
板卡地址根據(jù)槽位號確定,以保證各板卡地址不會相互沖突。板卡所在的槽位號可以靜態(tài)配置也可以動態(tài)配置,如果采用動態(tài)配置方案,則需要驅動程序能夠讀取當前板卡的槽位號;如果板卡不需要換位置,則使用靜態(tài)配置的方式。本平臺板卡設備編號如表1所示。
表1 設備LD編號
芯片編號主要用于表示各個板卡上的處理器芯片,芯片編號如表2所示。
表2 芯片編號
硬件抽象層消息幀格式如圖4所示。
圖4 硬件抽象層消息幀格式
硬件抽象層消息幀各字段的含義見表3。
表3 硬件抽象層消息字段
LD字段用來表示消息應被送達的信宿函數(shù)的地址,每個信宿函數(shù)都有一個LD。LD是在CE域內定義的整型常量,指向一個具體的接口,如DSP函數(shù)、FPGA節(jié)點等。
IU字段用來標識波形組件是否已完成消息處理。波形組件在消息處理結束之前必須設置該字段,以聲明消息還在處理。
Length字段表示硬件抽象層消息幀的長度。消息從LSB字節(jié)到MSB字節(jié)以地址遞增的方式進行排列。引用該數(shù)據(jù)單元的指針指向LSB字節(jié)。
信源函數(shù)完成消息預處理,信宿函數(shù)根據(jù)接收到的消息指針訪問數(shù)據(jù)。硬件抽象層通信的流量控制可根據(jù)需要,在數(shù)據(jù)發(fā)送端或數(shù)據(jù)接受端實現(xiàn)。硬件抽象層通信服務可根據(jù)需要,采用推模式或拉模式,即可以將數(shù)據(jù)寫到目的地址,也可以從目的地址讀取數(shù)據(jù)。
FPGA硬件抽象層為運行于FPGA中的波形應用提供標準、統(tǒng)一的接口,并為FPGA與其他處理器之間提供消息傳輸機制。硬件平臺開發(fā)人員負責FPGA中硬件抽象層的實體模塊,F(xiàn)PGA波形應用開發(fā)人員將硬件抽象層模塊集成到自己的設計中,編譯綜合后形成加載文件,實現(xiàn)完整的FPGA功能。FPGA硬件抽象層實現(xiàn)底層屏蔽、數(shù)據(jù)路由、配置查詢等三方面功能。
如圖5所示,F(xiàn)PGA中程序邏輯分成三個層次,由下至上分別為驅動層、硬件抽象層和應用層。硬件抽象層可將具體的底層硬件驅動屏蔽為統(tǒng)一的邏輯接口供應用層調用。由于波形組件與波形組件、波形組件與硬件抽象層之間采用了統(tǒng)一的硬件抽象層接口進行交互,因此,將一個波形應用由平臺A移植到平臺B時,無需修改波形應用即可進行移植,進一步地降低了波形移植的復雜度,提高了FPGA波形應用的可移性。FPGA硬件抽象的收發(fā)信號定義如圖6所示,由基本信號和可選信號、擴展信號組成,完成收發(fā)兩個組件間數(shù)據(jù)交換,其讀寫時序如圖7所示。
圖5 FPGA硬件抽象層結構框圖
圖6 FPGA硬件抽象層基本信號定義
圖7 FPGA硬件抽象層讀寫時序
系統(tǒng)測試波形具有數(shù)據(jù)通信和音頻傳輸功能,對傳輸?shù)膶崟r性要求較高。在未采用SCA架構前,以傳統(tǒng)手段開發(fā)的波形運行時端到端傳輸時延不大于1秒,采用輕量化SCA核心框架架構,使用CORBA中間件和硬件抽象MHAL后開發(fā)、移植波形后,波形傳輸時延增加了 500μs,基本可滿足系統(tǒng)波形傳輸實時性要求,同時提高了波形了可移植性。
采用基于 SCA體系架構硬件抽象層設計改造的某波形具有良好的可移植性和通用性,降低波形開發(fā)難度,降低開發(fā)費用,同時能保證波形指標,經測試采用CORBA中間件和硬件抽象層后實時性可以滿足某些實際應用需求,對于更低時延要求的波形的支撐還需要進一步優(yōu)化和研究。