基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx

上传人:wj 文档编号:728208 上传时间:2023-04-29 格式:DOCX 页数:38 大小:547.04KB
下载 相关 举报
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第1页
第1页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第2页
第2页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第3页
第3页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第4页
第4页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第5页
第5页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第6页
第6页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第7页
第7页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第8页
第8页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第9页
第9页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第10页
第10页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第11页
第11页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第12页
第12页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第13页
第13页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第14页
第14页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第15页
第15页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第16页
第16页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第17页
第17页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第18页
第18页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第19页
第19页 / 共38页
基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx

《基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx(38页珍藏版)》请在冰点文库上搜索。

基于DSP的数字滤波器的设计与仿真及利用DSP实现自适应滤波Word文档下载推荐.docx

最基本的FIR滤波器可用下式表示:

k=0

y(n)=å

h(k)x(n-k)

其中x(n-k)输入采样序列,h(k)是滤波器系数,N是滤波器的阶数Y(n)表示滤波器的输出序列,也可以用卷积来表示输出序列y(n)与x(n)、h(n)的关系,如

下:

3.2操作步骤

y(n)=x(n)*h(n)

(1)打开FDATOOL,根据滤波要求设置滤波器类型、通带截止频率、指定阶数、采样频率等。

指定完设计参数后单击按钮DesignFilter,生成滤波器系数。

(2)把生成的滤波器系数传到目标DSP。

选择菜单Targets->

ExporttoCodeComposerStudio(tm)IDE,打开ExporttoCHeaderFile对话框,选择Cheaderfile,指定变量名(滤波器阶数和系数向量),输出数据类型可选浮点型或32b,16b整型等,根据自己安装选择目标板板号和处理器号,单击OK,保存该头文件,需指定文件名(filtercoeff.h)和路径(保存在c:

\ti\myprojects\fir工程中)。

(3)修改CCS汇编程序,删掉数据前的所有文字,在开头加上.data,第二行加coeff.word,在每行的前面加上.word,比且把每行的最后的逗号去掉。

(4)编译汇编程序,如果有错误,按错误进行修改;

没错误,则往下执行。

(5)加载初始化DATA数据。

运行程序,查看输入输出波形,修改相应参数进行调试

第4章详细设计

在本实验中使用MATLAB模拟产生信号,观察滤波前的时域波形和频域波形。

MATLAB仿真后,使用得到的滤波器参数,进行DSP编程,在DSP中实现带通滤波,并使用CCS的频谱分析功能,查看DSP的滤波效果。

MATLAB程序流程图如图4.1所示

初始化

进行滤波

生成fir滤波器

画出原始信号频谱图

产生需要虑波信

图4.1MATLAB程序流程图

CCS汇编程序流程图如图4.2所示

输入原始信号

画出滤波后信号频谱

是否有待滤波数据

滤波结束

本次滤波结束待滤波系数减一

做滤波算法

为原始信号和系数指定寄存器

定义滤波器系数

图4.2CCS汇编程序流程图

第5章实验过程

5.1汇编语言实验步骤与内容

Error!

Nobookmarknamegiven.MATLAB辅助DSP实现FIR,其总体过程为在DSP 中编写处理程序,在MATLAB中利用滤波器设计、分析工具(FDATOOL) ,根据指定的滤波器性能快速设计一个FIR ,然后把滤波器系数以头文件形式导入CCS中,头文件中MATLAB辅助DSP实现FIR数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP 程序并显示、分析处理后的数据。

使用该方法,便于采用汇编语言来实现程序。

头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便了程序调试、仿真。

(1)在MATLAB中先编写程序,查看待滤波和已滤波的信号的时域和频域波形,如图5.1和图5.2所示。

图5.1待滤波信号的时域图 图5.2待滤波信号的频域图

利用FDATOOL设计FIR滤波器的参数,操作步骤如图5.3所示。

图5.3 FIR滤波器的参数

打开Export,把Numerator改为B,如图5.4所示。

图5.4Export设置

已滤波的信号的时域和频域波形,如图5.5和图5.6所示。

图5.5已滤波信号时域波形图 图5.6已滤波信号频域波形图

MATLAB滤波器设计工具在完成FIR设计后,如图5.7所示,在Exportas中选择16bit符号整数输出,然后单击OK按钮。

生成fir.hC语言头文件。

