61ic电子在线 首页 技术 嵌入式系统 查看内容

TMS320F28335的DSPlib使用

2017-6-12 12:56| 发布者: 61ic| 查看: 585| 评论: 0|原作者: xug|来自: 61ic

摘要: 注:如果使用1024点的话需要将RAML6的地址空间扩大。因为原本的空间长度只有1000。


一.FFT实数性变换
本系统使用的是C28x_FPU_Library_Beta1的DSPlib,安装完成后开始使用dsplib
1. 将所需的math.h、float.h等所需的头文件加入到:C:\CCStudio_v3.3\C2000\cgtools\include的路径下。并将C28x_FPU_Lib_Beta1.lib放入到C:\CCStudio_v3.3\C2000\cgtools\lib的路径下
2. 创建工程后添加C28x_FPU_Lib_Beta1.lib到工程中,该库文件包含C编译器所支持的ANSI标准运行支持函数、编译器公用程序函数、浮点运算函数、数字信号处理的算法实现等功能。
3. 在工程中包含需要使用的头文件后,定义FFT输入数据段(先定义数据段,在声明数组),在CMD文件中分配需要的空间,INBUF ALIGN(256) : { } > RAML6 PAGE=1。lib中的RFFT_f32(&fft)对输入数据有严格的要求,需要数据对齐。RFFT_f32u(&fft)则对数据格式的要求会降低些。
4. 宏定义FFT变换的点数FFT_SIZE,与FFT需要的阶数FFT_STAGES=log2(FFT_SIZE),声明FFTlib的结构体RFFT_F32_STRUCT fft。(详细情况请看FPU.h)
5. 初始化fft.InBuf= 输入数据,fft.OutBuf=FFT输出数据,fft.CosSinBuf=旋转因子,fft.FFTSize=FFT的点数,fft.FFTStages=FFT阶数,fft.MagBuf=FFT取模输出。其中fft.OutBuf的格式为OutBuf[0] = real[0].... OutBuf[N/2] = real[N/2]、OutBuf[N/2-1] = imag[N/2]... OutBuf[N-1] = imag[1]
6. 然后初始化旋转因子,调用RFFT_f32_sincostable_IQ.c文件中的RFFT_f32_sincostable()函数来初始化旋转因子。
7. 调用RFFT_f32u(&fft)完成FFT的计算,输出到OutBuffer。然后调用RFFT_f32_mag (&fft)完成FFT求模的计算,输出到MagBuffer

FFT算法运行时间:
在DSPlib的FFT运算中使用RFFT_f32u(&fft )、RFFT_f32_mag(&fft)使用profile查看运行时间
128点:需要14170个时钟周期,加上求模需要19575的时钟周期。
256点:需要61962个时钟周期,加上求模需要83685的时钟周期。
1024点:需要128051个时钟周期,加上求模需要171534的时钟周期。(如果使用150M的时钟大约需要1.144ms)

注:如果使用1024点的话需要将RAML6的地址空间扩大。因为原本的空间长度只有1000。
并使用点灯的方法进行运算时间的验证,没完成一次运算IO取反,计算一下周期时间正好是1.1439ms。

鲜花

握手

雷人

路过

鸡蛋

地址 :湖南省株洲市天元区利江花园
合作 Email: administration@61ic.com

  • 关注61ic官方微博
    了解最新动态

  • 关注61ic微信公众号
    这里有好玩的讯息

  • 加入61ic交流群
    不断在这里成长

© 2014-2017 HuNan 湖南索炜达电子科技有限公司 . All rights reserved.
湘公网安备 43020202000020号

Archiver|手机版|小黑屋||湘ICP备13001086号-2 QQ 
返回顶部