因为FFT ip的处理是浮点类型,输入输出数据都为浮点。需要将16bitI/Q数据转换为32bit浮点。首先是在 上搜索整数转二进制浮点方法,想verilog代码实现,无意中发现有整数转浮点IPcore。
-
在Modelsim中验证整数转换浮点IP的使用正确性;
-
通过计算浮点的覆盖范围知道3.4e+38;可以包括四次方运算的最大值范围;
-
FFT IP core的阅读使用,根据输入输出信 ,分别确定各信 的作用 与时序;
-
在FFT仿真时,TB文件给入数据没有考虑输入数据应该是二进制浮点类型,导致第一次仿真无数据输出;在仿真时应该关注IP core 输出的任何有效指示信 ,反馈信 。确保IP core 正常使用之后再添加 到别的模块中;
-
浮点运算中间数据也应该使用浮点类型乘除,加减方法。千万不可以使用常规减加方法;
-
数据源一定要保持稳定,不然非常容易影响后续的数据处理模块;很难分析原因;
-
在修改项目文件时,修改部分相关的部分都需要考虑是否需要修改。不可以遗忘,所以说模块化设计,按功能划分好处就是修改时能够更加轻松准确;
-
在项目中输出管脚千万记得对其约束位置,不可以闲置!因为闲置会使得这些个输出随机分配到FPGA引脚,也就是会给fpga输入随机的信 干扰fpga的正常工作,非常危险!
-
数据的延时和数据的有效使能必须在输入和输出模块时对齐!不可以遗留延时问题到下一个模块;
-
不要随意怀疑软件不正常工作,更加不要随意重装这种大型软件。在做重大决策,要在排除其他可能的情况下做出。不要轻易处理。最好的方法是对比。
-
在signalTap中添加信 不要将post synthesis 类型和pre synthesis类型混合!!!选择presybthesis类型可能更费时间查找相应的node。可以缩小查找范围,模糊查找;
-
要完整的显示一帧数据频谱,必须要采集到完整的一帧以上数据;并且signalTap中采样时钟一定要跟数据匹配;
-
添加四次运算模块之前,先仿真确保数据无溢出现象;存在个别向下溢出!
-
先确定输入数据无问题,在查看输出数据是否有误!
-
Matlab读取的signalTap的数据方式是否不合适写整数型转化为二进制浮点型数据;
-
一直担心四次方运算结果在FFT中运算超过了单精度浮点运算范围,所以在16bitI/Q进入时先除以2^14.再进行FFT运算;
-
关于延时模块:用移位寄存器方法比用always模块延时更加节省资源;
-
尽量减少PLL的使用,这样可以更好的约束时序;
-
仿真之前一定要想好预期的目标信 ,目标波形时序;
-
严谨确保每一步的正确,否则会影响下一步处理。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!