周 航
(西安建筑科技大學(xué) 信息與控制工程學(xué)院,陜西 西安 710055)
FPGA在慣導(dǎo)脈沖輸出信號(hào)測(cè)量系統(tǒng)中的實(shí)現(xiàn)
周 航
(西安建筑科技大學(xué) 信息與控制工程學(xué)院,陜西 西安 710055)
針對(duì)慣導(dǎo)脈沖數(shù)據(jù)測(cè)量存在測(cè)試流程自動(dòng)化程度低、脈沖計(jì)數(shù)準(zhǔn)確性差等問(wèn)題,文中基于FPGA平臺(tái),采用有限狀態(tài)機(jī)技術(shù)實(shí)現(xiàn)了閾值濾波的功能,利用直接脈沖計(jì)數(shù)法和FIFO存儲(chǔ)等技術(shù),解決了脈沖計(jì)數(shù)以及測(cè)量系統(tǒng)內(nèi)部數(shù)據(jù)傳輸速率不一致的問(wèn)題。同時(shí)采用虛擬儀器技術(shù),通過(guò)LabVIEW平臺(tái)實(shí)現(xiàn)了數(shù)據(jù)自動(dòng)處理的功能。經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,該測(cè)量系統(tǒng)能夠?qū)崿F(xiàn)準(zhǔn)確脈沖計(jì)數(shù),將相對(duì)脈沖計(jì)數(shù)誤差控制在 以內(nèi),并且能夠?qū)?shù)據(jù)自動(dòng)采集處理,提高了測(cè)量系統(tǒng)的自動(dòng)化程度。
慣導(dǎo)脈沖;FPGA; LabVIEW ;準(zhǔn)確性
慣性導(dǎo)航系統(tǒng)具有不受外界干擾、不對(duì)外發(fā)射信號(hào)、能夠獨(dú)立自主的特點(diǎn),可以根據(jù)用戶的具體要求實(shí)現(xiàn)導(dǎo)航方式[1]。隨著慣性導(dǎo)航在軍事、商業(yè)等領(lǐng)域的不斷發(fā)展,其應(yīng)用范圍也在不斷的擴(kuò)展。慣性導(dǎo)航的應(yīng)用范圍從原來(lái)的火箭、導(dǎo)彈、船舶、艦艇等,現(xiàn)已擴(kuò)展到導(dǎo)航制導(dǎo)、航天探測(cè)、航天衛(wèi)星等方面[2-5]。慣導(dǎo)系統(tǒng)中的陀螺儀和加速度計(jì)決定了慣導(dǎo)的方位和速度兩個(gè)重要的導(dǎo)航參數(shù)[6-7]。加速度計(jì)和陀螺儀的輸出是電壓和電流,容易受到干擾,因此需要經(jīng)過(guò)V/F、I/F將電壓和電流信號(hào)轉(zhuǎn)換為脈沖信號(hào)再進(jìn)行測(cè)量[8]。
目前,國(guó)內(nèi)慣導(dǎo)脈沖測(cè)量系統(tǒng)存在以下不足:(1)測(cè)量過(guò)程靠手工操作記錄,自動(dòng)化程度不高,不能滿足當(dāng)前形勢(shì)自動(dòng)化測(cè)量的需求[9-10];(2)由于測(cè)量系統(tǒng)復(fù)雜、系統(tǒng)性設(shè)計(jì)和數(shù)據(jù)采集與處理準(zhǔn)確性低[11-12],容易造成較大的誤差,難以實(shí)現(xiàn)測(cè)量系統(tǒng)準(zhǔn)確度高的要求。慣導(dǎo)脈沖輸出的測(cè)量是影響慣性導(dǎo)航系統(tǒng)準(zhǔn)確定位的最主要因素之一,如果慣導(dǎo)脈沖輸出的測(cè)量不準(zhǔn)確,有可能對(duì)慣性導(dǎo)航系統(tǒng)造成嚴(yán)重后果,形成一定損失[13-15]。所以在慣性導(dǎo)航系統(tǒng)中,設(shè)計(jì)出一套能夠?qū)T導(dǎo)脈沖輸出進(jìn)行準(zhǔn)確測(cè)量,并且自動(dòng)化程度高的系統(tǒng)。
本測(cè)量系統(tǒng)主要包括兩大部分,分別為脈沖信號(hào)處理以及上位機(jī)。其中閾值濾波、脈沖計(jì)數(shù)以及FIFO存儲(chǔ)是在FPGA內(nèi)部實(shí)現(xiàn)。RS232是上位機(jī)與下位機(jī)通信交互的樞紐。慣導(dǎo)脈沖輸出的狀態(tài)信息數(shù)據(jù)首先經(jīng)過(guò)脈沖信號(hào)處理電路,然后在FPGA內(nèi)部對(duì)接受的脈沖數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,并通過(guò)RS232上傳到上位機(jī),在上位機(jī)中對(duì)脈沖數(shù)據(jù)進(jìn)行解幀、顯示與存儲(chǔ)。系統(tǒng)框架如圖1所示。
圖1 系統(tǒng)框架圖
2.1 脈沖計(jì)數(shù)模塊
脈沖計(jì)數(shù)模塊的設(shè)計(jì)流程如圖2所示。
圖2 脈沖計(jì)數(shù)模塊設(shè)計(jì)流程圖
對(duì)該脈沖計(jì)數(shù)模塊進(jìn)行仿真測(cè)試,編寫(xiě)好模塊,再對(duì)其進(jìn)行仿真。在仿真中,只在第1路模擬了脈沖的方波信號(hào),得到仿真結(jié)果波形如圖3所示。
圖3 脈沖計(jì)數(shù)仿真波形圖
2.2 閾值濾波模塊
基于有限狀態(tài)機(jī),本文在FPGA內(nèi)部提出了一種閾值濾波的設(shè)計(jì)方案。在每個(gè)通道設(shè)置一個(gè)濾波器,這樣每個(gè)通道都可以對(duì)干擾信號(hào)進(jìn)行濾除。有限狀態(tài)機(jī)可以穩(wěn)定控制系統(tǒng)的狀態(tài),測(cè)量精確,保證系統(tǒng)的準(zhǔn)確性,對(duì)高頻干擾信號(hào)能夠起到很好的濾除作用。閾值濾波器的狀態(tài)機(jī)由3個(gè)狀態(tài)組成。如圖3所示為閾值濾波狀態(tài)機(jī)圖。
圖4 閾值濾波有限狀態(tài)機(jī)
State0當(dāng)輸入信號(hào)為0時(shí),輸出信號(hào)也為0,State0中不改變輸入信號(hào)的狀態(tài)。當(dāng)系統(tǒng)上電復(fù)位時(shí),系統(tǒng)就進(jìn)入了State0。如果在State0中,系統(tǒng)的輸入信號(hào)突然發(fā)生跳變,從0跳到1,那么系統(tǒng)就進(jìn)入State1。
State1該狀態(tài)中有一個(gè)計(jì)數(shù)器,是20位的,系統(tǒng)時(shí)鐘為20 MHz,那么該計(jì)數(shù)器的計(jì)數(shù)周期為50 ns,也就是每隔50 ns加1。系統(tǒng)從State0中檢測(cè)到輸入由低電平跳變到高電平,計(jì)數(shù)器從零開(kāi)始計(jì)數(shù),計(jì)數(shù)的個(gè)數(shù)和計(jì)數(shù)的周期相乘,可以得到高電平狀態(tài)經(jīng)歷的時(shí)間,直到這個(gè)時(shí)間和濾波設(shè)置時(shí)間相等。此時(shí)系統(tǒng)再次對(duì)輸入信號(hào)的電平進(jìn)行檢測(cè)。如果這時(shí)候輸入為低電平,那么系統(tǒng)跳轉(zhuǎn)進(jìn)入State0;如果輸入為高電平,那么系統(tǒng)跳轉(zhuǎn)進(jìn)入State2。
State2當(dāng)狀態(tài)機(jī)的輸入信號(hào)是高電平時(shí),那么狀態(tài)機(jī)的輸出信號(hào)也為高電平。State2中不改變輸入信號(hào)的狀態(tài)。如果在State2中,輸入信號(hào)從高電平突變到低電平,那么系統(tǒng)進(jìn)入State1。輸入信號(hào)從高電平突變到低電平,計(jì)數(shù)器從零開(kāi)始計(jì)數(shù),直到低電平時(shí)間和濾波設(shè)置時(shí)間相等,則再次對(duì)輸入信號(hào)的電平進(jìn)行檢測(cè)。
在Quartus Ⅱ開(kāi)發(fā)環(huán)境中描述閾值濾波模塊的有限狀態(tài)機(jī),本文使用的是Veirlog HDL語(yǔ)言。然后對(duì)該模塊進(jìn)行RTL級(jí)仿真,仿真圖如圖5所示。
圖5 閾值濾波濾除干擾仿真圖
2.3 數(shù)據(jù)存儲(chǔ)模塊
該測(cè)量系統(tǒng)采用的是RS232通信作為上位機(jī)與下位機(jī)的數(shù)據(jù)傳輸樞紐,由于RS232通信方式的傳輸速率和FPGA內(nèi)部脈沖信號(hào)數(shù)據(jù)采集速率不一致,有可能導(dǎo)致脈沖信號(hào)數(shù)據(jù)的丟幀、重復(fù)、錯(cuò)位等問(wèn)題。這種情況會(huì)造成脈沖數(shù)據(jù)的準(zhǔn)確性、有效性及可靠性。在Quartus Ⅱ環(huán)境中,設(shè)計(jì)一個(gè)深度為16的FIFO存儲(chǔ),其FIFO配置如圖6所示。
圖6 FIFO配置
設(shè)計(jì)一個(gè)計(jì)數(shù)器,用來(lái)計(jì)算存儲(chǔ)FIFO中還沒(méi)有讀取的數(shù)據(jù)個(gè)數(shù),計(jì)算FIFO存儲(chǔ)中未讀取數(shù)據(jù)個(gè)數(shù)是通過(guò)求讀寫(xiě)指針之差來(lái)實(shí)現(xiàn)的。如果未讀取的數(shù)據(jù)個(gè)數(shù)為0,表示FIFO存儲(chǔ)中沒(méi)有數(shù)據(jù),F(xiàn)IFO已空。如果未讀取的數(shù)據(jù)個(gè)數(shù)為16,即FIFO存儲(chǔ)的深度值,表示FIFO存儲(chǔ)中數(shù)據(jù)已滿。根據(jù)上述的讀寫(xiě)操作方式可以得到FIFO存儲(chǔ)輸出的空狀態(tài)和滿狀態(tài)值,然后使用空狀態(tài)和滿狀態(tài)值分別控制上一級(jí)模塊和下一級(jí)模塊的輸入和輸出。
2.4 串口模塊
串口設(shè)計(jì)分為3個(gè)模塊實(shí)現(xiàn),分別為數(shù)據(jù)接收模塊、數(shù)據(jù)發(fā)送模塊以及選擇波特率模塊,數(shù)據(jù)發(fā)送模塊在數(shù)據(jù)接收模塊接收完一個(gè)完整的數(shù)據(jù)幀后啟動(dòng),然后將接收到的數(shù)據(jù)發(fā)送回給對(duì)方,其中的傳輸速率由選擇波特率模塊產(chǎn)生。其中,選擇波特率模塊的代碼如下:
module select_speed(clk,rst_n,start,send_sig);
input clk; ∥系統(tǒng)時(shí)鐘信號(hào),20 MHz
input rst_n; ∥復(fù)位信號(hào),低電平有效
input start; ∥波特率計(jì)數(shù)器啟動(dòng)信號(hào),高電平有效
output send_sig; ∥發(fā)送數(shù)據(jù)標(biāo)志位,高電平有效
reg[12:0] cnt; ∥計(jì)數(shù)器分頻
reg bps_sig; ∥波特率數(shù)據(jù)改變標(biāo)志位
reg[2:0] uart_chos; ∥ uart波特率選擇寄存器
always @ (posedge clk or negedge rst_n)
if(!rst_n) cnt <= 13'd0;
else if(cnt == 2604) cnt <= 13'd0;∥波特率計(jì)數(shù)溢出后清零.2604波特率為9600時(shí)的分頻計(jì)數(shù)值
else if(start) cnt <= cnt+1'b1; ∥波特率時(shí)鐘計(jì)數(shù)啟動(dòng)
else cnt <= 13'd0; ∥波特率計(jì)數(shù)停止
always @ (posedge clk or negedge rst_n)
if(!rst_n) clk_bps_r <= 1'b0;
else if(cnt == 1302) bps_sig <= 1'b1; ∥ bps_sig高電平作為發(fā)送數(shù)據(jù)的數(shù)據(jù)改變點(diǎn). 1302-波特率為9600時(shí)的分頻計(jì)數(shù)值的1/2,用于數(shù)據(jù)采樣
else bps_sig <= 1'b0;
assign send_sig = bps_sig;
endmodule
RS232通信模塊仿真波形如圖7所示。
圖7 RS232通信模塊仿真波形
本設(shè)計(jì)中的上位機(jī)軟件包括參數(shù)配置、數(shù)據(jù)解幀以及數(shù)據(jù)存儲(chǔ)的功能。如圖8所示為上位機(jī)軟件的框架圖。
圖8 上位機(jī)軟件框架圖
串口配置部分是上位機(jī)與下位機(jī)數(shù)據(jù)傳輸?shù)暮诵臉屑~,在LabVIEW中使用VISA設(shè)置串口通信,需要對(duì)VISA串口進(jìn)行配置,該模塊分為幾個(gè)步驟,依次為VISA配置串口、數(shù)據(jù)的寫(xiě)操作、數(shù)據(jù)的讀操作和關(guān)閉串口。其中,LabVIEW中有專用的VISA配置串口函數(shù),使用簡(jiǎn)單方便快捷。在VISA串口配置時(shí),調(diào)用LabVIEW中的VISA配置串口函數(shù),對(duì)VISA資源名稱、波特率、數(shù)據(jù)比特位、奇偶校驗(yàn)位以及停止位設(shè)定。然后調(diào)用VISA寫(xiě)操作,將寫(xiě)入緩沖區(qū)中的數(shù)據(jù)寫(xiě)入串口中,等待500 ms后調(diào)用串口字節(jié)數(shù)屬性節(jié)點(diǎn),從VISA讀操作中讀取指定字節(jié)數(shù)至讀取緩沖區(qū)中,最后執(zhí)行關(guān)閉VISA的操作。圖9是一個(gè)完整的串口通信模塊設(shè)計(jì)圖。
圖9 完整的串口通信模塊設(shè)計(jì)圖
測(cè)量開(kāi)始后,第一步要對(duì)串口進(jìn)行配置,設(shè)置波特率等參數(shù),然后對(duì)閾值濾波時(shí)間參數(shù)和數(shù)據(jù)存儲(chǔ)的自定義路徑進(jìn)行設(shè)置。第二步,點(diǎn)擊開(kāi)始按鈕,系統(tǒng)正常啟動(dòng),測(cè)量系統(tǒng)開(kāi)始采集處理接收數(shù)據(jù),并且將采集到的數(shù)據(jù)和波形顯示在前面板上。最后,測(cè)量系統(tǒng)接收完數(shù)據(jù)之后,點(diǎn)擊停止按鈕,將實(shí)驗(yàn)數(shù)據(jù)存儲(chǔ)于之前定義好的存儲(chǔ)路徑中。其中數(shù)據(jù)采集成功界面如圖10所示。
圖10 慣導(dǎo)脈沖數(shù)據(jù)采集成功界面
真實(shí)數(shù)據(jù)/kHz測(cè)量數(shù)據(jù)/Hz相對(duì)誤差結(jié)果10.000100000.050.000500000.0100.001000000.0200.002000021.0×10-5500.005000081.4×10-5800.008000121.6×10-51000.010000212.1×10-51200.012000363.1×10-51500.015000432.9×10-52000.020000653.3×10-5
如表1所示,脈沖信號(hào)的采集誤差<10-4。
本文基于有限狀態(tài)機(jī)、直接脈沖計(jì)數(shù)以及FIFO存儲(chǔ)等技術(shù),對(duì)慣導(dǎo)脈沖輸出測(cè)試系統(tǒng)進(jìn)行了設(shè)計(jì)與研究。該測(cè)試系統(tǒng)無(wú)需人工干預(yù),可自動(dòng)測(cè)試慣導(dǎo)脈沖數(shù)據(jù);基于有限狀態(tài)機(jī)技術(shù)的閾值濾波模塊可濾除干擾信號(hào);FIFO存儲(chǔ)改變了以往的數(shù)據(jù)傳輸模式,解決了傳輸速率不一致的問(wèn)題。經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,該慣導(dǎo)脈沖輸出測(cè)量設(shè)計(jì)方案的可行性得到了認(rèn)可,其準(zhǔn)確性高、自動(dòng)化程度高,達(dá)到了本文的設(shè)計(jì)目的。
[1] Kuritsky M M,Goldstein M S,Greenwood I A,et al.Inertial
navigation[J].Proceeding of IEEE,1983,71(10):1156-1176.
[2] Kayton M. Navigation ships to space[J].IEEE Transactions on Aero Space and Electronic System,1988,24(5):474-519.
[3] Strachan V F. Inertial measurement technology in the satellite navigation environment[J].Journal of Navigation,2000,53(2):247-260.
[4] Weston J L, Titterton D H. Modem inertial navigation technology and its application[J].Electronics & Communication Engineering Journal, 2000,12(2):49-64.
[5] 陳西斌,趙東發(fā).慣性導(dǎo)航技術(shù)發(fā)展與應(yīng)用[J].科技向?qū)?2011(17):21,77.
[6] 秦永元.慣性導(dǎo)航[M].北京:科學(xué)出版社,2006.
[7] 張炎華,王立瑞,戰(zhàn)興群.慣性導(dǎo)航技術(shù)的新進(jìn)展及發(fā)展趨勢(shì)[J].中國(guó)造船,2008,49(183):134-144.
[8] 田園.多通道脈沖信號(hào)高精度計(jì)數(shù)方法研究[D].西安:西安工業(yè)大學(xué),2012.
[9] 周雷.針對(duì)XX型號(hào)平臺(tái)慣導(dǎo)測(cè)試系統(tǒng)的研究與實(shí)現(xiàn)[D].南京:南京理工大學(xué),2013.
[10] 劉宗玉,陳明,王瑋,等.基于虛擬儀器的慣導(dǎo)測(cè)試與故障診斷系統(tǒng)的設(shè)計(jì)[J].測(cè)控技術(shù),2003,22(3):51-56.
[11] 趙亮亮,肖明清,王志紅,等.慣導(dǎo)飛控綜合測(cè)試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].控制技術(shù),2011,(19):575-578.
[12] 陳勇,吳曉男,戴紅德.慣導(dǎo)自動(dòng)測(cè)試系統(tǒng)的設(shè)計(jì)[J].儀表技術(shù),2013(5):39-41.
[13] 董揚(yáng).相控陣?yán)走_(dá)天線近場(chǎng)多任務(wù)測(cè)試系統(tǒng)設(shè)計(jì)[D].南京:南京理工大學(xué),2014.
[14] 袁保倫.四頻激光陀螺旋轉(zhuǎn)式慣導(dǎo)系統(tǒng)研究[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2007.
[15] MSINS/GPS組合導(dǎo)航系統(tǒng)及其數(shù)據(jù)融合技術(shù)研究[D].南京:東南大學(xué),2006.
The Realization and Research of Inertial Pulse Output Signal Measurement in the FPGA
ZHOU Hang
(School of Information and Control Engineering, Xi’an University of Architecture and Technology,Xi’an 710055,China)
Aiming at the problem of test procedure’s low degree of automation and pulse counting’s bad accuracy, this paper adopts the technology of finite state machine and realizes the function of threshold filter on FPGA platform, and uses direct pulse counting method and FIFO storage technology, solving the problem of pulse counting and inconformity of transmission rate inside measuring system. Adopting the technology of virtual instrument, the paper realizes the function of automatic data processing on the LabVIEW platform. Going through the experimental verification, the measuring system can make true that pulse counting, controlling the error of pulse counting within . And achieving automatic data processing, the design can improve the degree of automation of measuring system.
INS pulse; FPGA; LabVIEW ; accuracy
2016- 05- 07
周航(1990-), 男,碩士研究生。研究方向:智能控制理論研究與應(yīng)用。
10.16180/j.cnki.issn1007-7820.2017.04.004
TN79
A
1007-7820(2017)04-015-04