DSP实验报告4剖析.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP实验报告
院系:哈尔滨理工大学荣成校区
专业:电子信息工程
学号: 1230160101 姓名:董小天
日期: 2015年6月16日
实验四无限冲击相应滤波器(IIR)算法实验
一、实验目的
1、熟悉设计IIR数字滤波器的原理与方法
2、掌握数字滤波器的计算机仿真方法;
3、通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。
二、实验设备
计算机,CCS 3.1版软件,实验箱,DSP仿真器,连接线。
三、实验原理
1、无限冲击响数字滤波器的基础理论;
2、模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);
3、双线性变换的设计原理。
四、实验步骤
1、复习有关巴特沃斯滤波器设计和用双线性变换法设计IIR数字滤波器的知识;
2、阅读本实验所提供的样例子程序;
3、运行CCS软件,对样例程序进行跟踪,分析结果;
4、填写实验报告。
5、样例程序实验操作说明
A.实验前准备
①实验箱和CPU板设置:SW2的2、4置ON,1、3置OFF;S2全部置ON;JP3开关的3、6位置ON,其余置off,S23全部置OFF。
②用导线连接“信号源”2号孔“信号源1”和“A/D单元”2号孔“ADIN1”;
B.实验
启动CCS 3.1,打开工程文件exp03_iir。在程序中m=0处设置断点,运行
打开一个图形观察窗口;设置双综观察在起始地址x、y,数值变化为256,32位浮点型变量。
五、实验结果及代码
实验代码
#define UCHAR unsigned char
#define UINT16 unsigned int
#define UINT32 unsigned long
#define TRUE 1
#define FALSE 0
//---------------------------------------------------------
//----------------定义寄存器地址--------------
#define IODIR_ADDR 0x3400
#define IODATA_ADDR 0x3401
//---------------定义寄存器操作--------------
#define IODIR *(ioport unsigned int *)IODIR_ADDR
#define IODATA *(ioport unsigned int *)IODATA_ADDR
#define IER0 (*(volatile unsigned int*)0x0000) //Interrupt Enable Register 0 #define IFR0 (*(volatile unsigned int*)0x0001) //Interrupt Flag Register 0 #define IER1 (*(volatile unsigned int*)0x0045) //Interrupt Enable Register 1 #define IFR1 (*(volatile unsigned int*)0x0046) //Interrupt Flag Register 1
#define AD_Addr 0x20008
#define AD_in (*(unsigned int *)AD_Addr) //AD输入
//----------------------------------------------------------
/* 全局变量定义*/
//---------------------------------------------------------
#define Len 256
#define FLen 51
#define pi 3.1415927
//-----------------------------------------------------------
void int2ReadData();
interrupt void int1_isr();
void biir2lpdes(double fs, double nlpass, double nlstop, double a[], double b[]);
//-----------------------------------------------------------
double fs,nlpass,nlstop,nhpass,nhstop,a[3],b[3],x[Len],y[Len];
int in_x[Len];
int m = 0;
int intnum = 0;
double xmean=0;
int n=0;
int i,j,p,k=0;
double w2,w1,w0;
//--------------------------------------------------------------------
// 函数名称:void biir2lpdes(double fs, double nlpass, double nlstop, double a[], double b[])
// 函数说明:
// 输入参数:
// 输出参数: 无
//--------------------------------------------------------------------
void biir2lpdes(double fs, double nlpass, double nlstop, double a[], double b[]) {
int i,u,v;
double wp,omp,gsa,t;
wp=nlpass*2*pi;
omp=tan(wp/2.0);
gsa=omp*omp;
for (i=0; i<=2; i++)
{
u=i%2;
v=i-1;
a[i]=gsa*pow(2,u)-sqrt(2)*omp*v+pow(-2,u);
}