ccwWord下载.docx
- 文档编号:19033943
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:9
- 大小:734.83KB
ccwWord下载.docx
《ccwWord下载.docx》由会员分享,可在线阅读,更多相关《ccwWord下载.docx(9页珍藏版)》请在冰豆网上搜索。
设计目的
1、掌握数字滤波器的设计过程;
2、了解FIR的原理和特性;
3、熟悉设计FIR数字滤波器的原理和方法;
4、学习FIR滤波器的DSP实现原理;
5、学习使用CCS的波形观察窗口观察输入/输出信号波形和频谱变化情况。
三:
设计内容
1、通过MATLAB来设计一个低通滤波器,对它进行模拟仿真确定FIR滤波器系数;
2、用DSP汇编语言及C语言进行编程,实现FIR运算,对产生的合成信号,滤除信号中低频成分,观察滤波前后的波形变化。
四:
设计原理
滤波器就是在时间域或频域内,对已知激励产生规定响应的网络,使其能够从信号中提取有用的信号,抑制并衰减不需要的信号,滤波器的设计实质上就是对提出的要求给出相应的性能指标,再通过计算,使物理可实现的实际滤波器响应特性逼近给出的频率响应特性。
FIR数字滤波器是一种非递归系统,其传递函数为:
=
由此可得到系统的差分方程为:
其冲激响应
是有限长序列,它滤波器系数向量
N为FIR滤波器的阶数。
在数字信号处理应用中往往需要设计线性相位的滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性为了使滤波器满足线性相位条件,要求其单位脉冲响应
为实序列,且满足偶对称或奇对称条件,即
或
.这样,当N为偶数时,偶对称线性相位FIR滤波器的差分方程表达为
由上可见,FIR滤波器不断地对输入样本
延时后,再做乘法累加运算,将滤波器结果
输出。
因此,FIR实际上是一种乘法累加运算。
而对于线性相位FIR滤波器系数的对称特性,可以采用结构精简的FIR结构将乘法器数目减少一半。
应用MATLAB设计FIR滤波器的主要任务就是根据给定的性能指标设计一个
,使其逼近这一指标,进而计算并确定滤波器的系数
,再将所设计滤波器的幅频响应、相频响应曲线作为输出,与设计要求进行比较,对设计的滤波器进行优化,设计完成之后将得到的FIR滤波器的单位冲激响应序列
的各个参数值。
五:
总体设计方案
1、利用MATLAB来确定FIR滤波器的参数;
具体方法为:
利用fir1和fir2两种函数设计有任意频率响应的各种加窗FIR滤波器。
滤波系数:
b=fir1(n,Wn),参数n为滤波器的阶数;
Wn为滤波器的截止频率
2、启动CCS,在CCS中建立一个汇编源文件、建立一个C源文件和一个命令文件,并将这三个文件添加到工程,再编译并装载程序;
3、设置波形时域观察窗口,得到滤波前后的波形变化图;
4、设置频域观察窗口,得到滤波前后的频谱变化图。
六:
主要参数
1、滤波器的阶数n=35;
2、滤波器的截止频率Wn=3700Hz
3、采样频率fs=10000Hz
4、滤波器系数:
计算出高频35阶参数{0.0000,0.0000,0.0001,-0.0001,-0.0001,0.0008,-0.0023,0.0048,-0.0089,0.0147,-0.0222,0.0312
-0.0411,0.0513,-0.0607,0.0683,-0.0732,0.0750,-0.0733,0.0683,-0.0607,0.0513,-0.0411,0.0312,-0.0222,0.0147
-0.0089,0.0048,-0.0023,0.0008,-0.0001,-0.0001,0.0001,0.0000,0.0000}
七、实验步骤
1、实验准备:
-设置软件仿真模式,
-启动CCS,选择菜单Debug→ResetCPU。
2、打开工程,c:
\ti\myprojects\FIR55\Fir.pjt。
3、编译并下载程序。
4、设置断点:
在有注释“breakpoint”的语句设置软件断点。
5、打开观察窗口,观察滤波效果显示:
*选择菜单View->
Graph->
Time/Frequency…,进行如下设置:
(1)选择“Debug”菜单的“Animate”项,或按F12键运行程序。
(2)观察窗口中各波形的时域波形。
(3)将各观察窗口参数中“DisplayType”项分别改成“FFTMagnitude”。
(4)观察窗口中各波形的频域波形。
(5)理解滤波效果。
6、退出CCS:
八、程序
#include"
myapp.h"
csedu.h"
scancode.h"
#include<
math.h>
#defineFIRNUMBER35
#defineSIGNAL1F1000
#defineSIGNAL2F4500
#defineSAMPLEF10000
#definePI3.1415926
floatInputWave();
floatFIR();
floatfHn[FIRNUMBER]={0.0,0.0,0.0001,-0.0001,-0.0001,0.0008,-0.0023,
0.0048,-0.0089,0.0147,-0.0222,0.0312,-0.0411,0.0513,
-0.0607,0.0683,-0.0732,0.0750,-0.0733,0.0683,-0.0607,
0.0513,-0.0411,0.0312,-0.0222,0.0147,-0.0089,0.0048,
-0.0023,0.0008,-0.0001,-0.0001,0.0001,0.0,0.0
};
floatfXn[FIRNUMBER]={0.0};
floatfInput,fOutput;
floatfSignal1,fSignal2;
floatfStepSignal1,fStepSignal2;
floatf2PI;
inti;
floatfIn[256],fOut[256];
intnIn,nOut;
main()
{
nIn=0;
nOut=0;
f2PI=2*PI;
fSignal1=0.0;
fSignal2=PI*0.1;
fStepSignal1=2*PI/30;
fStepSignal2=2*PI*1.4;
while
(1)
{
fInput=InputWave();
fIn[nIn]=fInput;
nIn++;
nIn%=256;
fOutput=FIR();
fOut[nOut]=fOutput;
nOut++;
/*breakpoint*/
if(nOut>
=256)
{
nOut=0;
}
}
}
floatInputWave()
for(i=FIRNUMBER-1;
i>
0;
i--)
fXn[i]=fXn[i-1];
fXn[0]=tan((double)fSignal1)+sin((double)fSignal2)/6.0;
fSignal1+=fStepSignal1;
if(fSignal1>
=f2PI)fSignal1-=f2PI;
fSignal2+=fStepSignal2;
if(fSignal2>
=f2PI)fSignal2-=f2PI;
return(fXn[0]);
floatFIR()
floatfSum;
fSum=0;
for(i=0;
i<
FIRNUMBER;
i++)
fSum+=(fXn[i]*fHn[i]);
return(fSum);
九、实验波形
滤波前后的时域波形对比
滤波前的频域波形
滤波后的频域波形
十、设计的收获及体会
通过本课题的设计让我学会了CCS软件的一些基本用法,怎样通过CCS软件的得到各种滤波器的滤波前后的时域、频域波形图。
在应用CCS软件作图的过程中由于创建的文件保存路径错了,导致不能在source源文件中加入.c文件和.cmd文件,花了一个很长时间,让同学帮忙都有把错误找出来,后来自己静下心来又一步一步、一遍一遍操作才发现错误,最终得到仿真的波形图。
也许生活、学习中,我们就错在最简单、最基本的错误中,因为这些错误是我们最容易忽视的,错在我们以为对的地方,所以在我们一遍又一遍地检查中根本就发现不了,结果浪费很多很多时间,还可能让我们失去信心放弃正在进行的工作。
本课题的设计巩固了以前在《数字信号处理》中学的滤波器设计的理论知识使我们建立了滤波器设计的整体概念,通过仿真使得学的一些抽象的理论形象化。
本课程的设计还进一步巩固已学的C语言知识,再一次温习了CCS软件的用法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ccw
![提示](https://static.bdocx.com/images/bang_tan.gif)