全 賀,王紅亮,林 宏,郭世友,蘇戈威
(1.中北大學(xué),省部共建動態(tài)測試技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,山西太原 030051;2.北京宇航系統(tǒng)工程研究所,北京 100076)
超聲波流量計(jì)不僅廣泛應(yīng)用于工農(nóng)業(yè)生產(chǎn)中,而且在航天事業(yè)發(fā)展中也發(fā)揮著十分重要的作用[1]。在超聲波流量測量系統(tǒng)中,數(shù)據(jù)存儲與數(shù)據(jù)采集處理具有舉足輕重的作用。傳統(tǒng)數(shù)據(jù)存儲裝置體積龐大,便攜性不足,在復(fù)雜的環(huán)境中存在干擾,應(yīng)用起來十分困難[2],很難將其集成在超聲流量測量儀中,因此,本文設(shè)計(jì)了基于FPGA的超聲波流量測量儀數(shù)據(jù)存儲系統(tǒng),對超聲流量測量儀的數(shù)據(jù)進(jìn)行動態(tài)存儲,采取多種方式保證數(shù)據(jù)記錄與傳輸?shù)目煽啃?、穩(wěn)定性與安全性。
超聲流量測量儀數(shù)據(jù)存儲系統(tǒng)主要由數(shù)據(jù)決策模塊與存儲單元構(gòu)成。數(shù)據(jù)決策模塊通過外部輸入設(shè)備接口實(shí)時獲取當(dāng)前流速、體積流量、質(zhì)量流量、管壁厚度等數(shù)據(jù);與數(shù)據(jù)讀取設(shè)備通過RS422總線進(jìn)行命令控制、數(shù)據(jù)下載等傳輸,與存儲單元通過SDIO總線進(jìn)行命令交互數(shù)據(jù)傳輸。
利用超聲發(fā)射起始信號控制高速A/D轉(zhuǎn)換器對回波數(shù)據(jù)進(jìn)行采集,FPGA將A/D轉(zhuǎn)換后的數(shù)據(jù)與流速、流量等信息進(jìn)行數(shù)據(jù)融合后,通過高速SDIO總線接口,數(shù)據(jù)決策模塊與存儲單元進(jìn)行命令與數(shù)據(jù)的傳輸。通過RS422接口數(shù)據(jù)決策模塊實(shí)現(xiàn)與數(shù)據(jù)讀取設(shè)備的數(shù)據(jù)傳輸和命令控制,數(shù)據(jù)傳輸接口采用雙冗余設(shè)計(jì),有效保證數(shù)據(jù)傳輸?shù)目煽啃耘c穩(wěn)定性,命令控制主要是對SD卡操作(擦除、讀取、加密),系統(tǒng)整體方案如圖1所示。
圖1 系統(tǒng)整體方案
高速模數(shù)轉(zhuǎn)換芯片選用AD9226芯片,AD9226是一款12 bit高速模數(shù)轉(zhuǎn)換器,最高采樣率65 Mbps,其優(yōu)勢在于具有片內(nèi)高性能采樣保持放大器和參考電壓源,具有信號溢出指示位,并可直接以二進(jìn)制形式輸出數(shù)據(jù)[3]。超聲流量測量儀最大測量速率為1000 Hz,每次測量回波信號為8個正弦信號,信號頻率依據(jù)測量管徑不同分為1、2、5 MHz,當(dāng)采用1 MHz探頭接收回波信號,需進(jìn)行10 μs采集,65 MHz×10 μs×12 bit=7 800 bit,65 MHz可以推算出回波信號采樣速率約1 MB/s。高速模數(shù)轉(zhuǎn)換器采集電路如圖2所示。
圖2 采集電路原理圖
SD卡支持安全數(shù)據(jù)總線(SD)模式和串行外設(shè)(SPI)總線模式[4]。SPI模式只需要4個IO接口,但傳輸速率較低,適用于對數(shù)據(jù)傳輸速率要求不高的場合。SDIO模式分為一線SDIO模式和四線SDIO模式[5],SDIO總線信號包括CLK時鐘線、CMD命令線和DATA[0:3]四根數(shù)據(jù)線[6]。為滿足超聲流量測量儀數(shù)據(jù)存儲速率需求,本文基于四線SDIO模式進(jìn)行數(shù)據(jù)存儲系統(tǒng)設(shè)計(jì)。SD卡采用micro SD 32 GB存儲卡,能夠滿足超聲流量測量儀數(shù)據(jù)存儲容量需求。SD卡作為靈活可移動存儲設(shè)備,電路中需設(shè)計(jì)安裝卡槽以及外圍電路。SD存儲電路如圖3所示。
圖3 SD存儲電路
四路RS422數(shù)據(jù)傳輸接口中,1路用于接收體積流量、質(zhì)量流量、累計(jì)流量、流速等信息,1路用于接收數(shù)據(jù)讀取設(shè)備發(fā)送的控制命令,2路采用雙冗余設(shè)計(jì)用來進(jìn)行數(shù)據(jù)下載。為了保證數(shù)據(jù)存儲系統(tǒng)數(shù)據(jù)傳輸?shù)目煽啃?選用AM26LV31E和AM26LV32E作為RS422接口芯片[7],具備四路三態(tài)輸出BICOMS差分線路驅(qū)動器,具有超低功耗、低成本、傳播延時低等優(yōu)點(diǎn),最高開關(guān)切換速率可達(dá)32 MHz。高速數(shù)據(jù)傳輸電路如圖4所示。
圖4 高速數(shù)據(jù)傳輸電路
超聲流量測量儀數(shù)據(jù)存儲軟件系統(tǒng)可分為5部分,分別為SD延時、時鐘生成、SDIO總線控制、串口通訊和AD采集。SD延時為SD卡初始化提供74個SDCLK同步穩(wěn)定時鐘[8];時鐘生成用于數(shù)據(jù)采集、數(shù)據(jù)融合、數(shù)據(jù)存儲和數(shù)據(jù)傳輸;SDIO總線控制依據(jù)操作模式分為4個單元,分別是指令控制單元、命令發(fā)送與響應(yīng)單元、數(shù)據(jù)接收發(fā)送單元和時鐘切換單元;串口通訊同數(shù)據(jù)讀取設(shè)備通訊和與流量測量系統(tǒng)進(jìn)行數(shù)據(jù)交互。系統(tǒng)軟件框圖如圖5所示。
圖5 系統(tǒng)軟件框圖
系統(tǒng)上電后,SD卡處于卡識別模式,主控制器對SD卡進(jìn)行檢測,檢測流程如圖6所示。
圖6 SD卡上電檢測流程
在數(shù)據(jù)傳輸模式下,SD卡處于待機(jī)狀態(tài),主控制器向SD卡發(fā)送CMD7命令后,SD卡進(jìn)入數(shù)據(jù)傳輸狀態(tài),等待主控制器命令,當(dāng)命令是CMD24或CMD25時,SD卡進(jìn)入接收數(shù)據(jù)狀態(tài),當(dāng)數(shù)據(jù)讀取完成或接收命令CMD12時,SD卡進(jìn)入編程狀態(tài);當(dāng)命令是CMD17或CMD18時,SD卡進(jìn)入發(fā)送數(shù)據(jù)狀態(tài),當(dāng)數(shù)據(jù)讀取完成或接收命令CMD12時,SD卡進(jìn)入傳輸狀態(tài);當(dāng)命令是CMD32和CMD33時或CMD32和ACMD23時,對SD卡進(jìn)行擦除操作;當(dāng)命令是CMD15或CMD0,SD卡會重新進(jìn)入卡識別模式。在數(shù)據(jù)傳輸模式下,卡基本功能操作流程如圖7所示。
圖7 SD卡基本功能操作流程
SDIO總線控制邏輯設(shè)計(jì)依據(jù)命令控制與數(shù)據(jù)操作分為3個單元,分別是指令控制單元、命令發(fā)送與命令響應(yīng)單元、數(shù)據(jù)收發(fā)單元。
3.2.1 指令控制單元
本單元用于復(fù)合指令控制,復(fù)合指令控制是將多個單條指令組合在一起,協(xié)同完成同一操作,本單元將數(shù)據(jù)塊的讀、寫、擦除和停止等指令進(jìn)行組合,實(shí)現(xiàn)單次控制多條指令順序操作,如CMD32和ACMD23指令組合在一起,即可完成連續(xù)數(shù)據(jù)塊的擦除操作。指令控制單元狀態(tài)機(jī)如圖8所示。
圖8 指令控制單元狀態(tài)機(jī)
3.2.2 命令發(fā)送與響應(yīng)單元
本單元實(shí)現(xiàn)向SD卡發(fā)送命令和接收來自SD卡的響應(yīng)信息功能。本單元由命令控制、命令發(fā)送和命令接收組成。在SD卡識別模式和數(shù)據(jù)傳輸模式下,命令控制用于控制命令發(fā)送和命令接收,命令發(fā)送作為SD卡底層命令驅(qū)動程序,主要完成向SD卡發(fā)送命令的任務(wù);命令接收作為SD卡命令底層驅(qū)動程序,主要接收來自SD卡的響應(yīng)信息。
3.2.3 數(shù)據(jù)接收發(fā)送單元
本單元由數(shù)據(jù)方向控制、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收組成。數(shù)據(jù)方向控制通過判斷數(shù)據(jù)記錄操作還是數(shù)據(jù)下載操作控制SDIO數(shù)據(jù)傳輸方向,數(shù)據(jù)發(fā)送用于向SD卡傳輸存儲信息,數(shù)據(jù)接收用于讀取SD卡內(nèi)存儲的數(shù)據(jù),指令控制如圖7所示。
為滿足超聲流量測量儀數(shù)據(jù)存儲速率和數(shù)據(jù)讀取設(shè)備快速下載的需求,同時為降低在超聲流量測量儀待機(jī)功耗,實(shí)現(xiàn)在不同應(yīng)用場景下進(jìn)行時鐘切換且切換過程中不產(chǎn)生毛刺,研究了時鐘無縫切換技術(shù)。
系統(tǒng)上初始化過程SD卡時鐘LCLK(200 kHz),數(shù)據(jù)存儲過程時鐘WRCLK(30 MHz),數(shù)據(jù)下載過程時鐘RDCLK(90 MHz),無任何操作時會關(guān)閉SD卡時鐘線上的時鐘,從而降低系統(tǒng)功耗。輸入端的時鐘源是跨時鐘域的時鐘,保證了時鐘源傳輸過程中不出現(xiàn)亞穩(wěn)態(tài)的現(xiàn)象,第1級D觸發(fā)器先進(jìn)行緩存;為了保證在低電平時進(jìn)行時鐘切換,第2級D觸發(fā)器在下降沿對相應(yīng)選擇信號(SELECT0~SELECT3)寄存,只有其他的時鐘選擇信號被完全釋放后,新的時鐘選擇信號才會被選擇,保證了3個時鐘源在時鐘切換過程中在時鐘高電處跳變,從而保證了輸出的時鐘信號SDCLK不會出現(xiàn)截斷的現(xiàn)象。另外2個時鐘的反饋信號QN與當(dāng)前時鐘選擇信號進(jìn)行相與操作,在新的時鐘源輸出之前,必須先結(jié)束當(dāng)前的時鐘輸出選擇,保證時鐘切換過程中不產(chǎn)生毛刺。最后選擇時鐘輸出,實(shí)現(xiàn)時鐘無縫切換。時鐘切換設(shè)計(jì)原理如圖9所示。
圖9 時鐘無縫切換設(shè)計(jì)原理
通過某型號超聲流量測量儀對本系統(tǒng)進(jìn)行測試,將回波信號數(shù)據(jù)與流量相關(guān)數(shù)據(jù)傳輸至SD卡進(jìn)行保存。數(shù)據(jù)塊寫入格式幀頭0xEB90EB90,數(shù)據(jù)有效部分依據(jù)數(shù)據(jù)幀結(jié)構(gòu)進(jìn)行填充,幀尾采用0xAA。通過在數(shù)據(jù)讀取設(shè)備端設(shè)置SD卡操作地址,對記錄數(shù)據(jù)進(jìn)行下載。在15 mm管徑、5 MHz探頭測試條件下,對回波數(shù)據(jù)進(jìn)行還原,結(jié)果如圖10所示。通過WinHex查看SD卡記錄結(jié)果如圖11所示。
圖10 回波還原結(jié)果
圖11 SD卡記錄結(jié)果
32 GB micro SD卡最大使用空間可達(dá)28.8 GB,在大數(shù)據(jù)容量情況下測試數(shù)據(jù)存儲功能的穩(wěn)定性,對SD卡最大空間進(jìn)行存儲測試,測試記錄如表1所示。
表1 最大存儲空間誤碼率測試記錄
數(shù)據(jù)測試結(jié)果表明,本設(shè)計(jì)在大量數(shù)據(jù)的情況下能夠進(jìn)行數(shù)據(jù)存儲和數(shù)據(jù)下載,并且數(shù)據(jù)穩(wěn)定可靠,存儲誤碼率和下載誤碼率均為0,遠(yuǎn)低于0.05%,本方案能夠滿足超聲波流量測量儀大容量數(shù)據(jù)存儲的需求。
本設(shè)計(jì)針對超聲波流量測量儀的存儲數(shù)據(jù)記錄容量小,參數(shù)記錄不完整,數(shù)據(jù)存儲實(shí)時性低,數(shù)據(jù)存儲安全性不夠高等問題,設(shè)計(jì)超聲波流量測量儀數(shù)據(jù)存儲系統(tǒng),經(jīng)過試驗(yàn)測試,在大數(shù)據(jù)量數(shù)據(jù)存儲情況下,存儲數(shù)據(jù)穩(wěn)定正常能夠滿足存儲需求,此外,研究了多時鐘源無縫切換技術(shù),可以良好應(yīng)對實(shí)際需求。