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