基于FFT谱研究测频算法FPGA实现

上传人:gg****m 文档编号:215059261 上传时间:2021-11-24 格式:DOCX 页数:6 大小:60.53KB
返回 下载 相关 举报
基于FFT谱研究测频算法FPGA实现_第1页
第1页 / 共6页
基于FFT谱研究测频算法FPGA实现_第2页
第2页 / 共6页
基于FFT谱研究测频算法FPGA实现_第3页
第3页 / 共6页
基于FFT谱研究测频算法FPGA实现_第4页
第4页 / 共6页
基于FFT谱研究测频算法FPGA实现_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《基于FFT谱研究测频算法FPGA实现》由会员分享,可在线阅读,更多相关《基于FFT谱研究测频算法FPGA实现(6页珍藏版)》请在金锄头文库上搜索。

1、基于FFT谱研究测频算法FPGA实现摘 要:在FPGA实验中,主要是用FPGA来实现FFT, 使其完成对信号的频谱分析。实验中设计流水线结构FFT, 主要是进行蝶形单元的设计;旋转参数生成;FFT系统仿真 测试。关键词:FPGA; Quartus II ; FFT 处理器1实验原理及步骤1. 1 Quartus II开发环境Quartus II是Altera公司提供的FPGA/CPLD集成开发软 件,在Quartus II Ji可以完成设计输入、HDL综合、布新布 局(适配)、仿真和选择以及硬件测试等流程,它提供了一 种与结构无关的设计环境,使设计者能方便地进行设计输 入、开始处理和器件编程。

2、Quartus II具备仿真功能,同时 支持第三方的仿真工具(如ModelSin)0此外,Quartus II与 MATLAB和DSP Builder结合,可用进行基于FPAG的DSP系 统开发,是DSP硬件系统实现的工具EDA工具。FFT算法种类很多,基本上可分为两大类:一类是针对 N等于2的整数次無的算法,如基2算法、基4算法和分裂 基算法等;另一类是针对N不等于2的整数次幕的算法,以 Winograd为代表,它们有重要的理论价值,但是不适于硬件 实现。基2算法结构简单,但运算量大。基4算法相对于基2算法更为复杂,但是计算量减少了。FFT算法按分解方式 的不同又可以分为时域抽取算法(dec

3、imation in time, DIT)和频域抽取算法(decimation in frequency, DIF)两种。 这两种算法在本质上都是一种基于标号分解的算法,在运算 量和复杂性等方面完全一样。考虑到本设计FFT运算的点数 不是太多,故选用了时域抽取基2算法(DIT)o1.3按时间抽取的基-2FFT算法(DIT-基2-FFT)原理FFT算法由多级蝶形运算构成,具体运算流图也有多种形式。本设计选用了输入倒序、输出顺序的运算流图,图3所示为N二8点时的DIT-FFT运算流图。这种运算流图是同址运算,其优点是:在同一级运算中,每个蝶形的两个输入 数据只对计算本蝶形有用,而且蝶形的输入输出数

4、据节点又 同在一条水平线上,这就意味着计算完一个蝶形运算后,所 得输出数据可以立即存入元出入数据所占用的存储器。因 此,在硬件实现时可以节省存储单元。1.4 FFT处理器结构设计FFT算法的FPGA硬件实现在Altera公司的MAX+plus II 系统环境下开发完成,选用基于查找表结构内嵌存储器的APEX20系列FPGA器件。图4为FFT处理器的结构图。本设计采用单元结构设计思路,整个处理器由数据接收单元、运 算单元、旋转因子存储单元、地址产生单元和中央控制单元5个单元组成,各单元在中央控制单元的控制下协调工作。 其中,内部接收单元采用乒乓RAM结构,扩大了数据吞吐量, 计算单元采用流水与并

