利用FPGA实现FFT的硬件设计的

时间:2024-04-22 点赞:43171 浏览:82142 作者原创标记本站原创

该文是论文格式专业蝶形论文范文,主要论述了关于蝶形相关硕士论文开题报告,与利用FPGA实现FFT的硬件设计的相关论文范文素材,适合蝶形及单元及控制器方面的的大学硕士和本科毕业论文以及蝶形相关开题报告范文和职称论文写作参考文献资料下载。

摘 要: 本文介绍了一种基于FPGA的FFT的硬件设计整体结构,采用顺序处理结构的碟形运算单元完成碟形处理器的设计,使用有限状态机状态输出实现FFT运算中的控制单元的设计以及其中计数器、寄存器中数据的存储和输出,最终完成FFT的硬件设计.

关 键 词 : 蝶形运算; 复数乘法器; 蝶形处理器; 控制器

中图分类号: TN702 文献标识码: A 文章编号: 1009-8631(2011)03-0167-02

引言

FFT的实现方法有软件实现和硬件实现,用软件在PC机或工作站上实现计算速度很慢,一般多结合具体系统用硬件实现,FFT整体结构形式按照蝶形运算单元的组织分布不同可分成四种,分别是顺序处理、级联处理、并行迭代和阵列处理,本设计采用顺序处理结构实现蝶形运算单元.

1 FFT的硬件设计整体结构

顺序处理是专用处理器的基本形式,蝶形运算单元在控制器的控制下,根据标准的信号流图,按时间顺序依次进行运算.顺序处理具有如下特点:只用一个蝶形运算单元;输入数据、中间数据和输出结果均使用同一组存储器;顺序执行次×log2N次.

FFT整个硬件设计主要包括存放数据的RAM、存放旋转因子ROM、蝶形运算单元和协调各个模块工作的控制单元四个模块.其整体设计结构如图1所示.

蝶形运算单元为基2运算,RAM是存储输入数据、中间运算结果以及最终运算结果的单元,控制单元产生所有的控制信号、RAM1和RAM2的读写地址、写使能、运算模块的启动信号以及ROM的读写地址等信号.RAM1作为当前输入标志对应输入N点数据的缓冲器,RAM2作为中间结果存储器.采用两个存储器可实现数据的流水线操作,即在向RAM2中写入数据的同时,可以从RAM1中读出下一组的输入数据.

2 蝶形处理器的设计

基2蝶形处理器是FFT的核心部分,有一个复数加法器、一个复数减法器和一个旋转因子的复数乘法器组成.旋转因子的复数乘法通常由4次实数乘法和2次加/减法运算实现.

复数旋转因子乘法R+jI等于(X+jY) (C+jS)是可以化简的,因为C和S可以预先计算,并存储在一个表中.而且还可以存储下面的3个系数:C、C+S、C-S,首先计算E等于X-Y和Z等于C×E等于C(X-Y),利用R等于(C-S)×Y+Z、I等于(C-S)×Y-Z来计算最后的乘积.


旋转因子乘法器是利用3个lpm_mult例化组件和3个lpm_add_sub模块来实现的.输出经过可读,也具有与输入相同的数据格式.在QuartusⅡ中lpm_mult例化元件如图2所示.端口A输入为9bits,端口B输入为8bits.

利用一个实例化为组件的旋转因子乘法器、一个加法器和一个减法器来设计蝶形处理器.蝶形处理器的输入输出模块如图3所示. Are_in,Aim_in是输入A的实部和虚部,Bre_in,Bim_in是输入B的实部与虚部,C_in,Cms_in,Cns_in为相应旋转因子系数的运算结果输入,Dre_out,Dim_out是蝶形运算中加法部分输出的实部与虚部,Ere_out,Eim_out是减法部分输出的实部与虚部.

3 存储单元与控制单元的设计

在ALTERA公司的Cyclone系列的FPGA中,LPM(library parameterized megafunction,可调参数元件)是功能强大,性能良好的类似于IP Core的兆功能块LPM库.调用LPM部件lpm_rom和lpm_ram_dq,通过调节元件的参数,来实现所需要的存储器RAM和ROM.存储器ROM也可以通过这种方式进行调用,减小程序编写的复杂度.

控制单元是整个系统的控制核心,各个功能模块之间的地址 、数据传递均通过控制单元协调工作.控制单元记录当前蝶形运算所处的级数和个数,并产生 ctl信号传递给地址产生单元,以产生操作数和旋转因子的地址,地址产生单元将旋转因子的地址送入ROM模块的地址总线,直接读出旋转因子的值,送入蝶形运算单元;将操作数的地址送入控制单元,控制单元将两个操作数的地址连续送入 RAM的地址总线,连续读取两个操作数,将其寄存后送入蝶形运算单元.运算结果在控制单元控制下连续写入RAM.FFT完成后,产生done信号通知外部读取处理后的数据.通过一个有限状态机状态的输出来实现上述的功能.

