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