FIR 快速傅立叶变化源码[精].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文档。上传文档
查看更多
课程名称: 实验项目: 实验地点: 专业班级: 学号: 学生姓名: 指导教师: 同组人员: 2013年 月 日 FIR滤波器的C54X实现 一、实验目的 二、实验.Code Composer Studio 3.1 软件; .MATLAB ;、实验原理 如果FIR 滤波器的冲激响应为h(0),h(1), ...,h(N-1)。X(n)表示滤波器在n 时刻的输入,则n 时刻的输出为: y(n) = h(0)x(n) + h(1)x(n-1) + ... + h(N-1)x[n-(N-1)] 使用MAC 或FIRS 指令可以方便地实现上面的计算。 图1 说明了使用循环寻址实现FIR 滤波器的方法。为了能正确使用循环寻址,必须先初始化BK,块长为N。同时,数据缓冲区和冲激响应(FIR 滤波器的系数)的开始地址必须是大于N 的2 的最小幂的倍数。例如,N=11,大于N 的最小2 的幂为16,那么数据缓冲区的第一个地址应是16 的倍数,因此循环缓冲区起始地址的最低4 位必须是0。 在图1 中,滤波系数指针初始化时指向h(N-1),经过一次FIR 滤波计算后,在循环寻址的作用下,仍然指向h(N-1)。而数据缓冲区指针指向的是需要更新的数据,如x(n)。在写入新数据并完成FIR 运算后,该指针指向x(n-(N-1))。所以,使用循环寻址可以方便地完成滤波窗口数据的自动更新。 五、实验内容1.FIR滤波器的设计 FIR滤波器的设计可以用MATLAB软件的窗函数法进行,这里选择Hamming窗,程序为: b=fir1(16,1500/8000*2) 得到FIR数字滤波器系数b为: b0?=?0?b9?=?0.2834 b1?=?0.0048?b10?=?0.0973 b2?=?0.008?b11?=?-0.029 b3?=?-0.0089?b12?=?-0.0429 b4?=?-0.0429?b13?=?-0.0089 b5?=?-0.029?b14?=?0.008 b6?=?0.0973?b15?=?0.0048 b7?=?0.2834?b16?=?0 b8?=?0.3745? 在DSP汇编语言中,不能直接输入十进制小数,在MATLAB中进行如下转换: h=round(b*2^15) 将系数转换为Q15的定点小数形式,为: h0?=?0?h9?=?9287 h1?=?158?h10?=?3187 h2?=?264?h11?=?-951 h3?=?-290?h12?=?-1406 h4?=?-1406?h13?=?-290 h5?=?-951?h14?=?264 h6?=?3187?h15?=?158 h7?=?9287?h16?=?0 h8?=?12272? 2.产生滤波器输入信号文件 以下是一个产生输入信号的C语言程序,信号是频率为1000Hz和2500Hz的正弦波合成的波形。文件名为firinput.c 。 #include stdio.h #include math.h void main() { ?int i; ?double f[256]; ?FILE *fp; ?if((fp=fopen(firin.inc,wt))==NULL) ?{ ??printf(cant open file! \n); ??return; ?} ?for(i=0;i256;i++) ?{ ??f[i]=sin(2*3.14159*i*1000/8000)+sin(2*3.14159*i*2500/8000); ??fprintf(fp,?.word??%ld\n,(long)(f[i]*32768/2)); ?} ?fclose(fp); } 该程序产生名为firin.inc 的输入信号程序。Firin.inc文件的部分内容如下: ?.word??0 ?.word??26722 ?.word??4798 ?.word??5315 ?.word??16384 : : ?.word??-5319 ?.word??-4793 ?.word??-26721 在DSP汇编语言程序中通过.copy汇编命令将生成的数据文件firin.inc 复制到汇编程序中,作为FIR滤波器的输入

文档评论(0)

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

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

1亿VIP精品文档

相关文档