文獻標識碼: A
文章編號: 0258-7998(2014)05-0039-03
中文引用格式:劉占峰,任勇峰,李輝景,彭巧君.基于FPGA的傳感器信號的采集與存儲模塊設(shè)計[J].電子技術(shù)應(yīng)用,2014,40(05):39-41+48.
隨著高速采集和大容量存儲技術(shù)的發(fā)展,傳統(tǒng)的低速采樣和單一Flash存儲結(jié)構(gòu)的應(yīng)用已經(jīng)難以滿足工業(yè)化和軍事化應(yīng)用。在航空、工業(yè)等領(lǐng)域中,數(shù)據(jù)采集和存儲設(shè)備占據(jù)著很重要的地位,對多通道高速數(shù)據(jù)采集技術(shù)的應(yīng)用需求也越來越廣泛,對數(shù)據(jù)存儲容量的要求也越來越高,特別是在需要對數(shù)據(jù)進行記錄和回放分析的場合。在飛行器的飛行研制、驗證和完善階段,對飛行過程中各項參數(shù)的變化和分析具有重要作用和意義[1]。傳統(tǒng)的數(shù)據(jù)采集和存儲設(shè)備由于存在低采樣率和存儲量小的缺點,已難以勝任長時間數(shù)據(jù)采集與存儲的任務(wù),因此采用新的采集和存儲陣列技術(shù)解決高速數(shù)據(jù)采集和大容量存儲的問題顯得日益重要。由于FPGA具有可靈活配置、低成本以及Flash可組成陣列的特點,對解決飛行試驗中數(shù)據(jù)采集和存儲的問題提供了可能。
本文提出了一種基于FPGA高采樣率深存儲的設(shè)計方案,并可實現(xiàn)飛行器在飛行過程中的各項原始數(shù)據(jù)的記錄、分析和回放。而且可以通過上位機軟件在計算機中讀取出飛行的原始數(shù)據(jù)并將數(shù)據(jù)拆分以及繪圖,供試驗后進行分析。
1 總體設(shè)計方案
本設(shè)計采用型號為XC3S400E的FPGA芯片作為邏輯控制單元,該芯片擁有400 K邏輯門,288 KB Block RAM,I/O數(shù)量達到了141個,其低成本、低功耗和可靈活配置的特性能夠滿足設(shè)計要求[2-3]。引腳支持高速數(shù)據(jù)通信,能夠完成高速采集和存儲接口的設(shè)計,設(shè)計總體框圖如圖1所示,其中信號調(diào)理電路完成模擬信號的放大和濾波,模/數(shù)轉(zhuǎn)換器完成模擬信號到數(shù)字信號的轉(zhuǎn)換功能。為了提高電源的抗噪聲性能,在給系統(tǒng)模擬電路和數(shù)字電路供電之前需要經(jīng)過濾波處理。存儲模塊由4個深存儲的三星Flash組合成一個16 GB的Flash陣列,實現(xiàn)數(shù)據(jù)的大容量存儲功能。總線接口完成與計算機之間控制指令、數(shù)據(jù)、地址等信號的通信。
系統(tǒng)工作原理:計算機通過USB總線接口給系統(tǒng)下發(fā)控制指令,指令在FPGA邏輯控制單元進行譯碼,之后完成相對應(yīng)的采集、存儲等操作。參數(shù)信號經(jīng)過信號輸入接口后進行調(diào)理和模/數(shù)轉(zhuǎn)換,將采集到的數(shù)字信號存儲到Flash陣列中,以備計算機對數(shù)據(jù)進行回放和分析。
2 硬件電路設(shè)計
采集模塊主要由信號調(diào)理電路、單端轉(zhuǎn)差分電路和模數(shù)轉(zhuǎn)換電路三部分組成,采集模塊的電路原理圖如圖2所示。信號調(diào)理電路的作用是把傳感器輸入的相對較小的電壓信號進行放大,使其適合于模/數(shù)轉(zhuǎn)換芯片的輸入要求[4]。單端轉(zhuǎn)差分電路將傳感器輸入的單端模擬信號轉(zhuǎn)換成差分信號,以滿足模/數(shù)轉(zhuǎn)換芯片THS1408轉(zhuǎn)換的輸入信號要求[5]。FPGA控制模/數(shù)轉(zhuǎn)換芯片把模擬信號轉(zhuǎn)換成數(shù)字量,并將符合條件的數(shù)據(jù)進行編幀,寫入16 GB Flash陣列。其中運放采用AD8028,當輸入信號頻率不大于1.5 MHz時,運放跟隨后的波形效果仍然很好,滿足設(shè)計要求。最初設(shè)計階段,電阻R12選用10 kΩ阻值,在實際電路調(diào)試過程中發(fā)現(xiàn)A/D運放的容性負載隨著輸入信號頻率的增大不斷減小,當輸入信號頻率達到1 MHz以上時,AD8028的輸入電容值C和容性負載由下式得出:
由式(1)可知,AD8028的容性輸入阻抗與R12在同一數(shù)量級,電阻R12阻值過大,會對輸入信號進行分壓,使得輸入信號的幅值衰減。把電阻R12更換成1 kΩ以后,輸入信號幅值的衰減幾乎可以忽略不計,保證了信號的采集精度。THS1408采用具有三態(tài)緩沖的并行數(shù)據(jù)接口,可以直接連接到數(shù)據(jù)總線接口,通過驅(qū)動OE為低可以將數(shù)據(jù)輸出使能,使得電路設(shè)計更加簡單。
3 軟件設(shè)計
3.1 FPGA邏輯設(shè)計
邏輯控制中心FPGA主要完成THS1408內(nèi)部寄存器的初始化和數(shù)/模轉(zhuǎn)換控制、數(shù)據(jù)采集的控制、數(shù)據(jù)有效性判斷以及Flash陣列芯片的讀寫控制功能。內(nèi)部程序框圖如圖3所示。
FPGA作為高速采集和深存儲模塊的中心控制器,主要負責(zé)控制A/D轉(zhuǎn)換器、外部FIFO、Flash陣列以及內(nèi)部總線間的相互通信,各個模塊的作用如下:
(1)A/D控制以及FIFO寫控制模塊:系統(tǒng)上電后,該模塊主動實現(xiàn)A/D轉(zhuǎn)換器的初始化、FIFO的初始化,在采集狀態(tài)下,控制A/D轉(zhuǎn)換器的采樣,并將數(shù)據(jù)寫入FIFO中。
(2)接口控制以及FIFO讀控制模塊:系統(tǒng)上電后,將內(nèi)部總線發(fā)送過來的命令轉(zhuǎn)發(fā)給各個子模塊,在采集狀態(tài)下,讀取FIFO中的數(shù)據(jù),并對數(shù)值進行判斷,滿足條件時,將數(shù)據(jù)傳輸給Flash陣列控制模塊。在讀數(shù)狀態(tài)下,接收Flash陣列控制模塊傳遞過來的數(shù)據(jù),并通過內(nèi)部總線將數(shù)據(jù)通過接口模塊上傳給上位機,進行數(shù)據(jù)的分析、判斷。
(3)Flash陣列控制模塊:系統(tǒng)上電后,該模塊對Flash無效塊進行掃描,并生成列表。在擦除狀態(tài)下,該模塊控制Flash陣列的擦除流程;在采集狀態(tài)下,該模塊將前一級送過來的數(shù)據(jù)進行存儲;在讀數(shù)狀態(tài)下,該模塊讀取Flash陣列中的數(shù)據(jù),并傳遞給前一級模塊。其FPGA具體的控制流程圖如圖4所示。
3.2 Flash讀寫
本設(shè)計中,存儲芯片選用三星公司的K9WBG08U1M。Flash的寫入過程需要進行頁編程,頁編程的最大時間為700 ?滋s,典型時間為200 ?滋s,經(jīng)實際測試頁編程時間為150 ?滋s~250 ?滋s。在頁編程時間內(nèi),不能對Flash進行操作。K9WBG08U1M擁有兩個片選信號,在chip1進入編程后,對chip2進行寫入操作,從而錯過編程時間。K9WBG08U1M可以將內(nèi)部存儲空間分為4個存儲平面,每個平面由2 048個塊和4 KB的頁寄存器組成,每個平面可以進行單獨的擦除和編程操作[6]。設(shè)計中,F(xiàn)lash采用交替雙平面編程方式,可以大大提高存儲芯片的寫入速度。在進行雙平面操作時,必須選擇plane0和plane1或者plane2和plane3同時進行操作。如令chip1中plane0和plane1為第1組,chip1中plane2和plane3為第2組,chip2中plane0和plane1為第3組,chip2中plane0和plane1為第4組,交替雙平面編程方式流程圖如圖5所示。當寫完第1組頁寄存器以后,將進入200 μs的編程時間,此時再對第2、3和4組加載數(shù)據(jù)。當?shù)?組加載完數(shù)據(jù)以后,第1組已經(jīng)完成了編程,可以繼續(xù)對第1組加載數(shù)據(jù)[7]。
為了方便對塊地址的統(tǒng)一管理,每次上電后先掃描Flash內(nèi)部無效塊,并生成無效塊列表,存放于FPGA內(nèi)部ROM中。只要不斷電,F(xiàn)lash的擦除、讀、寫操作都按照列表操作,不再進行無效塊檢測[8]。若對應(yīng)的塊地址為有效塊,則將數(shù)據(jù)寫入該塊中。
3.3 模/數(shù)轉(zhuǎn)換
根據(jù)THS1408的采樣時序和采樣率確定A/D采集時序,如圖6所示。系統(tǒng)時鐘clk為60 MHz,通過計數(shù)器對系統(tǒng)時鐘進行十分頻,產(chǎn)生A/D采樣時鐘ad_clk為6 MHz,在時鐘上升沿對輸入的模擬信號進行采樣并進行模/數(shù)轉(zhuǎn)換,在時鐘下降沿輸出數(shù)字量,數(shù)據(jù)輸出延時25 ns。通過控制數(shù)據(jù)輸出使能out_oe完成轉(zhuǎn)換后的14 bit數(shù)字量的輸出,并將其緩存入外部FIFO中。當符合觸發(fā)條件時,將數(shù)據(jù)存入對應(yīng)的16 GB Flash陣列中。
4 實驗結(jié)果與驗證
為驗證系統(tǒng)的功能,將采集與存儲系統(tǒng)接入地面測試系統(tǒng),如圖7所示。
在地面檢測模式下,地面測試臺向系統(tǒng)提供模擬信號供其采集(這里提供頻率為3.8 Hz的正弦模擬信號)。采集與存儲系統(tǒng)對此正弦模擬信號進行采集、A/D轉(zhuǎn)換、編幀和存儲。當采集存儲結(jié)束之后,地面測試臺向采集和存儲系統(tǒng)下發(fā)讀數(shù)命令將系統(tǒng)轉(zhuǎn)換存儲后的數(shù)據(jù)讀回測試臺,并通過USB將數(shù)據(jù)上傳給上位機。上位機軟件對數(shù)據(jù)采集模塊采回的數(shù)據(jù)進行數(shù)據(jù)處理和分析,在數(shù)據(jù)的幀校驗準確無誤后,對分解后的數(shù)據(jù)進行繪圖分析,繪圖結(jié)果如圖8所示,可以清楚地看到正弦波形。通過10次連續(xù)的采集和Flash讀取測試,驗證了系統(tǒng)的可靠性和準確性。
本文介紹了一種基于FPGA的高速采集和深存儲的模塊設(shè)計,整個設(shè)計在實現(xiàn)高速數(shù)據(jù)采集的同時也實現(xiàn)了大容量的數(shù)據(jù)存儲。物理層上采用高速的模/數(shù)轉(zhuǎn)換器,同時增加了放大、濾波等調(diào)理電路,在硬件電路上降低了信號的噪聲,并且采用了構(gòu)造Flash陣列的方法,提高了數(shù)據(jù)的存儲深度。該設(shè)計已可實現(xiàn)采樣率為6 MHz的數(shù)據(jù)采集以及高達16 GB的存儲容量,并具有實現(xiàn)簡單以及功耗低的特點,在高速數(shù)據(jù)傳輸應(yīng)用中具有很高的應(yīng)用和參考價值。
參考文獻
[1] 姚永興.多通道數(shù)據(jù)存儲系統(tǒng)關(guān)鍵技術(shù)研究[D].太原:中北大學(xué),2012.
[2] 王杰,王誠,謝龍漢.Xiinx FPGA/CPLD設(shè)計手冊[M].北京:人民郵電出版社,2011.
[3] 白佳俊,孟祥勇,張德平,等.基于W5300和FPGA的實時數(shù)據(jù)采集系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2013,39(4):19-21.
[4] 郭建平,王亮,郭正剛,等.單通道信號處理的前端信號調(diào)理模塊的設(shè)計[J].儀表技術(shù)與傳感器,2008(9):99-101.
[5] TI.THS1408-EP data sheet[Z].2011.
[6] Samsung Electronics K9XXGO8XXM data sheet[Z].2006.
[7] 李鑫旺,張丕狀.基于非易失存儲器的數(shù)據(jù)存儲與管理方法[J].探測與控制學(xué)報,2010,32(2):3-4.
[8] 文豐,趙艷利,甄國涌.基于FPGA的高速數(shù)據(jù)采集存儲系統(tǒng)的設(shè)計[J].電子技術(shù),2009,46(1):18-19.