5、行结合的结构,加快了运算速。1.5中央控制单元中央控制单元是整个系统的控制核心,其主要功能是控 制数据流向,协调各单元之间的运行。中央控制单元根据系 统时钟确定当前蝶型运算所处的级数m和个数n,并把m、n 传送给地址产生单元。地址产生单元产生蝶型运算两个输入 数据和旋转因子的地址,并把地址传送给运算RAM和旋转因 子存储器。在中央控制单元读使能信号控制下两个输入数据 和旋转因子被读出。读出的数据进行必要的延迟和定标处理 后,送给运算单元。经过蝶型运算后,运算结果按原址写入 RAMo1.6数据接收单元数据接收单元主要功能是按帧接收外部数据,并将每帧 数据按码位倒置的顺序乒乓存入接收RAM1或接收

6、RAM2o中 央控制单元交替的对接收RAM中的数据进行处理,当中央控 制单元将接收RAM1中的数据取出,经过蝶型运算,结果存 入运算RAM1的同时上一帧数据的FFT运算结果从运算RAM2 取出。接收RAM用FPGA的片上双口 RAM实现,接收单元控 制写端口,中心控制单元控制读端口。1.7运算单元运算单元由蝶型运算器和运算RAM组成。蝶型运算器完 成对输入数据的蝶型运算,运算RAM作为FFT的中间数据缓 存。蝶型运算器输入数据为A二Ap+Aqj, B=Bp+Bqj,旋转因子 WrN=Wp+Wqj,蝶型运算输出如式(3)所示。根据式(3), 蝶型运算器可由一个复数乘法和两个复数加(减)法器组成。

7、 为了提高运算速度采用并行运算,用四个实数乘法器、三个 实数加法器、三个实数减法器组成。蝶型运算器实现框图如 图5所示。蝶型运算各个模块利用MAX+plusII开发软件中所 提供的宏单元生成。运算RAM1和运算RAM2作为FFT的中间数据缓存。两块RAM交替作为数据读出和运算结果写入单元,直到第6级蝶型运算気成。1. 8旋转因子存储单元旋转因子存储单元,存储FFT运算所需要的旋转因子WrN, WrN=e (_j2?仔/N) r (r=0, 1,,N/2-1)。旋转因 子先在Mat lab中分实部和虚部产生,转化成16位定点数,并将结果保存成hex文件格式。利用MAX+plusII软件提供 的R

8、OM宏模块“lpmjrom”产生两个(N/2) X16bit的ROM, 并分别用旋转因子实部和虚部对应的hex文件对两个ROM初 始化,这样旋转因子的值就固化在了 FPGA中。对应不同级的蝶型运算,地址产生器产生相应的地址送给ROM将旋转因 子读出。1. 9地址产生单元1. 10块浮点单元块浮点单元采用文献提出的算法和实现方法。其基本思 想是每级蝶型运算结果动态扩展但最大扩展2位。块浮点单 元对蝶型运算结果的高3位进行检测,判断当前结果动态范 围扩展位数,记录当前级的最大扩展位数。下一级蝶型运算 时,根据前一级的最大扩展位数,对读出的数据进行定标, 选取数据送入蝶型运算器。块浮点单元将每一级运

9、算结果动 态范围扩展位数进行累加,和FFT运算结果一同输出。1. 11 FFT处理器功能仿真与设计验证3结束语由图7图9所示可以看出,由于处理器采用定点运算, 在进行乘法和加法运算时不可避免的造成一定的误差,尤其 是在功率谱接近零值的这些点上,相对误差较大;但是在我 们无奈所关心的功率谱的幅值点上,相对误差仅为百分之一 左右,完全可以满足大多数应用对于运算精度的需求。参考文献1 张辉,张集龙基-2 FFT处理器的FPGA实现J.计 算机与现代化,2009.2 程佩青数字信号处理教程第三版M.北京:清华 大学出版社,2007.3 袁俊泉,孙敏琪,曹瑞.Verilog HDL数字系统设计 及其应用M.西安:西安电子科技大学出版社,2002.4 谢彦林可变点流水线结构FFT处理器的设计及其 FPGA实现D.西安:西安电子科技大学,2007.5 云霄.可配置FFT/IFFT处理器的设计及其FPGA构造 D.西安:西安电子科技大学,2009.6 蔡可红基于FPGA的FFT设计与实现D.南京:南 京理工大学,2006.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号