李 鵬,孫 學,路小超
(中國電子科技集團公司第十研究所,四川 成都 610036)
如何實現標準化的波形建模方法,縮短系統(tǒng)開發(fā)時間,是目前機載傳感器系統(tǒng)開發(fā)過程中需要解決的關鍵問題之一[1,2]。
國外F35采用開放式架構實現了機載傳感器數字部分及射頻前端的綜合,通過標準的信號與數據處理單元完成傳感器和任務設備的信號與數據處理,實現了通信導航識別、雷達及電子戰(zhàn)等多項無線傳感器功能[3,4]。借助開放性、模塊化和通用化的硬件平臺,F35進一步借鑒了軟件無線電思想,將各種功能如工作頻段、調制解調和通信協議等使用軟件模塊完成,以研制出具有高度靈活、開放性的新一代無線通信系統(tǒng)[5]。JTRS聯合項目辦公室發(fā)布的軟件通信體系結構SCA2.2.2標準,標準化了波形的建模和開發(fā)流程。為了實現波形與硬件解耦,后續(xù)又發(fā)布了MHAL[6]和MOCB[7]規(guī)范,但是鮮有基于這些中間件的規(guī)范化波形建模與開發(fā)流程。
目前,機載平臺中已大量使用如RapidIO等支持高速內存映射機制的數據總線。然而在大規(guī)模系統(tǒng)應用中,內存空間劃分與地址規(guī)劃復雜,缺乏規(guī)范化建模和管配方法,應用中還經常面臨如下問題:①平臺異構特性封裝需求;②波形高帶寬和動態(tài)部署需求;③標準化波形建模方法需求。本文將基于高速內存映射機制通信總線,結合JTNC MOCB標準,提出了一種規(guī)范化的波形建模方法,解決上述波形開發(fā)中面臨的問題。
機載高速信號處理機主要用于完成機載各種傳感器的信號與信息處理及其它運算控制等功能,是航電系統(tǒng)的重要組成平臺,通常具有如下特點:
(1)遵循標準的綜合化開放式系統(tǒng)結構,采用通用化、多目的和標準化的數據和信號處理模塊,支持資源冗余和靈活可變的硬件線程重組設計,提升系統(tǒng)的可擴展性和可靠性;
(2)集成通用的高性能異構類型處理單元,如MPC8640和P2020、TMS320C600系列多核DSP、Xilinx K7系列FPGA。在滿足不同波形高性能信號解算、數據處理等運算需求的同時,避免器件種類的多樣化;
(3)使用高性能的分布式互連總線,如RapidIO總線等[8,9]。RapidIO 1.x標準支持的信號速率為1.25 Gbps、2.5 Gbps和3.125 Gbps。借助高速交換芯片如CPS-1848(支持12路4x或18路1x)、TSI578(支持8路4x+8路1x或16路1x)和互聯背板可以實現模塊內部和模塊間的高速數據傳輸,能夠支持目前CNI、電子戰(zhàn)和雷達的波形應用需求。后續(xù)發(fā)布的RapidIO 2.x標準在兼容RapidIO 1.x標準基礎上,增加了支持5Gbps和6.25Gbps的傳輸速率[10],對滿足未來機載波形高速通信需求提供了有效的技術保障。
雖然RapidIO規(guī)范支持消息通信、全局共享內存(GSM)和直接輸入輸出(DIO)等多種通信機制,為了支持高速機載波形的數據交互需求,本文采用RapidIO DIO內存映射通信模式構建高速的異構處理器互聯通道,以滿足波形的數據交互需求。
圖1給出了基于RapidIO的機載高速信號處理機資源互聯,其中包含了各類計算單元處理板,板內單元通過高速交換芯片進行互聯,并通過交換芯片連接至交換模塊,實現板間的數據通信。交換板預留與外部的互聯接口,實現與射頻系統(tǒng)以及其它高速處理單元的互聯。
集成開放式體系架構、通用處理單元和高速互聯總線的機載異構處理平臺,為實現波形的建模開發(fā),提高系統(tǒng)開發(fā)效率和波形復用率提供了一個更加標準化的運行環(huán)境。

