現今的信號處理設備越來越復雜,不僅要求高速的處理能力,而且要求功能多樣化,僅僅追求速度已經不能滿足需求。尤其在復雜多變的環境中,要求信號處理機能夠完成多種處理功能,并能方便靈活地切換工作模式。因此有必要發展一種可重構和可擴展的通用信號處理系統,能將信號處理機多功能化、模塊化、標準化和通用化。將嵌入式操作系統與高速實時信號處理機結合,可以很好地實現這些要求。在雷達火控系統中,信號處理不僅需要很高的處理速度,而且要滿足控制顯示多方面的需求,如果沒有操作系統,實現起來不僅復雜而且不便于系統的模塊化和標準化。因此,采用實時操作系統VxWorks實現雷達系統的控制和顯示功能。VxWorks是一種類UNIX的高性能嵌入式實時操作系統,其中斷響應速度是微秒級的。它是專門為實時嵌入式系統開發的操作系統,提供了高效的實時任務調度、中斷管理、實時系統資源及實時任務通信。VxWorks可以為各種CPU硬件平臺提供統一的接口和一致的運行特征,這便于以后的系統移植和升級。基于以上優點,VxWorks廣泛應用于航空、航天、醫療、通信、雷達和聲納等領域。
1 系統硬件設計與實現
本系統硬件基于6U的VME總線設計,由多個子模塊組成,包括A/D采樣板、信號處理板、定時接口板、嵌入式計算機VG4。
A/D采樣板作為前端采集雷達的回波信號。它采用AD10242,采樣率為32MHz,包含2個A/D變換器,可以對兩路模擬信號作模數變換,輸出2個12位的數據。由于采樣的數據率遠低于DSP的處理能力,所以通過大容量的FIFO對A/D采樣的數據緩存,再以DMA的方式發送給DSP處理。為了滿足要求,信號處理系統以流水的方式處理數據。通過鏈路口和總線使多片DSP進行數據傳輸,最后,由VG4顯示目標檢測結果。
VG4是SBS公司的一款專門針對工業控制設計的嵌入式計算機。VG4的處理器采用Motorola PowerPC 755,主頻400MHz,擁有64MB SDRAM,16MB Flash用來固化操作系統和應用程序,而且提供了豐富的接口。VxWorks操作系統及其應用程序在VG4上運行。由于目標機VG4的資源有限,程序的開發由主機的交叉開發平臺Tornado完成,通過串口和以太網下載目標代碼并調試。程序開發完成后可以固化在目標機VG4的Flash上,這樣系統每次啟動就從Flash加載程序。操作系統應用程序的開發主要采用C語言。系統的數據流如圖1所示。
1.1 定時接口板的設計
定時接口板對于整個系統實時穩定的工作起了關鍵作用。它產生的定時脈沖信號控制著發射接收機、A/D采樣板、信號處理板和VG4。
定時接口板通過VME總線與VG4進行數據傳輸。VME總線是一種高性能的背板總線,由于采用高電流總線信號、嚴密的邏輯仲裁,所以具有極強的總線驅動能力及較長的信號線傳輸路徑,可支持21個VME板卡的直接相連,信號可靠性非常高。VME總線由于其信號的高穩定性、并行性和高可靠性,被廣泛應用于多DSP系統中。
接口板上的FPGA實現VME橋接功能,使雙口RAM連到VME總線和TS101的總線上,以進行數據傳輸。通過軟件操作VG4控制定時接口板啟動波駐起始脈沖串T0,在每個波駐起始脈沖產生的同時產生定時中斷脈沖,作為每幀定時信號組的時間基準。中斷信號通過VME總線中斷VG4,并作為其中斷請求信號。VG4響應定時中斷脈沖,向定時接口板傳送控制參數。定時接口板據此參數控制信處、AD、收發設備,并接收信處回傳的檢測結果,傳給VG4進行處理和顯示。數據是由外部中斷驅動的,所以能滿足實時性要求。定時接口板結構如圖2所示。
1.2 信號處理板的設計
雷達信號處理的實時性和連續性要求處理系統應具有較高的數據處理能力。本系統設計時采用多片DSP構成并行處理系統,以提高系統的數據處理能力。信號處理系統核心單元是美國Analog Devices Inc公司生產的ADSP-TS101,其峰值運算能力可達18億次/秒。它采用了改進的靜態超標量流水結構,可以構成各種不同的并行多處理器系統,較好地滿足了雷達信號處理的要求。
為了保證系統的數據吞吐能力,采用數據入口與出口分開的方法,系統中各DSP分別接收處理位于不同時間段的雷達回波信號。為了使各DSP協調工作,DSP間的通信必不可少。本系統采用共享總線的分布式結構,使得各DSP之間的通信有多種途徑。為了信號處理板的通用性和靈活性,設計由四片DSP組成的共享總線結構子板,各DSP間用鏈路口點對點環形相連,將各信號線通過PMC插槽引出,與母板通信。信號處理板結構如圖3所示。
2 嵌入式實時操作系統VxWorks
VxWorks是實時多任務操作系統,它能在確定的時間內執行其功能,并對外部異步事件作出響應。多任務環境允許一個實時應用劃分為多個獨立任務運行,各任務有各自的線程和系統資源。VxWorks實時操作系統由多個相對獨立的目標模塊組成,用戶可根據需要選擇適當模塊來裁剪及配置系統,從而有效地保證系統的安全性和可靠性。這樣,通過目標模塊之間的按需組合,可得到許多滿足功能需求的應用。
下面介紹VxWorks的技術特征。
?。?)任務
在VxWorks中,最小的程序運行單位稱為任務(Task)。建立任務時,要對其分配一段固定的代碼和數據空間。操作系統內核通過任務控制塊對它的執行、通信、資源等情況進行控制。任務具有就緒、阻塞、掛起和延遲等狀態。與大多數嵌入式系統一樣,在VxWorks中,所有任務存在于統一的線性空間中共享物理內存,每個任務沒有自己獨立的代碼段和堆,只有獨立的動態棧,任務中的地址即是真正的物理地址。由于不需要進行地址空間映射,所以任務切換時的上下文切換(Context Switch)時間大為減少,從而符合實時操作系統快速響應的原則。VxWorks的代碼段與堆共享減少了上下文切換時間,卻帶來了共享代碼的可重入性問題。如一個函數被兩個任務調用,當其中包含對全局、靜態變量等從堆中分配空間的數據進行訪問時,就有可能產生沖突,從而引發錯誤。這個問題在應用軟件開發時要加以注意,其解決方法是使用局部變量(從棧中分配空間)或使用互斥信號量對臨界代碼進行保護。
(2)任務調度
VxWorks有優先級搶占調度和時間片輪轉調度兩種任務調度策略。系統共有256 個優先級。優先級搶占調度指一個優先級較低的任務正在執行中,另一個優先級高的任務進入就緒狀態,則馬上搶占處理器資源,執行高優先級任務,直到高優先級任務釋放處理器(完成、掛起、阻塞等)才繼續執行被中斷的低優先級任務。優先級搶占調度可以保證實時系統的迅速響應特性,但也存在問題。當系統中存在幾個相同優先級的任務時,就會使單一任務獨占處理器直至完成。如果這個任務占用太多時間,則會影響其他同優先級任務的運行。當加入時間片輪轉調度時,系統給相同優先級的任務分配相同的一段時間片,以輪轉方式占用CPU。加入了基于優先級的時間片輪轉調度方式,使不同優先級的任務間以搶占方式調度,相同優先級的任務以時間片進行輪轉。
(3)存儲管理
在基本的內核中,任務直接操作線性物理內存,不存在虛擬存儲等復雜的存儲管理策略,這主要是針對實時性考慮的。對于存在MMU的處理器中,VxWorks也提供支持標準的虛擬存儲區和共享內存(多處理器間共享)組件。這樣任務是操作虛擬存儲,代碼更加安全。
?。?)任務間通信
任務間存在多種通信形式,內核支持各種UNIX的通用手段:信號量(Semaphore)、消息隊列(Message Queue)、管道(Pipe)、信號(Signal)、套接字(Socket)。信號量主要用于對臨界資源進行互斥保護及任務間或中斷與任務間的同步;消息隊列多用于消息驅動機制;管道是基于文件系統實現的任務間按先進先出方式傳送數據的通信方式;信號相當于軟中斷,用于顯示錯誤信息;套接字機制主要用于網絡通信。當任務間需要大量交換數據時,由于VxWorks直接操作物理內存,可以直接訪問全局存儲區,不需要特別的手段。這與Linux下的共享存儲段申請和Windows中的存儲映射文件方式不同。
?。?)中斷
在VxWorks中,所有中斷服務程序都不屬于任何一個任務,并且使用同一個棧進行數據存儲,中斷將不會引起上下文切換,以實現高效的中斷響應。中斷與各任務之間可以通過前面所述的各種手段通信,但是對中斷服務程序有一些限制。因為中斷不存在上下文切換,所以不能調用可能導致阻塞的資源。例如動態分配內存(malloc)、獲取信號量(semTake)和打印程序(printf)等。中斷資源寶貴,所以中斷服務程序應盡量短小,把運算量大和耗時的工作放在服務程序外處理。
?。?)文件系統
VxWorks支持網絡文件系統NFS及多種本地文件系統,如MS_DosFS、RawFS和RT-11FS,用戶可根據具體配置選擇。
?。?)網絡支持
Vxworks支持多種物理介質的TCP/IP協議族和幾乎所有常用的基于TCP/IP協議的應用層協議,如ARP、BOOTP、SLIP和FTP,甚至其啟動就是通過BOOTP或FTP方式取得系統映象文件。
以上簡單介紹了VxWorks的一些技術特征,充分反映了實時性與嵌入式的密切相關性。
3 系統軟件設計與實現
VG4軟件開發主要分為操作系統的配置生成和應用程序的開發兩部分。操作系統的生成主要是對BSP的配置和對VxWorks組件進行裁剪。在應用程序的開發中,為了滿足實時性要求,應對任務進行合理劃分,使程序達到多任務并行操作。
任務劃分需要遵循以下原則:
?。?)功能內聚性。對于功能聯系比較緊密的各工作可以用一個任務來運行。如果用多個任務進行相互之間的消息通信,將會影響系統效率。
?。?)時間緊迫性。對于實時性要求比較高的任務,以高優先級運行,以保證事件的實時響應。
?。?)周期執行原則。對于一個需要周期性執行的工作,應作為一個獨立的模塊完成。
3.1 操作系統的配置
在嵌入式操作系統上進行開發要滿足實時性和資源有限性的要求,因此與通用操作系統存在差異。在生成操作系統時剪裁不需要的組件,添加需要的組件,使系統盡量精簡。操作系統及其應用程序主要運行在內存中,操作系統太大會占用很多的內存空間。應用程序運行時要對每個任務分配合適的內存。為了滿足實時性,內存分配要盡可能快,因此不采用通用操作系統中復雜而完善的內存分配策略,而采用簡單、快速的內存分配方案。如果系統對于實時性和可靠性的要求極高,不能容忍一點延時或者一次分配失敗,最好采用靜態分配方案,也就是在程序編譯時所需要的內存都已經分配好了。例如,火星探測器上的嵌入式系統就必須采用靜態分配方案。
雷達系統對實時性要求很高,所以本系統盡量采用靜態分配方案。但是VG4內存有限,在一些子任務中也采用動態分配方案。這里VxWorks采用First Fit的內存動態分配方式,當系統需要動態分配內存時,可以保證在很短的時間內分配。但是采用這種方式容易產生大量的內存碎片,而VxWorks沒有清除碎片的功能,因此對系統動態分配內存要非常小心。
根據本系統的實際情況,接口板傳給VG4的信處檢測結果數據量基本不變,對于這批數據可以以另一種方式存儲。通過修改BSP的配置,從RAM中分配一塊用戶保留的存儲區域。這塊存儲區是用戶專用的,不會被系統覆蓋。用戶可以通過絕對地址對其進行讀寫。具體方法是設置RAM布局中User reserved區域,系統默認為0,設置這塊RAM使之滿足原始數據的大小。
3.2 應用程序的設計
應用程序運行在VxWorks操作系統上,其功能包括對系統初始化、根據輸入命令對各模塊進行控制及實時顯示信號處理結果。存在著如下幾類數據通信:VG4向定時接口板傳送控制參數,讀取定時接口板中存儲的信處檢測結果數據,響應外部中斷,顯示目標信息以及獲得外部輸入的控制信息??紤]到C語言的平臺無關性和代碼簡介高效性,應用程序采用C語言編寫。
系統劃分為6個任務:(1)系統監控:啟動和監控其他任務。(2)數據傳輸:響應VME中斷,與定時接口板進行數據通信。(3)數據處理:對信處檢測結果數據進行處理,扣除虛假目標并轉換格式以方便顯示。(4)終端顯示:顯示檢測目標結果和系統狀態信息到屏幕。(5)指令控制:響應控制開關的命令和獲取慣導數據。(6)錯誤處理:對出現錯誤的任務做出響應的處理,并在終端顯示。
中斷服務程序響應定時VME7號中斷,程序如下:
圖4顯示了各任務的優先級。從中可以看到中斷服務程序的優先級最高,因為實時系統要及時響應外部中斷信號。
指令控制任務首先獲取外部開關命令和慣導數據,以消息的形式發送給數據傳輸任務。當中斷來臨時,中斷服務程序馬上釋放同步信號量 syncSemId。數據傳輸任務一直等待這個信號量,當獲取到這個信號量時,立即把從指令控制任務收到的消息轉換成模式字寫到接口板的雙口RAM中,接著讀取信處檢測結果數據。數據處理子任務獲取同步信號量syncSemId2后對收到的信處檢測結果數據進行處理,這一任務最耗時。終端顯示任務以消息的形式接收上一任務的處理結果,并顯示處理結果及系統目前的運行狀態信息。信號量廣泛應用于同步和對臨界資源的保護,信號量的建立如下:
系統監控任務包括初始化各任務及實時監控各任務運行是否正常。當檢測到某任務運行不正常時,啟動錯誤處理任務。錯誤處理任務根據情況給予相應處理,并在終端顯示。當系統發生嚴重錯誤時,系統會自動重啟。
本文設計的信號處理機主要應用于直升機火控系統,現已經過驗收,各項指標符合要求。隨著設計的改進,系統功能將進一步完善,結構會更加通用模塊化,從而實現不改變整個硬件系統平臺,只對程序進行相應的修改,便可應用于其他領域的信號處理系統中。
評論
查看更多