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