基于dsp的2048点fft要多少行程序,使用DSP进行FFT运算有什么优点
来源:整理 编辑:亚灵电子网 2024-01-06 06:14:11
本文目录一览
1,使用DSP进行FFT运算有什么优点
因为DSP处理器上FFT要用到的,乘法器加法器都已经弄在硬件上了, so, 用硬件上做FFT自然就更快了、
2,利用DSP处理数字信号的FFT傅里叶变换过程详解
采样不需要dsp去采,外面的时钟会触发AD进行采样,如果采样速度高,则先存储到fifo,fifo半满后,通知dsp读取fifo一半容量的数据,dsp对这些数据处理后再输出的输出fifo。fft变换后的数据是频谱,表示了各个频率分量的大小。如果采样速率不高,没有fifo,则由dma控制器去读取数据到dsp内部ram,通常会采用双缓冲机制,开辟两个输入buffer,两个输出buffer,cpu通常不用自己去读ad转换器采用的数据,这些体力活让dma干就行,cpu只用负责处理数据。

3,2048点FFT算法的verilog程序输入和输出数据是否都要是有符号位的
不管输入是否是有符号数,输出肯定会是有符号数,因为运算里面有加减乘除,并且运算数都是有正有负,所以结果必须用有符号数表示。所以输入输出数据必须要带符号位。
4,最快的DSP计算512点fft到底需要多少时间
以TI的DSP2812测试,系统时钟150M,程序调入RAM中运行。分别测试512点FFT,256点FFT和128点FFT四个大步骤用时。512点 用时(us)1步倒序(RFFT32_brev) 42.42步计算(fft.cal) 223.83步实部虚部分离(fft.split) 13.14步计算幅值(fft.mag) 13.8总用时 293.1256点 用时(us)1步倒序(RFFT32_brev) 21.52步计算(fft.cal) 94.93步实部虚部分离(fft.split) 13.14步计算幅值(fft.mag) 13.8总用时 143.3128点 用时(us)1步倒序(RFFT32_brev) 10.82步计算(fft.cal) 393步实部虚部分离(fft.split) 13.14步计算幅值(fft.mag) 13.8总用时 76.7
5,如何使用STM32提供的DSP库进行FFT
DSP库针对没有fpu的处理器使用来加速的。如果自己写的话涉及到浮点运算,那就只有fpu才能发挥其速度。 stm32的dsp库是有例程的,FFT的例程也在其中,仔细看,不复杂的。可以,函数 arm_cfft_radix4_init_f32,用于初始化 fft 运算相关参数,其中: fftlen 用于指定 fft 长度(16/64/256/1024/4096)
6,请教STM32F4 的DSP库 FFT运算的问题求高手指点
代码如下;int32_t main(void) for(index=0;index<2048;index++) testInput_f32_10khz[index]= 100*sin(3.14*index/512); } arm_cfft_f32(&arm_cfft_sR_f32_len1024, testInput_f32_10khz, ifftFlag, doBitReverse); arm_cmplx_mag_f32(testInput_f32_10khz, testOutput, fftSize); arm_max_f32(testOutput, fftSize, &maxValue, &testIndex); for(index=0;index<1024;index++) printf("index%d =%d\r\n",index,(u32)testOutput[index]); } while(1); /* main function does not return */} 1. 如果2048个点,我直接取正弦波的值,那么打印出来是index2 =72203index1022 =72647貌似是对称的。。。for(index=0;index<2048;index++) testInput_f32_10khz[index]= 100*sin(3.14*index/512); }2.但是如果2048个点,我按照下面方式 for(index=0;index<2048;index++) if(index%2==0) testInput_f32_10khz[index]= 100*sin(3.14*index/512); else testInput_f32_10khz[index]= 100*cos(3.14*index/512); }那么测试出来是 index1022 =102399 不对称。。。3.如果我虚部为0,实部位正弦值: for(index=0;index<2048;index++) if(index%2==0) testInput_f32_10khz[index]= 100*sin(3.14*index/512); else testInput_f32_10khz[index]= 0; }出来是index2 =51212index1022 =51212 是对称的。。
7,利用DSP处理数字信号的FFT傅里叶变换过程详解
采样不需要dsp去采,外面的时钟会触发AD进行采样,如果采样速度高,则先存储到fifo,fifo半满后,通知dsp读取fifo一半容量的数据,dsp对这些数据处理后再输出的输出fifo。fft变换后的数据是频谱,表示了各个频率分量的大小。如果采样速率不高,没有fifo,则由dma控制器去读取数据到dsp内部ram,通常会采用双缓冲机制,开辟两个输入buffer,两个输出buffer,cpu通常不用自己去读ad转换器采用的数据,这些体力活让dma干就行,cpu只用负责处理数据。
8,什么是FFT算法DSP是什么
FFT是快速傅里叶变换( Fast Fourier Transform )
DSP是数字信号处理 ( Digital Signal Processing )
1、蝶形算法:
有关蝶形算法的介绍和思想大家百度或者Google一下就很容易找到,这里只是说一下要注意的地方。
蝶形算法中有这样一个有趣的规则:若输入信号的顺序为自然顺序,那么输出信号的顺序就为倒位序(算法参见4)顺序。
2、二维FFT的变换顺序:
首先进行行变换,对变换后的结果再进行列变换。
3、关于二维FFT运算后的结果
按照公式运算出的结果中,能量大部分分集中在四个角,如果我们想要能量集中在中间,我们需要成一个欧拉数,其实也简单,你可以在输入信号时做一个简单的变换,如下描述:
设i,j为输入信号的坐标,那么
输入信号可表示为x(i, j), 若(i + j) % 2 == 0 则取源信号为输入信号,否则取源信号的相反数为输入信号,即 -x(i, j)。
运算出来的结果中,能量就集中在中间位置了。
4、关于倒位序算法
倒位序:就是将数字的各个尾反过来排序后得到的数字后的顺序,举个例子吧
如我们的输入8个信号,我们只需要三个位就可以描述着写信号的下标,比如1 = 001B, 2 = 010B等等,那么1的倒位后为100B = 4, 010B = 2,依此类推,这就是倒位序,最后生成的新的顺序就是排序后的结果,这个结果有一个特点,那就是把偶数和奇数分开,这也就是FFT的理论基础。
文章TAG:
基于基于dsp的2048点fft要多少行程序 使用DSP进行FFT运算有什么优点