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

如何使用stm32f4 dsp庫做fft運(yùn)算

基4fft蝶形圖運(yùn)算單元解析

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

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

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

評論