圖1 機載異構平臺資源互聯
JTNC辦公室于2013年公布了MOCB 1.1.5版應用編程接口規(guī)范,用于支持GPPs、DSPs和FPGAs上波形組件間的高速數據互聯通信[7]。區(qū)別于MHAL,MOCB是進一步對內存映射類型通信機制接口的封裝和組件數據傳輸通信的規(guī)范,適用于高速、大數據量的數據通信需求。本文參照MOCB 1.1.5版規(guī)范,結合實際應用需求實現了E*MOCB硬件抽象層中間件。
E*MOCB定義了如下關鍵概念:
邏輯地址(LD):表示波形組件的邏輯ID,與平臺無關。波形組件間使用邏輯地址進行通信;
事件(Event):與波形組件相對應,當事件分發(fā)寄存器狀態(tài)改變時需要觸發(fā)事件發(fā)生;
子事件(SubEvent):對應于事件分發(fā)寄存器中的一個狀態(tài)位,通常用于區(qū)分不同源端觸發(fā)的相同事件信息。子事件與一個信號量關聯,子事件狀態(tài)的改變將觸發(fā)事件的發(fā)生;
事件分發(fā)寄存器(EventMux):每個事件對應一個事件分發(fā)寄存器,用于存儲子事件相關狀態(tài)信息,寄存器的長度由關聯的子事件個數決定;
占用狀態(tài)位(IU):表示數據的忙閑狀態(tài),用于實現數據收發(fā)端的內存互斥訪問和流控等操作;
連接(Connection):表示源端與目的LD之間的一條數據通路。對于每個處理單元上提供的LD,所有與其關聯的子事件都對應一條連接。
基于內存映射機制的波形組件數據交互,需要根據節(jié)點上波形組件的使用需求,完成內存塊大小及地址的劃分,避免出現數據重疊等問題。圖2在上述概念基礎上給出了接收端包含3個邏輯地址的內存劃分的示例,以及關聯的事件/事件分發(fā)寄存器映射配置信息。

圖2 E*MOCB波形組件內存資源分配
如圖3所示,波形側接口用于描述波形組件與E*MOCB之間的標準化通信接口規(guī)范,該部分接口在GPP和DSP、FPGA平臺上保持一致;驅動側接口用于描述E*MOCB與內存映射類型通信總線驅動之間的接口要求。為了適應不同內存映射機制總線差異,需要實現對應的驅動接口適配模塊。

圖3 E*MOCB波形與驅動側接口使用場景
根據應用需求,本文實現如下波形側C語言接口(FPGA部分接口與規(guī)范保持一致,這里不作說明),包括非阻塞讀、阻塞讀、非阻塞寫、阻塞寫、LD地址映射配置和事件配置等,具體接口定義及參數說明請參閱MOCB1.1.5版規(guī)范[7]:
mocbRead:實現本地組件的非阻塞數據讀取;
readWait:實現本地組件的阻塞式數據讀取,阻塞時間可以通過參數設置;
mocbWrite:實現對遠端數據非阻塞寫功能;
writeWait:實現對遠端數據的阻塞寫功能,阻塞時間可以通過參數設置;
configLDMap:配置LD與內存地址的映射關系;
registerEventMux:用于給波形組件使用的事件分配事件分發(fā)寄存器空間;
registerSemaphore:用于建立事件、子事件以及波形軟件管理的信號量之間的關聯關系;
unregisterSemaphore:用于注銷信號量。
通過E*MOCB屏蔽了異構平臺的硬件差異,波形的開發(fā)無需關注平臺相關信息,從而提高波形的可移植性和可復用性。
然而,由于各平臺提供的總線驅動接口可能存在差異,為了進一步提高E*MOCB的平臺可移植性,適配不同的內存映射機制高速互聯總線,這里進一步約束了GPPs和DSPs上驅動側接口形式:
(1)事件發(fā)送接口:
MOCBErrorCodes eventIdWrite (
unsigned short eventId,
struct MOCBPhyAddr addr);
(2)子事件發(fā)送接口:
MOCBErrorCodes subEventIdWrite (
unsigned short subEventId,
struct MOCBPhyAddr addr);
(3)數據寫接口:
MOCBErrorCodes dataWrite (
unsigned int dataLen,
unsigned char* data,
struct MOCBPhyAddr addr);
(4)數據讀接口
MOCBErrorCodes dataRead (
unsigned int dataLen,
unsigned char* data,
struct MOCBPhyAddr addr);
對于異構平臺,需要在不同的總線驅動上封裝上述接口,并利用E*MOCB提供的注冊接口完成不同類型總線收發(fā)接口的掛接,以避免由于驅動的不同對E*MOCB中間件帶來的修改。
內存映射通信機制下的波形建模需要考慮內存劃分、數據包緩存、流控和數據覆蓋等問題,借助E*MOCB中間件,可以實現對內存區(qū)域的合理管控,滿足高性能、靈活復雜的數據通信需求。基于E*MOCB的波形建模應遵循如下流程:
(1)采用自頂向下的方式進行波形資源需求分析,確定所需的計算資源類型和數量;
(2)采用逆向自底向上的原則進行每個計算單元上的波形組件建模,確定波形組件的劃分方法,每個波形組件需要提供服務的端口數量、接收數據包的大小、緩存數據包的數量等;
(3)確定波形組件間的交互關系,建立提供者端口與使用者端口之間的連接關系,完成波形的數據通信關系建模。
圖4給出了一個波形建模示例,由運行在計算節(jié)點A和B上的3個波形組件構成,其中計算節(jié)點A包括兩個波形組件,對應于LD1和LD2,LD1具有兩個提供者端口(即LD1對應的波形組件支持最多兩個使用者),每個提供者端口支持的接收數據包長度最大都為128 KB,最多可以緩存4包數據,LD2包括一個提供者端口;計算節(jié)點B包括一個波形組件,對應于LD3,具有一個提供者端口。計算節(jié)點A需要使用B節(jié)點LD3的提供者端口,而計算節(jié)點B需要使用A節(jié)點LD1的第一個提供者端口和LD2的提供者端口。節(jié)點間使用端口和提供端口調用關系通過連接進行表示。