将系数稍作修改,调整后拷贝到程序的系数初始化空间即可。

图5.7MATLAB输出数值转换图

(2)在CCS中编写汇编语言程序,进行调试,实现带通滤波的功能。

在CCS

IDE 中建立LHM.pjt工程,用汇编语言编写处理主程序fir.asm。

另外根据板上的存储器配置方式,编写存储器配置文件fir.cmd文件,将MATLAB生成的LHM.h和input1.dat文件拷贝到LHM.pjt工程文件夹下,进行编译、链接,生成可执行文件LHM.out。

(3)加载初始化data数据,图5.8所示。

图5.8data初始化图

运行程序,查看输入输出波形,修改相应参数进行调试。

5.2实验过程中出现的错误及解决的办法

(1)在MATLAB程序设计中,采样频率设置的过小,截止频率大于采样频率的一半,运行的时候图形出现错误。

(2)FIR.m中的采样频率要和开始设置时的采样频率一致,否则结果会出现偏差。

(3)在CCS中未定义标号,程序运行错误。

(4)在.h文件中未把coeff顶格写,编译时出现错误。

(5)未将fir.h和input.dat文件考入工程文件中。

(6)间接寻址过程中,程序中丢失。

(7)在View的Graph中单击Time/frequency出现graphpropertydialog

框,未修改抽样点数。

显示的图形出现差异

5.3CCS程序运行后的各种输出结果

在View的Graph中单击Time/frequency出现graphpropertydialog框。

将显示类型,图形名称,起始地址,抽样点数,数据类型等分别进行设置,输

出各种波形。

输出滤波前的信号时域波形。

首先,设置如图5.9所示,输出滤波前的信号时域波形。

图5.9Graphpropertydialog设置框图

单击OK后生成如下图5.10波形。

图5.10滤波前信号波形图

图5.10为滤波前的信号,波形很杂乱,从时域上很难看出信号的周期性。

修改

相应设置,输出如图5.11所示滤波前信号频谱。

图5.11滤波前信号频谱波形图

经过滤波后,时域波形频谱波形如图5.12和5.13所示。

图5.12滤波后信号时域波形图

图5.13滤波后信号频谱图

由上述的所有截图可知,输入参数中,通带截止频率和阻带截止频率是比较重要的两个参数,不宜过小,过小滤掉的高频成分太多,很难还原出远波形的形状,也不宜过大,过大滤波效果欠佳。

在本课程设计中,通带截止频率选用4000Hz,阻带截止频率选用4500Hz,因此,显示图形时的,时域显示的抽样点数为1024,频域显示的带宽为0.5Hz。

对比滤波前后信号的时域图5.10和5.12、频谱波形图5.11和5.13可以知道,滤波前的时域信号的波形图的波形很杂乱,很难看出信号的周期性,滤波后周期性也相对的明显起来了;

滤波前信号分布在整个频带上,滤波后阻带范围内的基本被滤掉,这些都可以从上述截图看出。

附件:

源程序清单

用线性缓冲区实现FIR滤波器程序清单:

.title “FIR1.ASM”

.mmregs

.def start

x .usect “x”,8

PA0 .set 0

PA1 .set 1

.data

COEF:

.word 1*32768/10

.word 2*32768/10

.word -4*32768/10

.word 3*32768/10

.word 1*32768/10

.text

start:

SSBX FRCT

STM #x+7,AR2STM #6,AR0

LD #x+1,DPPORTRPA1,@x+1

FIR1:

RPTZ A,#6

MACD *AR2-,COEF,ASTH A,*AR2

PORTW*AR2+,PA0BD FIR1

PORTRPA1,*AR2+0

.end

用循环缓冲区实现FIR滤波器程序清单:

.title“FIR2.ASM”

.bss y,1

xn .usect“xn”,7

b0 .usect“b0”,7

table:

.word 4*32768/10

.word 5*32768/10

.word 6*32768/10

.word 7*32768/10

STM #b0,AR1RPT #6

MVPD table,*AR1+STM #xn+6,AR2STM #b0+6,AR3STM #7,BK

STM #-1,AR0

LD #xn,DPPORTRPA1,@xn

FIR2:

MAC*AR2+0%,*AR3+0%,ASTH A,@y

PORTW@y,PA0BD FIR2

