李良仁,汪臨偉,彭雪峰
(九江職業(yè)技術(shù)學(xué)院 電氣工程系,九江 332007)
導(dǎo)航計算機(jī)是導(dǎo)航系統(tǒng)的核心部件,應(yīng)具備較強(qiáng)的數(shù)據(jù)處理能力,以適應(yīng)復(fù)雜的數(shù)據(jù)融合算法,保證導(dǎo)航實時性和精度要求,并要求在體積、功耗性等方面與系統(tǒng)環(huán)境相適應(yīng);本文以捷聯(lián)導(dǎo)航系統(tǒng)為例,采用SOPC設(shè)計技術(shù),對導(dǎo)航計算機(jī)硬件所需的數(shù)據(jù)處理、接口通信和控制軟件進(jìn)行設(shè)計,通過測試,系統(tǒng)的體積和功耗大幅降低,并滿足捷聯(lián)導(dǎo)航系統(tǒng)對空間的苛刻要求,同時片內(nèi)設(shè)計可靠性提高;利用豐富的IP庫,在FPGA邏輯資源中可根據(jù)導(dǎo)航系統(tǒng)應(yīng)用場合對通信接口和信號采集功能的要求實現(xiàn)各種功能外設(shè);在SOPC上選用高性能處理器,并在FPGA邏輯資源中硬件實現(xiàn)部分算法,形成軟硬件協(xié)同的處理模式,可實現(xiàn)較好的實時性和較高的精度。
作為捷聯(lián)導(dǎo)航系統(tǒng)核心部件的導(dǎo)航計算機(jī)負(fù)責(zé)從敏感元件獲取導(dǎo)航原始數(shù)據(jù),并進(jìn)行捷聯(lián)導(dǎo)航算法處理,最后將解算得到的導(dǎo)航結(jié)果進(jìn)行輸出控制。捷聯(lián)導(dǎo)航計算機(jī)系統(tǒng)設(shè)計可由系統(tǒng)硬件平臺、軟件平臺以及導(dǎo)航軟件三個部分組成,具體設(shè)計方案如圖1所示。
嵌入式導(dǎo)航系統(tǒng)的硬件可劃分為四大部分,即慣性測量組件、數(shù)據(jù)采集電路、導(dǎo)航計算機(jī)和通訊接口部分。慣性測量組件包括光纖陀螺儀和加速度計兩部分,主要用來測量敏感角速率和比力信息。數(shù)據(jù)采集電路是慣性測量組件和導(dǎo)航計算機(jī)之間的聯(lián)系橋梁,為了能夠保證系統(tǒng)正常工作,數(shù)據(jù)采集電路必須正確實時地采集到慣性器件的輸出信號,并且要把這些數(shù)據(jù)以一定速率實時準(zhǔn)確地傳送給導(dǎo)航計算機(jī)。導(dǎo)航計算機(jī)是捷聯(lián)導(dǎo)航系統(tǒng)的核心,系統(tǒng)中“數(shù)學(xué)平臺”的建立、捷聯(lián)解算工作及整個系統(tǒng)的管理和控制工作都由它來完成,采用FPGA芯片可以滿足捷聯(lián)導(dǎo)航系統(tǒng)要求高速運算和數(shù)據(jù)動態(tài)范圍大的特點。根據(jù)以上分析,可以確定嵌入式導(dǎo)航計算機(jī)硬件系統(tǒng)框圖,如圖2所示。
圖1 SOPC導(dǎo)航系統(tǒng)的整體方案
圖2 嵌入式導(dǎo)航計算機(jī)硬件系統(tǒng)框圖
在嵌入式導(dǎo)航計算機(jī)系統(tǒng)中,信號的采集和處理,導(dǎo)航解算都是通過在FPGA中嵌入NiosⅡ 軟核處理器構(gòu)成SOPC系統(tǒng)來實現(xiàn)。石英撓性加速度計傳感器輸出經(jīng)過信號調(diào)理后送入A/D芯片轉(zhuǎn)換成數(shù)字信號后通過FIR數(shù)字濾波后送入SOPC,光纖陀螺輸出的脈沖信號經(jīng)過脈沖整形后送入FPGA內(nèi)用Verilog HDL 實現(xiàn)的硬件計數(shù)模塊實現(xiàn)計數(shù)。
系統(tǒng)對慣性元件輸出信號的采樣頻率直接影響了捷聯(lián)解算的速度和精度,本系統(tǒng)每1ms采集一次陀螺和加速度計的數(shù)據(jù),每10ms進(jìn)行一次導(dǎo)航解算?;谏鲜鲆蛩兀O(shè)計了快速高效的AD7656和FPGA的高精度加速度計接口電路方案,電路結(jié)構(gòu)圖如圖3所示。石英加速度計輸出微弱電流信號,經(jīng)過精密采樣電阻,轉(zhuǎn)換成電壓信號,以便于A/D轉(zhuǎn)換,通過二階低通濾波器濾掉高頻噪聲后,送入6通道并行轉(zhuǎn)換的AD7656中,由FPGA控制AD轉(zhuǎn)換,并讀取轉(zhuǎn)換結(jié)果,存儲于內(nèi)部緩沖區(qū)中,最終與陀螺儀的數(shù)據(jù)組合,進(jìn)行數(shù)據(jù)處理和導(dǎo)航解算。它實際上是3個單通道的組合,可以滿足不同精度,不同數(shù)字讀出速度的要求,且相互之間電路干擾較少。為了保證三個加速度計的同步采樣,采用同一器件的不同通道進(jìn)行轉(zhuǎn)換,以取得同樣的讀出速度。
圖3 加速度計數(shù)據(jù)采集電路框圖
本設(shè)計采用國內(nèi)某型全數(shù)字閉環(huán)保偏光纖陀螺,標(biāo)度因數(shù),分辨率,帶寬200Hz,工作電流0.7A,其輸出信號為脈沖信號,X、Y、Z各軸分別輸出正反兩路信號,即GXPIN、GXNIN、GYPIN、GYNIN、GZPIN、GZNIN,一定周期內(nèi)正反信號脈沖個數(shù)的差值與標(biāo)度因數(shù)相乘即為該軸向陀螺輸出的角速度值。光纖陀螺的數(shù)據(jù)采集電路如圖4所示。
圖4 光纖陀螺的數(shù)據(jù)采集電路結(jié)構(gòu)圖
光纖陀螺的脈沖信號經(jīng)過前端處理電路后進(jìn)入計數(shù)模塊,本設(shè)計在FPGA內(nèi)部用Verilog HDL語言編寫計數(shù)器模塊,實現(xiàn)在規(guī)定時間內(nèi)記錄每路信號的脈沖數(shù)。計數(shù)模塊內(nèi)部包括16位計數(shù)器,定時器,六路選擇開關(guān)。由于系統(tǒng)采樣頻率設(shè)為1000Hz,因此定時器的定時中斷設(shè)為1ms。該模塊能對六路脈沖信號同時計數(shù),通過Nios II軟核處理器的I/O口對其控制,確保對光纖陀螺計數(shù)的準(zhǔn)確性和實時性。光纖陀螺脈沖計數(shù)的原理框圖如圖5所示。
圖5 光纖陀螺脈沖計數(shù)原理框圖
通過用Verilog HDL語言分別編寫上述各單元的功能模塊,然后在上層文件中例化,編譯后生成的文件符號如圖6所示,引腳定義如下:
GXPIN、GXNIN、GYPIN、GYNIN、GZPIN、GZNIN:光纖陀螺輸入脈沖信號;
圖6 光纖陀螺信號接收計數(shù)器
aclr_n:計數(shù)器清零使能信號;
cnt_en:計數(shù)器計數(shù)使能信號;
clk:時鐘信號;
cnt_addr[2..0] :六路信號選擇輸出信號;
cnt_data[15..0] :數(shù)據(jù)輸出;
cnt_interrupt:定時中斷輸出信號;
導(dǎo)航計算機(jī)的實時性和可靠性要求很高,采用嵌入式實時操作系統(tǒng)設(shè)計導(dǎo)航計算機(jī)軟件。由于Nios II IDE已經(jīng)移植好了uC/OS-II,再加上uC/OSII小巧、源代碼公開、注解詳細(xì)、實時性強(qiáng)、可移植性好、多任務(wù)、基于優(yōu)先級的可剝奪型調(diào)度的特點,選擇它作為嵌入式導(dǎo)航計算機(jī)的軟件運行環(huán)境。光纖陀螺捷聯(lián)導(dǎo)航系統(tǒng)應(yīng)包含三個ISR(光纖陀螺數(shù)據(jù)采集ISR、加速度計數(shù)據(jù)采集ISR和串口發(fā)送ISR)和4個任務(wù):“初始化任務(wù)”、“數(shù)據(jù)采集任務(wù)”、“捷聯(lián)導(dǎo)航解算任務(wù)”、“串口發(fā)送任務(wù)”。光纖陀螺和加速度計采集的數(shù)據(jù)經(jīng)過濾波處理后分別用一個全局?jǐn)?shù)組來存儲,供導(dǎo)航解算任務(wù)使用,并配備了一個互斥信號量。導(dǎo)航解算任務(wù)生成的數(shù)據(jù)存儲在全局?jǐn)?shù)組變量中,配備互斥信號量,串口通信任務(wù)根據(jù)接收到的指令發(fā)送導(dǎo)航信息。系統(tǒng)總體任務(wù)關(guān)聯(lián)圖如圖7所示。
圖7 系統(tǒng)總體任務(wù)關(guān)聯(lián)圖
在本系統(tǒng)中的4個任務(wù)設(shè)計中,初始化任務(wù)創(chuàng)建其余的三個任務(wù),因此優(yōu)先級最高,設(shè)為8,陀螺和加速度計的采樣是關(guān)鍵任務(wù),優(yōu)先級設(shè)10,導(dǎo)航解算任務(wù)優(yōu)先級設(shè)為12,串口通信任務(wù)設(shè)為14。在本設(shè)計中,因為要用到兩個互斥型信號量,所以必須為這兩個互斥型信號量分配優(yōu)先級,這個優(yōu)先級要高于所有申請互斥信號量的任務(wù)優(yōu)先級,分別設(shè)為5,6。本系統(tǒng)中的4個任務(wù)的聲明如下:
void initial_task(void *pdata); //初始化創(chuàng)建任務(wù),優(yōu)先級8
void fog_task(void *pdata);//陀螺計數(shù)和加速度計采樣任務(wù),優(yōu)先級10
void calc_task(void *pdata); //導(dǎo)航解算任務(wù),優(yōu)先級12
void scom_task(void *pdata); //串口發(fā)送任務(wù),優(yōu)先級14
在以上任務(wù)中,initial_task()為一次性任務(wù),創(chuàng)建完其它任務(wù)后自行刪除,其他任務(wù)都是周期性任務(wù)。
通過對整個系統(tǒng)與三軸轉(zhuǎn)臺進(jìn)行軟硬件聯(lián)合測試,測試結(jié)果表明該系統(tǒng)在姿態(tài)、位置、速度誤差都控制在1%以內(nèi),具有很高的實用價值。使用SOPC方法在FPGA上設(shè)計嵌入式導(dǎo)航計算機(jī),其軟硬件協(xié)同的設(shè)計模式適合了捷聯(lián)導(dǎo)航系統(tǒng)對處理能力和接口能力的要求,具有很強(qiáng)的應(yīng)用價值和應(yīng)用前景。
[1] 陳哲編.捷聯(lián)慣導(dǎo)系統(tǒng)原理.北京:宇航出版社,1986.
[2] 龍達(dá)峰.基于SOPC技術(shù)的彈載組合導(dǎo)航系統(tǒng)的應(yīng)用研究[D].中北大學(xué),2008.
[3] 李蘭英,等.Nios II嵌入式軟核處理器SOPC設(shè)計原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006.