微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教关于FFT的问题

请教关于FFT的问题

时间:10-02 整理:3721RD 点击:

基本情况:xilinx,streaming,32点, fwd_inv为高,fwd_inv_we为高,scale_sch_we为低

1,
对一个正弦波采样,一周波采集32个点,将这32个数据存在一个ram中

2,
FFT的start始终为高,使用100MHz的时钟循环读ram

我的问题是:


我采样的是单一的正弦波,输出为什么在xk_index为1和31两处都有比较大的值?究竟根据该输出怎么确定输入信号的频谱,还是别的什么地方弄错了?





第一个问题已经明白了,请教大家第二个问题

图片看不清楚

对一个周期为32的正弦函数 sin(2*pi/32*x) 在 x=0,1,2..,31 处采样,得到32个数据点。对这32个数据点做FFT,得到的值的绝对值是:
  6.69535287e-17,   1.60000000e+01,   1.06198890e-15,
         3.34075122e-15,   5.78108537e-16,   1.36967395e-15,
         5.13668130e-16,   5.61856269e-15,   3.39729804e-16,
         1.30066785e-15,   1.03805465e-15,   4.09153824e-16,
         6.30304227e-16,   2.70418975e-16,   4.08511267e-16,
         6.12911139e-15,   1.55091076e-16,   5.55111512e-17,
         4.08511267e-16,   8.22243630e-16,   6.30304227e-16,
         1.32438138e-15,   1.03805465e-15,   5.61856269e-15,
         3.39729804e-16,   8.40036149e-16,   5.13668130e-16,
         5.12795349e-16,   5.78108537e-16,   1.44144099e-15,
         1.06198890e-15,   1.60000000e+01
的确是第1个和31个FFT值比较大,LZ的输出没有问题

因为你输入的是实数信号,所以结果是正确的。
plot(n*fs/a,magR_fix);把你的数据按这个画图就得到频谱了,其中n是0:31,fs是你的采样频率,a是点数32,magR_fix是输出变换复数信号的模值,abs(real+1i*imag).

我的意思是为什么会出现两个较大的点呢,不是一个点代表一个频率吗,既然我的信号是单一频率的,那么变换后的值也应该有一个点模值较大才对啊!

哎 …… 对于实信号输入 FFT的结果 在0~Fs/2 与 Fs/2 ~ Fs 上是对称的。
你输入一个复信号 就能看出区别来了

32个点 描述 一个周期 峰值 就是在 1 与31,描述两个周期就是在 2与30……………………
根据采样定理最高到 16个周期 ,是不是 很神奇?

我看到过一个文章说Fn=(n-1)*FS/N,如前面所说的话,如果我根据变换后的结果判断信号的频谱时,只在0到N/2之间取值就可以了?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top