前面的文章我们介绍了关于FFT的硬件实现。关于FFT的逆运算IFFT,其实就是将实现FFT的过程反过来执行就可以了。

在实现过程中要注意很多问题。

同 FFT一样,效率问题。以2048点为例,根据理论值计算,计算一次2048点的IFFT的时间应为130us。在采用流水线的方式下,实部计算和虚部计算均采用两块RAM实现流水线。

结构如上图。在这种方式下,FPGA的片上RAM会消耗很多。

为了节省RAM,可以采用一块RAM的流水线方式。在实现过程中要注意对RAM操作的reading-during-write,之前的文章介绍过了。这种方式速度会降低一半。

最节省的方式是使用控制器方式,但速度更低。这里不再介绍。

上图所示的IFFT流程,存在大量的组合逻辑,时序远远不够,所以应当在组合逻辑中加入寄存器提高速度。但是,寄存器流水线的级数又影响到了读写两块RAM的切换,从而影响计算效率,所以这里值得商榷。

由于设计中RAM输出端没有使用REG,所以1处应该加入REG,提高速度,否则1处会出现时序违规,1处的组合逻辑延迟很大。

2处和3处也是值得深入考虑的地方,加法器的输出到乘法器的输入,以及乘法器的输出再到加法器的输入,均是大量的组合逻辑,设计中一定要注意,不能仅仅完成功能仿真就可以了,一定要在综合工具下综合一下,看看时序是否满足。实践中,这两处均加入REG。

4处是否再加REG需要看综合后的结果。根据实际分析,4处加REG会降低计算效率,读RAM和写RAM来不及切换,这是根据自己的设计得出的结果。

由于FFT计算过程用到乘法器,所以在IFFT中需要用到除法器。如何减少除法器使用的资源或者将除法器更改为其他逻辑实现,需要深入探讨。


版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处

作者:杭州卿萃科技ALIFPGA

原文地址:杭州卿萃科技FPGA极客空间 微信公众号


扫描二维码关注杭州卿萃科技FPGA极客空间


最新文章

  1. jquery学习(一)
  2. android 自定义控件——(五)按钮点击变色
  3. My first win32 application program
  4. Key Components and Internals of Spring Boot Framework--转
  5. [技巧] 解决Win7下VMware中vmx86.sys报错的问题
  6. ProjectManager Alpha8 - 项目管理器,管理起开发中的项目很方便
  7. Linux共享内存
  8. UIView Programming Guide学习笔记
  9. python运维开发之第六天
  10. [转]【Android】9-patch图片以及例子说明
  11. vue初探
  12. linux中exec和xargs命令的区别和优劣分析
  13. Lansat8大气校正USGS-EROS项目espa-surface-reflectance中的LaSRC Version 1.3.0模块利用vs2010编译出windows64位版本的使用(三)
  14. odoo开发笔记 -- 多对多字段追加数据
  15. Hadoop 高可用(HA)的自动容灾配置
  16. 关于JS call apply 对象、对象实例、prototype、Constructor、__proto__
  17. pycharm中python模板代码自动生成
  18. 【python3】拷贝U盘文件
  19. android 随手记 读写文件的几种方式
  20. @Transactional、Spring的声明式事务

热门文章

  1. python爬取商品信息
  2. 网关-zuul介绍 第一篇 网关解决的问题
  3. 在pycharm中自定义模板代码,快速输出固定代码块
  4. Ubuntu12.04 中文输入法设置
  5. 初识jQuery(1)
  6. d3.js(v5.7)力导向图(关系图谱)
  7. mysql连接踩坑
  8. 获取SQL Server数据库表的列名
  9. 5.查找最小的k个元素[Kmin]
  10. 解决使用 aapt 中遇到的问题