|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
<strong>1 引言</strong>
随着数字信号处理理论及应用技术的迅速发展,在一个数字系统中只用一个采样频率已 经很难满足要求。在实际的应用中,经常会遇到采样率的转换问题,即要求一个数字系统能 工作在“多采样率”状态。近年来,建立在采样率转换基础上的“多采样率数字信号处理” 已成为数字信号处理学科中的主要研究内容之一。直观地考虑,首先将以采样率 F1 采集的数字信号进行数模转换,这样就变成模拟信号,再按采样率 F2 进行模数转换,从而实现了从F1 到F2 的采样率转换,这就是变换采样率的最简单方法。但是这样较麻烦,且易使信号受到损伤,所以在实际应用的变采样系统中,改变采样频率并不经过模拟信号,而是完全 在数字域中实现的。在数字信号处理中,滤波占有极其重要的作用,适用于变采样率系统 中的数字滤波器就是本文要谈论的主要内容。
<strong>2 FIR 数字滤波器的设计过程及结构</strong>
数字滤波器根据其冲击响应函数的时域特性,可分为两种:无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。FIR 滤波器被广泛应用于各类数字信号处理系统, 它的系统总是稳定的,可以满足滤波器对幅度和相位特性的严格要求,避免模拟滤波器温漂 和噪声等问题,易实现线性相位且易用硬件实现,这些都是FIR 系统的突出优点,也是IIR 系统不易实现的。尽管IIR 滤波器系统比FIR 滤波器系统易取得较好的通带和阻带衰减特性,FIR 系统若要取得较好的衰减特性,一般要求系统函数H(z)阶次要高,也即滤波器长度M 要大。综合以上考虑,本文选用FIR 滤波器来完成设计。
2.1FIR 数字滤波器的基本原理及设计基础
FIR滤波器的系统函数为:
<ignore_js_op>
2010-4-13 11:30:49 上传
<strong>下载附件</strong> (584 Bytes)
</ignore_js_op>
,由系统函数可直接写出描述输入x(n)和输出y(n)之间关系的差分方程。设x(n)是一个M点序列,则得:
<ignore_js_op>
2010-4-13 11:30:49 上传
<strong>下载附件</strong> (650 Bytes)
</ignore_js_op>
。就硬件实现而言,FIR数字滤波器的基本结构是一个分节的延时线,每一节的输出加权累加,得到滤波器的输出。
<ignore_js_op>
2010-4-13 11:30:48 上传
<strong>下载附件</strong> (3.03 KB)
</ignore_js_op>
图1 FIR滤波嚣基本结构
图1 中x(n)是输入信号,x(n-i)是延时了i 个采样周期的输入信号,h(i)(i = 0,1,…,n-1)是第i 个延时节的加权值(即滤波器系数),y(n)是时刻t = nT 时滤波器的输出信号。
FIR 数字滤波器的设计一般要经过三步:确定目标、逼近和计算机实现。通常在设计 滤波器之前,应该先根据具体的应用确定一些技术指标。指标的形式一般在频域中给出幅度 和相位响应。幅度指标主要有2 种方式,分别是绝对指标和相对指标。在确定了技术指标之 后,就可以根据数学知识和滤波器的基本原理确定滤波器的模型来逼近给定的指标。上两步 的结果通常是得到以差分或系数函数或冲击响应描述的滤波器,根据这个描述用硬件或软件 实现并分析其频率特性和相位特性。至此完成了一个滤波器设计的全过程。
2.2 利用Matlab 实现FIR 数字滤波器
Matlab 是一个交互式的以矩阵为基础的软件,它被广泛应用与教学、科研和工程设计 等各个领域。随着Matlab 软件的发展,尤其是Matlab 的信号处理工具箱的不断完善,不仅 数字滤波器的计算机辅助设计有了可能,而且还可以使设计达到最优化。
在数字信号处理领域里,采样频率转换就是将信号采样频率从一个给定的频率F1=1/T1 转换到另一频率F2=1/T2 的过程,它是一个非线性过程。当新的采样频率高于原始频率,即 F2 > F1 时,称为升采样率或插值;反之,当新的采样频率低于原始频率,称为降采样率或 抽取。
设对某限带时间波形x(t),以采样率fs(在满足采样定理的条件下)进行采样,得到时间列x(k).对x(k)进行采样率变换,如升采样率,即提高采样率L(正整数)倍,升采样后的序列用Y(m)表示,那么,升采样前后序列的关系为:
<ignore_js_op>
2010-4-13 11:30:49 上传
<strong>下载附件</strong> (764 Bytes)
</ignore_js_op>
。该式表明对输入信号采样数据每相邻两点之间插入L-1个零.即可实现升采样率变换。因为抽取是内插的对偶系统,相应地,降采样前后序列的关系为:
<ignore_js_op>
2010-4-13 11:30:49 上传
<strong>下载附件</strong> (961 Bytes)
</ignore_js_op>
。该式表明只要对输入信号每隔M样点抽取一个样点,即可实现降采样率变换。
变采样率FIR数字滤波器的设计分为内插FIR滤波器设计和抽取FIR滤波器设计。对内插和抽取滤波器的设计以半带滤波器为基础。下面便是设计实例:
半带滤波器是一种特殊的FIR滤波器,其特征如下:
(1)半带滤波器的冲激响应除了零点不为零外,在其余偶数点均为零;
(2)半带滤波器所要求的滤波器模板必须关于f/4对称.即H(ejπ/2)=0.5,而且滤波器的参数个数必须为奇数;
(3)滤波器的频率响应以似中心对称,即
<ignore_js_op>
2010-4-13 11:30:49 上传
<strong>下载附件</strong> (538 Bytes)
</ignore_js_op>
。
基于半带滤波器的优点,在半带滤波器的基础上设计FIR 滤波器一般采用等波纹逼近法,该方法对同样的技术指标,能使误差均匀分布在整个频带,而且这种逼近法需要的滤波器阶数低,且最大误差最小。
给定半带滤波器的设计指标:
通带截止频率为20KHz,采样频率为88.2KHz,通带波纹为0.001,阻带衰减70dB。
根据上述指标,结合其优点,利用Matlab 的信号处理工具中的remez 函数进行FIR 滤 波器的设计。remez 函数利用Parks-McClellan 算法,该算法利用remez 交换算法和切比雪夫逼近理论来设计滤波器,使实际滤波器的幅频响应最优地拟合理想滤波器的幅频响应,使它们之间最大误差最小化。
调用remezord 和remez 函数设计此滤波器, 由调用格式 [N,fo,ao,w]=remezord(f,m,,rip,Fs)知道,首先根据设计指标确定remezord 函数的调用参数,估算出滤波器的最低阶数N ,其返回函数再作为remez 函数的调用参数,再直接编写程序调用remez 函数得到滤波器单位脉冲响应h(n),得到如图2 所示的幅频响应:
<ignore_js_op>
2010-4-13 11:30:48 上传
<strong>下载附件</strong> (5.13 KB)
</ignore_js_op>
图2变采样率FTIR滤波器的幅频响应
通过分析该半带滤波器的幅频响应,可以发现该滤波器的通带和阻带波纹俱在 0.0015dB 以内,阻带衰减达到了70dB。
程序运行结果显示,滤波器阶数N=43,基本符合设计要求。
<strong>3 FIR 数字滤波器的FPGA硬件实现</strong>
由前面的Matlab 设计已经求得了要求的FIR 滤波器的滤波系数及阶数,下面利用FPGA来完成滤波器的硬件实现。FIR 滤波器主要是由乘加单元组成,如果按照直观结构直接构造 FIR 滤波器会占用大量资源,这显然是不经济的。现提出一种利用FPGA 硬件实现滤波的 TOP-DOWN 结构图,如图3所示。它采用串行结构实现硬件即将输入数据直接与其对应的滤波系数相乘,但不需像并行结构中那样,必须所有的数都相乘完才能相加,而是将前一级乘积锁存,直接与后一级乘积累加,这样就可以极大地节约硬件资源,提高执行速度。FIR 数字滤波器系统主要分为数据存储和数据运算两大模块。数据存储模块主要功能是以时钟去控 制片选信号和地址译码,在ROM 查找表中读出与ROM 地址相对应的数据,即为滤波系数,并 将它与对应的输入信号同步输出至数据运算模块。数据运算模块主要功能就是完成输入信号与对应滤波系数的相乘和累加。
<ignore_js_op>
2010-4-13 11:30:48 上传
<strong>下载附件</strong> (5.66 KB)
</ignore_js_op>
图3 FIR滤波嚣硬件实现top-down结构图
<strong>4 结论
</strong>
由于FPGA具有速率高,面积小,性能可靠等特点,成为数字滤波器工作在很高频率上的首先硬件实现方案。本文利用Matlab 设计了一个给定指标的适用于变采样率FIR 滤波器, 并对它进行了FPGA 硬件实现。
本文的创新点:提出一种基于FPGA 实现变采样率FIR 数字滤波器的硬件实现方案,节约了硬件资源,降低设计成本,具有实用价值。
作者:徐燕,孙丽华 来源:《微计算机信息》(嵌入式与SOC)2009年第7-2期 |
|