TMS320F28335调用DSP函数库实现复数的FFT的方法 .pdfVIP

TMS320F28335调用DSP函数库实现复数的FFT的方法 .pdf

  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文档。上传文档
查看更多
TMS320F28335调⽤DSP函数库实现复数的FFT的⽅法 在数字信号处理中,FFT变换是经常使⽤到的,在DSP中⾃⼰编写的FFT变换函数通常会存在计算效率太慢的问题,有时需要调⽤DSP函数 库⾃带的变换函数。但是,DSP在对FFT运算效率优化的同时,对于函数的调⽤⽅式也就有了⽐较多的要求,下⾯结合⾃⼰的调试经验做⼀ 下简单的介绍。 1、准备⼯作 DSP的数字信号处理的⼀系列函数都在C28x_FPU_Lib.lib库中,因此,⾸先需要在CCS的⼯程⽂件中连接此库:在⼯程设置中C2000 Linker——file search path中添加该库和路径。并在主程序中包含下⾯头⽂件:#include FPU.h。 2、结构体介绍 FFT函数的输⼊为⼀个结构体,该结构体的定义⽅式如下: typedef struct { float32 *InPtr; float32 *OutPtr; float32 *CoefPtr; float32 *CurrentInPtr; float32 *CurrentOutPtr; Uint16 Stages; Uint16 FFTSize; } CFFT_F32_STRUCT; 其中InPtr为输⼊数组指针,假设你的CFFT的采样点1024个点,那么你的输⼊数组为inputdata[2*FFTSize],长度为2048是因为输⼊数据 为复数,实部和虚部需要分开进⾏存储的,所以输⼊数组的长度为2*FFTSize.其中实部和虚部的存储⽅式为inputdata[0]存储你第⼀点的实 部,inputdata[1]存储第⼀点的虚部,接着依次向下inputdata[2]存储第⼆个点的实部,inputdata[3]第⼆个点的虚部。 OutPtr为指向输出数组的指针,输出数组的⼤⼩也为2*FFTSize,存储⽅式同样的outputdata[0]。 CoefPtr,为指向转化因⼦数组的指针,长度为FFTSize,决定傅⾥叶转化因⼦的只有傅⾥叶变换的阶数。 CurrentInPtr也是指向输⼊数组的指针,但是该输⼊数组是⽤来计算幅值所⽤的。 CurrentOutPtr来指向幅值输出的数组。 stage为傅⾥叶变换的阶数。 FFTSize为FFT变换的长度,也就是常说的多少点的FFT变换,其与阶数的关系为FFTSize=2^stage。 3、函数介绍 下⾯介绍⼀下各个函数的应⽤: 第⼀个函数是: CFFT_f32_sincostable(cfft) 其中cfft就是上述的⼀个结构体。这个函数的作⽤就是计算傅⾥叶变换的转化因⼦。转化因⼦由公式可知只与傅⾥叶变换的阶数有关,所以 只要在结构体中对stage和FFTSize进⾏了赋值就可以计算转化因⼦了,⽽且转化因⼦是固定的,如果不需改变傅⾥叶变换的阶数,只需要 计算⼀次就好了。 第⼆个函数是: CFFT_f32(cfft) 这个函数就是做复数傅⾥叶变换的函数,需要注意的是该函数要求输⼊数组的数据格式对齐,即变量存储的起始地址为 2*FFTsize*sizeof(float),实现⽅式在下⾯3中定义。如果数据格式不对齐,则该函数的计算结果不定。 第三个函数是: CFFT_f32u(cfft) 这个函数同样是做FFT变换的,但是其不要求输⼊数据的格式对齐,适⽤于输⼊数据格式⽐较乱时,但是同样相对与前⼀个函数来说, 其计算效果会⽐较差。 第四个函数为 : CFFT_f32_mag(cfft) 这个函数是计算幅值的函数,主要作⽤就是计算*CurrentInPtr指向的复数数组中的复数的模值,将计算出来的模值保存 在*CurrentOutPtr该成员指向的数组中,与其他成员⽆关。 最后⼀个函数是: ICFFT_f32(cfft) 该函数计算FFT的逆变换。同样要求输⼊数组格式对齐。 4、 格式对齐的实现⽅式 前⾯介绍的CFFT和ICFFT函数都要求输⼊的数组格式对齐,即变量存储的起始地址为2*FFTsize*sizeof(float)。例如256点的FFT变换, 则变量的起始地址必须是1024的倍数。格式对齐的⽅式利⽤变量定义的⽅式进⾏。 ⾸先确定变量存储的区域,该代码与普通对存储空间分区的代码⽆区别,只是定义⼀个区域⽤来存储⾃⼰定义的变量: ZONE6C : origin = 0x108000, length = 0x004000 然后在上⾯存储分区中定义变量存储的段,⽤来定义后续变量的具体位置,ALIGH的作⽤就是使该段的起始地址 为2*FFT

文档评论(0)

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

从事一线教育多年 具有丰富的教学经验

1亿VIP精品文档

相关文档