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