文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.181187
中文引用格式: 蔣曉東,于紀言. 基于SoC的新型通用彈載計算機系統(tǒng)設計[J].電子技術應用,2018,44(11):33-36.
英文引用格式: Jiang Xiaodong,Yu Jiyan. Design of a new type of general missile-borne computer based on SoC[J]. Application of Electronic Technique,2018,44(11):33-36.
0 引言
彈載計算機是導彈、制導武器等飛行控制系統(tǒng)的核心部件[1],其工作時不僅實時測量彈體定位和姿態(tài)信息,而且同時進行控制指令的輸出,此外彈載計算機還負責彈上各部件的協(xié)調(diào)與配合[2]。隨著現(xiàn)代制導武器的不斷發(fā)展,對于彈載計算機的性能要求也不斷提升,因此彈載計算機需要擁有較強的數(shù)據(jù)處理能力、邏輯運算能力,同時其應用環(huán)境的特殊性也導致彈載計算機必須滿足小型化和低功耗要求[3]。
鄭帥等[4]研究了基于DSP+FPGA的導航制導一體化計算機,設計了一種以DSP為核心算法處理芯片,F(xiàn)PGA為外圍輸入輸出接口的一體化計算機,充分利用FPGA并行加速底層數(shù)據(jù)處理和DSP核心算法浮點運算能力較強等優(yōu)勢,但其沒有從根本上對核心制導算法進行加速,同時多芯片組合的彈載計算機設計不利于小型化與低功耗設計。陳航[5]研究了基于系統(tǒng)級封裝(System in a Package,SiP)技術的彈載計算機,提出了采用SiP技術將DSP、FPGA和外圍電路封裝成為一塊系統(tǒng)級芯片以實現(xiàn)彈載計算機小型化的具體方法與思路,但是該方案無法滿足通用型彈載計算機設計要求,只適用于某些擁有特定需求的場合,且SiP技術實現(xiàn)成本較高。潘艇[6]研究了彈道微分方程組解算的FPGA實現(xiàn),提出了以多通道二級并行的方式實現(xiàn)算法硬件加速,但是進行硬件描述語言開發(fā)時,其開發(fā)復雜度較大,不適合對硬件知識僅稍具了解的軟件開發(fā)人員。同時VHDL或者Verilog HDL可移植性較低,同時移植時受到FPGA邏輯單元陣列數(shù)量的限制。
本文提出一種基于SoC FPGA的新型通用彈載計算機設計方案,利用FPGA部分進行通用接口設計與底層數(shù)據(jù)并行處理。同時針對串行彈道微分方程求解的速度、精度等問題,提出了一種基于Vivado HLS加速的彈道微分方程計算方法,通過利用Xilinx高層次綜合工具Vivado HLS,將C語言編寫的彈道微分方程按照HLS處理規(guī)范進行修改,進而將代碼轉(zhuǎn)換為硬件描述語言,快速生成IP核,從而完成對于串行彈道微分方程的硬件加速。其與片上硬件處理器系統(tǒng)(Hard Processor System,HPS)部分彈道解算程序邏輯相結合,配合彈載計算機外圍電路,完成對彈道方程求解的硬件加速。通過實驗對比驗證,結果表明,該方案提出的基于SoC FPGA通用彈載計算機硬件設計集成度顯著提高,彈載程序串行運算結合方法使得程序運算下降一個數(shù)量級,得到了較好的彈載程序加速效果,滿足制導武器的工作需求,具有一定應用前景。
1 基于SoC FPGA的新型彈載計算機硬件設計
彈載計算機主要功能分為導航與飛控兩部分,其中導航部分功能為接收來自慣性測量單元(Inertial Measurement Unit,IMU)、衛(wèi)星定位、磁強計等導航設備的信息,并進行彈道解算與預測;飛控部分則主要根據(jù)導航處理所得結果進行飛行控制工作,以完成最終的制導目的[7]。以某型簡易制導彈丸為例,本文提出的基于SoC FPGA的新型通用彈載計算機總體功能結構示意圖如圖1所示,包含IMU、衛(wèi)星定位模塊、地磁測量模塊等。其中SoC的FPGA部分完成通用接口與彈道微分方程求解器設計,HPS部分完成對衛(wèi)星定位信號、IMU信號、磁強信號等組合解算程序設計,同時將工作數(shù)據(jù)進行實時存儲,并提供測試接口。
在接口資源設計過程中,充分利用FPGA硬件并行的特點,進行通用接口設計,以避免串行處理器與外部設備交互數(shù)據(jù)時因中斷、采集與通信所導致的速度較慢、資源調(diào)用紊亂等問題。因此在彈載計算機工作過程中,設計FPGA通過SPI接口或者IIC接口實時接收來自于IMU的信號,通過RS232串行通信接口以一定頻率實時采樣衛(wèi)星定位信息,同時還通過AD采樣等方式采集來自地磁傳感器的數(shù)據(jù)等。FPGA部分還通過對霍爾傳感器AD采樣,實時監(jiān)控執(zhí)行機構運行狀態(tài),并通過PWM輸出接口將控制指令傳輸給執(zhí)行機構。
2 基于SoC FPGA串并行彈載程序設計
2.1 彈載程序整體設計
彈載程序計算的核心是實時測量導航數(shù)據(jù),利用外部導航信息,快速地進行彈道諸元的求解,并得到修正指令,輸出至舵機進行控制導航。如前文所述,本文新型彈載計算機方案采用FPGA部分進行外部數(shù)據(jù)接口通用設計,進行底層的采集與處理。待底層數(shù)據(jù)處理完畢后,HPS部分運行彈載程序邏輯,進行預定策略的執(zhí)行與運算。當系統(tǒng)進行彈道微分方程求解彈道諸元時,HPS將數(shù)據(jù)通過AXI總線傳輸至FPGA部分,利用其中的彈道微分方程硬件求解器進行求解計算。當計算完畢后,一方面FPGA部分將結果返回至HPS,HPS進行進一步處理與存儲記錄;另一方面,F(xiàn)PGA部分綜合計算計算結果與當前舵機狀態(tài),通過預定策略求得修正指令,實時發(fā)送至外部舵機執(zhí)行機構進行控制。SoC FPGA內(nèi)部彈載程序整體流程如圖2所示。
2.2 彈載程序的SoC硬件加速設計
本文設計中,底層數(shù)據(jù)采集與處理全部由FPGA完成,因此大大簡化了HPS部分的軟件執(zhí)行流程。利用FPGA硬件并行的特點,把大量的底層數(shù)據(jù)交互與處理工作交于其執(zhí)行,極大地提高了彈載計算機的數(shù)據(jù)采集通信效率,降低了HPS軟件部分軟件執(zhí)行負擔,可以有效提高數(shù)據(jù)處理的魯棒性,具有一定的軟件程序運算加速效果。但是彈載程序在執(zhí)行過程中主要耗時部分為求解彈道微分方程部分,因此僅僅利用FPGA設計通用接口,而降低HPS部分的底層數(shù)據(jù)處理量并不能有效降低彈道求解時間。同樣,針對串行彈道解算過程,降低迭代次數(shù)與步長、提高軟件代碼的優(yōu)化程度[8]均只能在一定程度上改善計算耗時過大的問題。
因此本文提出對于彈道微分方程求解利用Vivado HLS軟件進行硬件加速,實現(xiàn)彈道方程硬件求解器,同時配合HPS軟件部分實現(xiàn)彈載程序串并行處理結合的執(zhí)行方式,以完成對彈載計算機軟件整體的加速。
2.2.1 Zynq SoC FPGA與Vivado HLS[9-10]
Vivado HLS是Xilinx推出的一款高層次綜合工具,其使用C、C++或SystemC語言進行數(shù)字系統(tǒng)的描述,并將該系統(tǒng)自動轉(zhuǎn)換成寄存器轉(zhuǎn)換級(Regisiter Transfer Level,RTL)代碼,即生成硬件IP核,以完成對串行程序的并行加速。其設計模式如圖3所示。
利用Vivado HLS進行算法硬件并行加速的優(yōu)點有:
(1)使用高級代碼編程,有利于降低開發(fā)難度,提高開發(fā)效率。HLS進行代碼硬件轉(zhuǎn)換時,用戶只需要將C語言程序安裝規(guī)范進行修改便可生成硬件描述語言,有利于邏輯與處理過程復雜的彈道解算程序開發(fā)與修改維護效率的提高。
(2)移植性較高。因為HLS使用的是高級語言編程輸入,不涉及硬件描述,而且軟件提供了標準的總線接口,因此源碼的移植性較高。
(3)易于仿真。HLS可以對C語言直接進行仿真,并且直接進行仿真結果與CPU執(zhí)行比較,可以有效提升仿真效率。
2.2.2 彈道微分求解加速與SoC系統(tǒng)設計
針對彈道微分方程,其軟件串行執(zhí)行時的主要耗時在迭代計算過程當中,其中每一步迭代均包含多次乘除法、三角函數(shù)和開平方運算。同時在運算過程中,前后兩次的數(shù)據(jù)是相互關聯(lián)的,該種結構無法完全進行并行硬件算法的改寫。因此運用硬件描述語言執(zhí)行這一過程時,主要加速思想體現(xiàn)在各同優(yōu)先級運算之間。將每一次迭代運算過程中的同級運算構建同步流水線,進行同步運行,因此將串行運行的耗時大大降低。當系統(tǒng)彈道微分方程的同級運算越多、每一級內(nèi)部運算越多時,硬件同步加速效果越明顯。
彈道微分方程求解軟件設計即是將計算方法利用C語言編寫函數(shù);而對其進行硬件并行加速設計則是利用HLS將軟件代碼轉(zhuǎn)換為RTL電路。最終HLS將串行軟件生成IP核,應用到實際的工程綜合當中,完成SoC系統(tǒng)設計。由此利用HLS進行對彈道方程求解進行硬件加速的流程如圖4所示。本文設計的彈載計算機SoC系統(tǒng)如圖5所示。
3 實驗結果與分析
為了與運行串行彈道解算程序的常規(guī)彈載計算機進行計算能力對比,本文以某型制導彈藥為研究對象,設計了三組參數(shù)相同的彈道飛行仿真實驗,實驗中彈道方程求解迭代步長均設為0.5,同時在ARM+FPGA、DSP+FPGA與SoC FPGA三個平臺上分別進行彈載程序的編寫與實現(xiàn),以對比三者在彈道解算上單次計算的耗時情況。其中ARM+FPGA、DSP+FPGA對比實驗中,彈道解算程序均完全由ARM或DSP串行執(zhí)行,F(xiàn)PGA均只負責外圍數(shù)據(jù)的采集過程。
實驗結果如表1所示。由表分析可知,ARM+FPGA平臺在該次仿真實驗中耗時最長,其計算能力最弱,DSP+FPGA平臺的計算能力次之。而對于本文提出的基于SoC FPGA的新型彈載計算機平臺,其對于步長為0.5的彈道飛行仿真實驗的單次最長計算時間僅為3.9 ms,這主要是因為在最為耗時的彈道方程求解過程中利用FPGA的并行處理特點將串行計算轉(zhuǎn)換為硬件并行加速。同時雖然FPGA的主頻僅有100 MHz,但其運行是基于時鐘節(jié)拍的,而非哈佛結構的指令集,同時流水線處理的加入也在一定程度上對彈道解算起到了加速作用。
本次對比實驗中,彈道仿真計算的預置參數(shù)為:射點與目標相距約9 200 m,橫偏約600 m,彈藥總計飛行約51 s。根據(jù)基于SoC FPGA的新型通用彈載計算機得到的結果繪制彈道仿真曲線如圖6~圖8所示。對于實時性要求較高的武器制導領域,本文提出的基于SoC FPGA新型通用彈載計算機完全滿足計算性能要求。
4 結論
通過分析現(xiàn)有常規(guī)彈載計算機與串行彈道程序的特征,利用具有并行和多核處理架構的SoC FPGA和Vicado HLS高層次綜合工具,提出了新型通用彈載計算機硬件設計與串并行彈載程序設計,并且利用HLS的軟件開發(fā)特性大大縮短了彈載計算機系統(tǒng)的開發(fā)周期。通過實驗驗證,在保證可以有效完成功能指標與精確解算彈道諸元的前提下,該新型彈載計算機實現(xiàn)了對硬件結構的小型化與彈道解算方程的硬件并行加速,取得了較好的實驗效果,具有較高的工程實踐價值。
參考文獻
[1] 孫玉環(huán),李永紅,岳鳳英,等.基于LabVIEW的彈載計算機測試系統(tǒng)[J].電子技術應用,2015,41(6):55-58.
[2] 孔得鵬.基于多核DSP的導控一體化彈載計算機設計[D].北京:北京理工大學,2016.
[3] 高敏,任海龍,楊芳,等.基于DSP+FPGA的彈載計算機設計[J].計算機測量與控制,2014,22(12):3995-3997.
[4] 鄭帥,張唏,孫昌軍.基于DSP+FPGA的導航制導一體化計算機設計[J].計算機測量與控制,2016,24(12):100-102,121.
[5] 陳航.基于SiP技術彈載計算機的研究[J].機電產(chǎn)品開發(fā)與創(chuàng)新,2016,29(4):14-16.
[6] 潘艇,楊福彪,朱勇,等.基于龍格-庫塔的彈道微分方程解算的FPGA實現(xiàn)[J].計算機測量與控制,2015,23(12):4217-4220.
[7] 李翠娟,緱麗敏,賀瑩,等.基于雙DSP的某彈載計算機的設計與實現(xiàn)[J].電子技術,2016(6):46-47,45.
[8] 李洋.彈載計算機程序優(yōu)化研究[J].航空兵器,2014(5):37-40.
[9] 張俊濤,王園偉,龐多.一種硬件加速OpenCV的圖像處理方法研究[J].電子技術應用,2015,34(22):41-43.
[10] 彭習武,張濤.基于Vivado HLS的邊緣檢測硬件加速應用[J].電子技術應用,2017,43(5):70-73.
作者信息:
蔣曉東,于紀言
(南京理工大學 智能彈藥國防重點學科實驗室,江蘇 南京210094)