文獻(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)難以滿足工業(yè)化和軍事化應(yīng)用。在航空,、工業(yè)等領(lǐng)域中,,數(shù)據(jù)采集和存儲(chǔ)設(shè)備占據(jù)著很重要的地位,對(duì)多通道高速數(shù)據(jù)采集技術(shù)的應(yīng)用需求也越來越廣泛,,對(duì)數(shù)據(jù)存儲(chǔ)容量的要求也越來越高,,特別是在需要對(duì)數(shù)據(jù)進(jìn)行記錄和回放分析的場合。在飛行器的飛行研制,、驗(yàn)證和完善階段,對(duì)飛行過程中各項(xiàng)參數(shù)的變化和分析具有重要作用和意義[1],。傳統(tǒng)的數(shù)據(jù)采集和存儲(chǔ)設(shè)備由于存在低采樣率和存儲(chǔ)量小的缺點(diǎn),,已難以勝任長時(shí)間數(shù)據(jù)采集與存儲(chǔ)的任務(wù),因此采用新的采集和存儲(chǔ)陣列技術(shù)解決高速數(shù)據(jù)采集和大容量存儲(chǔ)的問題顯得日益重要,。由于FPGA具有可靈活配置,、低成本以及Flash可組成陣列的特點(diǎn),,對(duì)解決飛行試驗(yàn)中數(shù)據(jù)采集和存儲(chǔ)的問題提供了可能。
本文提出了一種基于FPGA高采樣率深存儲(chǔ)的設(shè)計(jì)方案,,并可實(shí)現(xiàn)飛行器在飛行過程中的各項(xiàng)原始數(shù)據(jù)的記錄,、分析和回放。而且可以通過上位機(jī)軟件在計(jì)算機(jī)中讀取出飛行的原始數(shù)據(jù)并將數(shù)據(jù)拆分以及繪圖,,供試驗(yàn)后進(jìn)行分析,。
1 總體設(shè)計(jì)方案
本設(shè)計(jì)采用型號(hào)為XC3S400E的FPGA芯片作為邏輯控制單元,該芯片擁有400 K邏輯門,,288 KB Block RAM,,I/O數(shù)量達(dá)到了141個(gè),其低成本,、低功耗和可靈活配置的特性能夠滿足設(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)過濾波處理。存儲(chǔ)模塊由4個(gè)深存儲(chǔ)的三星Flash組合成一個(gè)16 GB的Flash陣列,,實(shí)現(xiàn)數(shù)據(jù)的大容量存儲(chǔ)功能,。總線接口完成與計(jì)算機(jī)之間控制指令,、數(shù)據(jù),、地址等信號(hào)的通信。
系統(tǒng)工作原理:計(jì)算機(jī)通過USB總線接口給系統(tǒng)下發(fā)控制指令,,指令在FPGA邏輯控制單元進(jìn)行譯碼,,之后完成相對(duì)應(yīng)的采集、存儲(chǔ)等操作,。參數(shù)信號(hào)經(jīng)過信號(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),以滿足模/數(shù)轉(zhuǎn)換芯片THS1408轉(zhuǎn)換的輸入信號(hào)要求[5],。FPGA控制模/數(shù)轉(zhuǎn)換芯片把模擬信號(hào)轉(zhuǎn)換成數(shù)字量,,并將符合條件的數(shù)據(jù)進(jìn)行編幀,寫入16 GB Flash陣列,。其中運(yùn)放采用AD8028,,當(dāng)輸入信號(hào)頻率不大于1.5 MHz時(shí),運(yùn)放跟隨后的波形效果仍然很好,,滿足設(shè)計(jì)要求,。最初設(shè)計(jì)階段,電阻R12選用10 kΩ阻值,,在實(shí)際電路調(diào)試過程中發(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阻值過大,會(huì)對(duì)輸入信號(hào)進(jìn)行分壓,,使得輸入信號(hào)的幅值衰減,。把電阻R12更換成1 kΩ以后,輸入信號(hào)幅值的衰減幾乎可以忽略不計(jì),,保證了信號(hào)的采集精度,。THS1408采用具有三態(tài)緩沖的并行數(shù)據(jù)接口,可以直接連接到數(shù)據(jù)總線接口,,通過驅(qū)動(dòng)OE為低可以將數(shù)據(jù)輸出使能,,使得電路設(shè)計(jì)更加簡單。
3 軟件設(shè)計(jì)
3.1 FPGA邏輯設(shè)計(jì)
邏輯控制中心FPGA主要完成THS1408內(nèi)部寄存器的初始化和數(shù)/模轉(zhuǎn)換控制,、數(shù)據(jù)采集的控制,、數(shù)據(jù)有效性判斷以及Flash陣列芯片的讀寫控制功能。內(nèi)部程序框圖如圖3所示,。
FPGA作為高速采集和深存儲(chǔ)模塊的中心控制器,,主要負(fù)責(zé)控制A/D轉(zhuǎn)換器、外部FIFO,、Flash陣列以及內(nèi)部總線間的相互通信,,各個(gè)模塊的作用如下:
(1)A/D控制以及FIFO寫控制模塊:系統(tǒng)上電后,該模塊主動(dòng)實(shí)現(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ā)給各個(gè)子模塊,在采集狀態(tài)下,,讀取FIFO中的數(shù)據(jù),并對(duì)數(shù)值進(jìn)行判斷,,滿足條件時(shí),,將數(shù)據(jù)傳輸給Flash陣列控制模塊。在讀數(shù)狀態(tài)下,,接收Flash陣列控制模塊傳遞過來的數(shù)據(jù),,并通過內(nèi)部總線將數(shù)據(jù)通過接口模塊上傳給上位機(jī),進(jìn)行數(shù)據(jù)的分析,、判斷,。
(3)Flash陣列控制模塊:系統(tǒng)上電后,該模塊對(duì)Flash無效塊進(jìn)行掃描,,并生成列表,。在擦除狀態(tài)下,該模塊控制Flash陣列的擦除流程,;在采集狀態(tài)下,,該模塊將前一級(jí)送過來的數(shù)據(jù)進(jìn)行存儲(chǔ);在讀數(shù)狀態(tài)下,,該模塊讀取Flash陣列中的數(shù)據(jù),,并傳遞給前一級(jí)模塊。其FPGA具體的控制流程圖如圖4所示,。
3.2 Flash讀寫
本設(shè)計(jì)中,,存儲(chǔ)芯片選用三星公司的K9WBG08U1M。Flash的寫入過程需要進(jìn)行頁編程,,頁編程的最大時(shí)間為700 ?滋s,,典型時(shí)間為200 ?滋s,經(jīng)實(shí)際測試頁編程時(shí)間為150 ?滋s~250 ?滋s,。在頁編程時(shí)間內(nèi),,不能對(duì)Flash進(jìn)行操作。K9WBG08U1M擁有兩個(gè)片選信號(hào),,在chip1進(jìn)入編程后,,對(duì)chip2進(jìn)行寫入操作,從而錯(cuò)過編程時(shí)間,。K9WBG08U1M可以將內(nèi)部存儲(chǔ)空間分為4個(gè)存儲(chǔ)平面,,每個(gè)平面由2 048個(gè)塊和4 KB的頁寄存器組成,每個(gè)平面可以進(jìn)行單獨(dú)的擦除和編程操作[6],。設(shè)計(jì)中,,F(xiàn)lash采用交替雙平面編程方式,,可以大大提高存儲(chǔ)芯片的寫入速度。在進(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)寫完第1組頁寄存器以后,,將進(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)部無效塊,,并生成無效塊列表,,存放于FPGA內(nèi)部ROM中。只要不斷電,,F(xiàn)lash的擦除,、讀、寫操作都按照列表操作,,不再進(jìn)行無效塊檢測[8],。若對(duì)應(yīng)的塊地址為有效塊,則將數(shù)據(jù)寫入該塊中,。
3.3 模/數(shù)轉(zhuǎn)換
根據(jù)THS1408的采樣時(shí)序和采樣率確定A/D采集時(shí)序,,如圖6所示。系統(tǒng)時(shí)鐘clk為60 MHz,,通過計(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。通過控制數(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)接入地面測試系統(tǒng),,如圖7所示。
在地面檢測模式下,,地面測試臺(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é)束之后,地面測試臺(tái)向采集和存儲(chǔ)系統(tǒng)下發(fā)讀數(shù)命令將系統(tǒng)轉(zhuǎn)換存儲(chǔ)后的數(shù)據(jù)讀回測試臺(tái),,并通過USB將數(shù)據(jù)上傳給上位機(jī)。上位機(jī)軟件對(duì)數(shù)據(jù)采集模塊采回的數(shù)據(jù)進(jìn)行數(shù)據(jù)處理和分析,,在數(shù)據(jù)的幀校驗(yàn)準(zhǔn)確無誤后,,對(duì)分解后的數(shù)據(jù)進(jìn)行繪圖分析,繪圖結(jié)果如圖8所示,,可以清楚地看到正弦波形,。通過10次連續(xù)的采集和Flash讀取測試,驗(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)簡單以及功耗低的特點(diǎn),,在高速數(shù)據(jù)傳輸應(yīng)用中具有很高的應(yīng)用和參考價(jià)值。
參考文獻(xiàn)
[1] 姚永興.多通道數(shù)據(jù)存儲(chǔ)系統(tǒng)關(guān)鍵技術(shù)研究[D].太原:中北大學(xué),,2012.
[2] 王杰,,王誠,謝龍漢.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].探測與控制學(xué)報(bào),,2010,32(2):3-4.
[8] 文豐,,趙艷利,,甄國涌.基于FPGA的高速數(shù)據(jù)采集存儲(chǔ)系統(tǒng)的設(shè)計(jì)[J].電子技術(shù),2009,,46(1):18-19.