关于FFT硬件实现,设计中RAM输出端为何没有使用REG

电子说

1.2w人已加入

描述


我知道,我对与电子有关的所有事情都很着迷,但不论从哪个角度看,今天的现场可编程门阵列(FPGA),都显得“鹤立鸡群”,真是非常棒的器件。如果在这个智能时代,在这个领域,想拥有一技之长的你还没有关注FPGA,那么世界将抛弃你,时代将抛弃你。


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

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

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

FFT

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

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

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

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

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

FFT

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

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

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分