FFT算法分析【荐】.docVIP

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

FFT算法分析 FFT算法的基本原理是把长序列的DFT逐次分解为较短序列的DFT。按照抽取方式的不同可分为DIT-FFT(按时间抽取)和DIF-FFT(按频率抽取)算法。按照蝶形运算的构成不同可分为基2、基4、基8以及任意因子(2n,n为大于1的整数),基2、基4算法较为常用。 基2、DIT-FFT(按时间抽取): 令,,则有: 蝶形运算单元如下所示: 基2、DIF-FFT(按频率抽取): 则有: 蝶形运算单元如下所示: 由前面的分析可知,DIT(按时间抽取)算法与DIF(按频率抽取)算法没有本质上的区别,只是复数加减法与旋转因子乘法的次序有区别,两种方法的运算量是一样的。 在基2算法中,每个蝶形运算单元都包括1次复数乘法、2次复数加法。N(N= )点序列的运算流图应有M级蝶形,每一级都由N/2个蝶形运算组成,所以N点序列的基2FFT算法,总的运算量为次复数乘法,次复数加法。直接DFT运算量为次复数乘法、次复数加法。可见,FFT算法大大减少了运算量,当N越大时,FFT算法的优越性越明显。 基4、DIF-FFT(按频率抽取) 令: 则有: 蝶形运算单元如下所示: 由上图可知每个基4蝶形运算单元包括3次复数乘法、8次复数加法。N(N= ,M为偶数)点序列的FFT运算若采用基4算法则有M/2级蝶形,每级由N/4个蝶形运算构成。采用基4算法计算N点序列的FFT共需要次复数乘法、次复数加法。由于主要的运算时间集中在乘法上面,可见基4算法的运算量较基2算法减少了25%,但运算量的减少是以硬件的复杂性及使用更多资源为代价的。 FFT算法的FPGA实现 以8点(复数点,包括实部与虚部)、基2、DIF-FFT为例来考虑FFT算法的FPGA实现。整个运算流图应由3级蝶形构成,每级中有4个蝶形运算。若DIF的输入序列为顺序输入,则得到倒序输出。完整的运算流图如下所示: 考虑采用流水线结构,系统可采用3级基2蝶形运算单元构成,系统总体结构如下所示: 总体结构说明 输入数据为串行的数据流,故在第一级蝶形运算模块前加入串并转换模块,将串行数据流转换为并行的两列数据流以适应基2蝶形运算模块的输入信号要求。 由于每级蝶形运算一次处理的两个输入数据不能直接由前一级蝶形运算一次性输出,故在两个蝶形运算单元之间插入延时对齐模块,将前一级蝶形运算的结果(两列并行的数据流)作适当的延时并通过转接器对齐,形成后一级蝶形运算模块所需要的2列输入序列。 在最后一级蝶形运算后加入串并转换模块,将2列并行的数据流合成为1列。最后加入倒序模块将DIF-FFT得到的倒序输出序列整理为顺序输出。 旋转因子产生模块产生各级基2蝶形运算所需的旋转因子。由运算流图可以看出最后一级的旋转因子其实是1,故可省略最后一级蝶形运算单元中的旋转因子乘法器。因此用一个双口ROM将两组数据分别输出到第一级和第二级的蝶形运算单元即可。 基2蝶形运算模块由两个复数加法器和一个复数乘法器构成。旋转因子由ROM产生后,作为复数乘法器的输入之一,与前面复数加法器得到的结果相乘完成一次蝶形运算。为提高系统的运行速度可在蝶形运算单元中插入流水线寄存中间结果。 若输入序列的标号为0、1、2、3、4、5、6、7,则在A、B、C、D、E处的信号标号如下图所示: 串并转换模块完成A序列到B序列的转换;两个延时对齐模块分别完成B序列到C序列、C序列到D序列的转换;并串转换模块完成D序列到E序列的转换。 各模块框图 串并转换模块: 串并转换模块可用单输入、双输出的RAM来实现,同时控制输入信号的时钟频率为输出信号时钟频率的两倍。这里要用到乒乓操作,即读写操作分开,故8点序列要用到16个存储单元。写入地址在写入时钟控制下按顺序递增。两个读出地址的最高位都为写入地址最高位的求反结果。两个读出地址的次高位固定,一个为0,一个为1,其它位在读出时钟的控制下递增。 延时对齐模块: 用单输入、单输出的RAM,适当控制读、写地址可实现数据的延时,转接器可用数据选择器构成。以最后一个蝶形运算单元前的延时对齐模块为例,可由如下方案实现: 转接器两种状态分别为两个输出端与输入端直接相连和交叉相连,控制转接器的状态每1个clk改变一次,即控制转接器的状态持续时间与延时单元的延时时间相同。经过分析可知,若采用相同的处理方式,则倒数第n个蝶型运算单元前的延时单元的延时clk个数为个。延时单元可直接用RAM实现,控制读写地址之间的间隔即可实现输出与输入之间的延时。整个延时对齐模块的连接图如下: 旋转因子产生模块: 用双口ROM产生旋转因子。按照各级蝶形运算模块中所需的旋转因子的变化规律控制两个读出地址的变化,产生相应的旋转因子到各级蝶形运算模块。 并串转换和倒序模块: 先将用数据选择器将两路数据合成为一路写入RAM中,然后从RAM中读出数据,适

文档评论(0)

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

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

1亿VIP精品文档

相关文档