实验五IIR滤波器.docx

上传人:b****8 文档编号:9408297 上传时间:2023-05-18 格式:DOCX 页数:10 大小:102.87KB
下载 相关 举报
实验五IIR滤波器.docx_第1页
第1页 / 共10页
实验五IIR滤波器.docx_第2页
第2页 / 共10页
实验五IIR滤波器.docx_第3页
第3页 / 共10页
实验五IIR滤波器.docx_第4页
第4页 / 共10页
实验五IIR滤波器.docx_第5页
第5页 / 共10页
实验五IIR滤波器.docx_第6页
第6页 / 共10页
实验五IIR滤波器.docx_第7页
第7页 / 共10页
实验五IIR滤波器.docx_第8页
第8页 / 共10页
实验五IIR滤波器.docx_第9页
第9页 / 共10页
实验五IIR滤波器.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验五IIR滤波器.docx

《实验五IIR滤波器.docx》由会员分享,可在线阅读,更多相关《实验五IIR滤波器.docx(10页珍藏版)》请在冰点文库上搜索。

实验五IIR滤波器.docx

实验五IIR滤波器

贵州大学实验报告

学院:

电气工程学院专业:

电子信息工程班级:

姓名

学号

实验组

实验时间

指导教师

成绩

实验项目名称

IIR数字滤波器

实验目的

1.了解IIR滤波器的原理及使用方法

2.了解使用MATLAB语言设计IIT滤波器的方法

3.掌握DSP对IIR对滤波器的设计及编程方法

4.熟悉在CCS环境下对IIR滤波器的调试方法

实验要求

教师简单讲解,学生调试程序,教师全程辅导

实验原理

IIR数字滤波器的输入x(k)和输出y(k)的关系可以用如下常系数线性差分方程及其Z变换描述,即

y(k)=(6-1)

系统的传递函数为

H(Z)=(6-2)

 

实验仪器

安装CCS和MATLAB的电脑一台

实验步骤

1、MATLAB的滤波器设计

在MATLAB中使用滤波器设计工具箱(FDA)来设计滤波器,首先打开MATLAB,在命令窗口输入FDAtool,将出现滤波器设计工具箱.

下图是打开的滤波器设计的主要界面,通过输入有关参数可以设计各种滤波器,包括滤波器的类型,阶数,截止频率(Fpass),带宽,纹波系数(Apass),采样频率(Fs)等有关参数.

6-1MAILAB设计IIR滤波器界面

上图所设计是IIR型的3阶契比雪夫1型高通滤波器的采样频率为1200Hz,截止频率为200Hz,图中中间显示的是数据为设计好的滤波器的参数.

通过这个工具箱可以观察滤波器的频率特性,冲激响应特性,阶跃响应,零极点示意图

2、用MATLAB产生输入信号:

t=(1:

256)/1200;

x=32768*(sin(2*pi*100*t)+sin(2*pi*300*t))/2

此时会产生如下结果:

x=

1.0e+004*

Columns1through12

2.45761.418901.41892.45760-2.4576-1.41890-1.4189-2.4576-0

(会产生256点周期为12的输入信号,因此在此只给出一个周期的输入信号)

3、滤波器的汇编语言设计:

在编写滤波器之前,首先确定滤波器的参数,从上面的设计中得出滤波器的系数,为了防止小数运算的溢出,将各个系数除以8,得到新的数据:

分子:

0.04045,-0.1213375,0.1213375,-0.04045

分母:

1,-0.1151875,0.080275,0.080275,-0.0030875

针对以上参数,编写汇编语言如下:

.title"IIR.asm"

.mmregs

.deffilter_start

.def_main;定义主函数入口

K_DATA_SIZE.set256;定义数据个数

K_BUFFER_SIZE.set8

K_STACK_SIZE.set256;堆栈大小

K_A.set3;A的个数

K_B.set4;B的个数

K_CIR.setK_BUFFER_SIZE

STACK.usect"stack",K_STACK_SIZE

SYSTEM_STACK.setK_STACK_SIZE+STACK

DATA_DP.usect"filter_vars",0

filterdata.usect"filter_vars",K_DATA_SIZE

bufferdatay.usect"filter_vars",K_BUFFER_SIZE*2

bufferdatax.usect"filter_vars",K_BUFFER_SIZE*2

.data

.globalinputdata

inputdata

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.word24576,14189,0,14189,24576,0,-24576,-14189,0,-14189,-24576,0

.text

.asgAR2,ORIGIN

.asgAR3,INPUT

.asgAR4,FILTER

.asgAR5,OUTPUT

_main:

SSBXFRCT

SSBXINTM

LD#DATA_DP,DP

STM#STACK,SP

CALLfilter_start

NOP

NOP

NOP

loopBloop

.defb1,b2,b3,b4,a1,a2,a3

.deffilter_start

b1.set052dh

b2.set-0f87h

b3.set0f87h

b4.set-052dh

a1.set-0ebeh

a2.set0a46h

a3.set-0065h

.text

filter_start

STM#inputdata,ORIGIN

STM#bufferdatax,INPUT

STM#bufferdatay,FILTER

STM#filterdata,OUTPUT

STM#K_DATA_SIZE-3-1,BRC

STM#K_CIR,BK

STM#1,AR0

RPTBfilter_end-1

MVDD*ORIGIN+,*INPUT

RPT#K_B-1-1

MAR*INPUT-0%

MPY*INPUT+0%,#b4,B

LDB,A

MPY*INPUT+0%,#b3,B

ADDB,A

MPY*INPUT+0%,#b2,B

ADDB,A

MPY*INPUT+0%,#b1,B

ADDB,A

MPY*FILTER+0%,#a3,B

ADDB,A

MPY*FILTER+0%,#a2,B

ADDB,A

MPY*FILTER+0%,#a1,B

ADDB,A

STHA,*FILTER-0%

STHA,*OUTPUT+

MAR*FILTER-0%

filter_end:

NOP

RET

.end

其*.CMD命令文件如下:

IIR.obj

-oIIR.out

-mIIR.map

MEMORY

{

PAGE0:

PARAM:

org=3000h,len=4000h

PAGE1:

DARAM:

org=100h,len=4000h

}

SECTIONS

{

.text:

>PARAMPAGE0

stack:

>DARAMPAGE1

filter:

>DARAMPAGE1

.bss:

>DARAMPAGE1

.data:

>DARAMPAGE1

}

实验内容

要求设计一个采样频率为1200Hz,截止频率为200Hz的高通滤波器.

输入信号频率为100Hz和300Hz的合成信号,目的是同过所设计的滤波器的将100Hz的信号滤除掉,余下300Hz的信号成分,达到滤波效果

实验数据

图1滤波前信号的时域图

图2滤波前信号的频域图

图3滤波后信号的时域图

图4滤波后信号的频域图

实验总结

通过本次实验了解了IIR滤波器的原理及设计方法,熟悉了使用MATLAB进行滤波器的设计方法,进一步熟悉CCS的使用。

指导教师意见

 

签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2