圖4 基于E*MOCB的波形建模
波形描述是將波形對象抽象并描述成具有邏輯關系的數據表達方式,其目的是在不同數據使用者之間共享數字化的事務描述,常用的描述方法如XML等。考慮機載環(huán)境的存儲及解析復雜度問題,本文采用了更易于解析的Json格式進行波形模型描述。Json是一種更加簡潔高效的形式化描述工具,允許通過使用自定義格式、標識、交換和處理數據庫可以理解的數據,具有完善的解析和封裝支持[10]。
波形描述分為波形、組件和連接關系描述3部分。波形描述是頂層描述,涵蓋組件和連接等。波形組件描述項包括:事件、子事件、內存地址劃分和內存大小等。連接關系描述項包括:使用端節(jié)點ID、提供者組件LD和子事件ID等。
如下給出了圖4所示模型的部分描述示例:
/*波形描述示例*/
{ “wvID”: “DCE: WAVEDEMO”,
“wvName”: “WAVEDEMO”,
“wvDevice”: [ { “wvDeviceType”: “DSP”,
“wvDeviceID”: “DCE:A”,
“wvDeviceComponent”:
[/*組件描述*/]},
{ “wvDeviceType”: “PPC”,
“wvDeviceID”: “DCE:B”,
“wvDeviceComponent”:
[/*組件描述*/]}
],
“wvConnection”: [/*連接關系描述*/]
}
/*組件描述示例*/
{/*計算節(jié)點B上組件描述*/
“ComponentName”: “COMLD3”,
“MemSize”: 0x40000,
“MemAddr”: 0x80000000,
“ComponentLD”: LD3,
“EventID”: EventId3,
“RecvPktMaxLen”:0x10000,
“BufPktNum”:3,
“SubEventNum”: 1,
“SubEvent”:[{“SubEventId”:0,
“Connection”:0,
“Offset”:8}]
}
/*連接描述示例*/
{ ConnectionSum:3,
/*計算節(jié)點A到LD3提供者端口的連接描述*/
ConnectionInfo: [
{“ConnectionID”: 1,
“SrcDeviceID”: “DCE:A”,
“DstComponentLD”: LD3,
“DstSubEventId”: 0},
…]
}
波形建模時采用“接收方規(guī)劃,告知發(fā)送方結果”的模式,每個組件規(guī)劃自己的提供者端口實現,使用者通過連接關系獲取提供者端口信息。在進行數據發(fā)送時,系統(tǒng)控管軟件通過解析波形描述文件,同時結合組件實際部署位置信息,完成平臺相關部分的配置。
波形的建模與實現具有平臺無關性,實際應用中需要根據物理資源狀態(tài)信息完成波形部署運行[11]。
如圖5所示,在邏輯層面,波形組件之間的數據收發(fā)僅需要通過調用E*MOCB提供的標準通信接口和邏輯地址完成,無需關注具體的實際部署情況;在物理部署層面,系統(tǒng)控制管理軟件根據波形模型和組件部署位置信息計算并完成對組件所在節(jié)點E*MOCB的配置,建立邏輯地址到物理地址的映射關系,中間件通過調用具體的底層總線驅動將數據發(fā)送到對方,對方節(jié)點E*MOCB收到數據后根據LD等信息將數據路由給對應的波形組件,從而實現應用數據的通信。當波形組件部署位置發(fā)生變化時,只需要重新計算部署節(jié)點上的路由信息,并完成對E*MOCB的配置,就可實現波形的動態(tài)部署運行。

