基于FPGA的高速數(shù)據(jù)采集系統(tǒng)設(shè)計
掃描二維碼
隨時隨地手機看文章
摘要:為了在提高數(shù)據(jù)采集卡的速度的同時降低成本,設(shè)計了一種應用流水線存儲技術(shù)的數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)應用軟件與硬件相結(jié)合的方式來控制實現(xiàn),通過MAX1308模數(shù)轉(zhuǎn)換器完成ADC的轉(zhuǎn)化過程,采用多片Nandflash流水線數(shù)據(jù)存儲模式對高速采集的數(shù)據(jù)進行存儲。搭建硬件電路,并在FPGA內(nèi)部通過編寫VHDL語言實現(xiàn)了采集模塊、控制與存儲模塊和Nandflash存儲功能。調(diào)試結(jié)果表明,芯片的讀寫時序信號對應的位置準確無誤,沒有出現(xiàn)時序混亂,且采集速度能保持在10 Mh/s以上。系統(tǒng)實現(xiàn)了低成本、高速多路采集的設(shè)計要求。
關(guān)鍵詞:高速采集;流水線存儲;FPGA
0 引言
為使計算機能對數(shù)據(jù)采集系統(tǒng)輸入的模擬量進行處理,必須經(jīng)由數(shù)據(jù)采集系統(tǒng)將模擬量轉(zhuǎn)化為數(shù)字量。FPGA是在CPLD等邏輯器件的基礎(chǔ)上發(fā)展起來的,其高集成度能大大縮小電路板的尺寸,降低系統(tǒng)成本,提高系統(tǒng)的性能和可靠性,適合于時序、組合等邏輯電路的應用場合。一個完整成型的探測系統(tǒng)通常都有采集儲存部分,無論是電信號、光信號、聲音信號等在被探測器接收到后,大部分都需要轉(zhuǎn)化為數(shù)字信號才能再傳給處理器完成分析、判斷的過程。現(xiàn)在的一些高速大容量采集系統(tǒng),往往價格比較昂貴。本論文主要論述一種應用FPGA等來控制,采用多片Nandflash存儲的低成本、高速、多路、可靠的數(shù)據(jù)采集系統(tǒng),本文主要探討硬件設(shè)計和存儲設(shè)計。
1 系統(tǒng)總體設(shè)計方案
數(shù)據(jù)采集系統(tǒng)的工作原理是:各種信息經(jīng)過傳感器后轉(zhuǎn)化成模擬電量信號,通過ADC將模擬量轉(zhuǎn)換為數(shù)字量信號,而后進行傳輸存儲和處理。本系統(tǒng)中,在軟件和硬件相結(jié)合的控制下,系統(tǒng)將采集到的模擬信號經(jīng)過A/D轉(zhuǎn)換器件轉(zhuǎn)換后,將轉(zhuǎn)換結(jié)果先緩存到FIFO,再轉(zhuǎn)存到非易失性Nandtlash陣列中。其中,F(xiàn)IFO不但可以實現(xiàn)緩存功能,還可以解決A/D轉(zhuǎn)換之后數(shù)據(jù)位數(shù)跟Nandflash存儲器的數(shù)據(jù)線位數(shù)不匹配的矛盾。如圖1系統(tǒng)總體設(shè)計方案框圖所示,本系統(tǒng)采用FPGA內(nèi)部軟核microblaze處理器作主控制器即軟件控制器,而FPGA內(nèi)部邏輯資源則用于產(chǎn)生硬件控制時序,整個系統(tǒng)就是在兩者相結(jié)合協(xié)調(diào)下進行數(shù)據(jù)的采集以及傳輸。
2 硬件控制器的設(shè)計
整個數(shù)據(jù)采集系統(tǒng)含有數(shù)據(jù)采集模塊和數(shù)據(jù)傳輸模塊。其中數(shù)據(jù)采集模塊由AD數(shù)據(jù)轉(zhuǎn)換模塊和Nandflash數(shù)據(jù)存儲模塊組成。系統(tǒng)采用USB接口做數(shù)據(jù)傳輸模塊,在此不作為本論文的重點進行描述。在數(shù)據(jù)傳輸部分本系統(tǒng)采用了DMA傳輸技術(shù)。其FPGA內(nèi)部電路功能模塊如圖2所示。
其中ALE,WR分別連接處理器的地址鎖存和WR引腳。而處理器設(shè)置成地址總線和數(shù)據(jù)總線分時復用的模式。這樣FPGA可以通過ALE信號來鎖存處理器的地址。而控制命令生成器用來譯碼產(chǎn)生相應的命令和操作。DMA控制器是我們自己編寫的特定的控制器,它需在收到處理器的DMA使能命令的情況下使得DMA_EN有效,然后在收到DMA開啟信號DMA_restart后,才會啟動一次DMA傳輸數(shù)據(jù),每啟動一次傳輸一頁2 K的數(shù)據(jù)。在傳輸過程中,因為是多片F(xiàn)IFO的讀,為了數(shù)據(jù)不會亂,我們通過一個特定的控制器將DMA_FLASH_WE和多片F(xiàn)IFO的DMA_FIFO_RD匹配的統(tǒng)一起來產(chǎn)生了多片F(xiàn)IFO輪換讀的操作。
在采樣速率選擇的設(shè)計中,我們是應用先微處理器的軟件系統(tǒng)給FPGA的硬件系統(tǒng)一個采樣速率選擇值,而后FPGA的硬件系統(tǒng)內(nèi)部將譯碼微處理器給的頻率值,頻率選擇器將根據(jù)這個數(shù)值產(chǎn)生相應的頻率輸出,頻率選擇器輸出的頻率又將輸入到控制AD轉(zhuǎn)換的狀態(tài)機里,這樣控制AD轉(zhuǎn)換的狀態(tài)機將根據(jù)輸入的頻率進行相應的頻率采集、數(shù)據(jù)的讀取和向FIFO寫數(shù)據(jù)等操作。
3 控制與存儲模塊
本系統(tǒng)在存儲方式設(shè)計時采用流水線操作方式。Nandflash存儲器的寫入有兩個階段:數(shù)據(jù)加載階段(即通過I/O端口將數(shù)據(jù)寫入頁數(shù)據(jù)寄存器)和編程階段(在芯片內(nèi)部,將頁數(shù)據(jù)寄存器中的數(shù)據(jù)轉(zhuǎn)存到非易失性存儲單元內(nèi))。數(shù)據(jù)編程階段是自動進行的,不需要外部系統(tǒng)的其它操作,但它需要很長的時間,其典型值是200μs。而如果采用流水線存儲方式就可克服Nandflash芯片寫入速度較慢的缺點。應用流水線操作方式對Nandflash存儲器進行寫操作流程原理如圖3所示。首先對第一片Nandflash進行數(shù)據(jù)的加載,數(shù)據(jù)加載完后,第一片Nandflash隨后就將進入自動數(shù)據(jù)編程階段;然后再對第二片Nandflash進行數(shù)據(jù)的加載,數(shù)據(jù)加載完后,第二片Nandflash也將進入自動數(shù)據(jù)編程階段;然后依次對第三片Nandflash和第四片Nandflash進行相同的上述操作。而當?shù)谒钠琋andflash數(shù)據(jù)加載完后,第一片Nandflash剛好已經(jīng)自動編程數(shù)據(jù)結(jié)束,接著再從第一片Nandflash重復剛開始的加載數(shù)據(jù)和自動編程數(shù)據(jù)階段。就這樣如此循環(huán)一直到數(shù)據(jù)采集完成。這就是流水線的存儲方式。從整體時間來看,整個系統(tǒng)在一直的進行著數(shù)據(jù)的傳輸和存儲。
在數(shù)據(jù)加載期間本系統(tǒng)應用DMA傳輸控制方式,即:每當FIFO的半滿標志信號HF產(chǎn)生一次有效的電平時,處理器就啟動一次中斷,在中斷程序中,處理器將完成對Nandflash寫命令和地址,以及DMA控制器的啟動。一旦DMA控制器啟動,處理器就將轉(zhuǎn)入后臺進行有效地址的運算等而不參與數(shù)據(jù)傳輸過程,整個數(shù)據(jù)從FIFO到Nandilash存儲器的傳輸過程是由FPGA內(nèi)部編寫的DMA控制器控制完成。啟動一次DMA控制器傳輸一頁2048個字節(jié)的數(shù)據(jù),一次中斷將完成16K字節(jié)的傳輸。應用DMA傳輸?shù)臅r序示波器波形圖如圖4所示:第0,1,2,3通道是FIFO的讀數(shù)據(jù)時序波形,第4通道是Nandflash的寫時序波形。一次DMA傳輸完成后,則處理器還要判斷當前頁是否為最后一頁第64頁,若不是最后一頁第64頁,則頁地址加1,繼續(xù)進行DMA傳輸采樣數(shù)據(jù)操作。如果當前頁為最后一頁第64頁,則判斷當前塊是否為本文件的最后一塊,若不是最后塊,則塊地址加1,再跟無效塊表對照判斷此塊是否為有效塊,若是則頁地址置0,繼續(xù)進行DMA傳輸采樣數(shù)據(jù)操作;若當前塊已是本文件的最后一塊,則本文件的采集數(shù)據(jù)操作完成即本次采集完成。
4 結(jié)論
試驗結(jié)果表明,采集系統(tǒng)性能穩(wěn)定,采集速度能保持在10 Mb/s以上,符合設(shè)計要求。該系統(tǒng)對選用低成本、高速、可靠性采集的硬件設(shè)計具有實用價值。