FFT的IP核使用.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FFT的IP核使用

现成的东西已经很高端了,自己编的怎么也不好,就像别人家的孩子一样。IP CORE有最优化的代码,效率和资源的兼顾,所以君子性非异也,善假于物也。 之前实验了很久结果老是不对,费尽了各种周折,最终知道自己的测试方法不对。ip core是根所实际信号优化过的,所以要加以实际信号,如正弦波,而我的思路还停留在教书。展开来说,ip core对于小信号不敏感,比如对于N点fft,输入N个1和输入N个2,结果都是一样的。因为对于位宽较宽的数据,如10位,1或2只是1/2^10,所以结果不会有差异。现实中信号的差异是较明显的,而ip core针对这种情况,进行了优化,实现高速运算。 看具体的顶层配置。 首先在MegaWizard设置好一个fft core,通过matlab产生一个时域信号,导入.mif文件,用rom装载,再由rom送给ip core。验证该时域信号通过matlab和ip core的结果差异。 top level如图: cnt1024给rom地址,fft_ctrl控制sink_sop和sink_eop,rom里存着待测信号。 需要注意的是resetr_n要有从0到1的配置,而不能一开始就赋1,会计算错误。其他如,sink_sop要与输入帧头对齐(输入数据块的第一个数据),sink_eop要与帧尾对齐。另外source_exp表示对结果的定标,为负值。如source_exp -4,则结果为source_reak*2^4。仿真结果如下图 可以看到在计算到第二帧的时候,结果开始输出。而256点时,输出开始在第三帧附近,说明点数不同会影响其加速过程。 最后与matlab的fft计算结果进行对比,如下图: 可以看出,在大信号的时候有较准确的贴近,在小信号的时候,失真较大。这也是由于ipcore有限位宽导致的。 心得: 1. 将quartus的波形仿真结果输出到matlab a 在仿真报告上选fileàsave current report section as,存为.tbl格式的文件 b 用excel将该报告打开,筛选所需要的数据。由于clk时钟上下变化,使得每一个数据会重复出现。只需要提取奇数或偶数行的数据即可。提取方法见2. 2. Excel的提取奇数、偶数行:在新的一列如E输入 mod row ,2 ,然后下拉,则该列会出现奇数为1,偶数为0选中该列,使用“筛选”,如筛选1 奇葩的方法是因为没入门,临时就这样吧。 奇葩的方法是因为没入门,临时就这样吧。 接下来需要掌握的: 1.Modelsim的仿真,testbench的编写。现在问题是Modelsim的库怎么也添不上,只是按照网上的教程配置,只知其然不知其所以然,所以应该搞清其文件系统。对quartus也是同样的道理,生成了哪些文件,运行的时候是哪些文件关联。 2.verilog的入门。现在只好最简单的积木,然后从建模到时序,verilog有非常庞大和自由的体系,要反复训练才能得其要领。希望我会喜欢上搭积木的感觉。 最后要谢谢小明,要不是你,我可能一辈子陷入为什么输入1和2结果却都一样的困惑中。实际和理论有很大的差距,多多接触,适应这个实际。

文档评论(0)

wuyuetian + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档