圖5 異構平臺的波形動態(tài)部署
如圖6所示,實驗部分使用由運行于PPC、DSP和FPGA這3類處理器上的6個波形組件構成的波形樣例進行測試。

圖6 測試波形樣例
該波形的功能和運行流程如下:FPGA上的組件1作為測試數據源,調用組件2和組件4提供的端口,間隔向這兩個組件發(fā)送長度為512 KB的數據,組件2(完成相鄰奇偶位置數據相加后對16取模)和組件4,組件3(完成相鄰奇偶位置數據相乘后對16取模)和組件5具有相同的處理功能,組件3和組件5將處理完的數據發(fā)送到組件6(具有兩個提供者端口),組件6對組件3和5發(fā)送的數據進行對比。測試中數據的發(fā)送采用阻塞模式,以匹配不同類型處理器的運算速度差異。波形組件的關鍵配置信息見表1。

表1 波形組件關鍵配置信息
實驗中,在某預研項目的綜合信號處理機(ISP)中進行了測試。ISP內集成了通用的數據和信號處理模塊,處理器包括P2020、TMS320C6678和Xilinx X7K325T等高性能處理單元,處理單元間通過高速交換芯片CPS-1848進行RapidIO總線互聯,實現4×3.125Gbps模式高速數據傳輸。
測試時,首先由ISP控制管理程序對測試波形描述進行解析,接下來按照波形描述、所需物理資源及RapidIO連接關系進行波形組件部署及節(jié)點的E*MOCB中間件信息配置,最后根據組件間的邏輯連接關系建立節(jié)點間的RapidIO鏈路層連接關系。
完成部署和配置后,啟動各節(jié)點的程序,并觸發(fā)COM1組件發(fā)送數據。通過測試結果可知,波形運行正常,組件6從組件4和5接收的處理結果數據相同。測試中,所有組件都采用了阻塞式流控發(fā)送模式,如果接收端處理速度慢,且緩沖已滿,則觸發(fā)發(fā)送端進行流控。測試的整體數據帶寬受RIO總線性能以及各節(jié)點處理性能的影響。因為使用了流控機制,因此不存在數據包丟失的情況。據測試,對于512 KB數據,中間件收發(fā)數據帶寬可達7 Gbps以上,為更好實現機載傳感器功能集成提供了保證。
測試用例中,在各組件中實現了數據的加、乘和對比等運算,通過更改組件功能就可快速構成其它的波形功能。通過本文提出的方法,在完成波形數據通信流程建模后,波形開發(fā)者只需要在組件內添加具體功能實現,無需關注通信細節(jié),可以顯著提升波形復用率和軟件開發(fā)效率。
本文針對機載高速內存映射異構平臺,分析了大規(guī)模機載波形建模的應用需求,針對異構平臺的建模環(huán)境,提出了基于E*MOCB硬件抽象層的內存映射總線底層封裝方法和標準化的波形組件以及波形建模、描述方法,實現了波形與平臺的解耦和規(guī)范化的設計與開發(fā),規(guī)范了基于高速內存映射機制通信總線的機載異構平臺波形建模,能夠推進模型驅動的軟件開發(fā)實踐,提升波形軟件的復用率。