基于Cyclone系列FPGA的1+024点FFT算法的实现(2)

发布时间:2021-06-08

基于Cyclone系列FPGA的1+024点FFT算法的实现

第33卷第2期钱文明,等:基于CycIone系列FPGA的1024点FFT算法的实现 微电子与基础产品

且控制简单,不需占用片外电路板面积,可提高系统的

总体速度和可靠性。

定关系:

addr_B=addr_A+

N/2

2i

第0级:addr_A随ctI信号从0递增至N/2-1,此时本级的地址已产生完全,之后再加1溢出变成0,成为下一级的首地址。

第1~M-1级:判断addr_A的第[M-i-1:0]位,若小于N/2

-1,则来一个ctI信号,addr_A就加1,i

图2

FFT模块划分

本设计外部输入数据为12bit有符号数,由于FPGA内部含大量RAM,所以FPGA内部将其扩充为32bit有符号数,这样进行10级蝶形运算后可确保不会产生溢出,减少了溢出检查处理模块。1024点FFT共需1kX32bit实部RAM、1kX32bit虚部RAM。2.2 ROM旋转因子存储单元

参照FFT结构,旋转因子要参与蝶形运算以得到第2个运算结果。旋转因子都是小于1的小数,所以设计中需将其定点化,定点化过程是将旋转因子扩大16384(214)倍,取整数部分定点化,存入内置ROM。蝶形运算后将运算结果右移14位后作为第2个运算结果存入RAM,作为下一级的输入数据。所需ROM的容量应为1024点FFT所需的全部旋转因子数,共512个16bit实部ROM,512个16bit虚部ROM。2.3 蝶形运算单元

蝶形单元是FFT的核心部分,

主要包括乘法器和加法器。每级蝶形运算的输入数据和运算结果存储在相同地址单元中。在蝶形运算单元中,首先将两个操作数相加减,加法结果为第1个运算结果;减法结果乘以旋转因子,再右移14位,得出第2个运算结果,同时将第1个操作数存入RAM,在下1个节拍时存入第2个运算结果,可实现部分PipeIine结构。2.4 地址产生单元

地址产生单元根据控制单元输出的ctI信号产生下一级蝶形运算所需的两个操作数和旋转因子的地址。观察RAM地址生成规律:序列(xn)的长度为N,M=Iog2N,则所需的级数和地址位宽都为M(0~M-1)

。第i级蝶形运算可分为2i组,每组有(N/2)/2i个蝶形运算。每个蝶形运算的两个操作数的地址都有一

2若等于

N/22i-1,则随ctI信号addr_A加上N/2

2i

+1。本文采取的FFT实现结构为原址运算,运算结果仍然写回原地址,因此需将读数据地址延迟若干时钟

周期,作为运算结果写入地址。

ROM地址生成规律:维护一个模为N/2的计数器,第i级的地址取计数器的第[M-2:i]位即可。2.5 控制单元

控制单元是整个系统的控制核心,各个功能模块之间的地址、数据传递均通过控制单元协调工作。控制单元记录当前蝶形运算所处的级数和个数,并产生ctI信号传递给地址产生单元,以产生操作数和旋转因子的地址,地址产生单元将旋转因子的地址送入ROM模块的地址总线,直接读出旋转因子的值,送入蝶形运算单元;将操作数的地址送入控制单元,控制单元将两

个操作数的地址连续送入RAM的地址总线,连续读取两个操作数,将其寄存后送入蝶形运算单元。运算结果在中央控制单元控制下连续写入RAM。FFT完

成后,产生done信号通知外部读取处理后的数据。

3 仿真与验证

本设计采用自顶向下的设计思路,完成系统模块划分和各个功能模块的VeriIog代码编写。选用Ouar-tus!作为软件开发平台,利用该软件宏模块的调用功能产生RAM、ROM、乘法器等模块,以节省设计时间,提高系统工作效率。得出整个系统占用30%FPGA的逻辑单元和90%片上RAM,CIock最快为75MHZ。系统在工作主频率75MHZ情况下通过板级验证,完成全部1024点复数FFT运算时间大约需要250"s。功能仿真结果如图3所示。从图中可以看到,第1个节拍输出第1个操作数的地址,并寄存上一个蝶形运算得到的第2个操作数,将其送入RAM输入数据总线上;第2个节拍得到第1个操作数,并输出第2个操作数的地址;第3个节拍得到第2个操作数,并计算出第1个结果;第4个节拍寄存第1个结果,送入RAM输入数据总线上。

本系统选用GE02开发板(处理器为东南大学研

13

基于Cyclone系列FPGA的1+024点FFT算法的实现(2).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219