数字滤波器设计及DSP实现∗

2018-08-28 02:50杨培消文申平凌佳俊
舰船电子工程 2018年8期
关键词:缓冲区滤波器波形

陈 樱 杨培消 文申平 凌佳俊

(1.91668部队 上海 200000)(2.海军工程大学 武汉 430033)(3.91878部队 湛江 524000)(4.91917部队 北京 100000)

1 引言

在这个信息化时代,数字信号处理技术越来越受到人们的关注[1],随着计算机相关技术和微电子技术飞速地发展,其相关的理论和算法被广泛应用于数字通信、模式识别、语音图像信号处理以及自动控制等领域[2~4]。作为数字信号处理技术中非常重要的一环,数字滤波器的应用几乎遍布所有的数字信号处理系统中[5]。数字滤波器由加法器、数字乘法器以及相关延时单元组成的一种算法或装置。它的主要功能是在数字域对输入的离散信号进行运算处理,从而达到滤除杂波得到目标信号的目的[6~8]。相比于传统的模拟滤波器,数字滤波器没有模拟器件的温度和电压漂移,性能更加可靠且能够达到很高的精度,同时滤波器参数容易修改[9]。由于数字器件的规范性,数字滤波器能够进行大规模的集成,通过DSP数字处理芯片可以实现并行操作处理[10]。

数字滤波器根据冲激响应的不同,能够分为有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器。对于FIR滤波器,冲激响应在有限时间内衰减为零,其输出仅取决于当前和过去的输入信号值[11]。对于IIR滤波器,冲激响应理论上应会无限持续,其输出不仅取决于当前和过去的输入信号值,也取决于过去的信号输出值[12]。本文主要在DSP TMS320C54x系列芯片上实现FIR滤波器。

2 基本原理

2.1 FIR滤波器的结构

对于一个FIR滤波器,假定其冲激响应为bi(i=0,1,2,…N-1),输入信号为x(n),则有以下差分方程:

其对应的滤波器传递函数为

可以用横截型(又称直接型或卷积型)FIR数字滤波器的结构图表示[13],如图1所示。

图1 横截型FIR滤波器的结构图

2.2 数据存储方式

由上面的公式和结构图可知,FIR滤波算法实际上是一种乘法累加运算。它不断地从输入端读入样本值x(n),经延时(z-1),做乘法累加,再输出滤波结果y(n)。

在实际编程中,z-1的实现方法有两种:线性缓冲区法和循环缓冲区法。下面进行分别介绍。

2.2.1 线性缓冲区法

线性缓冲区法的主要特点:对于N级FIR滤波器,在存储器中开辟一个大小为N的缓冲区,存放最新的N个数据样本值。每次输入新的样本值时,新的样本值总是放在缓冲区的顶部,其他数据都要下移一位。如图2所示,图中假定N=5。

图2 利用线性缓存区法实现

每次从缓冲区的底部向上读取数据,每读取一个数据后,要将此数据下移一位。

2.2.2 循环缓冲区法

循环缓冲区法的主要特点是:对于N级FIR滤波器,在数据存储区开辟一个称为滑窗的具有N个单元的缓冲区,滑窗中存放最新的N个输入样本值。每次输入新的样本时,新的样本将改写滑窗中最老的数据,其它数据则不需要移动。编写程序时利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,因而循环缓冲区地址是首尾相邻的,如图2所示,图中假定N=6。

图3 利用循环缓冲区法实现

利用循环缓冲区法的主要优点是:不需要移动数据,可将循环缓冲区定位在数据存储器的任何位置(而线性缓冲区则要求必须定位在DARAM中)。

本文在DSP实现中采用循环缓冲区法。

3 DSP实现

下面设计实现一个FIR低通滤波器,通带边界频率为1500Hz,通带波纹小于1dB;阻带边界频率为2000Hz,阻带衰减大于40dB;采样频率为8000Hz。

1)采用Matlab计算滤波器参数

在Matlab中使用窗函数法计算FIR滤波器,例如选择Hamming窗,其程序为

b=fir1(16,1500/8000*2)。得到下表中FIR数字滤波器系数。

表1 FIR滤波器系数

将上述系数存盘,建立一个数据文件(如fir01.txt)。

2)建立DSP汇编程序的FIR滤波器系数文件

上述系数必须转换成Q15格式,并放置在DSP汇编程序的。inc文件中,进行FIR滤波器的汇编程序的汇编、链接时,inc文件将被自动地加入到工程中去。

从Matlab中产生的fir01.txt文件,通过执行转换命令,将自动变换为firdata.inc滤波器系数文件。转换命令为(在Matlab下):!firdat fir01.txt将产生firdata.inc文件。

其内容如下:

3)产生滤波器输入信号的文件

在使用CCS的Simulator进行滤波器特性的测试时,需要输入时间信号x(n)。以下是一个产生输入信号的C语言程序,这个信号是频率为1000Hz和2500Hz的正弦波合成的波形。文件名为firin⁃put.c。

该程序将产生名为firin.inc的输入信号程序。

4)实现FIR数字滤波器的汇编程序

按照上述步奏操作,便能在DSP上实现数字滤波器,完成对混合信号高频分量的滤波功能。

4 实验结果

滤波之前生成的DSP混合信号波形:

图4 滤波前DSP时域波形

图5 滤波前DSP频域波形

将信号输入数字滤波器进行滤波,得到滤波后的信号。

图6 FIR滤波器频域特性

图7 滤波前DSP时域波形

图8 滤波前DSP频域波形

从上面的波形图可以看出,经过低通FIR滤波器后,高频信号被有效地滤除,得到所需的目标信号。实验结果证明FIR低通滤波器在DSP中得到实现。

5 结语

随着技术的飞速发展,数字滤波器的应用不仅仅局限于数字信息处理和过滤干扰,它在生物学、指挥控制和医疗事业等相关方面也有广泛的应用,并且功能也变得多样化。DSP芯片的普及使数字滤波器越来越容易实现,不但输出精度较传统滤波器有了大的提高,其执行速度和实用性也有大的提升。

猜你喜欢
缓冲区滤波器波形
基于时域波形掩护的间歇采样干扰对抗研究
浅谈有源滤波器分析及仿真
基于多模谐振器的超宽带滤波器设计
“雷达波形设计与运用专刊”编者按.
通用6T系列变速器离合器鼓失效的解决方案
从滤波器理解卷积
全新迈腾B7L车喷油器波形测试
缓冲区溢出漏洞攻击及其对策探析
初涉缓冲区
本期导读