标题: 利用DSP开发环境CCS3.3实现IIR数字滤波器设计报告 [打印本页]

作者: 1136626937    时间: 2018-5-31 18:48
标题: 利用DSP开发环境CCS3.3实现IIR数字滤波器设计报告

DSP课程设计》报告

2017-2018学年第一学期)


利用DSP开发环境CCS3.3实现IIR数字滤波器设计

目录

一、课程设计性质和目的              1
二、课程设计的内容及要求              1
1、硬件/仿真设计              1
2、软件设计              2
3、功能要求:              2
三、程序编写              2
四、结果及分析              5
五、心得体会              9
六、参考文献              10

一、课程设计性质和目的

DSP课程设计是《DSP》课程是结课后的一门综合性实践课。设计了IIR滤波器,该设计利用DSP实现IIR数字滤波器。所选题目《利用DSP开发环境CCS3.3实现 IIR数字滤波器设计》紧密结合所学的主要内容,加深巩固所学知识,同时对所学内容进行扩展,有一定的深度和广度,能充分发挥学生的思考能力和团结协作的能力。通过对DSP课题的研究,提高了学生对DSP应用系统的设计能力,进一步了解滤波器的原理,了解IIR滤波器的设计过程、CCS的使用方法以及掌握基本编程语言,掌握CCS设计IIR滤波器和CCS工程的建立,源文件的汇编、连接以及调试程序,并且观察其输入、输出波形。

二、课程设计的内容及要求
1、硬件/仿真设计
数字滤波是数字信号处理的一部分。数字信号处理主要是研究用数字或符号的序列来表示信号波形,并用数字的方式去处理这些序列,把它们改变成在某种意义上更为有希望的形式,以便估计信号的特征参量,或削弱信号中的多余分量和增强信号中的有用分量。具体来说,凡是用数字方式对信号进行滤波、变换、调制、解调、均衡、增强、压缩、估值、识别、产生等加工处理,都可纳入数字信号处理领域。数字信号处理学科的一项重大进展是关于数字滤波器设计方向的研究。
描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数据的处理。时域离散系统的频域特性:
其中分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特性),是数字滤波器的单位取样响应的频谱,又称为数字滤波器的频域响应。输入序列的频谱经过滤波后,因此,只要按照输入信号频谱的特点和处理信号的目的, 适当选择使得滤波后的满足设计的要求,这就是数字滤波器的滤波原理。
2、软件设计
数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。IIR滤波器与FIR滤波器相比,具有相位特性差的缺点,但它的结构简单,运算量小,具有经济、高效的特点,并且可以用较少的阶数获得很高的选择性。因此也得到了较为广泛的应用。
IIR 数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型来实现,其差分方程为:
系统函数为:
设计IIR滤波器的任务就是寻求一个物理上可实现的系统函数H(z),使其频率响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。
3、功能要求:
用DSP汇编语言编程,实现IIR运算,对产生的合成信号,滤除信号中高频成分,观察滤波前后的波形变化。

三、程序编写
  1. .global _iir,_init,_outdata
  2. _iir
  3. bset frct
  4. sub #1,t0
  5. mov t0,mmap(csr)
  6. add t0,ar0
  7.               mov xar2,xdp
  8.               mov ar2,cdp
  9.               mov #0,ac0
  10.               rpt csr
  11.               macmz *ar0-,*cdp+,ac0
  12.               add t0,ar1
  13.               mov xar3,xdp
  14.               mov ar3,cdp
  15.               rpt csr
  16.               macmz *ar1-,*cdp+,ac0
  17.               mar *ar1+
  18.               mov hi(ac0),*ar1
  19.               mov hi(ac0),t0
  20.               bclr frct
  21.               ret
  22. _init
  23. sub #1,t0
  24.               mov t0,mmap(csr)
  25.               mov #0,ac0
  26.               rpt csr
  27.               mov ac0,*ar0+
  28.               rpt csr
  29.               mov ac0,*ar1+
  30.               ret
  31. _outdata
  32. mov t1,ac0
  33.               sub #2,ac0
  34.               mov ac0,mmap(csr)
  35.               add ac0,ar0
  36.               rpt csr
  37.               delay *ar0-
  38.               mar *ar0+
  39.               mov t0,*ar0
  40.               ret
  41. 2.链接命令文件
  42. -stack 0x0500
  43. -sysstack 0x0500
  44. -heap 0x1000
  45. -c
  46. -u _Reset
  47. -l rts55.lib
  48. MEMORY
  49. {PAGE 0:
  50.     RAM(RWIX): origin=0x000100,   length=0x01ff00
  51.     ROM(RIX): origin=0x020100,   length=0x01ff00
  52.     VECS(RIX): origin=0xffff00,   length=0x000200
  53. PAGE 2:
  54.     IOPORT(RWI):origin=0x000000, length=0x020000
  55. }
  56. SECTIONS
  57. {
  58.    .text >ROM PAGE 0
  59.    .data >ROM PAGE 0
  60.    .bss  >RAM PAGE 0
  61.    .const >RAM PAGE 0
  62.    .sysmem >RAM PAGE 0
  63.    .stack >RAM PAGE 0
  64.    .cio   >RAM PAGE 0
  65.    .sysstack >RAM PAGE 0
  66.    .switch >RAM PAGE 0
  67.    .cinit >RAM PAGE 0
  68.    .pinit >RAM PAGE 0
  69.    .vectors  >VECS PAGE 0
  70.    .ioport >IOPORT PAGE 2
  71.   }
  72. 3.C程序
  73. #include <math.h>
  74. #define signal_1_f 500
  75. #define signal_2_f 10000
  76. #define signal_sample_f 25000
  77. #define pi 3.1415926
  78. #define IIRNUMBER_L 2
  79. #define bufer_L 256
  80. int N_L=IIRNUMBER_L;
  81. int data_in[bufer_L];
  82. int out[bufer_L] ;
  83. int x[IIRNUMBER_L+1];
  84. int y[IIRNUMBER_L+1];
  85. int k=0;
  86. int bufer=bufer_L;
  87. int fBn[IIRNUMBER_L]={0,0x634a};
  88. int fAn[IIRNUMBER_L]={0xe5c,0xe5c};
  89. extern int iir(int *x,int *y,int *fAn,int *fBn,int N_L);
  90. extern int init(int *,int *,int);
  91. extern int outdata(int *,int,int);
  92. void inputwave();
  93. void main()
  94. {int iirout;
  95. inputwave();
  96. init(x,y,N_L);
  97. while(1)
  98. {x[0]=data_in[k];
  99. iirout=iir(x,y,fAn,fBn,N_L);
  100. outdata(out,iirout,bufer);
  101. k++;
  102. if(k>=bufer_L)
  103. {
  104. k=0;
  105. }}}
  106. void inputwave()
  107. {
  108. float wt1;
  109. float wt2;
  110. int i;
  111. for(i=0;i<=bufer_L;i++)
  112. {
  113. wt1=2*pi*i*signal_1_f;
  114. wt1=wt1/signal_sample_f;
  115. wt2=2*pi*i*signal_2_f;
  116. wt2=wt2/signal_sample_f;
  117. data_in[i]=(cos(wt1)+cos(wt2))/2*32768;
  118. }}
复制代码

完整的Word格式文档51黑下载地址:
利用DSP开发环境CCS3.3实现IIR数字滤波器设计.doc (494 KB, 下载次数: 77)



作者: Evelynchan    时间: 2018-6-7 22:12
想问问楼主有没有ccs 3.3的安装包




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1