《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
基于FPGA的高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
山西電子技術(shù)
李小虎,蒲南江,李曉雷,李文超,劉 洋
摘要: 摘要:為了在提高數(shù)據(jù)采集卡的速度的同時(shí)降低成本,設(shè)計(jì)了一種應(yīng)用流水線存儲(chǔ)技術(shù)的數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)應(yīng)用軟件與硬件相結(jié)合的方式來(lái)控制實(shí)現(xiàn),通過MAX1308模數(shù)轉(zhuǎn)換器完成ADC的轉(zhuǎn)化過程,采用多片Nandflash流水線
關(guān)鍵詞: FPGA 高速數(shù)據(jù)采集
Abstract:
Key words :


摘要:為了在提高數(shù)據(jù)采集卡的速度的同時(shí)降低成本,設(shè)計(jì)了一種應(yīng)用流水線存儲(chǔ)技術(shù)的數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)應(yīng)用軟件與硬件相結(jié)合的方式來(lái)控制實(shí)現(xiàn),通過MAX1308模數(shù)轉(zhuǎn)換器完成ADC的轉(zhuǎn)化過程,采用多片Nandflash流水線數(shù)據(jù)存儲(chǔ)模式對(duì)高速采集的數(shù)據(jù)進(jìn)行存儲(chǔ)。搭建硬件電路,并在FPGA內(nèi)部通過編寫VHDL語(yǔ)言實(shí)現(xiàn)了采集模塊、控制與存儲(chǔ)模塊和Nandflash存儲(chǔ)功能。調(diào)試結(jié)果表明,芯片的讀寫時(shí)序信號(hào)對(duì)應(yīng)的位置準(zhǔn)確無(wú)誤,沒有出現(xiàn)時(shí)序混亂,且采集速度能保持在10 Mh/s以上。系統(tǒng)實(shí)現(xiàn)了低成本、高速多路采集的設(shè)計(jì)要求。
關(guān)鍵詞:高速采集;流水線存儲(chǔ);FPGA

0 引言
    為使計(jì)算機(jī)能對(duì)數(shù)據(jù)采集系統(tǒng)輸入的模擬量進(jìn)行處理,必須經(jīng)由數(shù)據(jù)采集系統(tǒng)將模擬量轉(zhuǎn)化為數(shù)字量。FPGA是在CPLD等邏輯器件的基礎(chǔ)上發(fā)展起來(lái)的,其高集成度能大大縮小電路板的尺寸,降低系統(tǒng)成本,提高系統(tǒng)的性能和可靠性,適合于時(shí)序、組合等邏輯電路的應(yīng)用場(chǎng)合。一個(gè)完整成型的探測(cè)系統(tǒng)通常都有采集儲(chǔ)存部分,無(wú)論是電信號(hào)、光信號(hào)、聲音信號(hào)等在被探測(cè)器接收到后,大部分都需要轉(zhuǎn)化為數(shù)字信號(hào)才能再傳給處理器完成分析、判斷的過程?,F(xiàn)在的一些高速大容量采集系統(tǒng),往往價(jià)格比較昂貴。本論文主要論述一種應(yīng)用FPGA等來(lái)控制,采用多片Nandflash存儲(chǔ)的低成本、高速、多路、可靠的數(shù)據(jù)采集系統(tǒng),本文主要探討硬件設(shè)計(jì)和存儲(chǔ)設(shè)計(jì)。

