数字滤波器在DSP28335中的使用

数字滤波是数字信号处理中的重要环节。为了用户更好的使用DSP进行数字信号处理,Ti 公司提供了数字滤波器程序模块和相应的matlab滤波器设计函数以加速我们的DSP程序设计。但是,很不幸的是,该模块附带的说明文档过于简单,程序接口做得不是很好,不利于大家模块化编程。因此,我写了一下文档,并自己写了一段更方便使用的代码,希望能给大家帮助。
一. M atlab滤波器设计函数的使用
首先介绍两种数字滤波器FIR滤波器和IIR滤波器
fir滤波器中文全称是有限冲激响应滤波器。该滤波器是对理想滤波器的高度近似,滤波器的通带增益恒定,阻带增益几乎为零,相位特性好。
iir滤波器中文全称是无限冲激响应滤波器。该滤波器是实际模拟滤波器的数字实现,通常我们定义在该滤波器的通带有‐3db的增益衰减,并且其相位特性不如fir滤波器。最常见的iir滤波器有巴特沃思滤波器,切比雪夫滤波器,椭圆滤波器。
在计算量大致相同时,iir滤波器对阻带频率的衰减能力要远高于fir滤波器。对于电力电子应用来说,数字滤波的目的通常是滤除信号中的部分频率或让信号中的特定频率通过,因此对滤波器的通带增益没有过多要求。所以选用iir滤波器是合适的。而在iir滤波器中,又以巴特沃思滤波器最为合适。
TI公司提供了两个基于matlab的IIR数字滤波器设计函数eziir16.m和eziir32.m。eziir16.m 对应dsp程序内部运算为16位,运算速度较快,但是精度很成问题,所以在使用的时候强烈推荐eziir32.m,其程序内部运算为32位的,运算速度对于电力电子开关电源应用来说也相对可以接受。
现以巴特沃思低通滤波器设计为例,介绍整个设计流程。
1.打开matlab,运行程序 eziir3
2.m。(\dsp_tbox\filter\matlab\ezIIR)
2.依次选择滤波器类型1,滤波器响应1,采样频率(通常是你的开关频率)10000,通带
增益下降3db,阻带增益衰减40db,转折频率,截止频率,最后命名输出文件名。
ezIIR FILTER DESIGN SCRIPT
Butterworth      : 1
Chebyshev(Type 1) : 2
Chebyshev(Type 2) : 3
Elliptic          : 4
Select Any one of the above IIR Filter Type    : 1
Low pass          : 1
High Pass        : 2
Band Pass        : 3
第十一届全国运动会开幕式Band Stop        : 4
Select Any one of the above Response            : 1
Enter the Sampling frequency                    : 10000
Enter the Pass band Ripples in dB(RP)          : 3
Enter the stop band Rippled in dB(RS)          : 40
Enter the pass band corner frequency(FP)        : 40
Enter the stop band corner frequency(FS)        : 100
Enter the name of the file for coeff storage    : lpf3.dat
Q format of the IIR filter coefficients:
29
Input Scaling value:
8.2760e‐004
Number of Biquads:
3
3.全部输入完,回车。滤波器的增益和相位特性会显示出来。检查是否符合设计要求。 记得把坐标轴改成log的
4.查看lpf3.dat文件
二. D SP程序接口及滤波器设计导入
1.在dsp_tbox\filter\clib中到.h头文件,.asm汇编源代码文件,拷贝到自己工程的对应
目录中。Fir16和iir16没有兴趣研究也可以不拷。
2.在\dsp_tbox\filter\cstb中可以到官方的例程,有兴趣的同志可以研究,不过我推荐用
我自己写的程序。在\dsp_tbox\filter目录中,文件名分别是iir32d.c,fir16d.c,iir16d.c,如果只用iir32的话,将它拷贝到工程原代码目录下。
3.将.asm和.c文件加入工程,并在主程序.c中添加filter.h库。
4.主程序.c中添加如下变量定义(针对iir32):
/////////////////////////////////////////////////////////////巴特沃思低通滤波器定义
//该滤波器为无限冲激响应滤波器,因此使用IIR数据结构体,具体使用见相应文档
//IIR16和IIR32均可用,但IIR32精度高很多。
/* Create an Instance of IIR5BIQD32 module and place the object in "iirfilt" section    */
#pragma DATA_SECTION(iir_5d, "iirfilt");
IIR5BIQ32  iir_5d=IIR5BIQ32_DEFAULTS;//(自己定义变量名)
/* Define the Delay buffer for the cascaded 6 biquad IIR filter and place it in "iirfilt" section */
#pragma DATA_SECTION(dbuffer_5d,"iirfilt");
long dbuffer_5d[2*IIR32_NBIQ];//(自己定义变量名)
//或者:(针对iir16):
/
* Create an Instance of IIR5BIQD16 module and place the object in "iirfilt" section    */
#pragma DATA_SECTION(iir, "iirfilt");
IIR5BIQ16  iir=IIR5BIQ16_DEFAULTS;
/* Define the Delay buffer for the cascaded 6 biquad IIR filter and place it in "iirfilt" section */
微博的兴起#pragma DATA_SECTION(dbuffer,"iirfilt");
int dbuffer[2*IIR16_NBIQ];
//或者:(针对fir16):
/* Create an Instance of FIRFILT_GEN module and place the object in "firfilt" section      */
FOS#pragma DATA_SECTION(fir, "firfilt");
位移比FIR16  fir= FIR16_DEFAULTS;
/* Define the Delay buffer for the 50th order filterfilter and place it in "firldb" section */
#pragma DATA_SECTION(dbuffer,"firldb");
long dbuffer[(FIR_ORDER+2)/2];
5.修改d或者28335_d文件:ramL5可以换成page1上其他合适的
地址
SECTIONS
{
/* Setup for "boot to SARAM" mode:
The codestart section (found in DSP28_CodeStartBranch.asm)
re‐directs execution to the start of user code.  */
firfilt  : >RAML5,  PAGE = 1
firldb  : >RAML5,  PAGE = 1
iirfilt  : >RAML5,  PAGE = 1
}
6.最后,修改iir.件(fir的话修改fir.件)。从刚才第一步中matlab的lpf3.dat(直
接双击打开)中复制出matlab输出的参数,拷贝到对应地方
#define IIR32_COEFF {\
‐507448531,1043875122,27624,55249,27624,\
‐515172922,1051596226,80359,160718,80359,\
‐528825829,1065243324,766940522,1533881043,766940522}
结晶紫#define IIR32_ISF 444315
#define IIR32_NBIQ 3
#define IIR32_QFMAT 29
负重效应
7.最后,主程序开头添加如下代码测试。IIR32_LPF_Calculation函数的输入为Q15格式的

本文发布于:2024-09-22 02:04:40,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/647783.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:设计   数字   使用   文件   频率   增益   工程
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议