太原理工大学DSP课程设计.docx

上传人:b****6 文档编号:6868322 上传时间:2023-01-11 格式:DOCX 页数:9 大小:239.61KB
下载 相关 举报
太原理工大学DSP课程设计.docx_第1页
第1页 / 共9页
太原理工大学DSP课程设计.docx_第2页
第2页 / 共9页
太原理工大学DSP课程设计.docx_第3页
第3页 / 共9页
太原理工大学DSP课程设计.docx_第4页
第4页 / 共9页
太原理工大学DSP课程设计.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

太原理工大学DSP课程设计.docx

《太原理工大学DSP课程设计.docx》由会员分享,可在线阅读,更多相关《太原理工大学DSP课程设计.docx(9页珍藏版)》请在冰豆网上搜索。

太原理工大学DSP课程设计.docx

太原理工大学DSP课程设计

本科课程设计报告

 

课程名称:

DSP原理及应用

实验名称:

FIR滤波器的DSP实现

实验地点:

起点机房

专业班级:

学号:

学生:

指导教师:

FIR滤波器的DSP实现

一、设计目的

1了解FIR滤波器的原理和特性

2.熟悉设计FIR数字滤波器的原理和方法

3.学习FIR滤波器的DSP的实现过程。

5.学习使用CCS软件。

二、设计容

1通过MATLAB来设计一个低通滤波器,并对它进行模拟仿真,确定FIR滤波器系数

2.用DSP汇编语言及C语言进行编程,实现FIR运算,对产生的合成信号滤除信号中高频成分,观察滤波前后波形的变化。

三、设计原理

数字滤波器是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列。

一个线性位移不变系统的输出序列y(n)和输入序列x(n)之间的关系,应满足差分方程为:

对其进行z变换,可得到FIR滤波器的传递函数为:

=

FIR滤波算法实际上是一种乘法累加运算。

它不断输入样本,经延时,作乘法累加,再输出滤波结果y(n)。

FIR滤波器的结构如图1:

图1:

FIR滤波器的结构图

可以看出,在数字滤波器中FIR滤波器有以下几个特点:

(1)系统的单位冲激响应h(n)在有限个n值处不为零;

(2)系统函数H(z)在|z|>0处收敛,在|z|>0处只有零点,有限z平面只有零点,而全部极点都在z=0处;

(3)结构主要是非递归结构,没有输出到输入的反馈。

在DSP芯片中,实现z-1算法很方便,可采用循环缓冲区法,其特点如下:

(1)对于N级FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(窗),用来放最新的N个输入样本;

(2)从最新样本开始取数;

(3)读完最后一个样本后,输入最新样本来代替最老样本,而其他数据位置不变;

(4)用片循环缓冲区长度寄存器对缓冲区进行间接寻址,是循环缓冲区地址首位相邻。

使用CCS开发应用程序的一般步骤

(1)打开或创建一个工程项目文件

(2)编辑各类文件

(3)对工程项目进行编译

(4)对结果和数据进行分析和算法评估利用CCS集成开发软件,用户可以在一个开发环境下完成工程项目创建、程序编辑、编译、、调试和数据分析等工作环节

四、设计方案

1、利用MATLAB来确定FIR滤波器的参数;

具体方法为:

利用fir2函数产生滤波系数:

b=fir2(n-1,f,m),参数n为滤波器的阶数;f为频率参数,m表示低通

2、启动CCS,在CCS中建立一个C源文件和一个命令文件,并将这两个文件添加到工程,再编译并装载程序;

3、设置波形时域观察窗口,得到滤波前后的波形变化图;

4、设置频域观察窗口,得到滤波前后的频谱变化图。

4设计参数:

设计一个低通滤波器,其设计参数为:

滤波器阶数40,截止频率wp=0.4π,ws=0.45π。

五、设计程序

1、MATLAB程序

2、C源文件

#include"s.h"

#include"math.h"

#definesignal_1_f200

#definesignal_2_f620

#definesignal_sample_f2000

#definepi3.1415926

#definecoff_L23

#definebufer_L256

intdata_in[bufer_L];

intout[bufer_L];

intfirout;

intx[coff_L+1];

intk=0;

intbufer=bufer_L;

externintfir(int*,int);

externintinit(int*,int);

externintoutdata(int*,int,int);

voidinputwave();

voidmain()

{

inputwave();

init(x,BL);

while

(1)

{

x[0]=data_in[k];

firout=fir(x,BL);

outdata(out,firout,bufer);

k++;

if(k>=bufer_L)

{

k=0;

}

}

}

voidinputwave()

{

floatwt1;

floatwt2;

inti;

for(i=0;i<=bufer_L;i++)

{

wt1=2*pi*i*signal_1_f;

wt1=wt1/signal_sample_f;

wt2=2*pi*i*signal_2_f;

wt2=wt2/signal_sample_f;

data_in[i]=(cos(wt1)+cos(wt2))/2*32768;

}

}

3、汇编源文件

.global_fir,_init,_B,_outdata

_fir

bsetfrct

amov#_B,xdp

mov#_B,cdp

movt0,ac0

sub#1,ac0

movac0,mmap(csr)

addac0,ar0

mov#0,ac0

rptcsr

macmz*ar0-,*cdp+,ac0

movhi(ac0),t0

ret

_init

movmmap(t0),ac0

sub#1,ac0

movac0,ar7

rptzac0,ar7

movac0,*ar0+

ret

_outdata

movt1,ac0

sub#2,ac0

movac0,mmap(csr)

addac0,ar0

rptcsr

delay*ar0-

mar*ar0+

movt0,*ar0

ret

4、命令文件

-stack0x500

-sysstack0x500

-heap0x1000

-c

-u_Reset

-lrts55.lib

MEMORY

{

PAGE0:

RAM(RWIX):

origin=0x000100,length=0x01ff00

ROM(RIX):

origin=0x020100,length=0x01ff00

VECS(RIX):

origin=0xffff00,length=0x000200

PAGE2:

IOPORT(RWI):

origin=0x000000,length=0x020000

}

SECTIONS

{

.text>ROMPAGE0

.data>ROMPAGE0

.bss>RAMPAGE0

.const>RAMPAGE0

.sysmem>RAMPAGE0

.stack>RAMPAGE0

.sysstack>RAMPAGE0

.switch>RAMPAGE0

.cinit>RAMPAGE0

.pinit>RAMPAGE0

.vectors>VECSPAGE0

.ioport>IOPORTPAGE2

}

六、结果分析

(1)滤波前

图2:

输入时域波形

图3:

输入频域波形

(2)滤波后

图4:

输出时域波形

图5:

输出频域波形

由以上容可以看出,时域图中,滤波前波形有很多毛刺,滤波后,是平滑的等幅正弦波,而且滤波后最大振幅有所减小。

频域图中,滤波前有两个带尖峰的图像,滤波后只有一个带尖峰图像,而且是出现在低频部分,说明信号经过低通滤波器后,将信号中的高频成分滤除掉了。

滤波前后时域、频域特性对比总结如下:

时域

频域

滤波前

波形有较多毛刺

平滑的等幅正弦波

滤波后

两个带尖峰

一个低频带尖峰

表1:

滤波前后时域、频域对比

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

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1