fft反变换的dsp实现.docxVIP

  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文档。上传文档
查看更多
数字信号处理算法的DSP实现 课程报告 题目FFT反变换的DSP实现 班 级:信息工程1班 姓 名:张庆 学 号:200720101127 日 期:2010.12.25 一、FFT反变换相关理论 对于离散傅里叶变换(DFT)的数字计算,FFT是一种有效的方法。一般假定输入序列是 复数。当实际输入是实数时,利用对称性质可以使计算 DFT非常有效。 一个优化的实数 FFT算法是一个组合以后的算法。 原始的2N个点的实输入序列组合成 一个N点的复序列,之后对复序列进行 N点的FFT运算,最后再由N点的复数输出拆散成 2N点的复数序列,这 2 N点的复数序列与原始的 2N点的实数输入序列的 DFT输出一致。 使用这种方法,在组合输入和拆散输出的操作中, FFT运算量减半。这样利用实数FFT 算法来计算实输入序列的 DFT的速度几乎是一般FFT算法的两倍。 二、FFT反变换DSP实现原理 1.实数FFT运算序列的存储分配 如何利用有限的 DSP系统资源,合理的安排好算法使用的存储器是一个比较重要的问 题。本文中,程序代码安排在 0x3000开始的存储器中,其中 0x3000~0x3080存放中断向量 表,FFT程序使用的正弦表和余弦表数据 (.data段)安排在0xc00开始的地方,变量(.bss段定 义)存放在 0x80开始的地址中。另外,本文中 256点实数 FFT程序的数据缓冲位 0x2300~0x23ff , FFT变换后功率谱的计算结果存放在 0x2200~0x22ff中。 三、FFT反变换DSP实现程序说明 连续定位.cmd 连续定位.cmd文件程序如下: MEMORY { PAGE 0: PRGROM : VECT: PAGE 1: S_PRAM : INTRAM1: INTRAM2: INTRAM3: EXTRAM1: EXTRAM2: EXTRAM3: origi n=00080h len gth=00200h origin = 0xff80, len = 0x80 origi n=00060h len gth=00020h origi n=00400h len gth=00200h origi n=00800h len gth=00200h origi n=00c00h len gth=01000h origi n=01c00h len gth=00400h origi n=02000h len gth=010h o= 2100h l=500h } SECTIONS vectors :{} VECT PAGE 0 .text :{} PRGROM PAGE 0 .data :{} INTRAM3 PAGE 1 power :{} EXTRAM1 PAGE 1 sin_tbl : {} INTRAM1 PAGE 1 cos_tbl :{} INTRAM2 PAGE 1 fft_vars: {} S_PRAM PAGE 1 stack :{} EXTRAM2 PAGE 1 .stack : {} EXTRAM3 PAGE 1 ?bss : {} EXTRAM3 PAGE 1 } 2.基2实数FFT运算的算法,该算法主要分为以下四步进行: 输入数据的组合和位排序 实现数据位倒序存储的具体程序段如下: .mmregs .in elude fft_size.i nc .def bit_rev .ref _real_fft_ in put, fft_data .asg AR2,RE0RDERED_DA TA .asg AR3,0RIGINAL_INPUT .asg AR7,DATA_PR0C_BUF .text bit_rev: SSBX FRCT STM #_real_fft_i nput,ORIGINAL_INPUT ;在AR3(0RIGINAL_INPUT) 中放入输入地址 STM #fft_data,DA TA_PROC_BUF ;在AR7(DA TA_PROC_BUF)中放入处理后输出的地址 MVMM DATA_PROC_BUF,REORDERED_DA TA ;AR2(REORDERED_DA TA)中装入第一个位倒序数据指针 STM #K_FFT_SIZE-1,BRC RPTBD bit_rev_e nd-1 STM #K_FFT_SIZE,AR0 ;AR0 的值是输入数据数目的一半 MVDD *ORIGINAL_INPUT+,*REORDERED_DA TA+ ;将原始输入缓冲中的数据放入到位倒序缓冲中去之后 , ;输入缓冲(AR3)指针加1位倒序缓冲(AR2)指针也加1 MVDD *ORIGINAL_INPUT-,*REORDERED_DA TA+ ;将原始输入缓冲中的数据放入到位倒序缓冲

文档评论(0)

niupai11 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档