- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8 点流水线型FFT 的Verilog HDL 实现
梁志明
华南理工大学
calaok@
(一)算法介绍
采用图中的结构,x0(0)~x0(7)为输入数据,位宽为 16 位;输出数据的位宽为 32 位,倒
序输出。
图3 8 点FFT 算法图
(二)系统设计
图 4 系统总框图
1、系统总框图如图 4 所示,总共包括一下几个模块:
1. 。
对应三阶运算,共采用三个运算子模块:
第一阶运算模块:对应蝶形算子只有 W0 (W0=1),
第二阶运算模块:对应蝶形算子有 W0 、W2(W2=-j),
第三阶运算模块:对应蝶形算子有 W0 、W1 、W2 、W3。
2.
针对各阶运算, :
第一阶控制模块;
第二阶控制模块;
第三阶控制模块 。
2、各个运算模块分析。
1.第一阶运算模块:
控制模块的作用是
控制每个阶段的操
作
模块功能:完成 FFT 第一阶蝶形运算。
模块设计:
此时蝶形算子只有 W0,故蝶形运算结果为 C=A+B,D=A-B。因此,只需要对输入
数据做加减法即可。
考虑资源复用,这里定义一个 16 位的 加法器和减法器,
。
2.第二阶运算模块
模块功能:完成 FFT 第二阶蝶形运算。
模块设计:
第二阶运算有蝶形算子 W0 、W2。对于 W2 蝶形运算结果为 C=A+jB,D=A-jB,因
此,
对于 W0 算子,这里定义了一个 17 位有符号数加法器和减法器处理。
对于 W2 算子,对于运算结果的实部, 可;针对虚部,对于结
果 C,只需将 B 扩展成 18 位,对于结果 D 只用取 B 的补码,计算过程流程如下图。
相当于多路开关
图 6 第二阶运算模块
3.第三阶运算模块
这个部分是因为有
负数的出现
模块功能:完成 FFT 第三阶蝶形运算。
模块设计:
第三阶运算模块:对应蝶形算子有 W0 、W1 、W2 、W3。采用设计要求中提示的通用
蝶形运算方法:
Rc=Ra+Rb* +(Ib-Rb)sin
Ic=Ia+Ib* +(Ib-Rb)sin
这个是蝶形运算的
通用公式
Rd=Ra-[Rb*cosaddsin+(Ib-Rb)sin]
Id=Ia-[Ib*cossubsin+(Ib-Rb)sin]
其中,
cosadd sin = cos(2πp / N) + sin(2πp / N)
cossubsin = cos(2πp / N) ?sin(2πp / N)
sin = sin(2πp / N)
;这里,N=8。
根据上述公式,在进行一次蝶形运算时,只需首先确定 cosaddsin,cossubsin,sin,然
后计算出(Ib-Rb)sin,Rb*cosaddsin,Ib*cossubsin,最后将结果相加减即可。
(三)仿真结果分析
1、数据输入
图 7 数据输入
(1)输入数据是两组连续 8 个的串行数据:
A=[1 2 3 4 4 3 2 1];
B=[-5 -5 5 5 -5 -5 5 5];
数据在系统时钟的上升沿被采集。
2、最后蝶形算子运算波形
这里P的取值有0, 1,2,3
图 8 最后蝶形算子运算波形
(1)蝶形算子运算公式为:
R =R +R ???cos(2πp/N)+sin(2πp/N)??? +(I -R )sin(2πp/N)
c a b b b
I =I +I ???cos(2πp/N)-sin(2πp/N)??? (I )sin(2πp/N)
c a b + b-R
b
R =R {R ???cos(2πp/N)+sin(2πp/N)??? +(I -R )sin(2πp/N)}
d - b b b
a
I =I {I ???cos(2πp/N)-sin(2πp/N)??? (I )sin(2πp/N)}
d - b + b-R
a
b
输入信号对应:Imul_Ra-Ra
Imul_Ia-Ia
Imul_Rb-Rb
Imul_Ib-Ib
输入a和b,输出是c
和d
Imulc_Rout-Rc
Imulc_Iout-Ic
Imuld_Rout-Rd
Imuld_Iout-Id
波形上的输入信号为实际大小的有符号数,由于在
3、输出信号波形
图 9 输出信号波形
输出结果最后经过了排序, 。输
出数据为经过位数扩展后的数据,
(1)当输入数据为 A=[1 2 3 4 4 3 2 1]时,MATLAB 运算的数据为:
20.0000
-5.8284 - 2.4142i
0
-0.1716 - 0.4142i
0
-0.1716 + 0.4142i
0
-5.8284 + 2.4142i
硬件运算的结果为:
10240
-2984-1236i
0
-88-212i
0
-88+212i
0
-2984+1236i
(2)当输入数据为 B=[-5 -5 5 5 -5 -5 5
文档评论(0)