基于DSP的数字滤波器的设计与仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.1系统功能介绍

一个实际的应用系统中,总存在各种干扰。数字滤波器在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像信号等各种信号处理中都有广泛的应用,数字滤波器也是使用最为广泛的信号处理算法之一。

在本设计中,使用MATLAB模拟产生合成信号,然后利用CCS进行滤波。设定模拟信号的采样频率为48000Hz,。设计一个FIR低通滤波器,其参数为:滤波器名称:FIR低通滤波器

采样频率:Fs=48000Hz

通带截止频率:15000Hz

阻带截止频率:16000Hz

通带最大衰减:0.1dB

阻带最少衰减:80dB

滤波器系数:由MATLAB根据前述参数求得。

2.2 总体设计方案流程图

图1 总体设计方案

主要内容和步骤

3.1 滤波器原理

对于一个FIR 滤波器系统,它的冲击响应总是又限长的,其系统函数可记为:

()()1

0N n n H z h n z --==∑ 其中1N -是FIR 的滤波器的阶数,n z -为延时结,()h n 为端口信号函数。

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

()()()1

0N k y n h k x n k -==-∑ 其中()x n k -输入采样序列,()h k 是滤波器系数,N 是滤波器的阶数()Y n 表示

滤波器的输出序列,也可以用卷积来表示输出序列()y n 与()x n 、()h n 的关系,如下: ()()()y n x n h n =*

3.2 操作步骤

(1)打开FDATOOL ,根据滤波要求设置滤波器类型、通带截止频率、指定阶数、采样频率等。指定完设计参数后单击按钮Design Filter ,生成滤波器系数。

(2)把生成的滤波器系数传到目标DSP 。选择菜单Targets->Export to Code Composer Studio(tm)IDE ,打开Export to C Header File 对话框,选择C header file ,指定变量名(滤波器阶数和系数向量),输出数据类型可选浮点型或32 b ,16 b 整型等,根据自己安装选择目标板板号和处理器号,单击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所示

图4.1 MATLAB程序流程图

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

图4.2 CCS汇编程序流程图

第5章实验过程

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

MATLAB辅助DSP实现FIR,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计、分析工具( FDATOOL) ,根据指定的滤波器性能快速设计一个FIR ,然后把滤波器系数以头文件形式导入CCS中,头文件中MATLAB辅助DSP实现FIR数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP 程序并显示、分析处理后的数据。使用该方法,便于采用汇编语言来实现程序。头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便了程序调试、仿真。

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

图5.1 待滤波信号的时域图图5.2 待滤波信号的频域图利用FDA TOOL设计FIR滤波器的参数,操作步骤如图5.3所示。

图5.3 FIR滤波器的参数

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

图5.4 Export设置

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

图5.5 已滤波信号时域波形图图5.6 已滤波信号频域波形图MATLAB滤波器设计工具在完成FIR设计后,如图5.7所示,在Export as 中选择16bit符号整数输出,然后单击OK按钮。生成fir.h C语言头文件。将系数稍作修改,调整后拷贝到程序的系数初始化空间即可。

图5.7 MATLAB输出数值转换图

(2)在CCS中编写汇编语言程序,进行调试,实现带通滤波的功能。在CCS IDE 中建立LHM.pjt工程,用汇编语言编写处理主程序fir.asm。另外根据板上的存储器配置方式,编写存储器配置文件fir.cmd文件,将MATLAB生成的LHM.h 和input1.dat文件拷贝到LHM.pjt工程文件夹下,进行编译、链接,生成可执行文件LHM.out。

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

图5.8 data初始化图

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

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

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

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

偏差。

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

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

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

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

(7) 在View的Graph中单击Time/frequency出现graph property dialog 框,未修改抽样点数。显示的图形出现差异

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

在View的Graph中单击Time/frequency出现graph property dialog框。

将显示类型,图形名称,起始地址,抽样点数,数据类型等分别进行设置,输出各种波形。输出滤波前的信号时域波形。首先,设置如图5.9所示,输出滤波前的信号时域波形。

图5.9 Graph property dialog设置框图

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

图5.10滤波前信号波形图

图5.10为滤波前的信号,波形很杂乱,从时域上很难看出信号的周期性。修改相应设置,输出如图5.11所示滤波前信号频谱。

相关文档
最新文档