基于FPGA的雙備份多路數(shù)據(jù)采集存儲系統(tǒng)的設(shè)計與實現(xiàn)
隨著信息技術(shù)的發(fā)展以及數(shù)字集成電路速度的提高,實時處理大量數(shù)據(jù)已經(jīng)成為現(xiàn)實,但在一些特殊條件下,無法實時傳輸數(shù)據(jù),必須使用存儲測試方法。該方法是在不影響被測對象或在允許的范圍下,將微型存儲測試系統(tǒng)置入被測體內(nèi),現(xiàn)場實時完成信息的快速采集與存儲,并回收存儲器,由計算機(jī)處理,再現(xiàn)被測信息的一種動態(tài)測試技術(shù)[1]。實際應(yīng)用中,由于在不同的條件下對采樣速率和采樣精度的要求有所不同,系統(tǒng)的實現(xiàn)方法也各有特點。為了增加系統(tǒng)數(shù)據(jù)回收的可靠性,本文介紹了基于雙備份存儲的數(shù)據(jù)采集存儲系統(tǒng)的設(shè)計與實現(xiàn)方法。
1 技術(shù)要求
在某飛行體遙測系統(tǒng)中,為了獲取飛行體的參數(shù),需要設(shè)計一種數(shù)據(jù)采集存儲系統(tǒng),要求實現(xiàn)對23路模擬信號的采集、編幀存儲。要求輸入信號電平為0~5 V,系統(tǒng)總采樣率為245.76 kHz, 記錄時間不小于500 s,對速變信號的采樣率為5.12 kHz,緩變信號的采樣率為160 Hz, 23路模擬量信號輸入中包括9路速變信號和14路緩變信號。
2 整體方案的設(shè)計
信號采集存儲系統(tǒng)是基于雙備份的數(shù)據(jù)存儲器設(shè)計而成,整個系統(tǒng)以FPGA為核心控制器,控制數(shù)據(jù)的采集、編幀存儲。系統(tǒng)結(jié)構(gòu)如圖1所示。
2.1采編器電路的設(shè)計
采編器[2]主要完成對各種被測信號的采集,并對數(shù)據(jù)進(jìn)行實時編碼、邏輯控制和實時存儲控制,分為速變、緩變信號采集模塊和采集控制模塊,兩者通過內(nèi)部總線相連。
速變、緩變信號采集模塊主要完成23路輸入模擬信號的調(diào)理、選擇、A/D采集等功能,包括輸入接口電路、濾波跟隨電路、模擬通道切換電路、信號調(diào)理電路等。
采集控制模塊完成模擬信號的A/D采集控制、編幀、內(nèi)部時序控制等功能,包括長線接口電路、控制電路、存儲器接口電路、幀結(jié)構(gòu)下載電路等。
采編器的主控器件采用XC2S100E型現(xiàn)場可編程門陣列(FPGA),該器件體積小、功耗低、內(nèi)部延時小,全部控制邏輯由硬件自動完成,編程配置靈活,可實現(xiàn)程序的并行執(zhí)行,因而可大大提高系統(tǒng)的工作性能。該采編器的電壓采集范圍為0~+5 V,采集精度不低于0.1%。由于FPGA本身不具備A/D轉(zhuǎn)換模塊,因此各通道的模擬信號分別經(jīng)信號調(diào)理電路后,由模擬多路開關(guān)ADG506選擇模擬通道,再經(jīng)外部高速AD7667實現(xiàn)A/D轉(zhuǎn)換,轉(zhuǎn)換的數(shù)據(jù)在FPGA內(nèi)編幀后輸出到存儲器中。具體的每幀數(shù)據(jù)由各路模擬信號和幀標(biāo)記FDB1 8540組成。采編器的電源由電源模塊提供的5 V電壓經(jīng)TPS70351調(diào)理后產(chǎn)生。
采編器電路框圖如圖2所示。
2.2存儲器電路的設(shè)計
存儲器主要完成數(shù)據(jù)的存儲功能,存儲器包括兩套獨立的存儲電路A、B片,兩者互為備份。每套存儲器內(nèi)包括與采編器相連的長線接口、FPGA和Flash存儲芯片。該雙備份設(shè)計能進(jìn)一步提高數(shù)據(jù)回收的可靠性。
存儲器電路框圖如圖3所示。
技術(shù)要求總采樣率約250 kHz,記錄時間不小于500 s, A/D采集的有效位數(shù)為16 bit,則一個采樣周期(即4 μs)產(chǎn)生的數(shù)據(jù)量為2 B, 則1 s的數(shù)據(jù)量為1×106×2/4=500 000 B,則500 s內(nèi)的記錄數(shù)據(jù)量為2.5×108 B=238.5 MB, 可見容量為256 MB的閃存芯片便可滿足記錄要求,本設(shè)計采用SAMSANG公司的Flash存儲芯片K9K8G08U0M,存儲容量達(dá)1 GB,是為了留出存儲余量,這樣就為以后系統(tǒng)的升級和擴(kuò)展提供可行性解決方案。
3系統(tǒng)軟件設(shè)計
3.1采集控制邏輯的設(shè)計
對于多通道異步時分采集這種形式的電路,由于在電子開關(guān)切換的過程中存在著串?dāng)_,信號受到該串?dāng)_后,濾波放大器的輸出在ADC采樣前未穩(wěn)定至其應(yīng)有的精度,就會對ADC的采樣有影響,從而影響采集精度。所以,為了解決串?dāng)_問題,只有在實踐的基礎(chǔ)上,靠經(jīng)驗去選擇合適的運放,或者是通過硬件與系統(tǒng)軟件優(yōu)化相結(jié)合的方法尋找解決途徑。
在確保系統(tǒng)采樣率的前提下,本設(shè)計通過硬件與軟件相結(jié)合的方法來解決串?dāng)_問題。硬件上采集模塊選擇SR(壓擺率)較高的運放LF247作為濾波跟隨器,軟件上則以并行的工作方式確保采樣前采樣通道信號的穩(wěn)定,即在時序設(shè)計上,主程序中采用了兩個進(jìn)程:(1)完成數(shù)據(jù)的轉(zhuǎn)換、幀計數(shù)和數(shù)據(jù)的傳輸; (2)根據(jù)幀計數(shù)frame_cnt控制通道地址信號a和p進(jìn)行通道切換。這兩個進(jìn)程并行執(zhí)行。
FPGA采集控制邏輯流程圖如圖4所示。其中,a為通道選擇輸出,接ADG506的通道選擇控制端(A3~A0);P為ADG506選通信號,接ADG506的片選端(EN)。
由于存儲器采用雙備份設(shè)計以及對兩片存儲器的寫入操作完全相同,故采集控制邏輯中分別有控制A、B片存儲器的控制信號wrclkA和wrclkB,數(shù)據(jù)通過MAdata、MBdata分別存入存儲器的A、B片中,如圖5所示。
圖5[3]是FPGA的時序轉(zhuǎn)換圖。其中,Convst為啟動轉(zhuǎn)換信號;Addr為通道地址;byte信號用于控制數(shù)據(jù)并行輸出的模式,低電平為低8位數(shù)據(jù),高電平為高8位數(shù)據(jù);ADdata 連接到AD7667的數(shù)據(jù)輸出端;數(shù)據(jù)通過ADdata輸入到FPGA。
圖5的數(shù)據(jù)轉(zhuǎn)換過程:A/D轉(zhuǎn)換器的數(shù)據(jù)采集是從Convst信號下降沿開始,Convst下降沿啟動對n-1通道的采樣轉(zhuǎn)換, 進(jìn)入轉(zhuǎn)換進(jìn)程后,通道地址信號a和p根據(jù)幀計數(shù)切換到采集通道n, 在等待足夠的轉(zhuǎn)換時間t4后,AD7667在byte高電平的控制下從AD[7:0]輸出n-1通道高8位的轉(zhuǎn)換數(shù)據(jù),高8位數(shù)據(jù)在寫時鐘Wrclk的控制下,以足夠的時間傳輸給緩存器,AD7667在byte低電平的控制下從AD[7:0]輸出n-1通道低8位的轉(zhuǎn)換數(shù)據(jù),低8位數(shù)據(jù)在寫時鐘Wrclk的控制下,以足夠的時間傳輸給緩存器,并在傳輸?shù)耐瑫r進(jìn)入n通道的采集過程,此時n通道信號在經(jīng)過了時間t3后,已經(jīng)達(dá)到穩(wěn)定的電平。
在采集的過程中測得的Convst信號波形與運放的輸出波形如圖6 (a)、(b)所示。
圖6 (a)、(b)中,CH1通道為Convst信號,頻率約為250 MHz(采樣周期4 μs),CH2通道為運放輸出信號。 圖6(c)、(d)分別為用LM224和LF247作為運放時采集數(shù)據(jù)的回放波形。從圖6 (a)、(b)可以看出,在開關(guān)切換的過程中,運算放大器輸出的信號存在劇烈抖動。圖6(a)中測得的是用LM224作為濾波跟隨器(SR為0.3 V/?滋s)的輸出信號,此濾波放大器的輸出抖動直到ADC采樣前還未穩(wěn)定,導(dǎo)致采集到的數(shù)據(jù)波形出現(xiàn)嚴(yán)重失真,如圖6(c)所示;在圖6(b)中的豎線處,運放的輸出也存在一定的抖動,然而,由于濾波運放采用LF247(該運放的SR為16 V/?滋s),其輸出在ADC采樣前已經(jīng)穩(wěn)定到極高的精度,所以用該運放作為濾波跟隨器采集到的數(shù)據(jù)波形非常準(zhǔn)確,如圖6(d)所示。
由此可以看出,與傳統(tǒng)的流水線順序相比較,由于硬件描述語言VHDL進(jìn)程之間具有并發(fā)特性(進(jìn)程(1)與進(jìn)程(2)的并發(fā)性),這樣就必然節(jié)省了通道切換、采樣和保持的時間,同時結(jié)合硬件,選擇合適的運放,即可保證ADC轉(zhuǎn)換之前轉(zhuǎn)換通道信號的穩(wěn)定,這就解決了通道串?dāng)_問題。
3.2 存儲邏輯設(shè)計
存儲邏輯主要包括對Flash的擦除、讀寫及識別無效塊。控制流程圖如圖7所示。
存儲器默認(rèn)為讀狀態(tài),上電復(fù)位時間設(shè)置為0.8 s,復(fù)位完成則判斷是否處于寫狀態(tài),若是,則記錄采編器傳輸?shù)臄?shù)據(jù),若否,則在讀請求信號有效時(低電平有效),送出Flash芯片內(nèi)所存數(shù)據(jù),送完256 MB自動停止。若中間讀請求信號無效,存儲器停止送數(shù),維持當(dāng)前狀態(tài),并等待請求信號再次有效。
當(dāng)存儲器處于寫狀態(tài)時,A、B片同時完成數(shù)據(jù)的記錄;當(dāng)處于讀狀態(tài)時,在各自讀請求信號有效時,分時復(fù)用采編器數(shù)據(jù)總線,先后將兩套存儲器數(shù)據(jù)上傳。1#存儲器為默認(rèn)優(yōu)先上傳存儲器,通過設(shè)置采編器通道切換信號為有電流狀態(tài),可選擇2#存儲器上傳數(shù)據(jù)。
備用讀數(shù)狀態(tài)下,分別讀取兩套存儲器。
4 測試試驗
對數(shù)據(jù)采集存儲系統(tǒng)進(jìn)行炮擊試驗,其目的是為了考核記錄器的外部結(jié)構(gòu)以及內(nèi)部電路板的抗過載能力。試驗前,采編器采集標(biāo)準(zhǔn)的模擬彈上信源(正弦波、方波、直流量、鋸齒波……依次循環(huán)),并存入存儲器,然后將整個系統(tǒng)安裝在飛行體中,飛行體以極高的速度著靶,測試采集存儲系統(tǒng)的沖擊過載能力。試驗后電路板正常無損壞,而其中一塊(B片)外部晶體振蕩器損壞,因此,存儲器采用雙時鐘源,正常情況下由晶體振蕩器提供時鐘源,在存儲器回收后讀取數(shù)據(jù)時,若晶體振蕩器損壞,可由地面測試臺提供的備用時鐘作為存儲器時鐘源,這樣就避免了回收存儲器后更換晶體振蕩器的麻煩。試驗完成后從A片存儲器中回收數(shù)據(jù),并與試驗前的數(shù)據(jù)相比較,結(jié)果一致,再從B片存儲器中回收數(shù)據(jù)(由于外部晶體振蕩器損壞,需用備用時鐘源),與試驗前的數(shù)據(jù)相比較,其波形一致,如圖8所示。圖8中列舉了其中4個通道T1~T4的電壓信號,試驗表明,該系統(tǒng)具有很強(qiáng)的抗過載能力。
本文給出了基于雙備份存儲器的數(shù)據(jù)采集存儲系統(tǒng)的電路設(shè)計和控制邏輯設(shè)計。在工程實踐的基礎(chǔ)上,對多通道異步時分電路的通道串?dāng)_現(xiàn)象提出了可行性的解決方案,同時詳細(xì)地介紹了采用FPGA實現(xiàn)采集控制邏輯以及存儲邏輯的方法,也給出了采集控制邏輯的流程和存儲邏輯的設(shè)計流程。通過飛行試驗,該采集存儲系統(tǒng)采集了用來評估飛行器的各種技術(shù)指標(biāo)的有用數(shù)據(jù),實踐證明,雙備份設(shè)計有效的提高了數(shù)據(jù)回收的可靠性。