基于FPGA IP核的FFT實(shí)現
FFT處理器模塊采用緩沖突發(fā)數據流結構的信號時(shí)序圖如圖4所示,在系統復位信號(reset_n)變?yōu)榈碗娖胶?,數據源將sink_ready信號置高電平,表明有能力接收輸入信號。數據源加載第一個(gè)復數數據樣點(diǎn)到FFT函數中,同時(shí)將sink_sop信號置高電平,表示輸入模塊的開(kāi)始。在下一個(gè)時(shí)鐘周期,sink_sop信號被復位,并以自然順序加載后面的N-1個(gè)復輸人數據樣點(diǎn)。
當完全載入輸入模塊時(shí),FFT函數復位sink_ena信號,表示FFT不再接收其他輸入數據并開(kāi)始計算輸入數據模塊的變換結果。在FFT處理器內部輸入緩沖區讀取樣點(diǎn)之后,FFT將sink_ena信號重新置高電平,準備讀取下一個(gè)輸入模塊。下一個(gè)輸入模塊的起點(diǎn)由sink_sop脈沖確定。當FFT完成了輸入模塊的變換,并且從設備匯端將source_ready信號(表示數據從設備接收器可以接收輸出數據模塊)置高電平,并且以自然順序輸出復數變換域數據模塊。
4.2 仿真結果分析
在編譯綜合后,工程當中含有基于FFT IP核生成的Matlab文件,這樣就可在Matlab下對工程結果進(jìn)行進(jìn)一步測試,構建信號,并與Matlab計算的理論結果進(jìn)行比較。設輸入函數為z(t)=20 000sin(20πt),點(diǎn)數N=512,采樣頻率為500 Hz,即采樣間隔為O.002 s,采樣的時(shí)間長(cháng)度為O.002 x 512 s,該正弦信號通過(guò)512點(diǎn)FFT處理結果如圖5所示,正弦信號基于IP核Matlab文件仿真結果如圖6所示。
由圖5,圖6比較可以看出FFT、處理器處理后的結果和Matlab計算的理論結果基本一致。都在第11點(diǎn)和第503點(diǎn)取得最大FFT絕對值,兩者的誤差只是在FFT頻譜絕對值的幅度大小原因:一是Altera FFT兆核函數的塊浮點(diǎn)輸出與Matlab這種全精度FFT的輸出相比,存在最低位(LSB)被丟棄的影響;二是工程初始化IP核采用的數據精度取24位(V7.0 IP最大支持24位數據精度)。
5 結 語(yǔ)
在利用FFT IP核進(jìn)行FFT算法實(shí)現的同時(shí),對仿真結果做了全面分析,由于IP核的可塑性很強,增加了芯片的靈活性。使用Altera FFT的IP Core大大減少了產(chǎn)品的開(kāi)發(fā)時(shí)間,Altera還可進(jìn)一步實(shí)現加窗功能,甚至DDC部分(單端信號向I/Q轉換)整合到其FFT處理器模塊中,能進(jìn)一層次簡(jiǎn)化開(kāi)發(fā)的流程,在今后實(shí)際工程應用中高效利用。
fpga相關(guān)文章:fpga是什么
評論