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