ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:454KB ,
资源ID:7557355      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7557355.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FFT算法分析.doc)为本站会员(HR专家)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

FFT算法分析.doc

1、FFT 算法分析FFT 算法的基本原理是把长序列的 DFT 逐次分解为较短序列的 DFT。按照抽取方式的不同可分为 DIT-FFT(按时间抽取)和 DIF-FFT(按频率抽取)算法。按照蝶形运算的构成不同可分为基 2、基 4、基 8 以及任意因子(2n,n 为大于 1 的整数) ,基 2、基 4 算法较为常用。基 2、DIT-FFT(按时间抽取):-10/21/21(21)/21/21/2/2()() ()()()()NknnkknNNnNkrkrrnNkr krNr nXkxWxxWx偶 数 奇 数0000令 , ,则有:/211/2()()NkrNrxWX0/212/()()krr X01

2、2(/2)()kNWk蝶形运算单元如下所示:基 2、DIF-FFT (按频率抽取):-10/21/2/211(/2)/21/2/21/2()() ()()(/)()(/)()()()()NknnNkknnNk knNNnnkknNnNrnnXkxWxxWxXrx0000/21 /2/)nrNnW0则有: 12()(/)2nNxnx蝶形运算单元如下所示:由前面的分析可知,DIT(按时间抽取)算法与 DIF(按频率抽取)算法没有本质上的区别,只是复数加减法与旋转因子乘法的次序有区别,两种方法的运算量是一样的。在基 2 算法中,每个蝶形运算单元都包括 1 次复数乘法、2 次复数加法。N(N= )2M

3、点序列的运算流图应有 M 级蝶形,每一级都由 N/2 个蝶形运算组成,所以 N 点序列的基2FFT 算法,总的运算量为 次复数乘法, 次复数加法。直接 DFT 运算2logN2log量为 次复数乘法、 次复数加法。可见,FFT 算法大大减少了运算量,当 N 越2N(1)大时,FFT 算法的优越性越明显。基 4、DIF-FFT(按频率抽取 )10/4/213/411/4/23/4/1 /(4) (/2)00 0(3/4)()() () )() (/NknnNNNkknknknnNk k kNNNn nknXkxWxxWxx /4/1 / /23/40/4 /4/1 /0()(/)(/)()/4)

4、3()(/2)()(42)NkNkNkNnn rnN rNnxxxWXrnnxjxjxr /4 2/4/1 3/0/4)/3()(/2)()nrN rNn nNnXxjxjxW 令: 1 22 33(/4)/4()()()/2/() nNnnnnxjxNxjxnj j则有: /41 /410/4 /40/ /2 3/ /0()(),()(),NNrn rnNNn nr rXrxWXxW 蝶形运算单元如下所示:由上图可知每个基 4 蝶形运算单元包括 3 次复数乘法、8 次复数加法。N(N= ,M2为偶数)点序列的 FFT 运算若采用基 4 算法则有 M/2 级蝶形,每级由 N/4 个蝶形运算构成

5、。采用基 4 算法计算 N 点序列的 FFT 共需要 次复数乘法、 次复数加法。2log2log由于主要的运算时间集中在乘法上面,可见基 4 算法的运算量较基 2 算法减少了 25%,但运算量的减少是以硬件的复杂性及使用更多资源为代价的。FFT 算法的 FPGA 实现以 8 点(复数点,包括实部与虚部) 、基 2、DIF-FFT 为例来考虑 FFT 算法的 FPGA 实现。整个运算流图应由 3 级蝶形构成,每级中有 4 个蝶形运算。若 DIF 的输入序列为顺序输入,则得到倒序输出。完整的运算流图如下所示:考虑采用流水线结构,系统可采用 3 级基 2 蝶形运算单元构成,系统总体结构如下所示:总体

6、结构说明输入数据为串行的数据流,故在第一级蝶形运算模块前加入串并转换模块,将串行数据流转换为并行的两列数据流以适应基 2 蝶形运算模块的输入信号要求。由于每级蝶形运算一次处理的两个输入数据不能直接由前一级蝶形运算一次性输出,故在两个蝶形运算单元之间插入延时对齐模块,将前一级蝶形运算的结果(两列并行的数据流)作适当的延时并通过转接器对齐,形成后一级蝶形运算模块所需要的 2 列输入序列。在最后一级蝶形运算后加入串并转换模块,将 2 列并行的数据流合成为 1 列。最后加入倒序模块将 DIF-FFT 得到的倒序输出序列整理为顺序输出。旋转因子产生模块产生各级基 2 蝶形运算所需的旋转因子。由运算流图可

7、以看出最后一级的旋转因子其实是 1,故可省略最后一级蝶形运算单元中的旋转因子乘法器。因此用一个双口 ROM 将两组数据分别输出到第一级和第二级的蝶形运算单元即可。基 2 蝶形运算模块由两个复数加法器和一个复数乘法器构成。旋转因子由 ROM 产生后,作为复数乘法器的输入之一,与前面复数加法器得到的结果相乘完成一次蝶形运算。为提高系统的运行速度可在蝶形运算单元中插入流水线寄存中间结果。若输入序列的标号为 0、1、2、3、4、5、6、7,则在 A、B、C、D、E 处的信号标号如下图所示:串并转换模块完成 A 序列到 B 序列的转换;两个延时对齐模块分别完成 B 序列到 C序列、C 序列到 D 序列的

