欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    信号与信息处理综合实验报告DSP实验二报告(FFT实现).doc

    • 资源ID:828502       资源大小:2.77MB        全文页数:8页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    信号与信息处理综合实验报告DSP实验二报告(FFT实现).doc

    1、信号与信息处理综合实验报告实验二FFT实现一、实验目的进一步熟悉CCS v5的开发环境,掌握调试的要素,并理解FFT的过程。二、 程序功能1、基本功能本程序的基本要求是:将FFT结果写入SDRAM后,并读取出来。2、拓展功能(1)其他点数的FFT;(2)FFT后再进行IFFT,验证是否与原数据一致。三、程序基本信息(一)、程序模块描述:1、FFT程序(实现基本功能):(1)FFT部分:主函数(main):初始化输入序列、旋转因子、FFT点数,负责其它功能函数的调用,并完成一些基本操作。void DSP_radix2(int n, short *restrict xy, const short

    2、*restrict w):完成FFT运算(基2频域抽选)。参数说明:n是输入序列的长度,short xy是输入序列(复数),const short w为旋转因子。 void bitrev_index(short *index, int n):计算得到重新排序表,n 为序列长度。 void DSP_bitrev_cplx(int *x, short *index, int nx):根据bitrev_index计算的排序表,把FFT输出的复数序列x重新排序为自然顺序。DSP_bitrev_cplx:(2)SDRAM配置与写入部分:主函数(main):负责其它功能的调用,执行SDRAM写入、读取和检

    3、测,并点亮对应的LED。EMIFA_config(&MyEmifaConfig):实现对EMIFA总线的12个接口寄存器的配置。具体配置信息在MyEmifaConfig结构体中。#pragma DATA_SECTION(sdram_data,.off_ram);数据段定义,定义要写入的数据位置,需要在CMD文件中建立对应的section。C641x_SDRAM.cmd文件;描述物理存储器的管理、分配和使用情况,用于DSP 代码的定位。2、拓展功能:拓展功能包括任意点数FFT和IFFT,它们都是基于FFT程序(FFT部分)修改的,以下只列出拓展(修改)的部分。(1) 任意点数FFT:要实现任意点

    4、数FFT,则输入序列和旋转因子都要根据点数N自动生成。下面就是实现这一功能的代码段:for (i=0;iN/2;i+)w12*i = 32767*(-cos(double)i*delta);w12*i+1 = 32767*(-sin(double)i*delta);for (i=0;iN;i+)x12*i = (short)(cos(PI*i/20.0)+cos(PI*i/10.0)+cos(PI*i/5.0)*0x80);x12*i+1 = 0;接下来调用DSP_radix2函数进行FFT即可。(2) IFFT:IFFT的实现基于如下算法:流程:对应代码段:for(i=0;i16;i+) x

    5、i*2+1=(-xi*2+1); DSP_radix2(nx,x,w); for(i=0;i32;i+) xi=xi/nx; DSP_bitrev_cplx(x,index,nx);注:输入序列均为实数,为了节省执行时间,该程序没有进行第二次共轭。另外输出为乱序,需要第二次重排。2、程序流程:(1)FFT(任意点数FFT、IFFT):某些流程只会在拓展功能中出现,会加以标注,另IFFT具体流程上面已给出,这里不再重复。开始初始化变量及相关库函数根据点数初始化输入序列,计算旋转因子(任意点数FFT)计算FFT计算重新排序表根据排序表重新排列结果序列FFT结果输出计算IFFT(IFFT)结束(2)

    6、SDRAM配置、写入与检测开始 初始化EMIFA总线的12个接口寄存器配置值指定数据段空间(DATA_SECTION)为SDRAM写入EMIFA寄存器配置执行FFT程序以获得要写入的结果把FFT结果写入到SDRAM中读取刚才写入的值并与要写入的值(FFT结果)比较,根据结果显示LED灯结束四、功能测试记录 1、FFT:任意点数的FFT由于变化较多,这里无法给出执行结果。输入序列:0, 0, 10, 0, 20, 0, 10, 0, 0, 0, -10, 0, -20, 0, -10, 0, 0, 0, 10, 0, 20, 0, 10, 0, 0, 0, -10, 0, -20, 0, -10

    7、, 0FFT结果(序列):FFT结果(图象):IFFT结果:由上图可见,和原始输入序列相比,IFFT的结果略有误差。 2、SDRAM: 正确执行的结果:检测错误时的结果(如把写入的结果与全0数组比较):五、调试过程中的主要问题及难点1、FFT无法得到正确结果。解决:原先的输入数据可能产生溢出,更换新数据后解决。2、编译SDRAM程序时出错。为了实现把FFT结果写入SDRAM中,FFT程序必须嵌入到SDRAM程序中,否则执行后获得的FFT结果会丢失。但是由于FFT程序中包含了对C64xDSPLIB的函数调用,因此需要在属性窗口中添加库文件dsp64x.lib。3、执行IFFT时,结果出错。出现这

    8、一错误的原因是选择了错误的IFFT函数,因为许多DSP库函数对输入都是有限制的,如果事先没有对输入参数进行转换以符合库函数的要求,结果就会出错。4、调试IFFT程序时,提示“不支持该芯片,程序没有加载”。开始设计IFFT程序时,由于C64x的DSP函数库中没有合适的IFFT函数,因此我打算采用C64x+DSPLIB中的函数DSP_ifft16x16t实现IFFT,结果就出现了以上错误。虽然在基于C64x内核的DSP芯片上执行为基于C64x+的DSP设计的库函数或许不会出错,但这种行为是CCS不允许的。六、实验总结和第一次DSP部分的实验相比,这次实验相对来说要复杂一些。实现基本功能时,就要把两个程序组合到一起,而实现拓展功能时,更需要自己设计相应的算法。然而,这也是第一次真正利用DSP芯片DSP方面的强大优势实现一些真正的数字信号处理操作,让我见识到了DSP芯片在某些运算上的功能强大。在这次实验中,我还接触到了许多DSP芯片的知识,如EMIF寄存器,更重要的是了解了代码优化的概念,并掌握了一定的优化方法,这对我的编程思想也是一次极大地提升。这次实验真正让我获益匪浅。第8页


    注意事项

    本文(信号与信息处理综合实验报告DSP实验二报告(FFT实现).doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922