基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc

上传人:聆听****声音 文档编号:947298 上传时间:2023-04-29 格式:DOC 页数:15 大小:1.72MB
下载 相关 举报
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第1页
第1页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第2页
第2页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第3页
第3页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第4页
第4页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第5页
第5页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第6页
第6页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第7页
第7页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第8页
第8页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第9页
第9页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第10页
第10页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第11页
第11页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第12页
第12页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第13页
第13页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第14页
第14页 / 共15页
基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc

《基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc》由会员分享,可在线阅读,更多相关《基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc(15页珍藏版)》请在冰点文库上搜索。

基于TMS320F2812-DSP处理器的FIR滤波器的设计与实现Word下载.doc

实习驱动ADC模块实现信号的实时采集与模数转换。

(4)掌握使用TMS320F2812 

DSP处理器实现FIR数字低通滤波器的设计方法,并能够实时采集输入信号并滤除高频信号再通过SCI串口传输到计算机显示。

三、设计要求 

1、利用Matlab软件的FDATool工具设计FIR滤波器,并提取滤波器参数;

2、在CCS集成开发环境下,利用第1步得到的滤波器参数,利用窗函数法设计FIR滤波器程序,观察输入信号及滤波后得到的输出信号的时域波形及FFT 

Magnitude波形;

3、利用TMS320F2812的ADC片内外设的外围电路实时采集的混频信号数据,使用1个51阶的FIR低通滤波器,在CCS中设计FIR滤波器程序实现滤波,观察相关波形及滤波效果,通过SCI接口将数据传送到计算机上;

4、(选做)利用TI公司的TLV320AIC23高性能立体声音频Codec芯片,通过MIC或音频接口采样音频信号,对采样的音频信号做滤波运算,进行低音加重处理,再将运算过的音频数据通过扬声器播放出来

四、总体设计

4.1利用Matlab软件的FDATool工具设计FIR滤波器

4.1.1有限冲击响应数字滤波器的基础理论

滤波器就是在时间域或频域内,对已知激励产生规定响应的网络,使其能够从信号中提取有用的信号,抑制并衰减不需要的信号。

滤波器的设计实质上就是对提出的要求给出相应的性能指标,再通过计算,使物理可实现的实际滤波器频率响应特性逼近给出的频率响应特性。

FIR 

数字滤波器系统的传递函数为:

å