8、转换;并串转换模块完成 D 序列到 E 序列的转换。各模块框图串并转换模块:串并转换模块可用单输入、双输出的 RAM 来实现,同时控制输入信号的时钟频率为输出信号时钟频率的两倍。这里要用到乒乓操作,即读写操作分开,故 8 点序列要用到 16个存储单元。写入地址在写入时钟控制下按顺序递增。两个读出地址的最高位都为写入地址最高位的求反结果。两个读出地址的次高位固定,一个为 0,一个为 1,其它位在读出时钟的控制下递增。16 bits16 wordsdata150wraddress30wrenrdaddress_a30rdaddress_b30wrclockrdclockaclrqa150qb150

9、ram_3portinst1data qaqb延时对齐模块:用单输入、单输出的 RAM,适当控制读、写地址可实现数据的延时,转接器可用数据选择器构成。以最后一个蝶形运算单元前的延时对齐模块为例,可由如下方案实现:转接器两种状态分别为两个输出端与输入端直接相连和交叉相连,控制转接器的状态每 1个 clk 改变一次,即控制转接器的状态持续时间与延时单元的延时时间相同。经过分析可知,若采用相同的处理方式,则倒数第 n 个蝶型运算单元前的延时单元的延时 clk 个数为个。延时单元可直接用 RAM 实现,控制读写地址之间的间隔即可实现输出与输入之12n间的延时。整个延时对齐模块的连接图如下:a150b1

10、50selqa15-10qb15-10mux_2portinst216 Word(s)RAMBlock Type: AUTOdata150wraddress30wrenrdaddress30clockaclrq150ram_2portinst16 Word(s)RAMBlock Type: AUTOdata150wraddress30wrenrdaddress30clockaclrq150ram_2portinst3data_adata_bqaqb旋转因子产生模块:用双口 ROM 产生旋转因子。按照各级蝶形运算模块中所需的旋转因子的变化规律控制两个读出地址的变化,产生相应的旋转因子到各级蝶形运

11、算模块。32 Word(s)RAMBlock Type: AUTOaddress_a40address_b40clockaclrq_a150q_b150rom_2portinstq0q1并串转换和倒序模块:先将用数据选择器将两路数据合成为一路写入 RAM 中,然后从 RAM 中读出数据,适当控制读地址可实现倒序序列的整序。这里也要用到乒乓操作,读写操作分开。输出数据的时钟频率为输入数据时钟频率的两倍,sel 信号的变化频率与输出信号频率相同。RAM 中用到的时钟信号是输出数据的时钟。控制 RAM 的写入地址按输出时钟递增,读出地址最高位为写入地址最高位求反的结果。读出地址中的其它位按如下规则产

12、生:若将余下的地址位看成一个完整的地址,则最高位与写入地址最低位相同、次高位与写入地址次低位相同、依此类推。data1x150data0x150selresult150mux_1portinst16 Word(s)RAMBlock Type: AUTOdata150wraddress30wrenrdaddress30clockaclrq150ram_2portinst2基 2 蝶形运算模块:基 2 蝶形运算单元中要完成两个复数加法和一个复数乘法。一个复数加法器可由两个实数加法器构成。下图是基 2 蝶形运算单元的结构图:复数乘法的运算为: ()(*(*)RjIXjYCjSXYCX 为输入信号的实

13、部,Y 为输入信号的虚部,C 为旋转因子的实部,S 为旋转因子的虚部,R 为运算结果的实部, I 为输出结果的虚部。若按上述运算直接构成复数乘法器需 4个实数乘法器和 3 个实数加法器。考虑简化计算为: *-EZEYSYICX令 : , ( )则 : ( )( )与旋转因子有关的数据都可预先计算,即 C、C+S、C-S 可预先计算存放在 ROM 中。这样可将旋转因子乘法器简化为 3 个实数乘法器和 3 个实数加法器。结构如下:对中间结果可用寄存器寄存以提高运算速度。FFTFFT,即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改

14、进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。 设 x(n)为 N 项的复数序列,由 DFT 变换,任一 X(m )的计算都需要 N 次复数乘法和N-1 次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算” (四次实数乘法和四次实数加法),那么求出 N 项复数序列的 X(m),即 N 点 DFT 变换大约就需要N2 次运算。当 N=1024 点甚至更多的时候,需要 N2=1048576 次运算,在 FFT 中,利用 WN 的周期性和对称

15、性,把一个 N 项序列(设 N=2k,k 为正整数),分为两个 N/2项的子序列,每个 N/2 点 DFT 变换需要(N/2)2 次运算,再用 N 次运算把两个 N/2点的 DFT 变换组合成一个 N 点的 DFT 变换。这样变换以后,总的运算次数就变成N+2(N/2)2=N+N2/2 。继续上面的例子,N=1024 时,总的运算次数就变成了525312 次,节省了大约 50%的运算量。而如果我们将这种 “一分为二”的思想不断进行下去,直到分成两两一组的 DFT 运算单元,那么 N 点的 DFT 变换就只需要 Nlog(2)(N)次的运算,N 在 1024 点时,运算量仅有 10240 次,是先前的直接算法的 1%,点数越多,运算量的节约就越大,这就是 FFT 的优越性。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报