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