第三步,对FFT的IP核进行封装 说实话,第一次看到fft模块居然有那么多行参数需要设置,我整个人都麻了。。。。。。。。。。
相比较matlab只需要设置输入即可,vivado的FFT核模块要复杂的多。 我们庖丁解牛,把他们分开来分析,就会很好理解。
图:整个模块分为四大部分
- 第一个方框的是配置FFT的信息,我们通过控制这些输入信号,来控制FFT的运作方式。
(1)s_axis_config_tdata:最后一位如果为1则是FFT模式,为0则是IFFT模式,这里我们设置为1 (2)s_axis_config_tvalid:配置信息有效位,恒为1即可 (3)s_axis_config_tready:配置完成标志,不需要的信号我在这里直接设置为空 2. 第二个方框:待FFT信号输入模块 (1)s_axis_data_tdata:待fft信号,需要注意的是,高16位为虚部,低16为是实部。这里我的输入数据全是实数,需要令高16位为0,再把它们拼接起来 (2)s_axis_data_tvalid:输入数据有效位,令该位和输入数据的第一位对齐。当输入信号结束时把它置0即可结束运算。 (3)s_axis_data_tready: 用不到,空置即可 (4)s_axis_data_tlast:当fft计算即将结束(到最后一位数据时),该标志位置1 3. 第三个方框:FFT计算后输出模块 (1)m_axis_data_tdata:这就是我们需要的FFT输出后的信号,仍然是高n位虚部,低n位实部 (2)m_axis_data_tvalid:当FFT开始输出时,该标志位一直置1。计算结束后,该位置0 (3)m_axis_data_tready:一直置1即可
|