繁体中文
设为首页
加入收藏
当前位置:技术文章首页 >> EDA技术 >> 如何用fpga实现fft算法(fft算法的FPGA设计)

如何用fpga实现fft算法(fft算法的FPGA设计) (2)

2008-05-09 22:47:47  作者:  来源:互联网  浏览次数:189  文字大小:【】【】【
简介:有限长序列的DFT(离散傅里叶变换)特点是能够将频 ...
















N进行相乘。本设计采用如图2的蝶形运算器结构。

       

  这种结构是经过优化的蝶形运算器结构,文献[3]给出了这一结构的具体分析,这样的结构与传统的需要3个复乘单元的蝶形结果相比,因为采用了流水线控制,硬件上节省了2个复乘单元,而输出同样只需4个时钟周期,工作效率并未降低。在FPGA设计中,一个乘法器的引入,尤其是高位数的乘法器的引入,将很大程度地影响系统整体的运行速率,并且将占用大量的资源。因此,这种改进方案更有利于FFT算法的高效实现。

  2.2.2复乘器设计

  对于复乘单元的设计,常见的复乘方式为:

       

  式中:i为虚数单位。

  这种乘法表达式需要4个实数乘法运算和2个加减运算,设计中对表达式进行如下变换:

      

  式(3)这种复乘方式只需要3个实数乘法运算和5个加减就可以完成复乘运算,减少了乘法器数量。式中(c+s)值可以在进行象限转换的同时通过计算得到,而无需另外存储。

  2.2.3数据溢出控制

  为了防止数据计算过程中的溢出,上述蝶形单元中的加减法运算单元对于输入的4个有符号复数数据采取了符号位扩展相加后再对计算结果进行1/4倍压缩的方法进行计算。而对于乘法单元则采用了刻度(scaling)的方法,将复数数据(16位)与旋转因子(8位)相乘后,得到24位数据结果刻度为16位数据后,再存人RAM单元中参与下一级运算。经过这样处理后,有效地防止了整个系统在运算过程中出现的数据溢出情况,保证了最终运算结果的可靠性。

  2.3地址产生与总时序控制

  在FFT运算过程中,地址的产生包括复数数据存储RAM的读写地址(RAM_addr)产生和旋转因子表的读取地址产生。对于不同级运算情况下,RAM读写的控制必须按DIT的倒序规则进行,这在程序中就需要若干个变量来控制。假设控制级数的变量是L,每级的蝶形运算距离是D,当前计算蝶形所在的组为第S组,共N组,当前计算蝶形所在组中的位置是第A个蝶形,那么每个蝶形的4个输人数据地址分别为:

        
 
  ROM读取地址ROM_addr可按如下式子计算得到: 

       

  式中iAN=i×A×N:i=2,1,3,为输出4点数据的倒序序号,当i为0时数据直接输出,无需对ROM进行读取。

  本设计中采用的RAM模块为QuartusⅡ软件中的双口RAM模块,此模块存储与读取可以同时进行。系统单独完成一个蝶形运算总共需要11个时钟周期,为了能够充分利用乘法器的运行效率,设计采用了流水线工作方式,平均完成一个蝶形运算只需4个时钟周期。复数乘法器的工作时序占整个工作时序的75%,具有较高的工作效率。

  综上所述,可以得到如图3所示流水线工作图。

  图3中,RAM_addr为分别

Google
[1] [2] [3]

责任编辑:cjb


相关文章
 

最新文章

更多

· 基于FPGA设计的FFT处理器
· 基于AVR单片机和PDIUSBD...
· 高速AD转换器ADS8364的中...
· 基于FPGA的迭代层析重建...
· VHDL设计的SDRAM
· 便携式测温仪设计介绍以...
· 如何用fpga实现fft算法(...
· 80C51单片机与OLED模块的...
· 基于MSP430单片机和RF收...
· DSP应用中使用C和GEL语言...

推荐文章

更多

. 如何用fpga实现fft算法(fft算法的FPGA设计)
· 基于FPGA设计的FFT处理器
· 基于AVR单片机和PDIUSBD...
· 高速AD转换器ADS8364的中...
· 基于FPGA的迭代层析重建...
· VHDL设计的SDRAM
· 便携式测温仪设计介绍以...
· 如何用fpga实现fft算法(...
· 80C51单片机与OLED模块的...
· 基于MSP430单片机和RF收...
· DSP应用中使用C和GEL语言...

热点文章

更多

· VHDL设计的SDRAM
· 基于AVR单片机和PDIUSBD...
· 高速AD转换器ADS8364的中...
· 基于FPGA设计的FFT处理器
· 基于FPGA的迭代层析重建...