PORTRPA1,*AR2+0%

汇编程序清单

lhm.h文件内容:

coeff

.word

-85,-64,-61,-36,8,62,110,136,131

96,42,-11,-44,-44,-11,39,85,106

88,37,-29,-83,-101,-73,-7,70,124

131,82,-5,-96,-151,-144,-72,37,140

191,162,61,-76,-191,-231,-174,-35,132

256,278,180,-7,-208,-337,-330,-176,72

316,445,392,156,-178,-475,-599,-470,-108

361,745,857,594,-6,-748,-1336,-1456,-893

386,2192,4154,5816,6768,6768,5816,4154,2192

386,-893,-1456,-1336,-748,-6,594,857,745

361,-108,-470,-599,-475,-178,156,392,445

316,72,-176,-330,-337,-208,-7,180,278

256,132,-35,-174,-231,-191,-76,61,162

191,140,37,-72,-144,-151,-96,-5,82

131,124,70,-7,-73,-101,-83,-29,37

88,106,85,39,-11,-44,-44,-11,42

96,131,136,110,62,8,-36,-61,-64

-85

Fir.asm内容:

.title "

fir.asm"

.global_c_int00ORDER .set154

D_LEN .set1024 ;

TheLengthofInputDataxn .usect"

xn"

(ORDER-1)

a0.usect"

a0"

(ORDER-1)input.usect"

input"

D_LENoutput.usect"

output"

D_LEN

.copy "

HM.h"

;

Getcoefsfrom"

coef.h"

.asg AR0,FIR_INDEX

.asg AR2,FIR_DATA

.asg AR3,FIR_COEF

.asg AR5,DATA_IN

.asg AR6,DATA_OUT

_c_int00:

SSBX

FRCT

STM

#a0,FIR_COEF

;

Copya0(coefs)

to

FIR_COEF(AR3)

RPT #ORDER-1

MVPD #coeff,*FIR_COEF+STM #1,FIR_INDEX

STM #xn,FIR_DATA ;

Copy xn(data) toFIR_DATA(AR2)

RPTZA,#ORDER-1

STL A,*FIR_DATA+

STM #(xn+ORDER-1),FIR_DATASTM #(a0+ORDER-1),FIR_COEF

STM#input,DATA_IN ;

Getdatafrom"

STM#output,DATA_OUT ;

Writedatato"

STM#D_LEN-1,BRC

RPTBD next-1

STM #ORDER,BKLD *DATA_IN+,A

FIR:

STL A,*FIR_DATA+%RPTZA,(ORDER-1)

MAC *FIR_DATA+0%,*FIR_COEF+0%,A;

FIRSSTH A,*DATA_OUT+

nextFIR_END:

B FIR_END

FIR.m的程序如下:

fs=40000;

%/采样HzN=1024 %数据个数T=1/fs;

%采样周期n=0:

N-1;

df=n*(fs/N)%待滤波信号波形xin=randn(1,1024)figure

(1)

plot(xin)%待滤波信号频谱xinff=abs(fft(xin));

figure

(2)

plot(df,xinff)%滤波后信号波形y_filter_out=filter(B,1,xin)%Y=FILTER(B,A,X)figure(3)

plot(y_filter_out)%滤波后信号频谱

yff=fft(y_filter_out);

figure(4)

plot(df,yff)

xin=xin/max(xin);

%归一化

xto_ccs=round(32767*xin)%取整

fid=fopen('

input1.dat'

'

w'

);

