您的当前位置:首页正文

(完整word版)DSP基于CCS的IIR滤波器设计实验

2024-05-13 来源:易榕旅网
(完整word版)DSP基于CCS的IIR滤波器设计实验

实验六 IIR滤波器

一、 实验目的

1. 熟悉IIR滤波器C54X实现的编程方法. 2. 测试IIR滤波器的单位冲击响应曲线. 3. 检查IIR滤波器的频率特性。

二、 实验条件

1. 已经设计出四阶IIR滤波器的参数如下:

·通带:0—200Hz

·过渡带宽:200Hz-500Hz ·通带内波动:<0。5dB ·阻带衰减:<—20dB ·采样频率Fs:3600Hz ·脉冲传递函数H(z):

·差分方程式为:

y(n)=*x(n)+*x(n—1)+*x(n-2)+*x(n-3)+*x(n-4)+*y(n-1)+*y

(n-2)+*y(n-3)+*y(n-4)

其中:A1=-3.4647 A2=4。4615 A3=—2.8518 A4=0。6739

B0=0.0951 B1=-0。3139 B2=0。4460 B3=-0.3139 B4=0。0951

生成正弦数据文件的高级语言程序。程序名为sin_flt。exe.

2. 直接形式二阶IIR滤波器程序Lab6.asm以及链接命令文件Lab6.cmd。

三、 实验内容

1. 消化直接形式二阶滤波器程序iir3.asm以及链接命令文件iir3。cmd.

(完整word版)DSP基于CCS的IIR滤波器设计实验

2. 修改Lab6。asm。

①定义循环缓冲区:

X: X(n

Y: YY(n-3 YY(n-1AR4 Y(n)

X(nX(n-X(nX(n) AR2

B4 B:

A:

A4 A3 A2 A1 A0 B3 B2 B1 B0 AR3 AR5

相应的汇编命令为:

X 。usect ”X”,5 Y 。usect ”Y”,5 B .usect \"B\ A 。usect ”A\ ②修改系数表:

初始值y(n—4)- y(n-1)以及x(n-4)- x(n-1)均设置为0。 凡绝对值≥1的系数需化成绝对值〈1的系数。这样,系数表示为: 。word 3116 ;B4=0。0951 .word -10286 ;B3=-0.3139 .word 14615 ;B2=0.4460 。word -10286 ;B1=—0。3139

(完整word版)DSP基于CCS的IIR滤波器设计实验

。word 3116 ;B0=0.0951 .word —22082 ;A4=-0.6739 .word 31149 ;A3/3=2。8518/3 .word -30484 ;A2/5=—4。6515/5 。word 28383 ;A1/4=3。4647/4

③修改传送x的初始值、y的初始值、系数B、系数A的重复次数,分别为3、3、4、3. ④修改传送数据的起始地址:

传送x MVPD #table,*AR1+ 传送y MVPD #table+4,*AR1+ 传送B MVPD #table+8,*AR1+ 传送A MVPD #table+13,*AR1+ ⑤修改BK寄存器,BK=5。 ⑥为循环缓冲区设初始指针:

AR2 X+4 AR4 Y+4 AR5 B+4 AR3 A+4

⑦由于归一化成绝对值小于1的系数,因此反馈通道运算必须作相应的修正。 ⑧对输入数据文件中的数据定标,右移4位,以防止运算中溢出。

3. 修改Lab。cmd文件.

将X、Y、B、A的循环缓冲区均改为align(8)。

4. 汇编和链接

5. 测试本实验IIR滤波器的单位冲击响应曲线 6. 检查本实验IIR滤波器的频率特性曲线

四、 实验程序

(完整word版)DSP基于CCS的IIR滤波器设计实验

;************************** ;* lab6.ASM IIR Filter *

;**************************

。title ”lab6。asm\"

X Y B A PA0 PA1 table: 。mmregs 。def start 。bss in,1 out,1

。usect ”X”,5 \"Y\ 。usect \"B”,5 \"A\",5

.set 0 。set 1 。data

.word 0 0 。word 0 0 。word 0 0 0 ;给in分配一个存储单元

;定义X的缓冲区域 ;I/O口地址赋值 ;X(N—4) ;为标号table开始的存储单元赋初值 ;X(N—3) ;X(N-2) ;X(N—1) ;Y(N-4) ;Y(N—3) ;Y(N—2)

.bss .usect .usect .word .word .word .word (完整word版)DSP基于CCS的IIR滤波器设计实验

。word 0 ;Y(N-1) 。word 3116 ;B4=0.0951 .word -10286 ;B3=-0.3139 。word 14615 ;B2=0。4460 。word —10286 ;B1=-0。3139 。word 3116 ;B0=0.0951 .word -22082 ;A4=-0.6739 .word 31149 ;A3/3=2.8518/3 。word -30484 ;A2/5=—4.6515/5 .word 28383 ;A1/4=3.4647/4

。text

start: SSBX FRCT

STM #X,AR1 ;AR1指向X的首地址 RPT #3 ;重复执行下条语句3次

MVPD #table,*AR1+ ;从table首址重复传递4个数据 STM #Y,AR1 RPT #3

MVPD #table+4,*AR1+ STM #B,AR1 RPT #4

MVPD #table+8,*AR1+ STM #A,AR1 RPT #3

(完整word版)DSP基于CCS的IIR滤波器设计实验

MVPD #table+13,*AR1+

STM #X+4,AR2 ;为循环缓冲区设初始指针 STM #Y+3,AR4 STM #B+4,AR5 STM #A+3,AR3

STM #5,BK ;将5赋值给BK STM #-1,AR0 ;将—1赋值给AR0

STM #1000h,AR6 ;输出数据缓冲区首址为#1000h STM #0200h—1,AR7 ;循环计算512个样本点

LOOP: PORTR PA1,*AR2 ;x(n)/2,防止溢出

;MVKD in,*AR2

LD *AR2,A ;将AR2的地址加载到A累加器

STL A,-1,*AR2 ;A累加器低位右移1位送往AR2寄存器所指地址 MPY *AR2+0%,*AR5+0%,A ;作B0*X(n)+A=A运算,并将地址减一 MAC *AR2+0%,*AR5+0%,A MAC *AR2+0%,*AR5+0%,A MAC *AR2+0%,*AR5+0%,A MAC *AR2,*AR5+0%,A

MAC *AR4,*AR3,A ;作A1/4*Y(n—1) MAC *AR4,*AR3,A MAC *AR4,*AR3,A

MAC *AR4+0%,*AR3+0%,A ;运算四次后将寄存器地址减一 MAC *AR4,*AR3,A ; 作A2/5*Y(n—2) MAC *AR4,*AR3,A

(完整word版)DSP基于CCS的IIR滤波器设计实验

MAC *AR4,*AR3,A MAC *AR4,*AR3,A

MAC *AR4+0%,*AR3+0%,A ;运算五次后将寄存器地址减一 MAC *AR4,*AR3,A ;作 A3/3*Y(n-3) MAC *AR4,*AR3,A

MAC *AR4+0%,*AR3+0%,A ;运算三次后将寄存器地址减一 MAC *AR4+0%,*AR3+0%,A ;作 A4*Y(n-4) MAR *AR3+0%

STH A,*AR4 ;A累加器高位送往AR4寄存器所指地址 ;BD IIR

;MVDK *AR4,out

PORTW *AR4,PA0 ;输出y(n)

STH A,*AR6+ ;保存y(n)

BANZ LOOP,*AR7 ;循环512次— end B end 。END

五、 实验结果

IIR滤波器的单位冲击响应曲线

(完整word版)DSP基于CCS的IIR滤波器设计实验

IIR滤波器的频率特性曲线(低通)

六、 实验体会

实验中了解到了程序中的运算数都是定点小数,所以大于一的系数要作小数处理;

学习了如何编写数据文件,定义I/O端口的GEL参数,将数据文件与I/O口地址相关联;

如何查看频率响应及幅频特性曲线.

因篇幅问题不能全部显示,请点此查看更多更全内容