文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190095
中文引用格式: 田換換,朱曉燕. 慣性導航系統(tǒng)中浮點計算加速單元設(shè)計[J].電子技術(shù)應(yīng)用,2019,45(8):79-82,86.
英文引用格式: Tian Huanhuan,Zhu Xiaoyan. Design of floating point calculation acceleration unit in inertial navigation system[J]. Application of Electronic Technique,2019,45(8):79-82,86.
0 引言
隨著微機電系統(tǒng)(MEMS)技術(shù)的發(fā)展,石英振梁加速度計作為一種新型MEMS慣性傳感器的全數(shù)字脈沖輸出,越來越廣泛應(yīng)用于小型飛機、機器人導航系統(tǒng)等[1-2]。為了使該器件能在慣導系統(tǒng)中發(fā)揮出其優(yōu)良性能,需要對其輸出頻率脈沖信號高精度測量的計數(shù)值進行浮點計算。
然而隨著超大規(guī)模集成電路設(shè)計技術(shù)的發(fā)展,在慣性導航系統(tǒng)中,大多數(shù)DSP處理器具有雙精度浮點運算能力,但在這其中存在大量的運算,會耗用CPU大量的計算能力,并且采用功能級流水增加了面積開銷和硬件復雜度[3]。通過軟件設(shè)計實現(xiàn),不僅占用大量的軟件資源,而且運行速度慢,這些設(shè)計方法不太適合一些高速數(shù)據(jù)采集和處理應(yīng)用場合[4]。
根據(jù)石英振梁加速度計的特性,在慣性導航系統(tǒng)中,為了優(yōu)化頻率轉(zhuǎn)換的計算速度,本文提出一種面向頻率轉(zhuǎn)換應(yīng)用的浮點計算加速單元設(shè)計,對加速度計測量的計數(shù)值進行浮點計算,以加快運算的換算速度,減輕了導航計算機中處理器的負擔,從而加快導航姿態(tài)解算的速度。采用FPGA對浮點計算加速單元進行了實驗驗證,與傳統(tǒng)的軟件計算方法進行了比較,加速度解算速度提高了2倍,可以很好地提升慣性導航系統(tǒng)的性能。
1 總體設(shè)計
1.1 石英振梁加速度計原理
石英振梁加速度計是一種基于石英振動梁的力-頻特性的新型高精度固態(tài)傳感器。其內(nèi)部交變電場使其推挽方式安裝的兩個石英梁在伸縮振動模式下進行振動。當加速度計受到外部加速時,敏感質(zhì)量塊產(chǎn)生一個慣性力以分別作用于這兩個石英梁上。其中一個石英梁受到壓縮作用,其諧振頻率會降低;而另一個受到拉伸作用,其諧振頻率將升高。最終這兩個石英梁的頻率差與外施加力成比例,即與加速度成比例,進而測量出加速度值[5]。
因此每個加速度計將輸出兩個頻率信號,這兩個頻率信號之差與加速度的關(guān)系如下:
其中L0≤0.9 g,為零偏值;L1為標度因數(shù),典型值為50 Hz/g;L2為二階非線性系數(shù),L2≤20 μg/g2;f1為力敏感石英梁F1的輸出,單位為Hz;f2為力敏感石英梁F2的輸出,單位為Hz;a為即時加速度計,單位為g。
1.2 系統(tǒng)架構(gòu)設(shè)計
傳統(tǒng)的慣性導航系統(tǒng)架構(gòu)設(shè)計如圖1所示,首先系統(tǒng)對三個石英振梁加速度計和三個陀螺儀進行數(shù)據(jù)采集。三個石英振梁加速度計的輸出信號和溫度信號均為頻率信號,每個加速度計輸出2路頻率信號。根據(jù)式(1)可知,要得到加速度,就要測出2個石英梁的頻率輸出值,則設(shè)計的頻率采樣系統(tǒng)就必須能對9路通道的頻率信號進行高精度測量與快速計算。系統(tǒng)對加速度計進行高精度測頻,使用的是等精度測頻法,其公式為:
其中fs為標準頻率,Ns為標準頻率信號脈沖個數(shù),fx為被測頻率,Nx為被測頻率信號脈沖個數(shù)。
根據(jù)式(2),經(jīng)過頻率轉(zhuǎn)換計算得到測頻值,然后由式(1)可知,頻率值轉(zhuǎn)換后進而得出加速度值。同時三個陀螺儀經(jīng)過脈沖測量后得到角速度,最后將得到的加速度值和陀螺儀測得的角速度值輸入到導航計算機進行后續(xù)的解算。
系統(tǒng)設(shè)計實現(xiàn)流程圖如圖2所示,加速度計測量的頻率值經(jīng)過轉(zhuǎn)換得到加速度,再通過姿態(tài)解算可得到姿態(tài)角θα,角速度通過積分算出角度θg,使用互補濾波算法進行數(shù)據(jù)融合,可得到最終的姿態(tài)角θ。
而在傳統(tǒng)的系統(tǒng)架構(gòu)設(shè)計中,頻率轉(zhuǎn)換計算會耗用大量的時間,為了加快頻率轉(zhuǎn)換的計算速度,本文設(shè)計了一種面向頻率轉(zhuǎn)換應(yīng)用的浮點計算加速單元。如圖3所示,在加速度計高精度頻率測量模塊后設(shè)計了FPU模塊,此模塊主要是在FPGA芯片里面完成的。設(shè)計時,選用了Xilinx公司的XC3S1400AN芯片。在下一節(jié)將對浮點計算加速單元的實現(xiàn)進行詳細介紹。
2 加速單元的實現(xiàn)
浮點計算是以9路頻率計數(shù)值的順序執(zhí)行,即按照X1、X2、X3、Y1、Y2、Y3、Z1、Z2和Z3的順序執(zhí)行,在相應(yīng)的計數(shù)器值鎖定完成后立即開始浮點計算。浮點計算過程如圖4所示,主要包括:乘法模塊、定點浮點轉(zhuǎn)換(規(guī)格化)、浮點除法、結(jié)果鎖存4個過程,最終計算結(jié)果為滿足IEEE-754標準[6]的規(guī)格化雙精度浮點數(shù)。
2.1 浮點計算的實現(xiàn)
2.1.1 乘法模塊
一個浮點計算過程首先是9路通道的計數(shù)值并行輸入到乘法模塊,然后按照X1,X2,X3,Y1,Y2,Y3,Z1,Z2和Z3的順序?qū)s與Nx,y,z進行乘法計算。其過程在對應(yīng)的計數(shù)值鎖存完成后,立即開始浮點計算。9路通道根據(jù)控制器來選擇其中一個通道的計數(shù)值進入乘法模塊做乘法計算。本文是根據(jù)工程所需,選用標準頻率fs為80 MHz,通過分步相加實現(xiàn)的乘法計算。
2.1.2 規(guī)格化
在控制器的控制下,對fs與Nx,y,z相乘得到的結(jié)果進行規(guī)格化處理,即先判斷計算的尾數(shù)結(jié)果是否符合規(guī)格化的格式,如果不符合,則將其進行移位處理,并對指數(shù)做相應(yīng)的加減操作。9路通道的計數(shù)值計算完成后都要進行規(guī)格化處理。
2.1.3 級間寄存器
對fs與Nx,y,z相乘得出的結(jié)果進行計算前導0數(shù)量,即找出最高1的位置。在控制器的控制下,鎖存到寄存器1和寄存器2中;使用最高1位置值加上指數(shù)偏移值,就是規(guī)格化后的指數(shù)。再根據(jù)最高1的位置,把其后的有效數(shù)字鎖存到浮點尾數(shù)從最高位開始的位置,尾數(shù)低位補0。對于擴展標志,只有0與非0兩種情況,如果計數(shù)值為全0,擴展標志為00,否則為01(表示正常數(shù))。
2.1.4 浮點除法
在控制器的控制下,將對級間寄存器中的數(shù)據(jù)進行浮點除法運算。根據(jù)浮點除法運算必需的步驟,設(shè)計浮點除法整體單元如圖5所示[7]。本設(shè)計由6個部分構(gòu)成,即預處理、尾數(shù)除、指數(shù)減、異常處理、規(guī)格化與舍入、溢出判斷與輸出,其中尾數(shù)除是通過SRT基4算法[8]來實現(xiàn)的。
浮點計算是在乘法計算模塊到浮點除法模塊的過程中使用了流水線結(jié)構(gòu),當?shù)谝煌ǖ劳瓿沙朔ㄓ嬎愫?,立即送到下一模塊進行相應(yīng)的數(shù)據(jù)處理,進而將其送到浮點除法模塊做最終計算。同時第二通道在處理其他數(shù)據(jù),以此順序執(zhí)行運算。
本文在浮點除法過程中采用非流水線結(jié)構(gòu),此結(jié)構(gòu)是以串行形式的迭代運算實現(xiàn)的,在每次迭代時都共用同樣的硬件,產(chǎn)生的部分余數(shù)和部分商均在寄存器中更新。此過程是在9路全部完成最終計算后,再繼續(xù)下一數(shù)據(jù)處理。
2.1.5 結(jié)果鎖存
在控制器的控制下,對浮點除法模塊計算的最終結(jié)果進行鎖存,然后浮點輸出。在以石英振梁加速度計為基礎(chǔ)的慣性導航系統(tǒng)中,此結(jié)果經(jīng)過轉(zhuǎn)換為加速度后進行姿態(tài)解算。
2.2 控制器的實現(xiàn)
本文利用硬件描述語言VHDL實現(xiàn)對浮點加速單元進行邏輯設(shè)計。在整個控制過程中,乘法模塊是由乘法變成加法計算的,使用7個加法器就可以實現(xiàn)乘法計算,3個周期即可計算出結(jié)果。
在乘法計算模塊到浮點除法模塊的過程中使用了兩級流水線結(jié)構(gòu)。圖6所示為乘法計算模塊到浮點除法模塊的工作圖,首先是在控制器的控制選擇通道下,第一個通道輸入計數(shù)器數(shù)據(jù)有效后進行乘法計算,等待乘法計算完成后,對其計算的結(jié)果進行規(guī)格化處理也就是定點浮點轉(zhuǎn)換。兩個周期后,待規(guī)格化數(shù)據(jù)輸出穩(wěn)定后,將其計算的結(jié)果鎖存到M1。一旦鎖存完成后,立即啟動浮點除法計算單元,進行浮點除法運算。等待浮點除法完成后,在控制器的控制下,選擇相應(yīng)通道的地址將其計算的結(jié)果鎖存到D1,同時系統(tǒng)在控制器的控制下,選擇第二個通道數(shù)據(jù)輸入到乘法計算模塊做乘法計算,并將規(guī)格化后的計算結(jié)果鎖存到M2,這時也將第三個通道的計數(shù)值輸入到乘法計算模塊。整個浮點計算過程以這種工作方式來完成9路通道數(shù)據(jù)的全部計算。
浮點除法模塊是用非流水線結(jié)構(gòu)來實現(xiàn)的,每次浮點除法計算需要26個周期,因此,采用圖4所示的部件級流水結(jié)構(gòu),完成9個頻率值的浮點計算共需要260個周期。
如果用流水線結(jié)構(gòu)實現(xiàn)浮點除法運算[8],則只需要35個周期就可以完成9次浮點除法運算,但會耗用大量的面積資源。
本文對這兩種實現(xiàn)方式都進行了實現(xiàn)與驗證,經(jīng)過綜合分析后得出,雖然全流水線結(jié)構(gòu)處理數(shù)據(jù)速度快,但面積開銷大。而部件級流水線結(jié)構(gòu),除法計算采用非流水結(jié)構(gòu),速度雖然慢,但也能滿足要求,面積開銷以及性能均得到了優(yōu)化折中。
3 結(jié)果與驗證
3.1 實驗驗證
本文在慣性導航系統(tǒng)中,對浮點計算加速單元進行程序編寫、綜合及外部端口的輸出狀態(tài)的波形觀測與驗證,并在XC3S1400AN芯片上對其進行了硬件測試。
通過驗證結(jié)果表明,設(shè)計的浮點計算輸出為64位的雙精度浮點數(shù),結(jié)果正確,并且完全符合要求。另外,采用全流水線結(jié)構(gòu)和部件流水結(jié)構(gòu)設(shè)計的浮點計算加速單元經(jīng)過綜合、布局布線后,占用資源情況如表1所示。通過兩種方法對比可以看出,全流水線結(jié)構(gòu)實現(xiàn)浮點計算,其面積開銷為24%,而部件流水結(jié)構(gòu)的浮點計算加速單元只需4%的面積開銷,也就是說全流水結(jié)構(gòu)實現(xiàn)的浮點計算所消耗的面積資源是部件流水設(shè)計的6倍。與全流水線結(jié)構(gòu)實現(xiàn)浮點計算相比,明顯可以看出本文設(shè)計的部件流水結(jié)構(gòu)的浮點計算加速單元極大地減少了面積開銷。
3.2 性能驗證
本文對性能進行了測試,系統(tǒng)使用的處理器為TMS320C6713(工作頻率為100 MHz)。首先系統(tǒng)對三個加速度計和三個陀螺儀進行數(shù)據(jù)采集,之后對加速度計做頻率轉(zhuǎn)換計算,再將頻率值轉(zhuǎn)換成加速度值,經(jīng)過姿態(tài)解算得到姿態(tài)角。同時三個陀螺儀再做軟件計算,經(jīng)過脈沖測量后得到角速度,角速度通過積分得到角度。然后使用互補濾波算法進行角度融合,整個過程運行時間為95.8 μs。而采用本文設(shè)計的全流水線結(jié)構(gòu)、部件流水結(jié)構(gòu)的浮點計算加速單元實現(xiàn)頻率轉(zhuǎn)換計算,整個解算過程運行時間均為27.8 μs。與軟件計算方法相比,運行時間減少了70.9%,速度提高了2倍。
4 結(jié)論
本文設(shè)計了一種面向頻率轉(zhuǎn)換應(yīng)用的浮點計算加速單元,在實際的導航計算機系統(tǒng)中進行了實現(xiàn)驗證,功能正確可靠。使用本文設(shè)計的浮點計算加速單元,從數(shù)據(jù)采樣到頻率轉(zhuǎn)換,再經(jīng)過頻率值轉(zhuǎn)換成加速度進行姿態(tài)解算;陀螺儀測得的角速度再進行積分,最后進行數(shù)據(jù)融合,速度提高了2倍。相比使用全流水線結(jié)構(gòu),本文設(shè)計的部件流水結(jié)構(gòu)的浮點計算加速單元的FPGA面積開銷僅為其1/5。
參考文獻
[1] ZHI W,CHU J,LI J,et al.A novel attitude determination system aided by polarization sensor[J].Sensors,2018(18):158.
[2] 楊挺,楊貴玉,李慶豐.石英振梁加速度計靜態(tài)輸入輸出特性[J].中國慣性技術(shù)學報,2014,22(3):386-390.
[3] 苑佳紅.Stratus HLS工具在高性能雙精度浮點乘法設(shè)計中的應(yīng)用流程[J].電子技術(shù)應(yīng)用,2018,44(8):20-30.
[4] 朱峰,魯征浩,朱青.形式化驗證在處理器浮點運算單元中的應(yīng)用[J].電子技術(shù)應(yīng)用,2017,43(2):29-32.
[5] 馮麗爽,王文璞,周震,等.石英振梁加速度計諧振器的結(jié)構(gòu)設(shè)計[J].中國慣性技術(shù)學報,2013,21(1):101-105.
[6] ZURAS D,COWLISHAW M,AIKEN A,et al.IEEE standard for floating-point arithmetic[S].IEEE Std 754-2008,2008:1-70.
[7] 陳勛.基于SRT4算法的浮點除法/方根算術(shù)單元設(shè)計[D].西安:西安電子科技大學,2016.
[8] A VHDL library of parametrisable floating-point and LNS operators for FPGA[DB/OL].(2006-07-31)[2019-01-22].http://www.ens-lyon.fr/LIP/Arenaire/Ware/FPLibrary.
作者信息:
田換換1,2,朱曉燕1
(1.首都師范大學 信息工程學院,北京100048;2.電子系統(tǒng)可靠性技術(shù)北京市重點實驗室,北京100048)