多通道數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要 介紹了一種基于FPGA+DSP的多路數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方案,描述了系統(tǒng)的硬件設(shè)計(jì)方案和硬件電路,闡述了信息采集過程以及外圍通訊接口及軟件設(shè)計(jì)。通過Quartus II8.0及CCS 2進(jìn)行系統(tǒng)仿真,證明了系統(tǒng)設(shè)計(jì)方案的可行性。
關(guān)鍵詞 數(shù)據(jù)采集系統(tǒng);FPGA;DSP;FIFO
在以往數(shù)據(jù)采集系統(tǒng)中,單片機(jī)、DSP常被選作主控制器,但隨著FPGA性能的不斷提高,具有時(shí)鐘域高、內(nèi)部延時(shí)小、速度快、全部邏輯南硬件完成等優(yōu)點(diǎn),因此在高速數(shù)據(jù)采集方面FPGA有著較大優(yōu)勢,但也存在難于實(shí)現(xiàn)復(fù)雜算法的缺點(diǎn)。而DSP適合于高速算法的處理,系統(tǒng)采用FPCA+DSP方案,彌補(bǔ)了系統(tǒng)的不足。系統(tǒng)數(shù)據(jù)采集的控制、緩存及外圍通訊部分,用FPCA硬件實(shí)現(xiàn)。算法處理由DSP完成。在線采集的數(shù)據(jù)存放在DSP外掛的SRAM中。
設(shè)計(jì)采用DE2、THDB-ADA平臺進(jìn)行開發(fā)。DE2平臺選用FPGA EP2C35F672。THDB-ADA是針對DE2開發(fā)板設(shè)計(jì)的一款子開發(fā)板,由FPGA實(shí)現(xiàn)對A/D的控制。在系統(tǒng)中只用到了模塊的A/D轉(zhuǎn)換部分。其中芯片AD9248是一款雙通道模數(shù)轉(zhuǎn)換器。另外DSP選用TI推出的TMS320UC5402。
1 系統(tǒng)設(shè)計(jì)
數(shù)據(jù)采集系統(tǒng)硬件原理如圖1所示,由圖1知DSP收到上位機(jī)發(fā)送的命令完成系統(tǒng)工作參數(shù)的配置,然后向FPGA發(fā)送指令,F(xiàn)PGA收到指令后一是對多路模擬開關(guān)進(jìn)行選通讓選通信號通過信號調(diào)理電路實(shí)現(xiàn)電平調(diào)整,并進(jìn)行A/D轉(zhuǎn)換的時(shí)序控制,二是把轉(zhuǎn)換好的數(shù)據(jù)進(jìn)行數(shù)據(jù)緩存,當(dāng)FIFO滿時(shí)并產(chǎn)生DSP能識別的外部中斷信號及標(biāo)識信號,通知DSP采集數(shù)據(jù),最后DSP對采集到的數(shù)據(jù)進(jìn)行濾波處理、變換、譜分析。
2 硬件設(shè)計(jì)
2.1 通道切換電路
系統(tǒng)采用16通道ADG506模擬開關(guān)進(jìn)行各通道的切換。并具有開關(guān)速度快、泄漏小等特點(diǎn)。主要有A0~A3,S1~S8,D,EN端口。其中A0~A3是二進(jìn)制地址信號輸入端,譯碼結(jié)果用于選擇有效的輸出通道;S1~S16是16路信號的輸入端,在此可根據(jù)需要選擇通道數(shù)。D是被選擇通道的信號輸出端;EN是選擇開關(guān)使能控制端高電平為有效。FPGA通過數(shù)據(jù)幀來進(jìn)行通道選擇,每次只選擇一路,經(jīng)A/D轉(zhuǎn)換后送入FIFO。
圖中,A0~A5表示所選擇通道,其中A4,A5恒為0。D0~D1表示幀結(jié)構(gòu)數(shù)據(jù)起止標(biāo)識位。
2.2 信號調(diào)理電路
信號調(diào)理電路對模擬信號進(jìn)行一定的放大/衰減,使信號的幅度滿足A/D芯片要求。前向調(diào)理電路采用高速低噪聲的模擬開關(guān)MAX4545去選擇不同的反饋電阻,同模擬運(yùn)算放大器MAX817構(gòu)成標(biāo)準(zhǔn)的反相運(yùn)算放大器來實(shí)現(xiàn)前向調(diào)理。MAX817的單位增益3 dB,截止頻率高達(dá)50 MHz,滿足帶寬的要求。MAX4545的4根控制線由FPGA設(shè)計(jì)控制電路去控制,具體是由復(fù)位按鈕進(jìn)行邊沿觸發(fā),使4位輸出電平在0001,0010,0100,1000之間輪流切換,將輸出電平去控制MAX4545的4根控制線,這就實(shí)現(xiàn)了不同的放大倍數(shù)之間切換,控制信號與放大倍數(shù)的對應(yīng)關(guān)系,如圖3所示。
2.3 濾波電路
系統(tǒng)接收到的模擬信號總是混有噪聲成分,為達(dá)到奈奎斯特采樣定理所要求信號的頻率范圍,需要利用低通濾波器除去干擾信號及抑制混疊現(xiàn)象,即進(jìn)行衰減與濾除。設(shè)計(jì)選用二階巴特沃斯低通濾波電路來濾除信號中的高頻分量,其特點(diǎn)是通頻帶內(nèi)的響應(yīng)曲線最大限度平坦,無起伏,而在阻頻帶逐漸衰減為0.2階的巴特沃斯低通濾波器幅頻。
2.4 FPGA硬件電路設(shè)計(jì)
FPGA作為接口電路主芯片,充當(dāng)DSP的前端接口元件,將各種信號轉(zhuǎn)換為DSP能讀取的并行格式數(shù)據(jù)。
FPGA的開發(fā)采用自頂向下的設(shè)計(jì)方法,即指將一個(gè)系統(tǒng)按功能劃分為不同的模塊,而模塊再根據(jù)需要?jiǎng)澐譃槎壞K,依此直到模塊易被實(shí)現(xiàn)為止。通過Verilog編程FPGA即可生成雙口SRAM模塊、ADC接口模塊、調(diào)理電路放大倍數(shù)控制模塊、數(shù)據(jù)接收模塊等,以實(shí)現(xiàn)對輸入信號的采集、存儲、處理和輸出。
2.5 DSP硬件電路設(shè)計(jì)
在數(shù)據(jù)采集過程中,采集的數(shù)據(jù)緩存在FPGA內(nèi)部構(gòu)建的FIFO中在線采集時(shí),通過FPGA與DSP接口將FIFO中的數(shù)據(jù)轉(zhuǎn)存到DSP外掛的SRAM內(nèi),當(dāng)需要分析數(shù)據(jù)時(shí)再從存儲器中取出。DSP外掛Flash存放程序及配置信息。
3 軟件設(shè)計(jì)
3.1 FPGA軟件設(shè)計(jì)
數(shù)據(jù)在傳入FPGA后,直接采用數(shù)據(jù)在傳入FPGA后,可利用SRAM來設(shè)計(jì)的同步FIFO來緩存采樣數(shù)據(jù)如圖4所示:將FIFO抽象為環(huán)形數(shù)組,并用讀或?qū)懼羔榿砜刂茖Νh(huán)形數(shù)組的讀寫。該FIFO提供讀使能fiford和寫使能fifowr輸入控制信號,并指示FIFO的狀態(tài)非空nempty,非滿nfull。未完成一次讀寫操作地址加1。隨著地址的增加,采樣數(shù)據(jù)被依次存入雙口SRAM中,當(dāng)存完數(shù)據(jù)后向DSP發(fā)出信號。
ADC接口模塊主要由分頻器、通道選擇模塊及ADC控制模塊組成。分頻器一方面產(chǎn)牛ADC控制模塊的工作時(shí)鐘,另一方面提供采集啟動(dòng)信號以觸發(fā)通道選擇模塊。通道選擇控制模塊,輸出地址信號到多路開關(guān),用來選擇采集對應(yīng)通道的數(shù)據(jù)信息。該模塊由分頻器產(chǎn)生的采集信號觸發(fā)啟動(dòng)。ADC控制模塊,主要完成模數(shù)轉(zhuǎn)換器的配置與瀆取。根據(jù)通道選擇模塊發(fā)出的A/D啟動(dòng)信號,按照配置信息對選擇的通道進(jìn)行A/D轉(zhuǎn)換。該模塊的數(shù)據(jù)接收觸發(fā)信號在一次A/D轉(zhuǎn)換結(jié)束后該信號有效,表示開始接收轉(zhuǎn)換結(jié)果。為提高準(zhǔn)確性,采取平均值濾波的方法,隨后將結(jié)果輸出至寄存器陣列,同時(shí)向通道選擇模塊輸出數(shù)據(jù)有效信號,表示該通道數(shù)據(jù)采集結(jié)束數(shù)據(jù)有效。
3.2 DSP軟件設(shè)計(jì)
DSP軟件設(shè)計(jì)包括模塊化編程,其中包括初始化模塊、數(shù)據(jù)采集模塊、通訊模塊、FFT功能模塊等。
初始化模塊涉及鎖相環(huán)的初始化,F(xiàn)lash的初始化、SRAM的初始化等一鎖相環(huán)的初始化,系統(tǒng)中PLL輸入時(shí)鐘為50 MHz的晶振,輸出時(shí)鐘為兩個(gè),一是DSP內(nèi)部時(shí)SYSCLK1二是EMIF3。為得到這兩個(gè)時(shí)鐘而進(jìn)行初始化。Flash的初始化,EMIF接口對于異步器件的控制通過A1CR來實(shí)現(xiàn),主要根據(jù)Flash參數(shù)設(shè)置數(shù)據(jù)位寬、讀寫建立時(shí)間、讀寫選通時(shí)間以及讀寫保持時(shí)間。SRAM的初始化,即完成對EMIF內(nèi)部關(guān)于SRAM參數(shù)寄存器的初始化。
DSP對數(shù)據(jù)采集控制主要通過查詢與中斷兩種方式進(jìn)行。該系統(tǒng)是通過巾斷方式進(jìn)行,即指當(dāng)FIFO滿時(shí)產(chǎn)生一個(gè)高電平中斷。其主要流程由系統(tǒng)初始化和開啟中斷組成。
初始化程序完成對所有變量及DSP相應(yīng)寄存器的初始化工作,同時(shí)復(fù)位SRAM,并完成采集通道及量程的設(shè)置,隨后開啟中斷,進(jìn)入等待中斷狀態(tài)。當(dāng)檢測到中斷時(shí)進(jìn)入中斷服務(wù)程序,并查詢FPGA相關(guān)寄存器確定是哪一通道的中斷,并將數(shù)據(jù)存于SRAM中。
UART在FPGA內(nèi)部實(shí)現(xiàn),但接收數(shù)據(jù)的是DSP。DSP接收數(shù)據(jù)時(shí)UART采用中斷方式,即由UART接收FIFO滿產(chǎn)生中斷通知DSP讀取信息。
DSP對采集到的數(shù)據(jù)進(jìn)行濾波處理、變換、譜分析,下面以FFT為例對信號進(jìn)行譜分析。FFT算法基本可分為兩大類時(shí)域捕取法FFT和頻域抽取法FFT。在設(shè)計(jì)中選擇簡單實(shí)用的時(shí)域抽取基二FFT算法。并采用基二的突發(fā)輸入輸出結(jié)構(gòu)。如圖5為采樣信號經(jīng)過采樣點(diǎn)為512的信號頻譜圖。
3.3 FPGA與DSP的接口設(shè)計(jì)
FPGA與DSP兩者之間的通信,可分為DSP到FPCA為寫操作,F(xiàn)PGA到DSP為讀操作。DSP發(fā)給FPGA的配置信息為通道切換電路的選通信號,各通道數(shù)據(jù)采集使能信號及清零信號,UART的數(shù)據(jù)格式及中斷源設(shè)置等。FPGA返回給DSP的信息主要有數(shù)據(jù)采集存儲的窄滿標(biāo)志,實(shí)際采集的數(shù)據(jù),UART的中斷信息等。
4 結(jié)束語
提出了一種基于FPGA+DSP的高速多通道數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)方案,將FPGA及DSP的優(yōu)勢充分結(jié)合,并針對間歇性數(shù)據(jù)傳輸特征,設(shè)計(jì)以FIFO作數(shù)據(jù)過渡。該系統(tǒng)經(jīng)過測試,工作穩(wěn)定,滿足采集速度及A/D轉(zhuǎn)換精度的要求。