FFT算法除了必需的数据存储器ram和旋转因子rom外,仍需较复杂的运算和控制电路单元,即使现在实现长点数的FFT仍然是很困难。本文提出的FFT实现算法是基于FPGA之上的,算法完成对一个序列的FFT计算,完全由脉冲触发,外部只输入一脉冲头和输入数据,便可以得到该脉冲头作为起始标志的N点FFT输出结果。这个算法实现的可以是基2/4混合基FFT,也可以是纯基4FFT和纯基2FFT运算。
傅立叶变换和逆变换
对于变换长度为N的序列x(n)其傅立叶变换可以表示如下:
其中,W=exp(-2π/N)。当点数N较大时,必须进行分解,以短点数实现长点数的变换。而IDFT的实现在DFT的基础上就显得较为简单了:
由第二个可以看出,在FFT运算模块的基础上,只需将输入序列进行取共轭后再进行FFT运算,输出结果再取一次共轭便实现了对输入序列的IDFT运算,因子1/N对于不同的数据表示格式具体实现时的处理方式是不一样的。IDFT在FFT的基础上输入和输出均有一次共轭操作,但它们共用一个内核,仍然是十分方便的。
基4和基2
基4和基2运算流图及信号之间的运算关系如图1所示:、
以基4为例,令A=r0+j×i0;B=r1+j×i1;C=r2+j×i2;D=r3+j×i3;
Wk0=c0+j×s0:Wk1=c1+j×s1;Wk2=c2+j×s2;Wk3=c3+j×s3。分别代入图1中的基4运算的四个等式中有:
A'=[r0+(r1×c1-i1×s1)+(r2×c2-i2×s2)+(r3×c3-i3×s3)]+j[i0+(i1×c1+r1×s1)+(i2×c2+r2×s2)+(i3×c3+r3×s3)] 式(3)
B'=[r0+(i1×c1+r1×s1)-(r2×c2-i2×s2)-(i3×c3+r3×s3)]+j[i0-(r1×c1-i1×s1)-(i2×c2+r2×s2)+(r3×c3-i3×s3)] 式(4)
C'=[r0-(r1×c1-i1×s1)+(r2×c2-i2×s2)-(r3×c3-i3×s3)]+j[i0-(i1×c1+r1×s1)+(i2×c2+r2×s2)-(i3×c3+r3×s3)] 式(5)
D'=[r0-(i1×c1+r1×s1)-(r2×c2-i2×s2)+(i3×c3+r3×s3)]+j[i0+(r1×c1-i1×s1)-(i2×c2+r2×s2)-(r3×c3-i3×s3)] 式(6)
可以看出有多个公共项和类似项,这一点得到充分利用之后可以大大缩减基4和基2运算模块中的乘法器的个数,如上面A'至D'的四个等式中的这三对类似项:(r1×c1-i1×s1)与(i1×c1+r1×s1)、(r2×c2-i2×s2)与(i2×c2+r2×s2)、(r3×c3-i3×s3)与(i3×c3+r3×s3)以高于输入数据率的时钟进行时分复用,最终可以做到只需要3个甚至1个复数乘法器便可以实现。
基2运算之所以采用图1-(b)中的形式进行基2运算,是为了将基本模块做成基4/2复用模块,它对于N有着更大的适用性和可借鉴性。在基4、基2和基4/2模块的基础上,构建基16、基8和基16/8模块有着非常大的意义。
算法实现
傅立叶变换实现时首先进行基2、基4分解,一般来说,如果算法使用基4实现,虽然使用的资源多了一些,但速度上的好处足以弥补。如果资源充足,使用基16、基8或基16/8复用模块,速度可以大大提高。一般FFT实现简单框图如图2所示。
在图2中,运算模块即为基2/4/8/16模块或它们的复用模块,Rom表中存储的是N点旋转因子表。控制模块产生所有的控制信号,存储器1和2的读写地址、写使能、运算模块的启动信号及因子表的读地址等信号。当然对于运算模块为基16/8复用模块时,控制模块就需要产生模式选择信号,如对于运算模块是基4/2模块时,该信号就决定了内部运算模块是进行基4运算还是基2运算。
存储器1作为当前输入标志对应输入N点数据的缓冲器,存储器2作为中间结果存储器,用于存储运算模块计算出的各Pass的结果。在图中的各种地址、使能和数据的紧密配合下,经过一定延时后输出计算结果及其对应指示标志。
图2只是一定点或浮点的FFT实现模块,如果是块浮点运算,则必须加入一个数据因子控制器,控制每遍运算过程中的数据大小,并根据各个Pass的乘性因子之和的大小,对最终输出进行大小控制,以保证每段FFT运算输出增益一致。
电脑软件管理是干什么的?解锁高效工作与生活的秘密武器
在这个智能飞速发展的时代,电脑已经成为我们工作、学习乃至娱乐不可缺少的工具。但是,随着软件应用的日益丰富,如何高效有序地管理这些软件,保证电脑的安全运行和数据安全,已成为我们面临的一大挑战。今日,使我们详细分析电脑软件管理的奥秘,看看它能给我们带来什么变化。一、程序安装与卸载:管理便捷,告别杂乱电脑软件管理的首要任务是...
电脑软件管理工具哪个好?
如今,随着信息技术的快速发展,电脑已成为我们工作、学习和生活中不可缺少的工具。但是,随着越来越多的程序安装在电脑上,如何有效地管理这种软件,以确保他们的正常运行和不断创新已经成为一个不容忽视的问题。为了帮助你更好地管理电脑软件,本文将推荐几款出色的电脑软件管理工具,各有特色,能够满足不同用户的需求。一、360软件管家3...
移动硬盘加密软件排行
在数据日益重要的今天,移动硬盘作为便携式存储设备,其安全性成为了用户关注的焦点。为了保护存储在移动硬盘上的敏感数据,选择一款高效可靠的加密软件至关重要。以下是一些备受推崇的移动硬盘加密软件排行。一、安企神软件安企神软件是一款专为中国市场设计的企业级数据加密软件,提供全面的数据保护。1、支持多种国际标准的加密算法,如AE...
移动硬盘加密软件哪个好用?
在数字时代,数据安全至关重要,尤其是对于那些携带敏感信息的移动硬盘。为了保护这些重要数据,挑选易于使用的移动硬盘加密软件至关重要。以下是一些备受推崇的移动硬盘加密软件,希望对您有所帮助。一、BitLockerBitLocker是微软Windows操作系统内置的加密工具,专为Windows10/11Pro版本或以上版本设...
内网终端安全管理系统怎么用?
在数字时代,企业信息安全已成为企业生存和发展的重要构成部分。内网终端设备做为企业信息的重要载体,其安全性至关重要。为了有效应对内网终端设备面临的各种安全威胁,内网终端安全管理系统应运而生。本文将详细描述内网终端安全管理系统怎么使用,希望对您有所帮助。一、组装配备1、安装:从官方渠道下载内网终端安全管理系统的安装包,并按...