浮点IP FFT

    因为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的使用,这样可以更好的约束时序;

  • 仿真之前一定要想好预期的目标信号,目标波形时序;

  • 严谨确保每一步的正确,否则会影响下一步处理。

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值