本文結合軟件架構和構件化設計思路,研究并應用了基于華睿1號信號處理模塊的某雷達信號處理軟件設計方法。該方法不僅具有很好的可復用性、可移植性,而且使系統具有較高的處理速度,保證了系統的實時性。此外, 系統中所設計的管理層,具備了開機自檢、軟件監測、任務緩沖等機制,給系統提供了很好的穩定性能。
【關鍵詞】華睿1號平臺 信號處理 軟件架構 軟件構件
1 引言
近年來,對實時信號處理的要求越來越高。所用系統要求具有處理大量數據的能力, 這就要求系統硬件達到很高的運算速度,并且軟件處理程序也盡可能優化,以保證系統的實時性。本文將介紹一種基于華睿1號信號處理平臺下的軟件框架與構件設計方法。該方法具有很高的處理效率和穩定性,在不同平臺之間具備可移植性。
2 華睿1號硬件模塊
華睿1號CPU是我國自主研制的一款4核微處理器,在處理能力和能耗方面具有明顯優勢,運行多任務實時操作系統時十分穩定。華睿1號信號處理模塊由四片華睿1號四核DSP、兩片Xilinx XC5VLX330T、RapidIO交換芯片和網絡交換芯片組成。四片華睿1號為模塊的處理核心,如下圖所示,每片CPU有兩個DDR通道,每通道DDR容量1GB,每片CPU的DDR容量為2GB。兩片FPGA為對稱設計,FPGA1實現和CPU_C的高速數據通道以及模塊的控制管理,FPGA2實現CPU_B和CPU_D的高速數據通道,FPGA1和FPGA2分別配置為主并模式,各自外掛一片加載flash。FPGA1外接容量為256MB的flash,支持32位文件系統。
3 軟件架構設計
軟件架構是軟件開發早期設計階段的產物,是關于系統的抽象描述。軟件架構的正確設計和選擇,為以后的開發、集成、測試、維護各個階段的成功提供了保證。基于架構的軟件系統是指由組件裝配、組合而成的軟件系統,它主要由組件和連接件組成。軟件架構和組件技術的應用越發廣泛,源于它所帶來的產品的穩定性、可靠性、可復用性和可擴展性等優勢。在硬件平臺種類繁多,產品功能各不相同的雷達信號處理領域,研究設計一個相應的軟件架構和組件庫,是很有意義的。作為存放組件的容器,組件庫設計的好壞,直接影響到整個平臺的穩定性和效率。
3.1 軟件架構概念
軟件架構(Software Architecture,簡稱SA)是在1969 年的NATO 軟件工程會議上首次提出的,直到1995 年SA 才被確立為軟件工程一個研究方向。雖然好的架構不一定能保證可以獲得高可靠性的軟件產品,但建立在不良架構基礎上的軟件不可能獲得較高的可靠性。軟件架構就是系統的一個或多個結構,它包括軟件組件、這些組件的外部可見屬性以及組件之間的相互關系。軟件架構是由組件、連接件和配置組成;組件是架構中的功能單元;連接件是功能單元之間進行交互的通道;配置用來說明組件和連接件是如何結合在一起的,是對組件和連接件的約束;通過配置可以確定組件是否正確連接、接口是否匹配、連接件構成的通信是否正確等。組件(構件)、連接件和配置是軟件架構最基本的構造元素。
3.2 通用軟件框架功能
通用框架是產品軟件的骨架,實現軟硬件管理接口服務,包括硬件的配置和通信,軟件的任務和構件管理,CPU節點級動態重組管理,構件調試管理,狀態監測管理等,支持用戶開發、調試獨立于硬件的計算構件。
軟件框架分為2層,配置層、管理層,配置層同中間件交互,管理層同構件層交互。配置層實現與中間件的交互,主要功能有:任務配置、網絡配置、信號量配置、RIO初始化配置、中斷配置、存貯空間配置。管理層通過某種管理機制實現任務的管理,函數的管理,主要功能有部署控制、任務控制、任務緩沖、函數控制、軟件檢測、軟件調試等機制。
傳統框架將底層配置散落在上電程序和不同的任務函數中,無參數控制,不同產品應用,需要進行產品代碼的新增和修改,無法做到代碼的高度復用,增加重復編碼和測試工作。通用框架通過讀取配置文件(配置文件可視化界面生成)實現配置參數的獲取,最終完成對底層的配置,因此框架的底層配置做到了產品無關,不同應用產品只需要根據可視化的配置界面進行參數修改即可自動生成配置文件,達到不同產品的應用。
3.3 具體設計
配置層放置若干底層配置模塊,每個配置模塊負責對某個功能項配置,彼此之間互相獨立,串行執行。工作原理如圖2和圖3所示。
管理層放置掛起的若干任務和一系列的管理機制。任務間、管理機制間互相獨立,掛在兩條控制總線上,一條任務控制總線(由任務控制機制實現),一條構件控制總線(由構件控制機制實現),可實現任務、構件的自由重構。管理機制由各自的任務、構件組成,各管理機制間互相獨立。
4 軟件構件設計
4.1 軟件構件標準
面向構件的嵌入式軟件設計方法將軟件的整個開發看作一條生產線,不同的軟件模塊作為構件拼裝組成了可以運行的軟件,使得軟件復用的粒度更大。面向構件的嵌入式軟件設計方法的主要任務是如何獲取通用的構件,在軟件設計的過程中,很多模塊都是具有通用性的,將這些模塊進行更好的設計,從而在任何需要這些模塊的地方,直接將原有的模塊進行復用,能夠進一步提高嵌入式軟件的開發效率。
使用面向構件的嵌入式軟件設計方法,需要軟件設計人員具有良好的抽象思維,能夠將大規模的軟件不斷分解成已有的小規模的構件,從而更好地進行嵌入式的軟件設計??梢暬瘶嫾创a和圖形外殼,源碼封裝在圖形外殼中,封裝由工具實現,源碼由人工進行增量式開發。構件包含通用構件和專用構件,通用構件覆蓋各領域、各專業,為所有應用提供基礎的應用服務,專用構件面向特定產品定制、開發。
4.2 內部結構與接口
計算類構件源碼內部結構包括:接口轉換代碼與主代碼函數,接口轉換代碼為實現和通用框架對接的輔助代碼,主代碼函數用于實現計算主體,采用VSIPL國際標準開發。
計算類構件源碼接口統一定義為圖4所示接口。
4.3 基于華睿平臺的計算構件設計
華睿1號具備矢量處理單元,處理器每次操作可完成一組同類型的數據的處理,它對硬件資源的需求量較大,但處理的并行度顯著提高,處理能力大大增強。矢量信號處理通常采用SIMD結構,一組源數據同時進入不同的處理單元,以獲得較高的系統加速比。華睿1號的矢量處理單元由矢量發射隊列、矢量訪存部件、矢量運算部件和矢量寄存器堆等4個部分組成,支持定點和浮點操作。
為了提高處理性能,華睿1號可通過鎖Cache配合DMA傳輸實現數據的處理前預取。鎖Cache機制由總線對二級Cache模塊內部的4組鎖窗口寄存器進行動態配置實現,每組窗口的大小可調。被鎖區域中的二級Cache塊被鎖住后,其中的指令或數據就不會被替換出去。華睿1號內置了2個具有矩陣轉置功能的DMA模塊,可實現數據在內存和二級Cache之間的搬移。當二級Cache收到DMA寫請求時,如果被寫區域在二級Cache中命中且被鎖住,那么DMA將直接寫入二級Cache,實現將數據預取到二級Cache。
在實現算法的矢量計算前預先用DMA將待處理的數據搬入二級Cache,計算時CPU直接訪問二級Cache。這樣處理的運算速度相較于從DDR中直接取數據,不僅處理時間大大縮短,而且時長更穩定。
基本計算構件的流程圖如圖5所示。
表1顯示了在華睿1號信號處理模塊上,單核運行MTI構件對二級Cache訪問進行運算和直接對DDR內的數據訪問運算的處理時間對比。
5 結束語
本文結合軟件架構和構件化設計思路, 介紹了基于華睿1號信號處理模塊的某雷達信號處理軟件設計方法。該方法具有很好的可復用性、可移植性,對于不同的產品,僅需要維護構件庫和修改集成代碼,很好的降低了開發成本。系統實測表明該軟件開發方法具有較高的處理速度, 保證了系統的實時性。此外, 系統中所設計的管理層,具備了開機自檢、軟件監測、任務緩沖等機制,給系統提供了很好的穩定性能。
參考文獻
[1]Land R.A Brief Survey of Software Architecture[R].Malardalen Real-Time Research Center (MRTC) Report,2002.
[2]Kruchten P,Obbink H,Stafford J.The Past,Present,and future of software architecture[J].IEEE Software,2006,23(02):22-30.
[3]周欣,黃璜,孫家輔等.軟件體系結構質量評價概述[J].計算機科學,2003,30(01):49-52.
[4]Len Bass.軟件構架實踐[M].北京:清華大學出版社,2002:15-16.
[5]周媛.嵌入式軟件設計方法探析[C].網友世界,2014.
[6]周海斌,劉剛,李明.基于華睿1號的高性能數字脈壓設計和實現[J].現代雷達,2012(04):28-35.
作者簡介
施西野,男,江蘇省南京市人。碩士學位?,F從事南京電子技術研究所信號處理軟件設計、工程師。主要研究方向為雷達信號處理。
作者單位
中電集團南京電子技術研究所 江蘇省南京市 210000