基于DSP的FIR设计.docx
- 文档编号:3785201
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:22
- 大小:24.12KB
基于DSP的FIR设计.docx
《基于DSP的FIR设计.docx》由会员分享,可在线阅读,更多相关《基于DSP的FIR设计.docx(22页珍藏版)》请在冰点文库上搜索。
基于DSP的FIR设计
DSP 原理及应用
文档来源为:
从网络收集整理.word 版本可编辑.欢迎下载支持.
课程设计
FIR滤波器综合设计
学院电气机电工程学院
专业电子信息工程
班级14 级本一
分 组 成 员王慈皓 04
许浩杰 03
联 系 方 式
指 导 教 师候兆然
2017 年 6 月
文档来源为:
从网络收集整理.word 版本可编辑.欢迎下载支持.
1 课程设计目标.........................................................................................................................................0
2 FIR 滤波器的算法原理..........................................................................................................................0
2.1 数字滤波器介绍 .............................................................................................................................0
2.2 数字滤波器的设计原理 ..............................................................................................................1
2.3 FIR 滤波器的特点...........................................................................................................................1
2.4 FIR 滤波器的基本结构..................................................................................................................1
2.5 FIR 滤波器实现方法 ......................................................................................................................2
2.5.1 窗函数法.............................................................................................................................2
2.5.2 频率抽样法 ...........................................................................................................................3
2.5.3 Chebyshev 逼近法 .................................................................................................................4
3 系统程序设计.........................................................................................................................................4
4
3.1 程序流程图 .....................................................................................................................................
3.2 程序的参数变量解读及注释 .....................................................................................................5
4 软件仿真步骤及结果分析..................................................................................................................6
4.1 滤波器的设计 ..................................................................................................................................6
7
4.2 产生滤波器 .....................................................................................................................................
4.3 实验准备 ..........................................................................................................................................7
4.4 仿真结果分析 ..................................................................................................................................9
5 总结 ...........................................................................................................................................................9
文档来源为:
从网络收集整理.word 版本可编辑.欢迎下载支持.
有限冲击响应滤波器(FIR)算法
1 课程设计目标
(1)熟悉 FIR 滤波器设计的基本方法。
(2)掌握用窗函数设计 FIR 滤波器的基本原理和方法,了解 MATLAB 语言。
(3)研究数字滤波器的基本理论和实现方法,从原理上理解和分析数字滤波器。
并通过对数字滤波器的结构和设计方法的学习,为设计数字滤波器奠定基础。
(4)研究 FIR 数字滤波器的设计方法,及如何用滤波器设计工具设计各种类型
的数字滤波器,并进行仿真与分析。
(5)对数字滤波器的 DSP 实现进行研究。
2 FIR 滤波器的算法原理
2.1 数字滤波器介绍
数字滤波是信号与信号处理领域的一个重要分支,在语音图像处理、模式识
别、谱分析、无线通信等领域都有着非常广泛的应用。
通过滤波运算,将一组输
入数据序列转变为另一组输出数据序列,从而达到修正时域或频域中信号属性的
目的。
数字滤波器就是用于完成这种信号滤波功能,用有限精度算法来实现的一
种离散时间线性时不变(LTI)系统。
相比于模拟滤波器,数字滤波器具有以下
优点:
数字滤波器的频域特性容易控制,性能指标优良;数字滤波器可以工作在
极低的频率,可以方便地实现模拟滤波器难以实现的线性相位系统;数字滤波器
工作稳定,一般不会受到外部环境的影响;数字滤波器的灵活性和可重用性高,
只需要简单编程就可以修改滤波器的特性,设计周期短。
数字滤波器的实现可以采用专用 DSP 芯片,通过编写程序,利用软、硬件
结合完成滤波器设计,也可以采用市面上通用的数字滤波器集成电路来实现,但
这两种方法无法适应高速应用场合。
随着集成电路技术的高速发展,FPGA 应用
越来越普及,FPGA 器件具有芯片密度大、执行效率高,速度快,集成度高等优
点,用 FPGA 芯片作为滤波器的设计载体,可以实现高速信号滤波功能。
文档来源为:
从网络收集整理.word 版本可编辑.欢迎下载支持.
2.2 数字滤波器的设计原理
数字滤波器的设计问题就是寻找一组系数 ai 和 bi,使得其性能在某种意义
上逼近所要求的特性。
如果在 s 平面上去逼近,就得到模拟滤波器,如果在 z 平
面上去逼近,则得到数字滤波器。
数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的
输出序列。
一个线性位移不变系统的输出序列 y(n)和输入序列 x(n)之间的关系,
应满足常系数线性差分方程:
x(n)、y(n)为输入(输出)序列,ai、bi 为滤波器系数,N 为滤波器的阶数。
2.3 FIR 滤波器的特点
数字滤波器的功能,就是把输入序列通过一定的运算变换成输出序列。
它的
实现方法有很多,其中比较常用到的是无限长脉冲响应滤波器 IIR 和有限长脉冲
响应滤波器 FIR 两种。
在计算量相等的情况下,IIR 数字滤波器比 FIR 滤波器的幅频特性优越,频
率选择性也好。
但是,它有着致命的缺点,其相位特性不好控制。
它的相位特性
f(ω ) = argH(e jω)
是使频率产生严重的非线性的原因。
但是在图像处理、数据传
数 H(z)为 H ( z ) = ∑ h(n) z -n 。
输等波形传递系统中都越来越多的要求信道具有线性的相位特性。
在这方面 FIR
滤波器具有它独特的优点,设 FIR 滤波器单位脉冲响应 h(n)长度为 N,其系统函
N -1
n=0
H(z)是 z -1 的(N-1)次多项式,它在 z 平面上有(N-1)个零点,原点 z=0 是(N-1)
阶重极点。
因此,H(z)永远稳定,它可以在幅度特性随意设计的同时,保证精确、
严格的线性相位。
2.4 FIR 滤波器的基本结构
数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的
y(n) = ∑ a x(n - k )
输出序列,FIR 滤波器的差分方程为:
N -1
k =0
k
。
文档来源为:
从网络收集整理.word 版本可编辑.欢迎下载支持.
对上式进行 Z 变换得到 FIR 滤波器的传递函数为:
。
由上式可以看出,H(z)是 z -1 的 N-1 次多项式,它在 z 平面内有 N-1 个零点,同
时在原点处有 N-1 个重极点。
N 阶滤波器通常采用 N 个延迟单元、N 个加法器
与 N+1 个乘法器,取图中(a)、(b)两种结构。
图 2-4-1 FIR 滤波器的一般结构
因为 FIR 滤波器的单位抽样响应是有限长的,所以它永远是稳定的。
另外,
若对 h(n)提出一些约束条件,那么可以很容易地使 H(z)具有线性相位,这在信
号处理的很多领域是非常重要的。
FIR 滤波器的设计任务,是要决定一个转移函
数 H(z),使它的频率响应满足给定的要求。
这里所说的要求,除了通带频率
ω
p
、
阻带频率及两个带上的最大和最小衰减
∂
p
和 ∂ s 外,很重要的一条是保证 H(z)具
性 H (e ) 是无法实现的,FIR的设计就是要寻找一个可以得到的频率特性
有线性相位。
2.5 FIR 滤波器实现方法
2.5.1 窗函数法窗函数法也称为傅里叶级数法。
理想的数字滤波器频率特
jw
N -1
n=0
jw
可由理想频率特性 H (e ) 通过
(n)去逼近一个理想单位脉冲响应 hd (n) 。
hd (n)
jw
傅氏反变换得到,
h (n) =
d
1 π
⎰ H (e jw )dω
d
-π
。
一般来说,这样得到的理想单位脉
冲响应序列 hd (n)
是个无限长序列,因而是非因果的。
设有一个截止频率为ω
c
的
理想线性相位低通,延时为τ ,其频率特性是:
h (n) = sin ωc (n - τ )]
d
得到:
d
⎧e jωc 0 ≤ ω ≤ ω
c
c
。
这是一个以n=τ 为中心偶对称的无限长非因果序列,要想用一个有限长的因
文档来源为:
从网络收集整理.word 版本可编辑.欢迎下载支持.
果序列去逼近它,最简单的方法是截取从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) *W
n
,这里的 W
n
就被称为窗函数,既
频率响应 H d (e) 。
频率抽样法是从频率出发,将给定的理想频率响应 H d (e) 加
然一个频域上的标准的矩形窗口对应于时域是一个无限长的序列,那么在时域上
截取一段必然会造成频域的矩形窗口的失真。
相应的,截取出的信号也相应失真,
从而需要改变原来窗口的形状来修正经过时域截取后的窗口失真。
2.5.2 频率抽样法窗函数法是从时域出发,用窗函数截取理想的 hd (n) 得到
h(n) ,以此有限长的h(n) 近似 hd (n) ,这样得到的频率响应 H (e jw ) 逼近于理想的
jwjw
以等间隔抽样
H (e jw )
d
ω=
2πk
N
= H (k )
d
。
然后以此 H d (k )
作为FIR滤波器的频率响应抽样值 H (k ) ,再根据DFT(离散
以算出FIR滤波器的系统抽样函数 H ( z) 及频率响应 H (e ) ,可以推出频率响应
傅氏变换)定义由频域这N个抽样值来唯一定义一个有限长序列 h(n) ,同样也可
jw
H (e jw ) 是频率抽样值 H (k ) 与线性相位因子 e - jω( N -1) / 2 及如下内插函数 S (ω , k ) 的
线性组合
S (ω, k ) =
N
e N
sin
ω
sin(
2
ωN
2
πk
- )
N 。
所以,在各频率取样点上,实际滤波器的频率响应是严格地和所要求的滤波
器的频率响应一致的,逼近误差为零,但在抽样点之间的频率响应是各取样点的
内插函数的延伸叠加而成,有一定的逼近误差,误差大小取决于频率响应曲线的
圆滑程度和抽样点的密度。
为了减少误差就要增加抽样点数目即增大采样频率,
抽样点之间的理想频率特性变化越陡,则逼近误差越大,在理想频率特性的不连
文档来源为:
从网络收集整理.word 版本可编辑.欢迎下载支持.
续点附近会产生肩峰和纹波。
频率抽样法的优点是可以在频域设计,适于利用最
优化方法,而且这种方法特别适用于窄带选频滤波器,但频率抽样法的抽样频率
只能是2π/N的整数倍或2π/N的整数倍加上π/N。
不能保证截止频率
ω
c
的准确
取值,要实现精确的
ω
c
就必须取N足够大,相应的计算量也很大。
此外,它的阻
都是在不同意义上对所给理想频率特性 H d e
对 H d e
带最大衰减一般,也只有30-50dB左右,很难满足频域特性要求较高的场合。
2.5.3 Chebyshev逼近法窗函数法和频率采样法设计出的滤波器的频率特性
( jw )
的逼近。
由数值逼近理论可知,
对某个函数f(x)的逼近一般有以下三种方法:
插值法(Interpolating Way)
最小平方逼近法(Least Square Approaching Way)
一致逼近法(Consistent Approaching Way)
切比雪夫最佳一致逼近的基本思想是,对于给定区间[a,b]上的连续函数
f (x ),在所有n次多项式的集合 ϕ n 中,寻找一个多项式 p(x),使它在[a,b]上对
f (x )的偏差和其它一切属于 ϕ n 的多项式 p(x)对f(x)的偏差相比是最小的,即
切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这
种最佳一致逼近多项式的方法,就是有名的“交错点组定理”。
切比雪夫逼近理
论解决了p(x)的存在性、唯一性和如何构造等问题。
等人应用切比雪夫逼近理
论提出了一种设计FIR滤波器的计算机辅助算法。
这种算法由于是在一致意义上
( jw )
作最佳逼近,因而获得了较好的通带和阻带性能,并能准确地指定通
带和阻带的边缘。
但它的效率依赖于初始极值频率点的估计,且通带和阻带内波
纹数较多,这是Chebyshev方法的两个主要缺点。
3 系统程序设计
3.1 程序流程图
图 3-1-1 程序流程图
文档来源为:
从网络收集整理.word 版本可编辑.欢迎下载支持.
3.2 程序的参数变量解读及注释
#include
#define FIRNUMBER 25 //定义滤波器的阶数为 25 阶
#define SIGNAL1F 1000 //输入信号 1 的频率
#define SIGNAL2F 4500 //输入信号 2 的频率
#define SAMPLEF 10000 //采样信号
#define PI 3.1415926
float InputWave(); //InputWave()函数声明
float FIR(); //FIR()函数声明
float fHn[FIRNUMBER]={.0,0.0,0.001,-0.002,-0.002,0.01,-0.009,
0.018,0.049,-0.02,0.11,0.28,0.64,0.28,
-0.11,-0.02,0.049,-0.018,-0.009,0.01,
-0.002,-0.002,0.001,0.0,0.0
};//用 MATLAB 得到的滤波器系数
float fXn[FIRNUMBER]={ 0.0 }; /*由于每一个输出的点值,需要上一个输入
输出值和当前的输入值经过 H(Z)的系数矩阵的计算来得到,即通过数值计算得
到滤波后的点值*/
float fInput,fOutput; //定义输入和输出的变量
float fSignal1,fSignal2; //确定输入点值的初始值
float fStepSignal1,fStepSignal2; //由高低频率决定其步值
float f2PI;
int i;
float fIn[256],fOut[256]; /*创建输入输出波形的点数,即每次所观察的波形点
数*/
int nIn,nOut;
main()
{
nIn=0; nOut=0;
f2PI=2*PI;
fSignal1=0.0;
fSignal2=PI*0.1;
fStepSignal1=2*PI/30;
fStepSignal2=2*PI*1.4;
while ( 1 ) //不断的循环
{
fInput=InputWave(); //InputWave 函数的返回值赋值给 fInput
fIn[nIn]=fInput;// fInput 的值存入 fIn[nIn]
nIn++; nIn%=256; //nIn=nIn+1;nIn 除 256 取余
fOutput=FIR(); //调用 FIR 滤波子程序
fOut[nOut]=fOutput; //将本次滤波输出存入 fOut[nOut]
nOut++; // nOut 自加
if ( nOut>=256 )
{
文档来源为:
从网络收集整理.word 版本可编辑.欢迎下载支持.
nOut=0;
}
}
}
float InputWave() //生成一个信号,为两种频率的正弦波叠加。
{
for ( i=FIRNUMBER-1;i>0;i-- ) //循环导入数据
fXn[i]=fXn[i-1]; //将上一个采样时间的输入信号向量延迟 1 个单元,
空出 1 个单元(以便将新值放入)
fXn[0]=sin((double)fSignal1)+cos((double)fSignal2)/6.0; //混频正弦信号
fSignal1+=fStepSignal1;
if ( fSignal1>=f2PI ) fSignal1-=f2PI;
fSignal2+=fStepSignal2;
if ( fSignal2>=f2PI ) fSignal2-=f2PI;
return(fXn[0]); //返回当前采样时间的输入信号 fXn[0]
}
float FIR()//FIR滤波算法
{
float fSum;
fSum=0;
for ( i=0;i { fSum+=(fXn[i]*fHn[i]); //FIR 滤波 } return(fSum);//返回当前滤波结果 fSum } 4 软件仿真步骤及结果分析 MATLAB辅助DSP实现FIR ,其总体过程为在DSP中编写处理程序,在 MATLAB中利用滤波器设计、分析工具( FDATOOL) 根据指定的滤波器性能快速 设计一个FIR ,再把滤波器系数以头文件形式导入CCS 中,头文件中MATLAB 辅 助DSP 实现FIR 数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行 DSP 程序并显示、分析处理后的数据。 使用该方法,便于采用汇编语言来实现程 序。 头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也 改变,方便程序调试、仿真。 4.1 滤波器的设计 MATLAB集成了一套功能强大的滤波器设计工具FDATool(Filter Design & Analysis Tool),可以完成多种滤波器的设计、分析和性能评估。 文档来源为: 从网络收集整理.word 版本可编辑.欢迎下载支持. 打开Filter Design & Analysis Tool,单击MATLAB R2014a中的应用程序→ “Filter Design & Analysis Tool”命令,打开FDATool,如图所示。 图 4-1-1 打开 MATLAB 中 FDATool 4.2 产生滤波器 阶数为25阶,这里应填24,比阶数少1。 窗函数选择切比雪夫型(chebyshev), 采样频率为10000Hz,通带截止频率为750Hz。 图 4-2-1 滤波器的幅频特性 图 4-2-2 滤波器的相位特性 H[n]={-1.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DSP FIR 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)