本文目录一览

1,使用DSP进行FFT运算有什么优点

因为DSP处理器上FFT要用到的,乘法器加法器都已经弄在硬件上了, so, 用硬件上做FFT自然就更快了、

使用DSP进行FFT运算有什么优点

2,利用DSP处理数字信号的FFT傅里叶变换过程详解

采样不需要dsp去采,外面的时钟会触发AD进行采样,如果采样速度高,则先存储到fifo,fifo半满后,通知dsp读取fifo一半容量的数据,dsp对这些数据处理后再输出的输出fifo。fft变换后的数据是频谱,表示了各个频率分量的大小。如果采样速率不高,没有fifo,则由dma控制器去读取数据到dsp内部ram,通常会采用双缓冲机制,开辟两个输入buffer,两个输出buffer,cpu通常不用自己去读ad转换器采用的数据,这些体力活让dma干就行,cpu只用负责处理数据。

利用DSP处理数字信号的FFT傅里叶变换过程详解

3,2048点FFT算法的verilog程序输入和输出数据是否都要是有符号位的

不管输入是否是有符号数,输出肯定会是有符号数,因为运算里面有加减乘除,并且运算数都是有正有负,所以结果必须用有符号数表示。所以输入输出数据必须要带符号位。
也许是的。

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运算有什么优点  
下一篇