張嘉霖, 王世隆, 魏一鳴, 宋樹超, 許佳男, 于生寶
(吉林大學 儀器科學與電氣工程學院,長春 130061)
半航空無人機電磁探測方法是一種當前熱門的地球物理探測手段,采用地面發(fā)射電磁場,空中用無人機載傳感線圈進行接收[1-4],往往通過GPS模塊接收GPS衛(wèi)星發(fā)送的秒脈沖和串口數(shù)據(jù)獲得時間地點同步信息,實現(xiàn)發(fā)射系統(tǒng)和接收系統(tǒng)的同步。但是根據(jù)大量工程飛行實驗,發(fā)現(xiàn)GPS模塊本身受到天氣、環(huán)境等因素影響,同步信號極易短時丟失,導致實驗失敗。張良等[5-6]設計的電磁接收機采用GPS同步方式,但是并未提及GPS衛(wèi)星失鎖導致同步信號丟失的情況;吳壽勇[7]雖然提到了GPS同步信號丟失的問題,但是并未對具體解決方案進行論述。姬智艷等[8]提出了一種高精度GPS時鐘同步用于瞬變電磁儀,通過STM32內(nèi)部計數(shù)器以168 MHz頻率產(chǎn)生一個±90的窗口對GPS秒脈沖信號進行判斷,雖然能夠?qū)G失的GPS同步信號進行補充,但是判斷誤差較大可達535 ns,并不適用于半航空無人機電磁探測。本文既考慮GPS同步的部分有效性,又兼顧其可能產(chǎn)生的不穩(wěn)定性,為解決探測過程中同步信號短時丟失問題,提升探測效率,設計了一種基于FPGA硬件時間流與GPS的同步采集系統(tǒng)。該系統(tǒng)能夠?qū)崿F(xiàn)半航空無人機電磁探測數(shù)據(jù)同步采集,并通過相應的實驗予以驗證。
圖1 電磁探測同步采集系統(tǒng)的功能框圖
GPS能為全球用戶提供低成本、高精度的三維位置、速度和精確定時等導航信息,為使同步信號較好,通過配置模塊Ublox-M8N采用北斗加GPS的方式進行同步定位。根據(jù)需求只需要提取串口數(shù)據(jù)GNGGA即可獲得工程所需的時間以及定位等信息。此外,為了獲得高精度的時間同步信息,Ublox-M8N還提供精度約為60 ns,占空比10%的秒脈沖信號(官方手冊)。
為了盡快獲得串口GNGGA數(shù)據(jù),將Ublox-M8N設置串口端口波特率為115 200、1位起始位、8位數(shù)據(jù)位、1位停止位、無奇偶校驗位,EP3C16Q240C8N采用狀態(tài)機方式接收串口數(shù)據(jù)[12],將50 MHz時鐘以27分頻生成約為115 200的16倍頻時鐘信號,即每16個時鐘接收1位數(shù)據(jù),為保證0誤碼接收數(shù)據(jù),采用中間取樣方式,根據(jù)LVTTL標準的串口通信協(xié)議,首先通過延時消抖的方式對數(shù)據(jù)Tx端口(GPS模塊)進行下降沿檢測,此時將占用3個時鐘,當檢測到下降沿時,經(jīng)過5個時鐘開始接收起始位,之后每經(jīng)過16個時鐘接收1位數(shù)據(jù),當收到停止位時,狀態(tài)機跳轉(zhuǎn)至起始狀態(tài),完成一次循環(huán)。
依據(jù)GNGGA數(shù)據(jù)長度,F(xiàn)PGA內(nèi)部生成長度為100 B的寄存器,地址范圍為0 ~ 99用于緩存GPS串口數(shù)據(jù),以及1位標識位寄存器表示一幀接收完畢。采集系統(tǒng)上電后,首先將地址和標識位清0,然后每當串口模塊接收一個字節(jié)后,進行判斷,若為“$”則開始存儲數(shù)據(jù)并且地址+1,若不為“$”則繼續(xù)判斷,當檢測到“LR”時,存儲數(shù)據(jù)后將標志位置1并且地址指向0,繼續(xù)判斷GNGGA字頭標識符“$”,工作流程圖如圖2所示。
圖2 GNGGA串口信息緩存流程圖
信號采集電路通過ADC(模數(shù)轉(zhuǎn)換芯片)將接收線圈感應的模擬電壓信號轉(zhuǎn)化為數(shù)字電壓信號,為使ADC能夠正常工作,驅(qū)動電路原理示意圖如圖3所示。圖中,ADC為24位高精度模數(shù)轉(zhuǎn)換芯片ADS1271;OPA為軌對軌全差動運算放大器OPA1632;REF為電壓基準芯片REF1004I-2.5。OPA1632利用REF1004I-2.5所產(chǎn)生的+2.5 V基準電壓將共模電壓0 V,量程±10 V的差分信號轉(zhuǎn)化為共模電壓+2.5 V,量程±2.5 V的差分信號以滿足ADS1271的需求,ADC連接示意圖如圖4所示。
圖3 ADC驅(qū)動原理示意圖
圖4 ADC連接示意圖
FPGA內(nèi)部生成兩個FIFO[13],其中FIFO1用于緩存ADC數(shù)據(jù)d1和ADC時間流數(shù)據(jù)u1;FIFO2用于緩存GPS串口數(shù)據(jù)d2以及秒脈沖時間流數(shù)據(jù)u2和串口信息字頭“$”符號時間流數(shù)據(jù)u3。系統(tǒng)工作時,GPS串口數(shù)據(jù)不斷向寄存器R1刷新,每當ADC數(shù)據(jù)緩存至設定值時,將寄存器R1的數(shù)據(jù)傳輸至寄存器R2中,并與u2、u3依次緩存至FIFO2中。
每緩存一組數(shù)據(jù)后,即將FIFO1和FIFO2的數(shù)據(jù)依次通過SD卡控制模塊存儲至Micro SD卡中,數(shù)據(jù)格式“d1,u1,d2,u2,u3”,并且保證FPGA內(nèi)部FIFO處于半滿狀態(tài)以完成數(shù)據(jù)連續(xù)采集。
對于每一組數(shù)據(jù)“d1,u1,d2,u2,u3”,u1表示為ADC數(shù)據(jù)開始接收時刻;u2表示為數(shù)據(jù)采集時所對應GPS秒脈沖上升沿的時刻;u3表示為所接收GPS串口數(shù)據(jù)的時刻。將u3與其接收的GPS串口數(shù)據(jù)內(nèi)的UTC時間對齊,根據(jù)u1、u2、u3數(shù)值大小依次排列,通過比較GPS秒脈沖上升沿時刻的時間流數(shù)據(jù)即可獲得精度高達20 ns的時間同步信息。
根據(jù)實際需求,設置GPS串口數(shù)據(jù)輸出頻率為1 Hz,對于Ublox-M8N模塊,其秒脈沖信號與串口信息互不相干,即使衛(wèi)星失鎖,秒脈沖信號丟失,串口信息依然按照所設定的頻率輸出,只是內(nèi)部信息丟失,因此可以通過GPS串口信息的個數(shù)推算出所丟失秒脈沖信號的個數(shù),再根據(jù)線性插值下式獲得所丟失的秒脈沖所對應的時間流數(shù)據(jù)[14-15],
式中:l、m、n為秒脈沖信息序號,其中,m、n為有效信息,l為所求無效信息;y表示所對應的時刻值,單位為20 ns。取秒脈沖與串口數(shù)據(jù)同時有效并且距離秒脈沖信號丟失時兩端最近的時間信息作為有效信息,通過線性插值計算出中間丟失的秒脈沖時間信息。
通過系統(tǒng)采集信號發(fā)生器Agilent 33500B所輸出的頻率為1 kHz,峰峰值為20 V的正弦波進行ADC數(shù)據(jù)采集測試,測試完成后通過上位機根據(jù)采樣率將離散的電壓數(shù)據(jù)還原成時域波形,采集測試結果如圖5所示。
圖5 波形數(shù)據(jù)圖
由圖5可知,采集系統(tǒng)能夠?qū)崿F(xiàn)量程為±10 V信號的連續(xù)采集。與此同時獲得的硬件時間流數(shù)據(jù)以及插值數(shù)據(jù)如表1所示。
表1 時間流數(shù)據(jù)
表1中插值時間為假定序號1、10數(shù)據(jù)有效,再通過線性插值公式獲得序號2~9的數(shù)據(jù),與真實數(shù)據(jù)對比可知僅在最低位(20 ns)產(chǎn)生誤差,表明該方法可以精確獲得丟失的秒脈沖時間信息。
經(jīng)過多次測量,將秒脈沖時間通過下式換算至秒脈沖上升沿間隔長度數(shù)據(jù),
tn=un+1-un
式中:u為秒脈沖原始數(shù)據(jù);n為序號;t為秒脈沖上升沿間隔長度數(shù)據(jù)。統(tǒng)計每次實驗所得極差,如圖6所示。圖中,橫坐標為測試實驗序號,單次實驗1 min;縱坐標為每次測試極差值。經(jīng)計算得出平均值為122.8 ns、標準差為27.28 ns,表明本文設計的系統(tǒng)同步精度較高,約為122.8 ns,并且偏差較小,相比最大采樣率105 kHz的ADS1271,誤差可忽略不計,滿足實際需求。
圖6 多次實驗結果統(tǒng)計圖
本文設計的基于FPGA硬件時間流與GPS的同步采集模塊,充分利用了FPGA并行及實時性高等優(yōu)勢,能夠高精度地獲得GPS模塊所輸出的時間地點同步信息,并且當GPS衛(wèi)星失鎖時,通過內(nèi)部晶振產(chǎn)生的時間流計數(shù)器,利用線性插值將所丟失的秒脈沖數(shù)據(jù)予以補充。實驗表明,該系統(tǒng)同步性能較高,滿足實際需求,在半航空電磁探測中具有廣闊的應用前景。