关于altera的fft核使用问题记录
altera的fft核使用比较特别,今天我做了一下仿真,发现一些问题,现做记录如下:
1,ip配置 parameters选项卡主要是fft变换的长度和数据长度,旋转因子长度,需要注意的是“Twiddle factor precision must be less than or equal to data precision”
2,在architecture选项中,io data flow 是比较重要的,有四个选项 streaming, variable streaming ,buffered burst,burst 四个选项,简单理解,其实就是关于性能和资源的选项,streaming方法能够连续的输入,连续的输出,而burst就不能,中间是有一段时间不能输入或输出的,而variable streaming可以动态配置fft长度,更复杂的理解需看fft ip核的手册,本次实验只用了streaming,其他的选项可以忽略。
3,step2中,两个生成选项都选。生成的文档中包含.vo的网表文件和testbench。还有verilog源文件,奇怪的是,我直接把源文件和testbench复制出来,添加常用的库后建立工程编译不通过,总是提示找不到某个模块,没办法,只好用网表文件和testbench文件仿真,没问题。
3,自己编写testbench去了解fft要求的时序,发现sink_sop必须与sink_valid同时有效并且是一个周期,否则相对于sink_valid滞后的话source _error 出现01错误,查手册发现是valid goes high, but there is no start of frame。
sink_sop滞后多少周期01就出现多少周期。
4,对于输出,关于指数,实部,虚部与实际数值的关系,手册上也有说明和实例,如下所示
另外补充一点:输出是补码表示的。
5,做fft之前必须把数值scaling一下变成fixpoint的,完了之后再变回去。