2018年TI杯多省聯(lián)賽落下帷幕。看了賽題,覺得還是蠻有意思的,第一個題目,是進行電流幅度的計算,需要用到FFT運算。我這里是在Intel Cyclone V SoC上進行了一次實驗,使用12位有符號的高速ADC(AD9226),通過控制采樣設(shè)置采樣率為2048Hz,采樣8192個點,然后執(zhí)行FFT運算。
在網(wǎng)上找了一個成熟的FFT運算代碼,加入工程中編譯,結(jié)果發(fā)現(xiàn)計算的幅度值永遠只有實際幅度值的1/4,而該代碼在NIOS II CPU上運行卻是正確的。一直沒找到問題所在。特發(fā)代碼出來,看有沒有人能指點一二。
FFT.c
main文件里有些許冗余代碼沒有刪掉,請直接看main函數(shù)中相關(guān)內(nèi)容即可。
以下為完整的DS-5工程文件源碼。
ADC_FFT.rar(83.11 KB, 下載次數(shù): 999)(點擊閱讀原文下載)
在運行結(jié)果中,如果對FFT的運算結(jié)果乘以4,得到的結(jié)果就是正確的幅值。如下圖是乘以4之后的結(jié)果,一個是10Hz頻率時候,一個是100Hz頻率時候:
再次說明下參數(shù):2048Hz采樣率,8192個點FFT,ADC是12位有符號ADC。使用的DMA完成數(shù)據(jù)的采集,DMA采集了2個通道共24位的數(shù)據(jù),然后高16位存儲通道1的數(shù)據(jù),低16位存儲通道0的數(shù)據(jù),需要注意的是。每個16位的數(shù)據(jù)中,低12位為數(shù)據(jù),高12位始終為0。
-
FFT
+關(guān)注
關(guān)注
15文章
440瀏覽量
60344 -
代碼
+關(guān)注
關(guān)注
30文章
4880瀏覽量
70025
原文標題:【2018電賽A題】關(guān)于Linux下做FFT運算的一疑惑
文章出處:【微信號:elecfans,微信公眾號:電子發(fā)燒友網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
有關(guān)fft做相關(guān)運算問題,求大神幫幫
omap138+CCS平臺下,有沒有ARM9的fft運算庫?
【2018電賽A題】關(guān)于Linux下做FFT運算的一疑惑
調(diào)用STM32的DSP庫做fft運算補零是為了補充虛部嗎?
利用FFT IP Core實現(xiàn)FFT算法
DFT和FFT的運算量
基于FPGA高精度浮點運算器的FFT設(shè)計與仿真

如何使用stm32f4 dsp庫做fft運算

關(guān)于Linux下多線程編程技術(shù)學(xué)習(xí)總結(jié)

基于Quartus II的綜合仿真實現(xiàn)FFT IP核的FFT算法

關(guān)于STM32浮點運算單元FPU的應(yīng)用示例

評論