鐘 瑜
(中國西南電子技術(shù)研究所,成都 610036)
目前,軍用航電系統(tǒng)設(shè)備正朝著模塊級(jí)高度綜合化的方向發(fā)展,模塊級(jí)高度綜合化帶來了設(shè)備整體性能提升,體積減小,功耗和全壽命周期成本降低,設(shè)備可靠性、可擴(kuò)展性和維護(hù)性提高。模塊級(jí)高度綜合不再是單純的總線統(tǒng)一和設(shè)備互聯(lián),而是功能線程化、硬件統(tǒng)一化和設(shè)備整體化。因此,系統(tǒng)設(shè)備中模塊應(yīng)采用軟件無線電設(shè)計(jì)方法,具備開放式體系架構(gòu),具有可配置、可重構(gòu)、可擴(kuò)展以及易于升級(jí)的技術(shù)特點(diǎn),其信號(hào)、信息等處理模塊應(yīng)構(gòu)建于通用硬件平臺(tái)上,并在此之上構(gòu)建統(tǒng)一的軟件通信接口機(jī)制和抽象結(jié)構(gòu),通過降低應(yīng)用軟件開發(fā)和硬件平臺(tái)耦合度提高應(yīng)用軟件設(shè)計(jì)的可移植性和可靠性,為設(shè)備研發(fā)提供應(yīng)用快速集成、新應(yīng)用動(dòng)態(tài)插入、新技術(shù)靈活擴(kuò)展等技術(shù)優(yōu)勢(shì)。
圖1為典型軟件無線電設(shè)備抽象結(jié)構(gòu),從設(shè)備組成上看,處于最底層的硬件設(shè)備提供了信號(hào)處理波形軟件和平臺(tái)軟件的運(yùn)行環(huán)境,這些硬件設(shè)備包括通用處理器(GPP)(如PowerPC)、數(shù)字信號(hào)處理器(DSP)、現(xiàn)場(chǎng)可編程門陣列(FPGA)以及專用集成電路(ASIC)。
從軟件運(yùn)行環(huán)境看,作為系統(tǒng)的管理和控制器,GPP處理器上運(yùn)行操作系統(tǒng),以及在SCA規(guī)范中稱之為核心框架的CF軟件,它是與操作系統(tǒng)集成并提供設(shè)備實(shí)時(shí)服務(wù)的基礎(chǔ)軟件集合,更高一層則是信號(hào)處理波形、協(xié)議處理或其它軟件組件。隨著DSP/BIOS等DSP操作系統(tǒng)的應(yīng)用,DSP處理器也可作同樣的擴(kuò)展。而FPGA由于不具備軟件運(yùn)行的操作系統(tǒng)環(huán)境,僅通過整體或部分載入其邏輯陣列配置代碼流來完成應(yīng)用功能的動(dòng)態(tài)配置,或是對(duì)功能參數(shù)化后封裝到ASIC中。因此,對(duì)于整個(gè)波形實(shí)現(xiàn)抽象過程,波形軟件在完成算法模型建立、實(shí)現(xiàn)需求分析和仿真設(shè)計(jì)后,其實(shí)現(xiàn)則根據(jù)對(duì)處理數(shù)據(jù)吞吐率和處理能力的不同要求,部署到采用C/C++等高級(jí)設(shè)計(jì)語言的GPP、DSP處理器,或者更高數(shù)據(jù)吞吐率的FPGA、ASIC處理器。
圖1 軟件無線電設(shè)備中的通用信號(hào)處理Fig.1 General signal processing in software defined radio equipment
SCA是軟件無線電設(shè)計(jì)方法的核心思想體現(xiàn),從系統(tǒng)層面上提出了構(gòu)造軟件無線電臺(tái)的方法和要素,以及在該框架下軟件的通信體制和管理方法。為建立獨(dú)立于具體應(yīng)用的軟件無線電體系結(jié)構(gòu),美軍在JTRS中引入了軟件通信體系結(jié)構(gòu)SCA,以滿足可配置軟件無線電臺(tái)的基本需求。
如圖2所示,一個(gè)SCA框架下軟件無線電系統(tǒng)的操作環(huán)境(OE)包含SCA核心框架(CF)、公用對(duì)象請(qǐng)求代理結(jié)構(gòu)(CORBA)和操作系統(tǒng)。CF是作為系統(tǒng)物理設(shè)備和應(yīng)用的管理框架軟件,提供軟件波形的安裝、配置、管理和控制。
軟總線CORBA是由OMG提出的一種異類計(jì)算環(huán)境互操作的標(biāo)準(zhǔn),簡(jiǎn)單地講,CORBA是類似于HTTP的協(xié)議層,運(yùn)行于一定的數(shù)據(jù)傳輸機(jī)制之上。CORBA提供了在不同操作系統(tǒng)、編程語言等環(huán)境下應(yīng)用程序與核心,以及應(yīng)用程序之間的信息交互和互操作平臺(tái),從而支持在SCA框架下應(yīng)用的動(dòng)態(tài)插入和互聯(lián)。
圖2 SCA開發(fā)和應(yīng)用環(huán)境Fig.2 Development and application environment of SCA
常用的信號(hào)處理硬件平臺(tái)大多基于DSP、FPGA、PPC 3種芯片,信號(hào)處理波形組件通常在DSP、FPGA一類非CORBA設(shè)備中實(shí)現(xiàn),不能直接與SCA API連接。目前,實(shí)現(xiàn)這類非CORBA組件在SCA框架下的連接應(yīng)用有兩種方式,一種是采用專用的DSP ORB 和 FPGA ORB,國外 CRC、OSI、Selex、Prismtech等公司已開發(fā)出商用產(chǎn)品,但其產(chǎn)品根據(jù)實(shí)際應(yīng)用的裁剪和移植還存在一定難度,其應(yīng)有的性能指標(biāo)還有待進(jìn)一步驗(yàn)證;另一種方式則是采用硬件抽象層連接(HAL-C)技術(shù),基于統(tǒng)一的ORB代理結(jié)構(gòu)設(shè)計(jì)HAL底層通信機(jī)制,為波形組件和其它組件之間的數(shù)據(jù)和控制流信息交互提供與SCA兼容的通信服務(wù)。
基于SCA的硬件抽象層連接技術(shù)(HAL-C)是在SCA3.0專用硬件補(bǔ)充規(guī)范(Specialized Hardware Supplement,SHS)中提出,它針對(duì)不支持CORBA的硬件如DSP、FPGA等給出了通信機(jī)制和底層通信接口的基本設(shè)計(jì)思路。本文將采用第二種方式,基于該設(shè)計(jì)思路提出解決HAL-C應(yīng)用中的波形組件封裝、配置表連接、CORBA適配等關(guān)鍵問題的具體技術(shù)途徑。
根據(jù)JTRS-5000SCA3.0SHS中提出的硬件抽象層連接基本設(shè)計(jì)思路,執(zhí)行波形算法處理的功能程序作為一個(gè)波形組件HC(HAL-C Component),其封裝設(shè)計(jì)的主要目的是為HC提供一個(gè)底層的通信接口,如圖3所示,這些底層接口包括硬件抽象通信節(jié)點(diǎn)HAL-C Endpoint和HAL的連接模型。
圖3 HAL-C模型Fig.3 HAL-C model
如圖4所示,對(duì)于通用信號(hào)處理平臺(tái)中運(yùn)行在DSP、FPGA等非CORBA組件中的波形處理軟件,其封裝和抽象連接過程首先要進(jìn)行數(shù)據(jù)流和控制流接口的定義,并以硬件抽象層組件HC結(jié)合Endpoint的方式對(duì)波形軟件進(jìn)行封裝;在為標(biāo)準(zhǔn)的通信節(jié)點(diǎn)定義數(shù)據(jù)結(jié)構(gòu)和指針后,組成包含多種組件名稱、緩沖區(qū)指針等的Endpoint配置表;通過與域描述文件的適配配置表將形成與波形組件管理配置XML文件SPD、SCD、SAD等的映射關(guān)系,從而實(shí)現(xiàn)在SCA框架下信號(hào)處理波形組件數(shù)據(jù)連接、控制和配置等HAL連接應(yīng)用。
圖4 HAL-C的主要設(shè)計(jì)思路Fig.4 The main design thought of HAL-C
對(duì)于DSP類的處理器單元,HAL具體實(shí)現(xiàn)兩個(gè)HC交互數(shù)據(jù)的通道,HAL-C Endpoint是HC的可尋址輸入輸出接口,HC使用HAL-C應(yīng)用接口API來訪問Endpoint,用以發(fā)送和接收數(shù)據(jù)。如圖5所示,其結(jié)構(gòu)包括HAL-C組件HC、可編址的輸入輸出節(jié)點(diǎn)Endpoint、HAL-C基礎(chǔ)結(jié)構(gòu)以及節(jié)點(diǎn)配置表。
HC使用HAL-C API來訪問與組件綁定的Endpoints用以發(fā)送和接收數(shù)據(jù),HAL-C基礎(chǔ)結(jié)構(gòu)則把數(shù)據(jù)通過邏輯信道發(fā)送到目的Endpoint。配置表通過動(dòng)態(tài)配置Endpoint的信息,實(shí)現(xiàn)系統(tǒng)數(shù)據(jù)流的定向和對(duì)組件參數(shù)的配置。在DSP中嵌入如DSP/BIOS等操作系統(tǒng)后,可通過操作系統(tǒng)中的底層硬件初始化函數(shù)以及提供的數(shù)據(jù)收發(fā)寄存器完成HAL的功能。
圖5 DSP中的硬件抽象層連接Fig.5 HAL-C in DSP
SHS中首先定義了類HalcEndpointHandle來表征HC和Endpoint之間的對(duì)應(yīng)關(guān)系,HalcEndpoint-Handle返回的句柄作為API函數(shù)的操作參數(shù)。SHS定義的API函數(shù)如下:
(1)獲取句柄操作halcGetEndpoint
函數(shù)原型:halcResult HalcGetEndpoint(halcEndpointHandle*eph,char*componentName,char*endpointName);
該函數(shù)在HAL-C基礎(chǔ)結(jié)構(gòu)配置表中查找與指定組件名和終端名匹配的endpoint,把指定了該組件名的終端返回給eph指針,其它API函數(shù)通過這個(gè)指針來訪問endpoint。
(2)發(fā)送數(shù)據(jù)操作halcSend
函數(shù)原型:halcResult halcSend(halcEndpoint-Handle eph,uint32 maxLength,uint32*bytesSent,void*data,uint32 timeout);
halcSend操作是將由參數(shù)data所指向的地址處、最大長(zhǎng)度為maxLength的數(shù)據(jù)傳送到ehp指定的終端,由HAL-C基礎(chǔ)結(jié)構(gòu)完成將數(shù)據(jù)傳送到eph所指向的目標(biāo)endpoint的操作。
(3)接收數(shù)據(jù)操作halcReceive
函數(shù)原型:halcResult halcReceive(halcEndpoint-Handle eph,uint32 maxLength,uint32*bytesReceived,void*data,uint32 timeout);
halcReceive將最大為maxLength長(zhǎng)度的數(shù)據(jù)傳遞到由輸入?yún)?shù)data所指向的地址,并返回輸出參數(shù)bytesReceived,表明實(shí)際被傳輸?shù)淖止?jié)數(shù)。只有數(shù)據(jù)接收完成或者timeout事件發(fā)生,halcReceive()操作才能結(jié)束,否則將一直處于阻塞狀態(tài)。
(4)終端注冊(cè)回調(diào)功能
函數(shù)原型:Typedef void(*halcCallback)(void*token,halcResultstatus,uint32 length,void*data)
halcResult halcRegisterCallback (halcEndpoint-Handle eph,halcCallbackcb,void*token,uint32 timeout)
定義的halcCallbak指針是指向要與終端綁定的功能函數(shù)。halcRegisterCallback()注冊(cè)回調(diào)功能接口是在組件沒有調(diào)用接收功能的情況下,提供HAL-C基礎(chǔ)結(jié)構(gòu)向組件發(fā)送數(shù)據(jù)的能力。halcRegister-Callback函數(shù)用參數(shù)halcCallback定義的功能操作函數(shù)來注冊(cè)eph參數(shù)指定的endpoint。如果halcCallbak是null,halcRegisterCallback()將取消所有與eph指定終端相聯(lián)系的halcCallback操作。
綜上所述,HAL-C在C環(huán)境下DSP中的主要實(shí)現(xiàn)技術(shù)途徑是:
(1)通過制定C程序波形組件接口設(shè)計(jì)規(guī)范,運(yùn)用指針操作的輸入輸出數(shù)據(jù)和控制參數(shù)設(shè)計(jì),完成組件接口的標(biāo)準(zhǔn)化;
(2)通過DSP操作系統(tǒng)DSP/BIOS建立DSP外設(shè)接口函數(shù)庫和對(duì)應(yīng)節(jié)點(diǎn)的輸入輸出數(shù)據(jù)和控制參數(shù)結(jié)構(gòu) 和指針 ,包括 TI C28x、C54x、C62x、C62x、C64x、C67x 系列 DSP 的 EMIF、McBSP、SPI、HPI、DMA、GPIO等外設(shè)接口;
(3)建立節(jié)點(diǎn)連接配置的數(shù)據(jù)結(jié)構(gòu),作為注冊(cè)節(jié)點(diǎn)詳細(xì)狀態(tài)的配置表,算法組件根據(jù)配置表指定的節(jié)點(diǎn)指針實(shí)現(xiàn)與節(jié)點(diǎn)的數(shù)據(jù)收發(fā),HAL-C基礎(chǔ)結(jié)構(gòu)則通過改變配置表節(jié)點(diǎn)與數(shù)據(jù)流關(guān)系,重新定向數(shù)據(jù)流;
(4)通過4種API應(yīng)用,即:獲取終端句柄操作halGetEndpoint()、發(fā)送數(shù)據(jù)操作halSend()、接收數(shù)據(jù)操作halReceive()、無接收要求基礎(chǔ)結(jié)構(gòu)向組件發(fā)送數(shù)據(jù)的終端注冊(cè)回調(diào)halCallBack(),建立HAL-C基礎(chǔ)結(jié)構(gòu)的數(shù)據(jù)收發(fā)機(jī)制和控制流程,實(shí)現(xiàn)節(jié)點(diǎn)與HAL以及不同物理連接HAL之間的數(shù)據(jù)收發(fā)。
對(duì)于 FPGA來說,根據(jù)SCA規(guī)范中“provides”和“use”把硬件連接機(jī)制抽象成 source、sink模塊。source模塊負(fù)責(zé)數(shù)據(jù)的發(fā)送,用于從HC向HAL-C基礎(chǔ)結(jié)構(gòu)傳遞數(shù)據(jù)。sink模塊負(fù)責(zé)數(shù)據(jù)的接收,用于從HAL-C基礎(chǔ)結(jié)構(gòu)接收數(shù)據(jù)并送給HC。
HAL-C的FPGA實(shí)現(xiàn),主要采用以下技術(shù)途徑:
(1)通過制定VHDL程序波形組件接口設(shè)計(jì)規(guī)范,完成對(duì)VHDL算法組件的參數(shù)化;
(2)建立如圖6所示的source、sink模塊接口,其中,clock—該接口的同步時(shí)鐘,所有信號(hào)與該時(shí)鐘同步;data—數(shù)據(jù)總線,總線的寬度可以是1,8,16,32,64位;channel—與數(shù)據(jù)傳輸相關(guān)的邏輯通道號(hào);length—定義數(shù)據(jù)緩沖區(qū)中要傳輸?shù)淖止?jié)數(shù);write—傳輸數(shù)據(jù)的使能信號(hào);socketRequest—邏輯信道接口請(qǐng)求訪問sink邏輯信道;socketReady—流控應(yīng)答信號(hào);
圖6 FPGA中的模塊接口Fig.6 Module interface in FPGA
(3)建立與DSP、PPC等處理器的標(biāo)準(zhǔn)外設(shè)接口模塊庫,包括與 EMIF 、McBSP 、SPI、HPI、DMA 、GPIO、Ethernet等外設(shè)的接口模塊設(shè)計(jì);
(4)建立sink與source模塊,以及 sink、source模塊與外部物理接口模塊之間的通信機(jī)制,并設(shè)計(jì)握手機(jī)制下的數(shù)據(jù)傳輸流程和不適用握手機(jī)制的連續(xù)數(shù)據(jù)傳輸流程。
如圖2所示,SCA核心框架CF(Core framework)提供應(yīng)用運(yùn)行接口和服務(wù),波形組件在軟件無線電設(shè)備中的連接應(yīng)用是通過CORBA指定的XML代碼提供與CF的“粘貼代碼”,由CF完成波形組件的應(yīng)用部署、配置和控制管理。
對(duì)于一個(gè)波形組件的抽象連接應(yīng)用,主要有以下幾個(gè)步驟:
(1)算法組件設(shè)計(jì),建立針對(duì)DSP、FPGA的信號(hào)處理波形算法仿真和實(shí)現(xiàn)代碼,并完成功能和性能調(diào)試;
(2)組件HAL設(shè)計(jì),依據(jù)第3節(jié)和第4節(jié)建立信號(hào)處理算法組件的HAL,完成波形軟件的封裝,并根據(jù)域描述文件定義,把軟件包描述(SPD)、軟件組件描述(SCD)、設(shè)備包描述(DPD)等文件中關(guān)于配置表的標(biāo)記元素與配置表參數(shù)相對(duì)應(yīng);
(3)XML域描述文件生成,提供算法組件及其運(yùn)行相關(guān)的硬件組件作為SCA組件所需的XML域描述文件,SPD、SCD、DCD、PRF等;
(4)建立SCA應(yīng)用,如圖7,通過軟件裝配描述(SAD)、設(shè)備配置描述(DCD)設(shè)定應(yīng)用的組件組成,指定每個(gè)應(yīng)用必須建立多少組件實(shí)體,組件實(shí)體間的分布、連接和約束,以及哪一個(gè)軟件組件指定為裝配控制器,哪一個(gè)硬件組件作為軟件運(yùn)行平臺(tái);在安裝之前,某一應(yīng)用封裝到一個(gè)文件當(dāng)中,包括每個(gè)組件和裝配的設(shè)定域描述文件和功能實(shí)現(xiàn)程序、庫文件的二進(jìn)制源代碼;
圖7 軟件裝配描述Fig.7 Software assembly description
(5)應(yīng)用安裝,對(duì)于某一應(yīng)用其安裝過程主要是把一個(gè)SAD文件和若干SPD、SCD、PRF和算法編譯二進(jìn)制代碼和庫文件拷貝到指定的硬件運(yùn)行環(huán)境,構(gòu)成設(shè)備功能應(yīng)用條件;
(6)SCA應(yīng)用的部署和測(cè)試,核心運(yùn)行環(huán)境通過讀取SAD等軟件信息選定將要部署的組件,通過設(shè)備管理信息指定應(yīng)用的硬件設(shè)備,并根據(jù)組件約束部署相關(guān)功能二進(jìn)制代碼到相應(yīng)的DSP、FPGA等處理器,經(jīng)過對(duì)已部署軟硬件組件的初始化配置和輸入輸出連接完成應(yīng)用的部署,同時(shí)通過初始化過程和連接實(shí)現(xiàn)應(yīng)用功能和組件的測(cè)試。
SCA是由美軍以軍事需求作為牽引,多個(gè)組織參與設(shè)計(jì)并以商業(yè)化作為重點(diǎn)設(shè)計(jì)的,自該規(guī)范提出以后,國外公司從2005年開始都先后將該規(guī)范轉(zhuǎn)變?yōu)樵O(shè)計(jì)工具、設(shè)計(jì)軟件包等貨架式產(chǎn)品,一方面,其產(chǎn)品強(qiáng)調(diào)其先進(jìn)的設(shè)計(jì)理念和流程,另一方面則注重采用TCP/IP、XML等已廣泛應(yīng)用的成熟技術(shù),以利用已有的商用產(chǎn)品,最大化SCA技術(shù)應(yīng)用的商業(yè)價(jià)值。因此,國內(nèi)特別是軍工行業(yè)相應(yīng)的SCA技術(shù)研究重點(diǎn)應(yīng)一方面吸收軟件無線電設(shè)計(jì)的核心思想,從設(shè)備應(yīng)用和技術(shù)需求出發(fā),在盡可能保持原有設(shè)備設(shè)計(jì),盡量減少軟硬件資源和設(shè)備總線數(shù)據(jù)傳輸帶寬等開銷的前提下,對(duì)目前已有產(chǎn)品進(jìn)行從設(shè)計(jì)、調(diào)試到驗(yàn)證等生產(chǎn)流程的SCA兼容性改造。另一方面,在此基礎(chǔ)上針對(duì)國內(nèi)行業(yè)特點(diǎn),大力推行SCA兼容產(chǎn)品的設(shè)計(jì)、接口、測(cè)試和生產(chǎn)等相關(guān)規(guī)范,加速新產(chǎn)品的研發(fā)、拓展技術(shù)應(yīng)用范圍,并逐步形成以我為主的國內(nèi)軍用行業(yè)規(guī)范。
[1]MSRC-5000SRD.V2.2,Software Communications Architecture Specification[S].
[2]JTRS-5000SP V3.0,Specialized Hardware Supplement to the Software Communication Architecture(SCA)Specification[S].
[3]John Bard,Vincent J Kovarik Jr.Software Defined Radio The Software Communications Architecture[M].New York:Wiley Press,2007.
[4]Peter G Cook,Wayne Bonser.Architectural Overview of the SPEAKeasy System[J].IEEE Journal on Selected Areas in Communications,1999,17(4):650-661.
[5]Arthur Akhurst.Scalability Aspects of the SRA[Z].Software Defined Radio Forum Contribution,2001.
[6]Lee Pucker.Applicability of The JTRS Software Communications Architecture In Advanced Milsatcom Terminals[C]//Proceedings of 2003 Military Communications Conference.[S.l.]:IEEE,2003:533-537.