%打开文件fprintf(fid,'

16511000\n'

%输出文件头

fprintf(fid,'

%d\n'

xto_ccs);

%输出fclose(fid);

DSP课程设计

实 验 报 告

利用DSP实现自适应滤波

目 录

一、设计任务书 2

二、设计内容 2

三、设计方案、算法原理说明 4

四、程序设计、调试与结果分析 5

五、设计(安装)与调试的体会 17

六、参考文献 18

一、设计任务书

自适应滤波不仅能够选择信号,而且能够控制信号的特性。

自适应滤波器具有跟踪信号和噪声变化的能力,它的系数能够被一种自适应算法所修改。

利用DSP可以实时地对信号进行自适应滤波。

DSP利用直接存储器访问方式DMA采集数据时不打扰CPU,因此CPU可以对信号进行实时地滤波。

本设计要求利用DSP的DMA方式进行信号采集和信号输出,同时对外部输入的信号进行数字滤波。

1.设计要求及目标

基本部分:

(1)对DMA进行初始化;

(2)对A/D、D/A进行初始化;

(3)编写DMA通道传输程序,实现数据实时采集和实时地输出;

(4)设计子自适应滤波算法,或调用DSPLIB中的自适应函数,实现对信号的自适应滤波。

发挥部分:

(1)滤波后信号实时输出的同时,将数据存放在数据文件中;

(2)利用自适应滤波实现语音信号回波对消。

2.设计思路

首先利用DSP的DMA方式对外部信号进行实时采集,外部模拟信号先进行A/D转换,利用

MCBSP的接收寄存器接收数据。

编写自适应滤波算法程序,或调用DSPLIB中的lms滤波函数,对信号进行自适应滤波。

滤波后信号存放数据区满发出中断,请求信号输出。

利用DMA方式将传输输出数据,经D/A转换后输出。

3.要求完成的任务

(1)编写C语言程序,并在CCS集成开发环境下调试通过;

(2)利用信号发生器产生输入信号,经DSP运算后正确地在示波器上显示;

(3)按要求撰写设计报告。

二、设计内容

按照实验要求,本实验与老师上课讲过是FIR滤波器实验有很多共同点。

我们从上课做过的实验的FIR_DMA.pjt出发,使其完成自适应滤波的功能。

1.DMA部分:

本实验利用DMA直接传输数据,利用DMA完成数据传输而不影响CPU,因此数据传输速度快。

C5402有6个可独立编程的DMA通道:

DMA0~DMA5,允许6个不同的DMA操作。

每个DMA通道受各自的5个16位寄存器控制:

l源地址寄存器DMSRC和目的地址寄存器DMDST :

指明了数据传输读取和写入的位置

l单元计数寄存器DMCTR:

规定DMA传送数据的个数(DMCTR值减1)

l同步事件和帧计数寄存器DMSEFC:

规定DMA传送数据的同步事件类型和传送一块数据所含帧信号的个数。

l传输模式控制寄存器DMMCR:

规定了DMA通道的传输模式。

2.自适应算法部分:

DSPLIB库是一个为C语言程序员开发TMS320C54x而建立的经过优化的DSP函数库。

包含50多采用汇编语言编写的常用信号处理程序,可以由C语言调用。

调用DSPLIB库函数时,在工程中要添加库文件54xdsp.lib,在C源程序中要包含dsplib.h头文件。

我们应用通过DSPLIB中的自适应函数dlms实现滤波,下面是dlms函数的相关描述。

shortoflag=dlms(DATA*x,DATA*h,DATA*r,DATA**d,DATA*des,DATAstep,ushortnh,ushortnx)

Argumentsx[nx] Pointertoinputvectorofsizenx

h[nh] Pointertofiltercoefficientvectorofsizenh

hisstoredinreversedorder:

h(n–1),...h(0)whereh[n]isatthelowestmemoryaddress.

Memoryalignment:

hisacircularbufferandmuststartinak-bitboundary(thatis,thekLSBsofthestartingaddressmustbezeros)wherek=log2(nh)

r[nx] Pointertooutputdatavectorofsizenx.rcanbeequaltoxdbuffer[nh]Pointertolocationcontainingtheaddressofthedelaybuffer

thedelaybufferisacircularbufferandmuststartinak-bitboundary(thatis,thekLSBsofthestartingaddressmustbezeros)wherek=log2(nh)

des[nx] Pointertoexpectedoutputarray

step Scalefactortocontrollearningcurverate=2*mu

nh Numberoffiltercoefficients.Filterorder=nh–1.nh>

=3nx Lengthofinputandoutputdatavectors

oflag Overflowflag

Ifoflag=1a32-bitoverflowhasoccurred

Ifoflag=0a32-bitoverflowhasnotoccurred

其中x指向输入向量,r指向输出向量,h为滤波向量,d指向延迟缓冲区,des指向期望输出向量,step为归一化因素,nh为滤波系数个数,nx为输出向量长度。

oflag=1表示有溢出;

oflag=0表示无溢出。

三、设计方案、算法原理说明

在许多DSP的应用场合,由于无法预先知道信号和噪声的特性或者它们是随时间变化

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

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

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

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