1 系統(tǒng)總體設(shè)計(jì)方案
    數(shù)據(jù)采集系統(tǒng)的工作原理是:各種信息經(jīng)過傳感器后轉(zhuǎn)化成模擬電量信號(hào),通過ADC將模擬量轉(zhuǎn)換為數(shù)字量信號(hào),而后進(jìn)行傳輸存儲(chǔ)和處理。本系統(tǒng)中,在軟件和硬件相結(jié)合的控制下,系統(tǒng)將采集到的模擬信號(hào)經(jīng)過A/D轉(zhuǎn)換器件轉(zhuǎn)換后,將轉(zhuǎn)換結(jié)果先緩存到FIFO,再轉(zhuǎn)存到非易失性Nandtlash陣列中。其中,F(xiàn)IFO不但可以實(shí)現(xiàn)緩存功能,還可以解決A/D轉(zhuǎn)換之后數(shù)據(jù)位數(shù)跟Nandflash存儲(chǔ)器的數(shù)據(jù)線位數(shù)不匹配的矛盾。如圖1系統(tǒng)總體設(shè)計(jì)方案框圖所示,本系統(tǒng)采用FPGA內(nèi)部軟核microblaze處理器作主控制器即軟件控制器,而FPGA內(nèi)部邏輯資源則用于產(chǎn)生硬件控制時(shí)序,整個(gè)系統(tǒng)就是在兩者相結(jié)合協(xié)調(diào)下進(jìn)行數(shù)據(jù)的采集以及傳輸。

a.jpg



2 硬件控制器的設(shè)計(jì)
    整個(gè)數(shù)據(jù)采集系統(tǒng)含有數(shù)據(jù)采集模塊和數(shù)據(jù)傳輸模塊。其中數(shù)據(jù)采集模塊由AD數(shù)據(jù)轉(zhuǎn)換模塊和Nandflash數(shù)據(jù)存儲(chǔ)模塊組成。系統(tǒng)采用USB接口做數(shù)據(jù)傳輸模塊,在此不作為本論文的重點(diǎn)進(jìn)行描述。在數(shù)據(jù)傳輸部分本系統(tǒng)采用了DMA傳輸技術(shù)。其FPGA內(nèi)部電路功能模塊如圖2所示。

b.jpg


    其中ALE,WR分別連接處理器的地址鎖存和WR引腳。而處理器設(shè)置成地址總線和數(shù)據(jù)總線分時(shí)復(fù)用的模式。這樣FPGA可以通過ALE信號(hào)來(lái)鎖存處理器的地址。而控制命令生成器用來(lái)譯碼產(chǎn)生相應(yīng)的命令和操作。DMA控制器是我們自己編寫的特定的控制器,它需在收到處理器的DMA使能命令的情況下使得DMA_EN有效,然后在收到DMA開啟信號(hào)DMA_restart后,才會(huì)啟動(dòng)一次DMA傳輸數(shù)據(jù),每啟動(dòng)一次傳輸一頁(yè)2 K的數(shù)據(jù)。在傳輸過程中,因?yàn)槭嵌嗥現(xiàn)IFO的讀,為了數(shù)據(jù)不會(huì)亂,我們通過一個(gè)特定的控制器將DMA_FLASH_WE和多片F(xiàn)IFO的DMA_FIFO_RD匹配的統(tǒng)一起來(lái)產(chǎn)生了多片F(xiàn)IFO輪換讀的操作。
    在采樣速率選擇的設(shè)計(jì)中,我們是應(yīng)用先微處理器的軟件系統(tǒng)給FPGA的硬件系統(tǒng)一個(gè)采樣速率選擇值,而后FPGA的硬件系統(tǒng)內(nèi)部將譯碼微處理器給的頻率值,頻率選擇器將根據(jù)這個(gè)數(shù)值產(chǎn)生相應(yīng)的頻率輸出,頻率選擇器輸出的頻率又將輸入到控制AD轉(zhuǎn)換的狀態(tài)機(jī)里,這樣控制AD轉(zhuǎn)換的狀態(tài)機(jī)將根據(jù)輸入的頻率進(jìn)行相應(yīng)的頻率采集、數(shù)據(jù)的讀取和向FIFO寫數(shù)據(jù)等操作。