-=-==1

)()()(H(z)NnnznbzXzY 

(1) 

由此得到系统的差分方程:

))1(()1()1()1()()0()(-*-+×

×

+-*+*=NnxNbnxbnxbny

(2) 

若FIR 

数字滤波器的单位冲激响应序列为h(n),它就是滤波器系数向量b(n)。

传统的滤波器分析与设计均使用繁琐的公式计算,改变参数后需要重新运算,从而在分析与设计滤波器尤其是高阶滤波器时工作量特别大。

这里应用MATLAB 

设计FIR滤波器,根据给定的性能指标设计一个H(z),使其逼近这一指标,进而计算并确定滤波器的系数b(n),再将所设计滤波器的幅频响应、相频响应曲线作为输出,与设计要求进行比较,对设计的滤波器进行优化。

设计完成之后将得到FIR滤波器的单位冲激响应序列h(n)的各个参数值。

4.1.2利用Matlab软件的FDATool设计FIR滤波器

(1) 

首先在命令窗口键入FDAtool命令,启动滤波器设计分析器,调出FDAtool界面,如下图所示。

FDATool界面(2) 

在Filter 

Type选项中选Lowpass,在Design 

Method中选择FIR滤波器,接

着在FIR中选择Window 

(窗函数) 

法。

(3) 

然后在Filter 

Order 

中选择Specify 

(为指定阶数),输入数值为“24”;

在Opitions框中选中“Scale 

Passband”;

在窗类型(Window:

)下拉框选择“Blackman”。

(4) 

在Frenquency 

Specification选项中,将fs(为采样频率)、fc 

(为通带截止

频率)中分别键入30000 

Hz和9600 

Hz。

(5) 

点击“Design 

Filter”按钮,完成滤波器的设计。

具体参数及设计成功后的结

果如下图所示。

 

FIR低通滤波器设计(6) 

通过菜单选项Analysis 

来分析滤波器的幅频响应和相频响应特性。

点击

Analysis 

中的Magnitude 

Response和Phase 

Response 

对幅频和相频响应进行分析。

如下图所示

 

幅频和相频响应进行分析

(7) 

在FDATool 

中,选择Targets 

->

Generate 

Header...,单击Generate按钮,

选择路径,即可输出前一步设计出的 

FIR滤波器的系数表。

(默认的系数表文件为fdacoefs.h。

如下图所示。

导出滤波器系数 

(8) 

在Matlab中打开得到的fdacoefs.h的文件,如下图所示

 

从Matlab中打开的fdacoefs.h文件

4.1.3提取滤波器参数

取系数表中的数据小数点后3位有效值,得到如下内容:

Const 

float 

B[25]={ 

0.0,0.0,0.001,-0.002,-0.002,0.01,-0.009, 

-0.018,0.049,-0.02,-0.11,0.28,0.64,0.28, 

-0.11,-0.02,0.049,-0.018,-0.009,0.01, 

-0.002,-0.002,0.001,0.0,0.0 

}

4.2CCS环境下FIR滤波器的设计及软件仿真

4.2.1程序流程图

4.2.2在CCS集成开发环境下新建FIR滤波器工程

(1)实验准备 

设置软件仿真模式,启动CCS。

(2)建立工程 

建立一个文件夹,存放在D:

\FIR,将D:

\课程设计\FIR滤波器\Fir源程序文件夹下的工程全部复制到D:

\FIR,在CCS中打开D:

\FIR\fir\fir.pjt工程,打开的CCS集成开发环境如下图所示。

 

在CCS集成开发环境中打开工程

4.2.3观察滤波前后的信号的时域波形及FFTMagnitude波形

(1)编译工程文件生成fir.out文件,并通过File->

Load 

Program„装载该文件。

(2)设置波形时域观察窗口。

选择菜单View→Graph→Time/Frequency„ 

,分别进行如下图所示进行设置以便观

察输入/输出时域波形。

输入数据频域波形观察 

输出数据频域波形观察 

(3)设置断点。

在程序fir.c中,有注释断点的语句上设置软件断点。

(4)运行并观察结果。

选择Debug菜单的Run项,或按F5键运行程序。

观察到的图形如下图所示。

滤波前后的数据波形及FFT分析的对比图

4.2.4程序清单

fir.c 

程序 

//#include 

"

DSP281x_Device.h"

// 

DSP281x 

Headerfile 

Include 

File 

DSP281x_Examples.h"

Examples 

f2812a.h"

#include"

math.h"

#define 

FIRNUMBER 

25 

//#define 

SIGNAL1F 

1000 

SIGNAL2F 

4500 

SAMPLEF 

10000 

PI 

3.1415926 

InputWave();

FIR();

fHn[FIRNUMBER]={ 

};

fXn[FIRNUMBER]={ 

0.0 

fInput,fOutput;

fSignal1,fSignal2;

fStepSignal1,fStepSignal2;

f2PI;

int 

i;

fIn[256],fOut[256];

nIn,nOut;

main(void) 

nIn=0;

nOut=0;

f2PI=2*PI;

fSignal1=0.0;

fSignal2=PI*0.1;

fStepSignal1=2*PI/30;

fStepSignal2=2*PI*1.4;

While{ 

fInput=InputWave();

fIn[nIn]=fInput;

nIn++;

nIn%=256;

fOutput=FIR();

fOut[nOut]=fOutput;

nOut++;

if 

( 

nOut>

=256 

) 

/* 

请在此句上设置软件断点 

*/ 

InputWave(){ 

for 

i=FIRNUMBER-1;

i>

0;

i-- 

fXn[i]=fXn[i-1];

fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0;

fSignal1+=fStepSignal1;

fSignal1>

=f2PI 

fSignal1-=f2PI;

fSignal2+=fStepSignal2;

fSignal2>

fSignal2-=f2PI;

return(fXn[0]);

FIR() 

fSum;

fSum=0;

i=0;

i<

FIRNUMBER;

i++ 

fSum+=(fXn[i]*fHn[i]);

return(fSum);

fir.cmd 

-l 

rts2800_ml.lib-stack 

400h 

-heap 

100 

MEMORY 

PAGE 

:

PROG(R) 

origin 

0x80000, 

length 

0x10000 

BOOT(R) 

0x3FF000, 

0xFC0 

RESET(R) 

0x3FFFC0, 

0x2 

/*PAGE 

VECTORS(R) 

0x3FFFC2, 

0x3E*/ 

M0RAM(RW) 

0x000000, 

0x400 

M1RAM(RW) 

0x000400, 

L0L1RAM(RW) 

0x008000, 

0x2000 

H0RAM(RW) 

0x3F8000, 

SECTIONS 

22-bit 

program 

sections 

.reset 

>

RESET, 

/*vectors 

VECTORS, 

0*/ 

.pinit 

PROG, 

.cinit 

.text 

16-Bit 

data 

.const 

L0L1RAM, 

.bss 

.stack 

M1RAM, 

.sysmem 

M0RAM, 

32-bit 

.ebss 

H0RAM, 

.econst 

.esysmem 

4.3对实时采样信号进行滤波的FIR滤波器的实现

4.3.1程序清单

#include 

<

math.h>

pi 

3.1415927 

px[256];

py[256];

double 

npass,h[51], 

x, 

y, 

xmid[51];

m=50;

n=256;

Prototype 

statements 

functions 

found 

within 

this 

file. 

interrupt 

void 

adc_isr(void);

Global 

variables 

used 

in 

example:

Uint16 

LoopCount;

ConversionCount;

firdes(int 

m, 

npass) 

t;

(t=0;

t<

=m;

t++) 

h[t] 

sin((t-m/2.0)*npass*pi)/(pi*(t-m/2.0));

(t=m/2) 

h[t]=npass;

xm,ym;

fs,fstop,r,rm;

i,j,p,k;

PLL, 

WatchDog, 

enable 

Peripheral 

Clocks 

This 

example 

function 

is 

the 

DSP281x_SysCtrl.c 

InitSysCtrl();

For 

example, 

set 

HSPCLK 

to 

SYSCLKOUT 

(25Mhz 

assuming 

150Mhz 

SYSCLKOUT) 

EALLOW;

4.3.2测试效果

如上图所示,可以发现使用DSP芯片实现的的FIR滤波器已经成功的将设定的混合频率信号中的高频部分

五、总结

DSP技术一般指将DSP 

处理器用于完成数字信号处理的方法与技术。

目前的DSP芯片以其强大的数据处理功能在通信和其他信号处理领域得到广泛注意并已成为开发应用的热点技术。

许多领域对于数字信号处理器的应用都是围绕美国TI公司所开发的DSP处理器进行的。

DSP芯片是一种特别适合于进行数字信号处理运算的微处理器。

主要应用是实时快速的实现各种数字信号处理算法,如卷积及各种变换等。

这次我们所做的利用DSP芯片来实现数字滤波器就是一项很重要的应用,这一次的课程设计主要讨论基于TI公司TMS320F2812 

DSP芯片的滤波器系统软件实现方法,用Blackman窗函数设计实现FIR滤波器,利用MATLAB中的FDAtool滤波器设计分析器设计符合要求的FIR滤波器并生成fdacoefs.h文件提取相关参数。

并在以TI 

TMS320F2812为微处理器的EXPIV型实验箱上实现,实验仿真结果、实时数据采集及ADC转换滤波滤波均表明滤波后能够得到比较光滑时域/频域波形,滤波结果效果良好达到了预期的性能指标要求。

六、参考文献

1. 

《DSP原理与应用技术》 

王忠勇 

陈恩庆 

编著 

电子工业出版社 

2. 

《基于DSP的FIR滤波器的设计与实现》 

长沙理工大学 

3. 

《数字信号处理教程》 

程佩清 

清华大学出版社 

4. 

《Matlab/Simulink通信系统建模与仿真实例分析》 

清华大学出版社

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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