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