DSP应用 定义系统性能指标 选择DSP芯片 软件编程 硬件设计 软件调试 硬件调试 系统集成 系统测试和调试
图3 DSP基本设计流程
3.3 CCS开发环境
CCS 全称是 Code Composer Studio 它提供了基本的代码生成工具,具有一定的调试、分析能力,在CCS下的程序开发过程如图4示。
图4 程序开发过程
CCS 包括: 1、CCS代码生成工具 2、CCS集成开发环境IDE
3、DSP/BIOS插件程序和API RTDX插件,主机接口和API等。
4. 数字滤波器的设计原理和方案对比
4.1 IIR滤波器
无限长冲激响应系统IIR(Infinite Impulse Response)中,用有理分式表示的系统函数来逼近所需要的频率响应,即其单位冲激响应h(n)是无限长的。
5
IIR滤波器由于吸收了模拟滤波器的结果,有大量的图表可查,可以方便、简单、有效地完成设计,效果很好,但是其相位特性不好控制,必须用全通网络进行复杂的相位较正,才能实现线性相位特性的要求。 4.2 FIR滤波器
有限长冲激响应系统FIR(Finite Impulse Response)中,用一个有理多项式表示的系统函数去逼近所需要的频率响应,即其单位冲激响应h(n)在有限个n值处不为零。FIR滤波器可在幅度特性随意设计的同时,保证精确、严格的线性相位特性。这在要求相位线性信道的现代电子系统,如图像处理、数据传输等波形传递系统中,是具有很大吸引力的。而且,其单位冲激响应是有限长的,不存在不稳定的因素,并且可用因果系统来实现。 4.3 FIR滤波器的基本结构
数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列。一个线性位移不变系统的输出序列y(n)和输入x(n)之间的关系,应满足常系数线性差分方程,见公式4.1,
y?n???bx?n?i???ay?n?i? n?0 (4.3.1)
iii?0i?1N?1M其中,x(n)为输入序列,y(n)为输出序列,ak和bk为滤波器系数,N是滤波器的阶数。若上式中所有的bk均为零,则有FIR滤波器的差分方程为:
N?1y(n)??ak?0kx(n?k) (4.3.2)
对上式进行Z变换得到FIR滤波器的传递函数为:
H?z??Y?z?N?1b?X?z??i?0kz?k (4.3.3)
由上式可以看出,H(z)是Z?1的N-1次多项式,它在z平面内有N-1个零点,同时在原点处有N-1个重极点。N阶滤波器通常采用N个延迟单元、N个加法器与N+1个乘法器,取图5 中(a)、(b)两种结构。
图5 FIR滤波器的一般结构
通常FIR滤波器的设计方法主要有三种:窗函数法、频率抽样法和切比雪夫
6
等波纹逼近法。其中窗函数法可以应用比较现成的窗函数,因而设计简单,在指标要求不高的场合使用方便灵活。 4.3.1 窗函数法
窗函数法也称为傅立叶级数法。理想的数字滤波器频率特性 是无法实现的, FIR的设计就是要寻找一个可以得到的频率特性 = 来逼近 ,这相当于用一个可实现的单位脉冲响应 h(n)去逼近一个理想单位脉冲响应 。 可由理想频率特性 通过傅氏反变换得到
一般来说,这样得到的理想单位脉冲响应序列 是个无限长序列,因而是非因果的。设有一个截止频率为 的理想线性相位低通,延时为τ,其频率特性是:
得到:
这是一个以n=τ为中心偶对称的无限长非因果序列,要想用一个有限长的因果序列去逼近它,最简单的方法是截取n从0到N-1的一段来表示它,即 h(n)=
hd(n)
(0?n?N?1);其他N:h(n)=0。
同时,为了保证线性相位,还要满足偶对称h(n)=h(N-1-n)。这就好像通过一个窗口观看到的一段hd(n) ,因此h(n)就表示成hd(n)和一个窗口函数的乘积,这样对h(n)的求解就变为h(n)=hd(n) *Wn ,这里的Wn就称为窗口函数, 既然一个频域上的标准的矩形窗口对应于时域是一个无限长的序列, 那么在时域上截取一段势必造成频域的矩形窗口的失真。结果就是截取出的信号也相应失真,为了补偿这种失真,只有改变原来窗口的形状,修正经过时域截取后的窗口失真。
窗函数设计方法的基本步骤是: (1) 把Hd?ejw?展成FS,得hd(n);
(2) 对hd(n)自然截短到所需的长度,如2M+1; (3) 将截短后的hd(n)右移M个采样间隔,得h(n);
(4) 将h(n)乘以合适的窗口,即得所要滤波器的冲击响应,窗函数以n=M对
7
称。利用所求得的单位抽样响应,即可用硬件构成滤波器的转移函数H(z),也可利用h(n)在计算机上用软件来实现滤波。 4.3.2 频率抽样法
窗函数法是从时域出发,用窗函数截取理想的hd?n?得到h(n),以此有限长的h(n)近似hd?n?,这样得到的频率响应H?ej??逼近于理想的频响Hd?ejw?。频率抽样法是从频率出发, 将给定的理想频响Hd?ejw?加以等间隔抽样。
Hd?ejw?
??2?kN?Hd?k?
然后以此Hd?k?作为FIR滤波器的频率响应抽样值H(k),再根据DFT(离散付氏变换)定义由频域这N个抽样值来唯一确定一个有限长序列h(n),同样也可以算出FIR滤波器的系统函数H(z)及频率响应H?ej??,可以推出频率响应H?ej??是频率抽样值H(k)与线性相位因子e?j??N?1?/2及如下内插函数S(ω, k) 的线性组合。
所以,在各频率取样点上,实际滤波器的频响是严格地和所要求的滤波器的频响一致的,逼近误差为零,但在抽样点之间的频响是各取样点的内插函数的延伸叠加而成,有一定的逼近误差,误差大小取决于频率响应曲线的圆滑程度和抽样点的密度 为了减少误差 就要增加抽样点数目即增大采样频率,抽样点之间的理想频率特性变化越陡,则逼近误差越大,在理想频率特性的不连续点附近会产生肩峰和纹波。频率抽样法的优点是可以直接在频域设计,适于利用最优化方法,而且这种方法特别适用于窄带选频滤波器, 但频率抽样法的抽样频率只能是2π/ N 的整数倍或2π/ N 的整数倍加上π/ N不能保证截止频率ωc的准确取值,要实现精确的ωc就必须取N大,相应的计算量也大。此外,它的阻带最大衰减一般,也只有30-50dB左右,很难满足频域特性要求较高的场合。 4.3.3 Chebyshev逼近法
窗函数法和频率采样法设计出的滤波器的频率特性都是在不同意义上对所给理想频率特性Hd?ejw?的逼近。由数值逼近理论可知,对某个函数f(x)的逼近一般有以下三种方法:
插值法(Interpolating Way)
最小平方逼近法(Least Square Approaching Way)
8
一致逼近法(Consistent Approaching Way)
切比雪夫最佳一致逼近的基本思想是,对于给定区间[a,b]上的连续函数
f?x?,在所有n次多项式的集合?n中,寻找一个多项式 p (x),使它在[a,b]
上对f?x?的偏差和其它一切属于?n的多项式 p(x)对f(x)的偏差相比是最小的,即
??x??f?x??min?max?p?x??f?x??? maxp切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这种最佳一致逼近多项式的方法,就是有名的“交错点组定理”。
切比雪夫逼近理论解决了p(x)的存在性、唯一性和如何构造等问题。J.H.McClellan、T.W.Parks、L.R.Rabiner 等人应用切比雪夫逼近理论提出了一种设计FIR滤波器的计算机辅助算法。这种算法由于是在一致意义上对Hd?ejw?作最佳逼近,因而获得了较好的通带和阻带性能,并能准确地指定通带和阻带的边缘。但它的效率依赖于初始极值频率点的估计,且通带和阻带内波纹数较多,这是Chebyshev方法的两个主要缺点。 4.4总体设计步骤
1、利用MATLAB来确定FIR滤波器的参数;
2、启动CCS,在CCS中建立一个C源文件和一个命令文件,并将这两个文
件添加到工程再编译并装载程序;
3、设置波形时域观察窗口,得到滤波前后的波形变化图; 4、设置频域观察窗口,得到滤波前后的频谱变化图。 4.5利用Matlab求出系数bk
在matlab的Command Window输入以下语句: c=fir1(25,0.5)
按回车键后即可出现系数bk
5.FIR滤波器的软件设计及其调试
5.1根据语音信号的设计参数确定滤波器的系数
利用MATLAB求得的系数为 c =
Columns 1 through 9
0.0014 -0.0018 -0.0029 0.0048 0.0078 -0.0119 -0.0177 0.0256 0.0368
Columns 10 through 18
-0.0536 -0.0821 0.1452 0.4484 0.4484 0.1452 -0.0821 -0.0536 0.0368
9