摘要: 設計了一套實時功率譜分析系統,主要用于信號的實時功率譜分析。采用DSP 浮點芯片TMS32C6713 作為系統的主處理單元,負責進行功率譜分析; FPGA 芯片Spartan xc2s200 為主控制單元,并通過CY7C68013 USB 芯片與基于LabVIEW 的上位機進行通信。為了保證系統的實時性,在DSP 中使用了實時操作系統內核DSP/BIOS. 它提供了搶占式多線程、硬件抽象、與寄存器配置等功能。分別采用頻率為25 Hz、100 Hz 的正弦信號對該系統進行標定。
?
0 引言
功率譜分析在現代工業中有著極為廣泛的應用[1 - 3],如石油探測、噪聲分析、機床故障判斷等。針對許多應用中對功率譜分析的實時性要求,針對工業中常見信號的特征,設計了該系統,該系統在諸多工業應用的功率譜分析中是可以通用的。
以TI DSP 浮點芯片TMS32C6713 為主處理單元,FPGA 芯片Spartan xc2s200 為控制單元,使用CY7C68013 USB 芯片與基于LabVIEW 的上位機進行通信。同時系統使用了實時操作系統內核DSP/BIOS. DSP/BIOS 是為集成開發環境CCS 開發的一個尺寸可伸縮的實時內核,是為需要實時調度與同步而設計的,提供了搶占式多線程,硬件抽象,與寄存器配置等功能[4]。
1 功率譜分析方法
系統的功率譜分析采用了非參量方法。具體流程是先使用漢明窗對信號截斷為若干段長為L 的子信號段,然后對各子信號段分別進行功率譜估計,最后對各信號段的功率譜取算數平均值。對長為L 的子信號段 的周期圖功率譜估計方法如下:
2 系統設計
2. 1 系統整體設計
系統整體設計如圖1 所示,FPGA 控制ADC 芯片AD9240 進行采樣,當ADC 采滿512 ×14 bit 數據之后通過通用I /O 口( GPIO) 中斷DSP 芯片,DSP 芯片通過增強型DMA( EDMA) 將數據讀入DSP進行功率譜估計,DSP 處理完數據后將數據交給FPGA,FPGA 再通過USB 芯片CY7C68013 將數據傳輸給上位機顯示。
圖1 系統結構
2. 2 濾波放大電路
系統放大濾波電路是由ADA4004 - 4 組成的濾波放大電路,由四階帶通組成,通帶范圍為10 Hz ~ 3 kHz,放大倍數為1000倍,如圖2 所示。
圖2 帶通濾波放大電路
2. 3 DSP 模塊
DSP 模塊是整個系統的處理核心。為了保證系統的時序,使用了實時操作系統內核DSP/BIOS 進行任務調度。在DSP/BIOS 中,編寫了3 個線程: 讀A/D 數據的線void AD( ) ,做FFT的線程void FFT( ) ,寫USB 的線程void USB_Write( ) 。3 個線程之間通過Semaphore 通信。
下面以void USB_Write( ) 線程為例說明:
void USB_Write( )
{
while( 1)
{
SEM_pend( &fftComplish,SYS_FOREVER) ; / /等待FFT 的完成
usbWrite( ( float* ) power,N > > 1) ; / /前面已經定義好的函數,將FFT 后的數據傳輸走
SEM_post( &usbWriteComplish) ; / /告訴其他線程FFT 后的數據已經傳輸完成
}
}
ADC 芯片由FPGA 控制,并通過FPGA 讀取采樣后的數據,當FPGA 讀滿大小為512 × 14 bit 的buffer 后中斷DSP,DSP 的線程void AD( ) 通過EDMA 從FPGA 的buffer 讀取512 × 14 bit數據,讀取完成后觸發FFT 線程。
FFT 運算線程void FFT( ) 負責對void AD( ) 讀入的512 ×14 bit數據進行FFT 變換,并最后轉化為功率譜。FFT 模塊是系統計算量最大的部分,考慮到系統的性能,使用庫DSP67x. lib,調用它的庫函數void DSPF_sp_cfftr2_dit( float* x, float* w,short n) 進行基2 FFT 計算。
當FFT 線程完成后,會觸發void USB_Write( ) 線程,將功率譜分析的結果傳輸給FPGA,FPGA 再將數據傳輸給由FPGA 控制的USB 芯片CY7C 68013。
2. 4 FPGA 模塊
FPGA 模塊使用Verilog HDL ( HDL: Hardware Discription Language) 語言編寫。FPGA 采用Spartan2 系列xc2s200 芯片。該模塊是系統的控制核心,控制著ADC 芯片與USB 芯片,以及通過DSP 的EMIF 接口與DSP 進行通信。
對于ADC 芯片,FPGA 通過接受用戶在上位機設定的采樣頻率,為ADC 芯片提供該頻率的時鐘信號,使ADC 芯片工作在該采樣頻率下; 同時在ADC 時鐘上升沿到來時讀取一次數據ADC 所采樣的數據,并存放在FPGA 內部,當FPGA 采集完512× 14 bit 數據之后,中斷DSP 芯片,DSP 芯片將數讀走。FPGA傳輸數據給DSP 的Verilog 代碼如下:
assign EXT_INT = ( data_addr = = 511) ; / /采完512 個數后FPGA通過DSP 芯片的外部中斷引腳中斷DSP 芯片
reg[13: 0]TED_o;
always @ ( CE[2] or TEA or dout)
if ( ~ CE[2]&& ( TEA = = 4’b0000) )
TED_o = dout;
assign TED = ( ~ AOE) ? TED_o : 16’bz; / /DSP 芯片讀取FPGA內部數據
USB 芯片由FPGA 芯片控制。當FPGA 收到從DSP 芯片傳輸過來的功率譜分析數據后就會將數據交給USB 芯片的端點0 進行傳輸,USB 芯片將該數據傳輸給LabVIEW 上位機顯示。
2. 5 USB 模塊
USB 芯片采用了EZ - USB FX2 系列芯片之中的CY7C68013,該芯片符合USB 2. 0 標準,可以工作在USB 2. 0 的最大速度下。系統中,USB 芯片工作在slave FIFO 模式下。
2. 6 ADC 模塊
ADC 芯片選擇14 bit 芯片AD9240,由FPGA 為其提供時鐘。
2. 7 上位機模塊
上位機軟件采用LabVIEW 編寫,對功率譜估計的結果實時顯示。首先,需要安裝NI-VISA,NI-VISA 是一個用來與各種儀器總線進行通訊的高級應用編程接口( API) [5 - 6]。安裝完成之后,還需要安裝USB 設備驅動程序。之后,就可以在Lab-VIEW 上實現與USB 設備的通信。
3 系統標定
使用SPF20 信號發生器產生頻率分別為25 Hz、100 Hz,幅度為0. 5 mV 的正弦波信號對該功率譜分析系統進行標定,在上位機上對ADC 采樣頻率設定為512 Hz.
圖3 為使用該系統對上述正弦信號功率譜分析結果。譜線高度為0. 125 mW/Hz 左右( 由于有噪聲,所以略有浮動) ,這與正弦信號的理論功率譜是吻合的,由此完成系統的標定。
圖3 LabVIEW 顯示的正弦信號的功率譜分析結果
4 結束語
利用DSP 芯片與FPGA 芯片設計了一套功率譜分析系統,并使用了實時操作系統內核DSP/BIOS,可以保證系統的實時性,完全可以滿足對實時性要求很高的工業場合; 同時該系統使用方便,成本較低,配合各類傳感器,在工業的許多領域具有很好的使用價值。
評論