尹艷清 楊湘杰 李必超 陳汝佳 吳文博慧
(1.湖南工學院電氣與信息工程學院 湖南省衡陽市 421002 2.武漢群鮮科技有限公司 湖北省武漢市 430000)
FFT 作為時域和頻域轉換的基本運算,是數字譜分析的必要前提[1]。現場可編程邏輯門陣列(FPGA)的出現進一步推進了數字信號處理的發展,FPGA 是基于CPLD 等可編程器件發展而來[2],它是相對ASIC 作為半定制電路出現的,不但解決了ASIC 研發周期長和成本高的缺點,還克服了原有可編程器件門電路數有限的缺點[3],并且FPGA 還能提供高并發的強大計算能力,十分適合于FFT 處理器的實現。隨著集成電路的發展,使得FPGA 的功耗和成本下降[4],FPGA 的應用逐漸從原來的通信領域擴展到消費電子、汽車電子、工業控制、測試測量等廣泛的領域。使用速度更快、開發周期更短的FPGA 芯片進行數字信號處理已成為必然趨勢。

式(1)中的X1(k)和X2(k)分別是N/2 序列的x1(r)與x2(r)的DFT,因此得到的是X(k)前N/2 點的DFT 的結果,根據旋轉因子的周期性,可得到X(k)后N/2 的DFT 結果,可表示為:

根據式(1)和式(2)兩個式子,觀察得到只要計算出兩個N/2 的DFT X1(k)和X2(k),經過特殊的組合,就可以得到N 點的X(k),由于N=2M,這種分解可以使得最后只需要做2 點DFT。這種特殊的運算被命名為蝶形運算,設A 和B 代表輸入的數據序列、c 代表旋轉因子、右上支和右下支分別代表相加的輸出和相減的輸出。蝶形運算的示意圖如圖1 所示。
FFT 處理器主要包括原始數據輸入模塊、地址產生模塊、存儲器模塊、數據轉換模塊、塊浮點模塊、基-2 蝶形運算模塊。FFT處理器的總架構如圖2 所示。
FFT 處理器的工作過程如下:當檢測到信號輸入后,控制原始數據輸入模塊進行信號的接收并且完成倒序后寫入到RAM 中;完成原始數據輸入后,地址產生模塊收到啟動信號產生蝶形單元計算所使用的RAM 地址以及讀取旋轉因子的ROM 地址;RAM 中的數據通過串轉并模塊輸入到基-2 蝶形運算單元進行運算,運算完成后的數據將通過塊浮點的防溢出處理后通過并轉串模塊后傳輸到RAM 中;完成一級運算后,上一級蝶形運算的結果保存在原位,將繼續重復蝶形運算的過程直到完成最后一級計算后輸出使能信號后,就可以從RAM 中讀出FFT 處理器的計算結果。

圖1:蝶形運算單元

圖2:FFT 處理器架構

圖3:FFT 處理器時序仿真結果圖

圖4:Matlab 的512 點FFT 仿真結果

圖5:Matlab 中Modelsim 的仿真結果

圖6:實驗平臺組成

圖7:FFT 處理器實驗平臺

圖8:信號發生器輸入波形圖

圖9:硬件測試平臺屏幕輸出
輸入系統的原始數據進行一輪完整的運算后在Modelsim 中得到仿真結果如圖3 所示,其中上下兩個波形分別是結果的實部和虛部。
為了證明FFT 處理器時序仿真結果的正確性,使用Matlab 軟件自帶的FFT 計算函數與Modelsim 軟件仿真的結果進行對比來驗證系統功能是否滿足設計要求。
3.2.1 Matlab 的仿真
輸入信號經過FFT 計算后得到的結果如圖4 所示,可以看出頻譜圖關于中心軸對稱,分析前半部分可以明顯的看出輸入信號的頻率分量為45Hz 和75Hz。
3.2.2 Modelsim 的仿真
在FFT 處理器的時序仿真后,得到的計算結果保存在了RAM中,為更加直觀的觀察FFT 處理器的運算結果可以將RAM 中的數據導出為文本文件,通過Matlab 進行數據轉換后得到的FFT 處理器仿真如圖5 所示,同樣可以看出頻譜圖關于中心軸對稱,分析前半部分可以明顯的看出輸入信號的頻率分量為45Hz 和75Hz。
對比Matlab 的仿真結果和Modelsim 的仿真結果可以看出兩者結果基本一致。
實驗平臺組成如圖6 所示。其中ADC 采用處理模塊采用的是TI 公司的ADS830;FPGA 芯片采用Altera 公司的FPGA 芯片颶風四代EP4CE6E22C8N;顯示模塊是通過STM32 驅動SPI 屏幕模塊完成,STM32 芯片采用STM32F103RCT6。
搭建的實驗平臺實物如圖7 所示。實驗步驟如下:將各個模塊通過杜邦線正確的連接起來,接通電路的電源,然后使用信號發生器產生波形信號輸入到ADC 采集電路,經過FFT 處理器處理后的結果將在STM32 驅動的屏幕上顯示,觀察系統工作時各個模塊的狀態并分析數據結果。
在信號發生器端口輸出一個幅值為1,410V,頻率為50Hz 的正弦波信號到此實驗平臺中,信號發生器輸入如圖8 所示,輸入波形后可以在屏幕得到如圖9 所示的結果,F 為頻率測量結果,在屏幕顯示為51Hz,R 為總電壓有效值,屏幕顯示1.01V,屏幕輸出的頻率和電壓結果符合輸入波形的特性,FFT 處理器在硬件平臺的功能符號設計要求。
隨著高速通信芯片的出現,基于FPGA 的快速傅立葉變換算法的實現,保證了運算精度,大大提高了運算的速度,達到了系統高速實時的要求。