FFT硬件算法实现.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FFT硬件算法实现

FFT硬件算法实现 本文给出FFT算法的数学推导,基SDF流水线FFT的实现结构,以及一些需要注意的问题。1.数学推导N点DFT定义为:,其中 (1)应用3维线性索引映射,令 (2)其中则(1)式可以展开为 (3)按照索引展开,则 (4)这是第一个蝶形运算结构,记为BF1。我们现在对旋转因子做进一步分解, (5)并按照索引展开,化简后我们得到一系列长度为长点的DFT。 (6)其中如(6)表示 (7) 公式(7)代表了前2级蝶形运算,我们把乘称为无关紧要的乘法,因为它不需要复数乘法器,而只需要对输入复数实部和虚部进行交换和取反操作。经过两级蝶形运算后,才需要复数乘法器进行与旋转因子的复数乘法操作。对长点的DFT递归的应用以上过程,我们便可以得到完整的基22 SDF FFT的信号流图。一个的信号流图如下:图 的信号流图2.基22 SDF 流水线FFT实现结构一个256点的22 SDF FFT的实现结构如下:需要考虑的问题:1.蝶形单元的设计对于BF1,在前N/2个时钟周期,2选1选择器选在位置“0”,因此蝶形运算单元是空闲的。输入数据直接进入N/2延时寄存器。待到延时寄存器为满时,即后N/2个时钟周期,2选1选择器选在位置“1”,蝶形运算单元开始对输入数据和N/2延时寄存器中存储的值进行2点DFT计算,即Z1(n)=x(n)+x(n+N/2) 0 = n N/2Z1(n+N/2)=x(n)-x(n+N/2) 0 = n N/2 把蝶形运算的输出Z1(n)送入第2级蝶形运算单元,同时把Z1(n+N/2)送回N/2延时寄存器,这是与下一组FFT数据的前N/2个数据的载入是同时的。实际上这一操作把并行的蝶形数据又变为串行(单路延时反馈转接,SDF),如果两路同时进行,则方法变为多路延迟转接结构(多路延时转接,MDC).对于BF2,其运算是类似的,不同点有(1)蝶形单元输入数据的距离变为N/4,(2)乘出(-j)操作通过实部/虚部交换,取反操作实现,数据再与选转因子进行相乘。经过BF1和BF2,乘旋转因子操作后,我们得到了与基- 4 DIF算法相同的数据。不断重复以上过程,N-1个时钟后,整个FFT数据以串行,倒序方式输出。但实际实现时,为提高性能,需要采用流水线方法,在复数乘法器前后加上寄存器。因此总的时延时钟数将增长到N-1+3(log4N-1)。其时序示意图如下:2.移位寄存器的设计 (1)D触发器组(2)简单双端口RAM(需要读写控制信号,地址产生器,资源中等)(3)基于RAM的移位寄存器(移位位数是3的整数倍,所以对于N/2点需要再加D触发器,资源较少)(4)基于RAM的FIFO(需要读写控制信号,本身会输出一些指示信号,可能利用起来比较方便,但资源增多)3.控制信号的设计(1)蝶形单元工作同步控制信号t,s(2)旋转因子地址信号(3) 每级的旁路控制信号4.复数乘法器的设计普通复数乘需要4个乘法器:y=为了节省乘法器,可以采用下面的公式并采用流水线结构,这样增加了3个加法器而减少了一个乘法器。5.旋转因子的存储和取址设计级数MFFT点数N112M34M56M78M910M1116W16[0…3]W4[0]32W32[0…7]W8[0…1]64W64[0…15]W16[0…3]W4[0]128W128[0…31]W32[0…7]W8[0…1]256W256[0…63]W64[0…15]W16[0…3]W4[0]512W512[0…127]W128[0…31]W32[0…7]W8[0…1]1024W1024[0…255]W256[0…63]W64[0…15]W16[0…3]W4[0]2048W2048[0…511]W512[0…127]W128[0…31]W32[0…7]W8[0…1]注意:这里的旋转因子还未乘以[0 2 1 3],即对于2048点W2048[0…511],真正需要的旋转因子为。由可知,点FFT的旋转因子是由点FFT的旋转因子抽取得到的。即2048点FFT的旋转因子包含了其它点数的旋转因子。通过恰当的存储设计和地址设计可以在节省存储空间的同时满足可变点数FFT的计算要求。旋转因子的寻址方式为:这可以通过设置一个log2(N/22)比特的计数器实现对于旋转因子来说,有性质: (1) (2) 根据(1),N点FFT所用到的旋转因子的存储量可以减少为原来的1/4。即旋转因子只存储前N/4+1个当计算地址为[0,N/4],直接取ROM里的值;当计算地址为[N/4+1,N/2-1],地址=N/2-所计算地址,实部取反,虚部不变;当计算地址为[N/2,N/2+N/4],地址=计算地址-N/2,实部,虚部都取反;当计算地址为[N/2+N/4+1,N-1],地址= N/2-(计算地址 - N/2)=

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档