宋 丹,任勇峰,姚 宗
(中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測試教育部重點(diǎn)實(shí)驗(yàn)室,太原030051)
隨著科學(xué)研究深度的日益提高,要求采集存儲(chǔ)裝置在能滿足各種信號(hào)采集調(diào)理的同時(shí),可實(shí)現(xiàn)低功耗、高可靠性、高集成度以及能適應(yīng)復(fù)雜多變的環(huán)境。
該數(shù)據(jù)采集系統(tǒng)主要由信號(hào)調(diào)理電路、A/D轉(zhuǎn)換器、FPGA控制器,F(xiàn)LASH存儲(chǔ)器、USB單片機(jī)、電源管理電路、時(shí)統(tǒng)信號(hào)接口電路等構(gòu)成。其中,F(xiàn)PGA作為內(nèi)部控制器,控制整個(gè)系統(tǒng)完成信號(hào)采集存儲(chǔ)、讀數(shù)、擦除等操作。
系統(tǒng)由外部啟動(dòng)觸點(diǎn)啟動(dòng)上電,F(xiàn)PGA配置完成后進(jìn)行系統(tǒng)狀態(tài)檢測,即USB硬件接口檢測。
狀態(tài)檢測結(jié)束后,若確認(rèn)USB電纜未與上位機(jī)連接,在FPGA的控制下,系統(tǒng)通過鋰電池負(fù)責(zé)給壓力傳感器和慣性組合傳感器供電,并對(duì)10路壓力信號(hào)和6路姿態(tài)信號(hào)分別進(jìn)行調(diào)理后送入一組16選1模擬開關(guān),選通輸出模擬信號(hào),并經(jīng)過跟隨、分壓、跟隨電路調(diào)理后,送入A/D轉(zhuǎn)換器轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)字量由FLASH進(jìn)行存儲(chǔ)。
狀態(tài)檢測結(jié)束后,若確認(rèn)USB電纜與上位機(jī)連接,此時(shí)可對(duì)系統(tǒng)進(jìn)行讀數(shù)/擦除操作。上位機(jī)發(fā)出讀數(shù)/擦除指令后,通過USB接口芯片處理相應(yīng)指令后,F(xiàn)PGA啟動(dòng)讀FLASH模塊并將數(shù)據(jù)送往上位機(jī)進(jìn)行存盤和處理或啟動(dòng)擦除FLASH模塊對(duì)FLASH進(jìn)行擦除操作。系統(tǒng)框圖如圖1所示。
圖1 采集系統(tǒng)框圖
系統(tǒng)選用的10路壓力傳感器要求采用1.5 mA恒流源激勵(lì),傳感器內(nèi)部采用惠斯通電橋結(jié)構(gòu),差分輸出,輸入輸出阻抗典型值為3.5 kΩ,最大值為4 kΩ。根據(jù)傳感器供電要求,本設(shè)計(jì)采用LM134構(gòu)成1.5 mA恒流源激勵(lì)給傳感器供電,考慮到傳感器最大輸出阻抗為4 kΩ,產(chǎn)生的共模電壓達(dá)6 V,根據(jù)LM134最小供電壓差2.5 V要求,此處采用9 V電源作為LM134的供電輸入[1]。
本設(shè)計(jì)采用單電源(+3 V~+12 V)供電的儀表放大器AD623,其可通過改變?cè)鲆婵烧{(diào)電阻實(shí)現(xiàn)增益編程,最高增益設(shè)置達(dá)到1 000倍。其中增益可調(diào)電阻計(jì)算公式為 Rg=100 kΩ/(G-1)[2]。
根據(jù)傳感器信號(hào)輸出范圍-10 mV~145 mV,要將其調(diào)理到0~5 V送給采集電路,AD623設(shè)計(jì)放大倍數(shù)為30.4倍,可得信號(hào)的輸出范圍-0.304 V~+4.408 V,再加上+0.5 V的參考電壓,則最終信號(hào)調(diào)理輸出范圍為+0.196 V~+4.908 V。壓力傳感器供電及調(diào)理電路如圖2所示。
圖2 壓力傳感器供電及信號(hào)調(diào)理電路
在6路姿態(tài)輸出信號(hào)中,3路加速度輸出信號(hào)范圍為0~5 V,采用電壓跟隨電路設(shè)計(jì),如圖3所示。跟隨電路作用:提高輸入阻抗,降低輸出阻抗,提高其驅(qū)動(dòng)負(fù)載的能力,使抗干擾能力大大提高。
三軸向角速度輸出共模電壓為2.5 V,差模電壓峰峰為3.3 V,該信號(hào)由AD623進(jìn)行放大調(diào)理,其中AD623為差分輸入,設(shè)計(jì)差分正端輸入角速度信號(hào),差分負(fù)端輸入2.5 V參考電壓,進(jìn)行1.42倍放大到0~5 V范圍,儀表放大電路如圖4所示。
圖3 電壓跟隨電路
圖4 姿態(tài)信號(hào)儀表放大電路
啟動(dòng)信號(hào)為無源觸點(diǎn),啟動(dòng)信號(hào)閉合后系統(tǒng)上電,并具有自保持功能。當(dāng)啟動(dòng)觸點(diǎn)閉合后,電池電源對(duì)電容C1~C3充電以建立電壓,起到上電延時(shí)的作用,有效地防止了誤啟動(dòng)。當(dāng)電壓達(dá)到電源芯片使能端有效閾值時(shí),電源芯片輸出工作電源系統(tǒng)上電,之后內(nèi)部控制系統(tǒng)產(chǎn)生有效使能信號(hào)ENAVDD完成供電自保持,如圖5所示。
針對(duì)系統(tǒng)浸入水中工作的情況,我們對(duì)系統(tǒng)進(jìn)行了防止水中誤啟動(dòng)的電路設(shè)計(jì),并進(jìn)行了水中工作測試試驗(yàn)。
測試水域阻抗為8 kΩ,若系統(tǒng)內(nèi)部的串行啟動(dòng)電阻太小,會(huì)導(dǎo)致啟動(dòng)線通過水介質(zhì)構(gòu)成通路,啟動(dòng)上電,且在記錄完畢后不能掉電。按冗余設(shè)計(jì)考慮,水域阻抗為3 kΩ,最終啟動(dòng)觸點(diǎn)接口電路如圖5所示。
圖5 啟動(dòng)觸點(diǎn)接口電路
此次設(shè)計(jì)選用的電源模塊MIC29302的閾值電壓為1.4 V,整個(gè)系統(tǒng)采用兩節(jié)鋰電池供電,正常工作電壓(電池供電輸入)在7 V~8.4 V之間,經(jīng)過二極管后電壓(BATVCC)保持在6.3 V~7.7 V之間,設(shè)計(jì)應(yīng)保證:(1)兩根啟動(dòng)信號(hào)線未浸入水中時(shí),啟動(dòng)觸點(diǎn)閉合后,在最低的電壓6.3 V仍可以正常使能啟動(dòng)。(2)兩根啟動(dòng)信號(hào)線浸入水中時(shí),系統(tǒng)在最高的電壓7.7 V仍不發(fā)生自行使能啟動(dòng)。經(jīng)計(jì)算可知,在第一種情況下,電源的使能電壓為1.44 V,高于電源模塊的閾值電壓,系統(tǒng)正常工作。在第2種情況下,水的阻抗按照3 kΩ進(jìn)行計(jì)算,電源的使能電壓為1.34 V,低于電源模塊的閾值電壓,防止了水中誤啟動(dòng)。
經(jīng)過實(shí)際測試,當(dāng)水的阻抗大于3 kΩ時(shí),系統(tǒng)啟動(dòng)線浸入水中后,不會(huì)自行啟動(dòng)上電。
系統(tǒng)設(shè)計(jì)時(shí)選用低功耗器件,自身功耗相對(duì)較小。同時(shí)設(shè)計(jì)保證:當(dāng)系統(tǒng)檢測到與上位機(jī)連接后,可進(jìn)行讀/擦除等操作,此時(shí)由USB接口對(duì)系統(tǒng)供電(USB總線可提供5 V電壓、500 mA電流,對(duì)于功耗較小的設(shè)備來說這是非常有效的[3-4])。工作流程為:內(nèi)部控制系統(tǒng)有效使能信號(hào)ENAVDD,通過電源管理模塊給系統(tǒng)掉電,此時(shí)恒壓源和恒流源不給傳感器供電且采集電路也未工作。整個(gè)系統(tǒng)采用USB接口供電,有效地降低了電池的功耗。如圖6所示。
圖6 USB接口給系統(tǒng)供電電路
時(shí)統(tǒng)信號(hào)是整個(gè)系統(tǒng)的時(shí)間基準(zhǔn),其到來時(shí)刻作為系統(tǒng)的時(shí)間零點(diǎn),因此有效接收時(shí)統(tǒng)信號(hào)對(duì)系統(tǒng)至關(guān)重要[5]。
FPGA端的初始狀態(tài)由上拉電阻R3保持高,外部時(shí)統(tǒng)觸點(diǎn)閉合后,驅(qū)動(dòng)光耦給FPGA輸出時(shí)統(tǒng)信號(hào),此時(shí)FPGA端為低,表明時(shí)統(tǒng)信號(hào)到來。
圖7 時(shí)統(tǒng)觸點(diǎn)接口電路
在實(shí)際使用過程中,系統(tǒng)往往受到復(fù)雜的電磁干擾,時(shí)統(tǒng)信號(hào)在閉合過程中伴隨著信號(hào)抖動(dòng),這就導(dǎo)致時(shí)統(tǒng)信號(hào)可能在低有效的情況中出現(xiàn)高電平的尖峰脈沖干擾,我們?cè)跁r(shí)統(tǒng)信號(hào)接收邏輯中采取了有效消抖方式,確保時(shí)統(tǒng)信號(hào)接收的及時(shí)可靠[6]。
常用的消抖方式為信號(hào)延時(shí)消抖,原理是對(duì)外部信號(hào)進(jìn)行高頻采樣,當(dāng)連續(xù)采到N個(gè)點(diǎn)發(fā)生跳變,消抖后的內(nèi)部信號(hào)隨之改變[7]。該種方式的缺陷是:若出現(xiàn)均等時(shí)間的干擾脈沖,且干擾信號(hào)周期小于采樣信號(hào)周期,那么消抖后的內(nèi)部信號(hào)始終不會(huì)發(fā)生跳變。如圖8所示。
圖8 延時(shí)消抖缺陷示意圖
時(shí)統(tǒng)信號(hào)屬于電平信號(hào),本設(shè)計(jì)選用抽樣判決法對(duì)時(shí)統(tǒng)信號(hào)進(jìn)行消抖。該消抖算法是基于概率統(tǒng)計(jì)方法的。系統(tǒng)每隔時(shí)間τ對(duì)時(shí)統(tǒng)信號(hào)進(jìn)行一次采集,在FPGA內(nèi)部調(diào)用15 bit的內(nèi)部寄存器,將第1次采集的信號(hào)放在寄存器的第1位,然后每采集一次,內(nèi)部寄存器移位一次,相當(dāng)于對(duì)時(shí)統(tǒng)信號(hào)進(jìn)行加窗判斷,并滾動(dòng)執(zhí)行。直到判斷出15 bit的寄存器中有10 bit的低有效,那么便認(rèn)為是有效的時(shí)統(tǒng)信號(hào)。如圖9所示。
圖9 抽樣判決消抖示意圖
設(shè)寄存器的位數(shù)為m,寄存器中低電平的個(gè)數(shù)設(shè)為n,且
該實(shí)例中:當(dāng)η≥66.7%,認(rèn)為輸入狀態(tài)發(fā)生了由高到低的變化,真正的時(shí)統(tǒng)信號(hào)到來。當(dāng)η<66.7%,認(rèn)為出現(xiàn)了干擾信號(hào)。為了使系統(tǒng)運(yùn)行可靠,可根據(jù)實(shí)際觸點(diǎn)的抖動(dòng)情況對(duì)寄存器的位數(shù)以及百分比例進(jìn)行調(diào)整,從來對(duì)干擾信號(hào)進(jìn)行有效的剔除。
階段時(shí)刻標(biāo)記S1~S7內(nèi)容如下:
S1 啟動(dòng)觸點(diǎn)閉合;
S2 采集裝置上電復(fù)位待機(jī);
S3 采集裝置通過USB接口與上位機(jī)連接,由外部USB電源供電,并進(jìn)入上電復(fù)位待機(jī)狀態(tài);
S4 判斷USB在線指令USB_ONLINE,若USB不在線USB_ONLINE=“1”,則FPGA下發(fā)供電自保持指令有效ENAVDD=“1”,系統(tǒng)由內(nèi)部電池供電工作,同時(shí)啟動(dòng)采集裝置進(jìn)入采編存儲(chǔ)狀態(tài)。在該狀態(tài)下,先從前向后依次判斷存儲(chǔ)器16個(gè)分區(qū)是否記滿,若有空區(qū)域,則將本次上電采編數(shù)據(jù)存入該空著的存儲(chǔ)分區(qū)中,并啟動(dòng)30s采編存儲(chǔ)計(jì)時(shí)器計(jì)時(shí);若判斷到16個(gè)存儲(chǔ)分區(qū)已記滿,則直接跳入S7,系統(tǒng)掉電。
若USB在線USB_ONLINE=“0”,則FPGA下發(fā)供電自保持指令無效ENAVDD=“0”,系統(tǒng)由上位機(jī)USB電源供電工作,采集裝置進(jìn)入暫停讀數(shù)的待機(jī)狀態(tài),此時(shí)可由上位機(jī)軟件控制進(jìn)行采集裝置分區(qū)讀數(shù)與擦除操作。
S5:接收到采集裝置時(shí)統(tǒng)信號(hào);
S6:采集裝置時(shí)統(tǒng)信號(hào)經(jīng)過30ms消抖判斷有效時(shí),采編幀計(jì)數(shù)清零;
S7:停止采集,F(xiàn)PGA下發(fā)供電自保持無效指令ENAVDD=“0”,系統(tǒng)掉電。
S8:上位機(jī)操作完畢,USB電源斷開后,采集裝置掉電。
圖10 工作時(shí)序設(shè)計(jì)
根據(jù)技術(shù)指標(biāo)要求以及上電時(shí)間、采樣率和幀格式要求,經(jīng)計(jì)算知:系統(tǒng)一次上電記錄數(shù)據(jù)量約為12 Mbytes,為保證冗余設(shè)計(jì),將系統(tǒng)分為16區(qū),每區(qū)均為16 Mbytes的容量設(shè)計(jì)。
系統(tǒng)上電后,每次都從第1區(qū)開始順序檢測是否有數(shù)據(jù),如果第1區(qū)沒有數(shù)據(jù),則把該次啟動(dòng)采集的數(shù)據(jù)寫入第1區(qū),系統(tǒng)每次上電工作30 s后自動(dòng)掉電完成此次記錄;若第1區(qū)有數(shù)據(jù),則依次檢測剩下各區(qū)的記錄情況,直到檢測到某區(qū)無數(shù)據(jù)才把該次啟動(dòng)采集的數(shù)據(jù)寫入該區(qū)。若16區(qū)都已記滿,再次啟動(dòng)采集后,系統(tǒng)上電后自動(dòng)掉電,不論怎樣啟動(dòng)采集也不會(huì)把數(shù)據(jù)覆蓋后再寫入,除非執(zhí)行擦除操作把存儲(chǔ)器中的數(shù)據(jù)清空[8]。
數(shù)據(jù)的分區(qū)存儲(chǔ)設(shè)計(jì),保證了系統(tǒng)在不擦除的情況下實(shí)現(xiàn)多次啟動(dòng)存儲(chǔ)操作,若發(fā)生誤啟動(dòng)狀況,確保數(shù)據(jù)的及時(shí)有效存儲(chǔ),提高了系統(tǒng)的冗余性和可靠性。
經(jīng)過多次試驗(yàn),系統(tǒng)能有效接收上位機(jī)命令并執(zhí)行相應(yīng)操作、能采集數(shù)據(jù)并進(jìn)行多次啟動(dòng)后分區(qū)存儲(chǔ)。在水中測試過程中未出現(xiàn)誤啟動(dòng)狀況,系統(tǒng)運(yùn)行穩(wěn)定可靠。該設(shè)計(jì)方案已在某試驗(yàn)中得到應(yīng)用。
[1]LM134.Data Sheet[EB/OL].http://www.national.com,2000,3.1-14.
[2]AD623.Data Sheet[EB/OL].http://www.analog.com,1997 ~2008,16.1-24.
[3]蕭世文.USB 2.0硬件設(shè)計(jì)[M].北京:清華大學(xué)出版社,2002:8-10.
[4]范延濱.微型計(jì)算機(jī)系統(tǒng)原理、接口與EDA設(shè)計(jì)技術(shù)[M].北京:北京郵電大學(xué)出版社,2006:389-392.
[5]李玉峰,韓曉紅,劉洋,等.基于FPGA的高速數(shù)據(jù)采集系統(tǒng)的實(shí)現(xiàn)與性能分析[J].電子器件,2012,35(6):709-712.
[6]姚宗.某型固態(tài)數(shù)據(jù)記錄器的研制[D].中北大學(xué),2010.
[7]常高嘉,馮全源.基于FPGA的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子器件,2012,35(5):615-618.
[8]文豐,趙艷利,甄國涌.基于FPGA的高速數(shù)據(jù)采集存儲(chǔ)系統(tǒng)設(shè)計(jì)[J].電子科技,2009,25(5):235-238.