FFT至简设计法实现法FFT算法蝶形运算.docxVIP

FFT至简设计法实现法FFT算法蝶形运算.docx

  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文档。上传文档
查看更多
DIT-FFT至简设计实现法 DIT-FFT算法的基本原理 有限长序列xn的N点DFT定义为:Xk= DFT在实际应用中很重要,但是如果直接按DFT变换进行计算,当序列长度N很大时,计算量会非常大,所需时间也很长,因此常用的是DFT的一种快速计算算法,简称FFT。 最常用的FFT算法是基于时间抽取的基2-FFT算法和基于频率抽取的基2-FFT算法,这种算法的特点在于FFT会把一次大的DFT分割成几个小的DFT,这样递归式地细分下去,例如有8个采样点的FFT,首先会把最外层的8点运算分成两个4点FFT的奇偶组合,第二层FFT又分成四个两点FFT的奇偶组合,并且由此计算出的频谱中很有趣的一点在于对于实数输出的数组,后面一半和前面一半正好对称相同,对于虚数输出的数组,后面一半是前面数组对称后乘上负1,因此,我们只需要算出FFT的一半即可求出全部。 本设计讨论的是基于至简设计法实现按时间抽选的基2-FFT算法(即DIF-FFT)实现过程,支持N由8到1024。 图 1按时间抽取的基2-FFT算法蝶形运算流图(N=8) 蝶形运算至简实现过程 2、1 模块划分 图 2蝶形运算模块框图 本模块包括三个RAM模块(RAM1,RAM2,RAM3)与一个DFT模块,各模块功能如下: RAM1模块:在开始进行蝶形运算前,全部采样点(如图1所示的x(0)、x(4)、x(2)、x(6)、x(1)、x(5)、x(3)、x(7))已经按照倒位序二进制的地址依次存储在RAM1模块中,即地址0保存了采样点x(0),地址1保存了采样点x(4)。选用双端口RAM1可以同时对两点采样数据(如图1的x(0)、x(4))进行读、写操作。 RAM2模块:RAM2模块也是采用双端口输入输出,可同时对两点数据进行读、写操作。 DFT模块:DFT模块用于对RAM1、RAM2输出的两点采样数据(如图1的x(0)、x(4))进行蝶形运算,它将运算结果输出至RAM1、RAM2模块进行保存。 RAM3模块:RAM3模块是单输出模块,理论是应保存N(N为采样点个数)个运算参数WNr,但由于每一次蝶形运算结果(如 x1k+W 2、1、1 奇数轮蝶形运算 图3 第奇数轮蝶形运算流图 如图3所示,RAM1首先根据计数器给出的两个点的地址(如地址0,地址1)进行数据读操作,然后将数据(如x1(k)和x2(k))送进DFT模块进行运算,最后RAM2将DFT模块输出的数据(如x1k+WNkX2 2、1、2 偶数轮蝶形运算 图4 第偶数轮蝶形运算流图 偶数轮运算跟奇数轮运算相似,唯一的不同就是:读取RAM由RAM1改为RAM2,写RAM由RAM2改为RAM1。 RAM1与RAM2按照这样的读写交替顺序,直至历遍完n轮蝶形运算(n为蝶形运算一共要计算的轮数)。 2、2 计数器架构设计 由于需要依次读取和写入RAM1和RAM2,并且还要经过N轮的运算,很明显需要运用到计数器。 计数器架构,关乎到整个设计的可靠性和至简性,因此是重中之中的设计。按照至简设计法的建议,需要用到N轮运算,这需要一个计数器但每轮的计数器如何设计呢? 由于这些计数器主要是用于产生读写地址的,所以我们需要仔细分析地址的规律。我们以8点的FFT为例进行分析。 观察上图,每一轮取址如表1所示: 蝶形运算第几轮 运算节点 第一次蝶形运算 第二次蝶形运算 第三次蝶形运算 第四次蝶形运算 1 X1 0 2 4 6 X2 1 3 5 7 2 X 0 1 4 5 X2 2 3 6 7 3 X1 0 1 2 3 X2 4 5 6 7 表1 N为8的蝶形运算每一轮取址 蝶形运算每一轮每一次的取地址满足什么关系呢,如何才能在FPGA设计中实现如表1的取地址运算,观察上表,我们可以发现如下规律: 第几级蝶形运算 X1 第一次 第二次 第三次 第四次 第一级 0=0+0*2 2=0+1*2 4=0+2*2 6=0+3*2 第二级 0=0+0*2 1=1+0*2 4=0+1*2 5=1+1*2 第三级 0=0+0*2 1=1+0*2 2=2+0*2 3=3+0*2 第几级蝶形运算 X2 第一次 第二次 第三次 第四次 第一级 1=20 3=20 +0+1* 5=20 +0+2* 7=20 +0+3* 第二级 2=21 3=21 6=21 7=21 第三级 4=22 5=22 6=22 7=22 表2 X1(k)的 表3 X2 根据表2、表3,可得到

文档评论(0)

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

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

1亿VIP精品文档

相关文档