3 控制與存儲(chǔ)模塊
    本系統(tǒng)在存儲(chǔ)方式設(shè)計(jì)時(shí)采用流水線操作方式。Nandflash存儲(chǔ)器的寫入有兩個(gè)階段:數(shù)據(jù)加載階段(即通過I/O端口將數(shù)據(jù)寫入頁(yè)數(shù)據(jù)寄存器)和編程階段(在芯片內(nèi)部,將頁(yè)數(shù)據(jù)寄存器中的數(shù)據(jù)轉(zhuǎn)存到非易失性存儲(chǔ)單元內(nèi))。數(shù)據(jù)編程階段是自動(dòng)進(jìn)行的,不需要外部系統(tǒng)的其它操作,但它需要很長(zhǎng)的時(shí)間,其典型值是200μs。而如果采用流水線存儲(chǔ)方式就可克服Nandflash芯片寫入速度較慢的缺點(diǎn)。應(yīng)用流水線操作方式對(duì)Nandflash存儲(chǔ)器進(jìn)行寫操作流程原理如圖3所示。首先對(duì)第一片Nandflash進(jìn)行數(shù)據(jù)的加載,數(shù)據(jù)加載完后,第一片Nandflash隨后就將進(jìn)入自動(dòng)數(shù)據(jù)編程階段;然后再對(duì)第二片Nandflash進(jìn)行數(shù)據(jù)的加載,數(shù)據(jù)加載完后,第二片Nandflash也將進(jìn)入自動(dòng)數(shù)據(jù)編程階段;然后依次對(duì)第三片Nandflash和第四片Nandflash進(jìn)行相同的上述操作。而當(dāng)?shù)谒钠琋andflash數(shù)據(jù)加載完后,第一片Nandflash剛好已經(jīng)自動(dòng)編程數(shù)據(jù)結(jié)束,接著再?gòu)牡谝黄琋andflash重復(fù)剛開始的加載數(shù)據(jù)和自動(dòng)編程數(shù)據(jù)階段。就這樣如此循環(huán)一直到數(shù)據(jù)采集完成。這就是流水線的存儲(chǔ)方式。從整體時(shí)間來(lái)看,整個(gè)系統(tǒng)在一直的進(jìn)行著數(shù)據(jù)的傳輸和存儲(chǔ)。

c.jpg


d.jpg
   
    在數(shù)據(jù)加載期間本系統(tǒng)應(yīng)用DMA傳輸控制方式,即:每當(dāng)FIFO的半滿標(biāo)志信號(hào)HF產(chǎn)生一次有效的電平時(shí),處理器就啟動(dòng)一次中斷,在中斷程序中,處理器將完成對(duì)Nandflash寫命令和地址,以及DMA控制器的啟動(dòng)。一旦DMA控制器啟動(dòng),處理器就將轉(zhuǎn)入后臺(tái)進(jìn)行有效地址的運(yùn)算等而不參與數(shù)據(jù)傳輸過程,整個(gè)數(shù)據(jù)從FIFO到Nandilash存儲(chǔ)器的傳輸過程是由FPGA內(nèi)部編寫的DMA控制器控制完成。啟動(dòng)一次DMA控制器傳輸一頁(yè)2048個(gè)字節(jié)的數(shù)據(jù),一次中斷將完成16K字節(jié)的傳輸。應(yīng)用DMA傳輸?shù)臅r(shí)序示波器波形圖如圖4所示:第0,1,2,3通道是FIFO的讀數(shù)據(jù)時(shí)序波形,第4通道是Nandflash的寫時(shí)序波形。一次DMA傳輸完成后,則處理器還要判斷當(dāng)前頁(yè)是否為最后一頁(yè)第64頁(yè),若不是最后一頁(yè)第64頁(yè),則頁(yè)地址加1,繼續(xù)進(jìn)行DMA傳輸采樣數(shù)據(jù)操作。如果當(dāng)前頁(yè)為最后一頁(yè)第64頁(yè),則判斷當(dāng)前塊是否為本文件的最后一塊,若不是最后塊,則塊地址加1,再跟無(wú)效塊表對(duì)照判斷此塊是否為有效塊,若是則頁(yè)地址置0,繼續(xù)進(jìn)行DMA傳輸采樣數(shù)據(jù)操作;若當(dāng)前塊已是本文件的最后一塊,則本文件的采集數(shù)據(jù)操作完成即本次采集完成。

f.jpg



4 結(jié)論
    試驗(yàn)結(jié)果表明,采集系統(tǒng)性能穩(wěn)定,采集速度能保持在10 Mb/s以上,符合設(shè)計(jì)要求。該系統(tǒng)對(duì)選用低成本、高速、可靠性采集的硬件設(shè)計(jì)具有實(shí)用價(jià)值。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。