FFT硬件加速器.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1K点FFT的硬件加速器实现 Version 0.6 修改历史 版本 时间 内容 0.1 2011.03.22 初稿 0.2 2011.03.28 修改地址计算图,1k点计算时间 0.3 2011.03.30 修改2维FFT算法,增加大点数的二维算法时间 0.4 2011.03.31 增加3维FFT算法和计算的时间,256点ram的计算 0.5 2011.04.02 增加512点ram时的计算,整理文档。 0.6 2011.04.06 增加混合基旋转因子计算图,修改各个计算时间公式,增加面积估算 0.7 2011.04.08 增加2k点计算时间 0.8 2011.04.30 修改2维计算时间,和旋转因子load/store时间 1K点FFT的硬件加速器实现了1K点的快速FFT计算,采用单级结构,使用1个基4蝶形计算单元就能实现基4或基2的FFT计算。 硬件结构: 图1 FFT硬件加速器结构 LD_RAM 载入1k点的计算数据。当正在计算1k点数据时,载入下一个需要计算的1k点数据。 RAM1 载入1K点计算数据,输入到基4计算单元。分为4个bank,分别保存0-255,256-511,512-755,756-1023的数据。 RAM2 保存基4计算单元蝶形计算的结果。也分为和RAM1一样的4个bank。 在FFT计算的偶数级时,RAM2会输入数据给基4计算单元,而RAM1保存计算后的数据。 当载入数据,计算,或保存数据时,LD_RAM,RAM1,RAM2的功能可以互换。 RAM3 载入旋转因子,并和数据一起进入基4计算单元进行计算。分为4个bank,分别储存Wb,Wc,Wd,即一次基4蝶形计算的3个旋转因子储存在3个bank里,使得可以同时输出给基4计算单元。或者保存中间计算的旋转因子,计算混合基计算或者二维计算时的中间结果。 这4个ram,都是1k×64bits=8KB容量。数据在RAM中的存储方式是每行256bits,即每行存储4点数据。 地址计算单元 输入数据地址计算和输出数据地址计算单元得到相应的数据地址。 对于基4 DIT-FFT计算,每次输入的数据是反序的,输出的数据是顺序的。 其中反序的计算是:把1024顺序分为5位的4进制数,每一位由一个计数器实现,反序即使根据顺序,这5个计数器的反序组合决定输入地址。 地址的计算参数为:计算级数L,每级的蝶形计算距离Dis,当前计算蝶形所在的组为第N组,一共M组,当前蝶形所在组的位置是第S个蝶形。其中Dis=4^(L-1)。 旋转因子的计算也是根据当前蝶形的位置,载入旋转因子。 地址的计算: 第一级: 数据在RAM1中存储方式:0-255,256-511,512-767,768-1023分别储存在4个bank中。第一级基4FFT的采样间隔为1,所以计算的4点应该为0-1-2-3,4-5-6-7,8-9-10-11…..。则但是根据DIT-FFT的原理,应该为反序输入,正序的计数器顺序为I5-I4-I3-I2-I1,则反序的计数器顺序为I1-I2-I3-I4-I5,这里I1的计数相当于bank的ID, 其他计数器的计数顺序不变,I2累加- I3累加- I4累加- I5累加。 0-1-2-3这4个数的反序地址正好分别在4个bank中。每次计算点数的bank偏移地址为I2*64+I3*16+I4*4+I5。计算的4个数按照原位计算的地址保存,即按照正序的计数器顺序保存。 这里计算的时候要考虑到ram内存储的格式为0,1,2,3即相邻的四个点组成了一个256bits的数据。 因为第二级的采样间隔为4,则数据计算完毕的原位保存顺序为0-1-2-3作为一个256bits到bank1,4-5-6-7到bank2,8-9-10-11到bank3,12-13-14-15到bank4,依次类推。这样下一级也可以每次从4个bank中取得4个计算点。 第一级的旋转因子数目为3个,即每个基4计算的旋转因子相同。 第二级: 数据的输入顺序为0-4-8-12,不用反序。当计算4次,即计算完0-15后,偏移地址加1,计算下一个16点数据。 数据计算后的输出顺序为0-4-8-12作为一个256bits存入bank1,16-20-24-28存入bank2. 第二级的旋转因子数目为12个。 第三级: 数据的输入顺序为0-16-32-48,不用反序。当计算1次,偏移地址加1,计算下一个4点数据1-17-33-49。当计算4次后,偏移地址-4,回到最早的地址。当计算16次,即0-63点计算完成后。偏移地址加1. 数据计算后的输出顺序为0-16-32-48作为一个256bits存入bank1,16-20-24-28存入bank2. 第三级的旋转因子数目为48个。 其他各级地址关系见图2

文档评论(0)

飞扬的岁月 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档