控制器在时钟信号的作用下按状态的先后顺序翻转,实现对数据读取,计算,存储等操作的控制.控制器的状态转移流图如图4所示.

对于8点FFT运算的控制器,总共需要定义10个状态.在最初控制器处于空闲状态,此时整个控制器不工作.外部输入信号为低电平时,控制器一直处于空闲状态,等待启动信号的到来,当输入信号置高电平时,在输入信号的触发下,控制器开始状态转换,输出控制信号,带动整个系统完成FFT运算.

在控制器中有两个内部计数器,对控制器状态的翻转起着决定作用,定义计数器1计数到4时为第一级蝶形运算结束标志信号,计数器2计数到8为最后一级蝶形运算结束标志信号.

控制器在每次进入FFT第一级运算状态后判断计数器1的数值,以决定下一状态.当计数1的值介于0和3之间时,控制器就在运算一级运算与RAM1的读取和写入数据两个状态之间循环(RAM1的数据读取和写入是同时进行的),循环次数与FFT的点数有关.跳出此循环之后,控制器进入二级以上运算状态,此时开始判断计数器2的数值.当计数器2的值介于0和5之间时,此时系统刚好完成最后一级的第一组蝶形运算,控制器状态在二级以上运算与RAM2的读取和写入数据两个状态循环,循环5次.当计数到6时,跳出循环,控制器进入对RAM2三种操作同时进行的状态,即在写入中间结果的同时,下一组输入数据正在读取,上一组FFT结果正在输出,此状态可以保证FFT结果及时输出.

计数到6与7之间时,控制器在二级以上运算和RAM2三种操作同时进行两个状态之间循环,当计数到8时,跳出此循环,控制器进入写入8点FFT最后一组运算结果与输出倒数第二组FFT运算结果的状态.

对于计数器1,如果次态为一级运算,则计数器自动加1;如果次态为空闲,则计数器被复位,其他状态是计数器值保持不变.对于计数器2,如果次态为二级以上运算,则计数器自动加1,其他情况与计数器1类似.控制器输入输出模块如图5所示.

图5中Ready为启动信号,与RAM1相连,clk为时钟,控制器在每个时钟的上升沿到来时从现态转变为次态,rst为复位控制信号,当rst等于‘1’时,将控制器复位为空闲状态.OE1为高电平有效信号,控制RAM1读取数据使能,en高电平有效信号,控制蝶形运算单元使能.We2,oe2信号,高电平有效,控制RAM2读写使能.Ok信号,高电平有效,输出FFT运算结果.

4系统分析

本设计选用QUARTUSⅡ作为软件开发平台,利用该软件宏模块的调用功能产生RAM、ROM、乘法器等模块,以节省设计时间,提高系统工作效率.在旋转因子乘法器的设计中,为了保证较短的延时,复数乘法器只有输出寄存器,没有内部流水线寄存器.

参考文献:

[1] 李彦正.一种FFT蝶形处理器中的乘法器实现.现代电子技术,2007(22).

[2] 唐江,刘桥.基于FPGA的基―4FFT算法的硬件实现.重庆工学院学报,2007.3(21).

[3] 刘桂华,傅幼麟.FFT实时谱分析系统的FPGA设计和实现.电子应用技术,2006.5.

[4] 钱文明,刘新宁.基于Cyclone系列FPGA的1024点FFT算法的实现.电子工程师,2007.2(33).

[5] 任淑艳,关从荣.应用VHDL语言的FFT算法实现.哈尔滨理工大学学报,2003.12(8).

注:“本文中所涉及到的图表、公式、注解等请以PDF格式阅读”


相关论文

基于FPGA的双图像传感器设计方案

本文关于传感器及高质量及数据方面的免费优秀学术论文范文,关于传感器论文范文素材,与基于FPGA的双图像传感器设计方案相关学士学位论文范。

基于FPGA的GPS时统设计

这篇标准格式论文范文属于论文格式免费优秀学术论文范文,标准格式方面有关电大毕业论文,与基于FPGA的GPS时统设计相关论文格式。适合标准格。

基于FPGA的串口通讯设计

本文是一篇软件设计论文范文,软件设计方面自考毕业论文开题报告,关于基于FPGA的串口通讯设计相关硕士论文范文。适合软件设计及系统结构及通。

基于FPGA的波形产生器设计与

这篇电子技术基础论文范文属于论文前言免费优秀学术论文范文,电子技术基础相关毕业论文格式范文,与基于FPGA的波形产生器设计与相关毕业论文。

恒压供水系统硬件设计简述

本文是一篇变频器论文范文,变频器类研究生毕业论文开题报告,关于恒压供水系统硬件设计简述相关毕业论文的格式范文。适合变频器及自动控制及。