在TWS雷達(dá)系統(tǒng)中,對(duì)跟蹤目標(biāo)的數(shù)據(jù)進(jìn)行處理常常要進(jìn)行卡爾曼濾波。卡爾曼濾波是一種最優(yōu)估計(jì)的遞推濾波算法,具有實(shí)時(shí)性好和精度高的特點(diǎn)。但是由于其算法中多為矩陣運(yùn)算,所以較其它算法如最小二乘法、α-β算法等的運(yùn)算量要大。為了減小運(yùn)算量以滿足系統(tǒng)反應(yīng)時(shí)間的要求,應(yīng)用中往往采用簡(jiǎn)化的卡爾曼濾波算法,但這樣又會(huì)帶來濾波精度的降低。在設(shè)計(jì)卡爾曼濾波數(shù)據(jù)處理模塊時(shí),為了解決該矛盾,采用了高速浮點(diǎn)型DSP TMS320C31。TMS320C31是美國(guó)TI公司的第三代DSP產(chǎn)品,其內(nèi)部采用程序和數(shù)據(jù)分開的哈佛結(jié)構(gòu)、流水線操作以及并發(fā)I/O和CPU操作。芯片內(nèi)含有專用硬件乘法器和桶形移位寄存器,具有32位的浮點(diǎn)精度,特別適合類似卡爾曼濾波這樣運(yùn)算量大、實(shí)時(shí)性和計(jì)算精度要求高的場(chǎng)合。 1 卡爾曼濾波算法 卡爾曼濾波器的狀態(tài)方程和量測(cè)方程如下: ρ(K), θ(K)、 U1(K)表示T時(shí)間內(nèi)徑向速度的變化量 U2(K)表示T時(shí)間內(nèi)方位角速度的變化量 V1(K)為距離量測(cè)噪聲 V2(K)為方位角量測(cè)噪聲 Z1(K)和Z2(K)分別為距離和角度的測(cè)量值 濾波器遞推方程為: 其中, G(K)為卡爾曼增益矩陣 Q(K)、R(K)分別為狀態(tài)噪聲協(xié)方差矩陣和量測(cè)噪聲協(xié)方差矩陣 2 基于TMS320C31的數(shù)據(jù)處理模塊的工作原理 2.1 多處理器工作模式下主機(jī)和TMS320C31數(shù)據(jù)通信的設(shè)計(jì) 數(shù)據(jù)處理模塊由雙口RAM IDT7134、TMS320C31(以下簡(jiǎn)稱C31)、EEROM 28F010和高速RAM CY7C199組成,通過ISA總線和主計(jì)算機(jī)連接起來,構(gòu)成主從式多處理器工作模式,如圖1所示。主從式處理器系統(tǒng)的設(shè)計(jì)關(guān)鍵在于處理器之間的數(shù)據(jù)交換,主從處理器間的數(shù)據(jù)交換主要有串行、并行、DMA及雙口RAM四種交換方式。本方案采用IDT公司的雙口RAM IDT7134實(shí)現(xiàn)主計(jì)算機(jī)和C31間的數(shù)據(jù)交換。IDT7134內(nèi)部含有4KB的存儲(chǔ)器資源,具有兩組地址、數(shù)據(jù)總線及讀寫控制線。主計(jì)算機(jī)和C31可同時(shí)對(duì)其進(jìn)行讀寫操作。在對(duì)其內(nèi)部同一存儲(chǔ)單元訪問時(shí),要考慮寫入和讀出數(shù)據(jù)的完整性。IDT7134沒有單獨(dú)的主從處理器訪問控制引腳,設(shè)計(jì)時(shí)需用軟件方式來保證主計(jì)算機(jī)和C31之間數(shù)據(jù)交換的正確性。本方案中采用了在IDT7134中設(shè)置輸入輸出semaphore的方案,即主計(jì)算機(jī)在將跟蹤雷達(dá)的測(cè)量數(shù)據(jù)寫入雙口RAM后,設(shè)置輸入semaphore,通知C31讀取測(cè)量數(shù)據(jù)。C31進(jìn)行卡爾曼濾波后,將濾波結(jié)果寫入雙口RAM,設(shè)置輸出semaphore,通知主計(jì)算機(jī)讀取。雙口RAM的數(shù)據(jù)寬度為8位,C31數(shù)據(jù)總線寬度為32位。雙口RAM的數(shù)據(jù)總線和C31低8位數(shù)據(jù)總線相接。為了提高數(shù)據(jù)處理的精度,雙口RAM中的跟蹤數(shù)據(jù)和C31的濾波結(jié)果都以字(32位)為單位進(jìn)行存儲(chǔ),C31作卡爾曼濾波時(shí),首先按字節(jié)讀取跟蹤數(shù)據(jù),然后進(jìn)行移位,拼接成32位整形數(shù),再將整形數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù),進(jìn)行濾波運(yùn)算。輸出時(shí),則將浮點(diǎn)型的結(jié)果轉(zhuǎn)為整形數(shù),按字節(jié)寫入雙口RAM中。雙口RAM空間分配如圖2所示。 2.2 C31的系統(tǒng)裝入和管理 C31有兩種工作模式,即微處理器和微計(jì)算機(jī)方式,本方案中,C31的MCBL/MP腳接高電平,C31工作于微計(jì)算機(jī)方式。C31具有程序引導(dǎo)功能,其內(nèi)部固化有引導(dǎo)程序(BOOT),可將來自其它處理器、低速EPROM或其它標(biāo)準(zhǔn)的存儲(chǔ)器件的程序和數(shù)據(jù)裝入到高速靜態(tài)RAM中以全速運(yùn)行。C31有兩種裝入方式可供用戶選擇:串行裝入方式和存儲(chǔ)器裝入方式。存儲(chǔ)器裝入方式根據(jù)地址的不同又分為三種:BOOT1、BOOT2、BOOT3。C31通過查詢四個(gè)中斷引腳確定裝入方式,引腳低電平有效。在本方案中,C31的INT腳接低電平。C31采取BOOT2的引導(dǎo)方式,將從0x400000處開始的程序存儲(chǔ)器中的卡爾曼濾波程序以8位字節(jié)方式引導(dǎo)到首地址為0x100000的高速RAM中。采用外部存儲(chǔ)器裝入時(shí),需在程序前加裝程序頭。程序頭包括下列信息: (1)外部存儲(chǔ)器的寬度(8/16/32位); (2)程序代碼塊的長(zhǎng)度; (3)裝入的目的起始地址; (4)存儲(chǔ)器訪問的定時(shí)控制。 程序頭內(nèi)容安排見表1。 本方案中程序頭配置如下:“08 00 00 00 F8 10 00 00 FF 20 00 00 00 00 10 00”,包含以下信息:①外部程序存儲(chǔ)器寬度為8位;②EPROM需要7個(gè)等待狀態(tài);③裝入的目的起始地址為0X100000;④程序代碼塊長(zhǎng)度為20FF。程序頭在存儲(chǔ)器的0X400000開始存放。 C31的EMU0~EMU3為4個(gè)仿真引腳,H3為時(shí)鐘引腳,按照MPSD仿真頭的定義將其和仿真器相連。C31的仿真器沒有采用傳統(tǒng)的電路仿真器,而是采用先進(jìn)的掃描仿真器,掃描仿真器通過DSP芯片上提供的仿真引腳和時(shí)鐘引腳實(shí)現(xiàn)仿真功能。用戶程序存儲(chǔ)在目標(biāo)系統(tǒng)的片內(nèi)或片外存儲(chǔ)器中,可實(shí)時(shí)運(yùn)行,而不會(huì)因仿真器引入額外的等待狀態(tài)。 3 數(shù)據(jù)處理模塊的軟件設(shè)計(jì)方法 數(shù)據(jù)處理模塊的軟件設(shè)計(jì)是在TI公司的DSP集成開發(fā)環(huán)境CCS下進(jìn)行的。它有C2000CC、C3000CC、CCS5000、CCS6000等4個(gè)不同版本。對(duì)于C31來講,可采用C3000CC版本的軟件。編程語言既可選擇C31的匯編語言也可使用C語言。匯編語言在低層的初始化和I/O控制編程方面效率高,但對(duì)于類似卡爾曼濾波這類復(fù)雜控制算法的編程卻不如C語言簡(jiǎn)捷,且匯編語言的可讀性和移植性差。因此這里采用C語言進(jìn)行程序設(shè)計(jì)。設(shè)計(jì)過程如下: (1)在CCS下用C語言編輯卡爾曼濾波源程序; (2)編寫鏈接命令文件,即擴(kuò)展名為·cmd文件; (3)建立擴(kuò)展名為·mak的工程文件,將卡爾曼濾波源程序、鏈接命令文件以及支持庫(kù)RTS30·LIB加入到所建立的工程中去; (4)對(duì)該工程進(jìn)行build,若無錯(cuò)誤,即生成擴(kuò)展名為·out的文件。 生成的·out文件可通過仿真器進(jìn)行調(diào)試。調(diào)試完成后,將·out文件保存為·out(coff)格式文件。在編程器中對(duì)該文件進(jìn)行修改,把程序頭加到卡爾曼濾波程序的前面,一起寫入EPROM。 圖3和圖4給出了數(shù)據(jù)處理模塊的流程圖,主計(jì)算機(jī)和C31可并行工作,通過雙口RAM中的semaphone進(jìn)行查詢和設(shè)置,完成它們之間的數(shù)據(jù)交換,進(jìn)而對(duì)跟蹤目標(biāo)實(shí)現(xiàn)數(shù)據(jù)處理。 本文介紹了卡爾曼濾波以及基于DSP的卡爾曼濾波器數(shù)據(jù)處理模塊的原理,該模塊具有運(yùn)算能力強(qiáng)和實(shí)時(shí)性好的特點(diǎn)。在對(duì)跟蹤目標(biāo)進(jìn)行卡爾曼濾波時(shí),其處理周期僅有幾十個(gè)μs,能很好地滿足TMS雷達(dá)系統(tǒng)中數(shù)據(jù)處理任務(wù)的需要。 |