范文一:fir带通滤波器设计
*****************
实践教学
*****************
计算机与通信学院
2014年春季学期
《信号处理》课程设计
题 目:基于语音信号去噪处理的FIR滤波器设计
专业班级: 通信一班
姓 名:
学 号:
指导教师:
成 绩:
摘要
本次课程设计是基于语音信号去噪处理的FIR带通滤波器设计,在设计过程中,首先录制一段语音信号,并对录制的信号进行采样;其次使用MATLAB绘出采样后的语音信号的时域波形和频谱图;然后在给原始的语音信号叠加上噪声,并绘出叠加噪音后的时域图及频谱图;再次设计FIR带通滤波器,针对语音信号的性质选取一种适合的窗函数设计滤波器进行滤波;画出滤波后的时域波形图和频谱图,最后对滤波前后的信号进行对比分析,回放语音信号,并与原始信号对比,圆满完成这次课程设计。
关键词: FIR带通滤波器;语音信号;MATLAB仿真;窗函数
1
目录
前言 ........................................................................... 3 第1章 FIR滤波器设计的基本原理 ................................................ 4
1.1 滤波器的相关介绍 ....................................................... 4
1.2利用窗函数法设计FIR滤波器 .............................................. 4 第2章 语音信号滤波实现框图 .................................................... 8 第3章 FIR带通滤波器仿真结果 ................................................. 10
3.1 信号的采集 ............................................................ 10
3.2 语音信号的读入与打开 .................................................. 10
3.3 语音信号的FFT变换 .................................................... 11
3.4含噪信号的合成 ......................................................... 12
3.5 FIR滤波器的设计 ....................................................... 13
3.6 利用FIR带通滤波器滤波并分析结果 ...................................... 16
总结 .......................................................................... 17 参考文献 ...................................................................... 18 附录 .......................................................................... 19 致谢 .......................................................................... 23
2
前言
在信号处理过程中,所处理的信号往往混有噪音,从接收到的信号中消除或减弱噪音是信号传输和处理中十分重要的问题。根据有用信号和噪音信号的不同特性,提取有用信号的过程成为滤波。实现滤波功能的系统被称为滤波器。在近代电信设备和各类控制系统中,数字滤波器应用极为广泛。
语音处理是最早应用数字滤波器的领域之一,也是最早推动数字信号处理理论发展的领域之一。该领域主要包括5个方面的内容:第一,语音信号分析。即对语音信号的波形特性,统计特性,模型参数等进行分析计算。第二,语音合成。即利用专用硬件或在通用计算机上运行软件来产生语音。第三,语音识别。即利用专用硬件或计算机识别人的讲话,或者识别说话的人。第四,语音增强。即从噪音或者干扰中提取被掩盖的语音信号。第五,语音编码。主要用于语音数据的压缩,目前已经建立了一系列语音编码国际标准,大量用于通信和音频处理。
MATLAB是一种面向科学和工程计算的语言,它集数值分析、矩阵运算、信号处理和图形显示于一体,具有编程效率高、调试手段丰富、扩充能力强等特点。MATLAB的信号处理工具箱具有强大的函数功能,它不仅可以用来设计数字滤波器,还可以使设计达到最优化,是数字滤波器设计的强有力工具。
3
第1章 FIR滤波器设计的基本原理
1.1 滤波器的相关介绍
1.1.1 数字滤波器的概念
数字滤波器(Digital Filter,简称为DF)是指用来对输入信号进行滤波的硬件和软件。所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。数字滤波器和模拟滤波器相比,因为信号的形式和实现滤波的方式不同,数字滤波器具有比模拟滤波器精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配等优点。一般用两种方法来实现数字滤波器:一是采用通用计算机,把滤波器所要完成的运算编成程序通过计算机来执行,也就是采用计算机软件来
[1]实现;二是采用实际专用的数字处理硬件。
1.1.2 FIR和IIR滤波器
数字滤波器在数字信号处理的各种应用中发挥着十分重要的作用。它是通过对采样数据信号进行数学运算处理来达到滤波的目的。数字滤波器从实现的网络结构或者从单位脉冲响应可分为无限脉冲响应(IIR)滤波器和有限脉冲响应(FIR)滤波器。FIR滤波器的设计方法和IIR滤波器的设计方法有很大的不同,FIR滤波器设计任务是选择有限长度的h(n),使传输函数H(ejw)满足技术要求,FIR数字滤波器设计的方法有三种,第一种是窗函数法,第二种是频率采样法,第三种是切比雪夫等波逼近法。
从性能上说,IIR滤波器以非线性相位为代价以较低的阶数获得较高的选择性。而FIR滤波器想要获得相同的选择性阶数是IIR滤波器的5-10倍,结果成本较高、信号时延也较大:从结构上说,IIR采用递归结构,FIR采用非递归结构;从设计工具上说;IIR可以借助于模拟滤波器的成果,FIR滤波器一般采用没有封闭形式的设计公式;从使用场合上来看,在对相位要求不敏感的场合,如语音通讯等,选用IIR较为合适,可以充分发挥经济高效的特点。对图像处理、数据传输等以波形携带信息的系统,使用FIR较好。
1.2利用窗函数法设计FIR滤波器
1.2.1窗函数法设计FIR滤波器的基本思想
窗函数法的基本思想是要选取某一种合适的理想频率选择性滤波器,这种滤波器总是有一个非因果,无限长的脉冲响应,然后将它的脉冲响应截断(或加窗)以得到一个线性
[1] 相位和因果的FIR滤波器,因为必须设计一个因果可实现的FIR滤波器。
jw需要注意的是,数字滤波器的传输函数H(e)都是以2π为周期的,滤波器的低通频带
4
处于2π的整数倍处,而高频频带处于π的奇数被附近,这一点和模拟滤波器是有区别的。
因为录制的语音信号是模拟信号,要想使用数字滤波器对叠加了噪声的信号进行滤波,则在设计数字滤波器之前首先要进行模数转换,将模拟信号转换为数字信号。
1.2.2窗函数法设计FIR滤波器的步骤
主要设计步骤为:
(1)根据技术要求确定待求FIR滤波器的单位取样响应hd(n)。如果给出待求FIR滤波器
jw的频率响应为Hd(e),那么单位取样响应使用(1-1)的公式求出:
,jwjw H(n)=1/2H(e)edw ( 1-1 ) ,dd,,,
(2) 据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度N(或阶数M=N-1),窗函数类型可根据最小阻带衰减As独立选择,因为窗口长度N对最小阻带衰减As没有影响,在确定窗函数类型以后,可根据过渡带宽小于给定指标确定所拟用的窗函数的窗口长度N,设待求滤波器的过渡带宽为Δw,它与窗口长度N近似成反比,窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正,原则是在保证阻带衰减满足要求的情况下,尽量选择较小的N,在N和窗函数类型确定后,
即可调用MATLAB中的窗函数求出窗函数w(n)。
(3) 计算滤波器的单位取样响应h(n),使用(1-2)的公式求出:
h(n)= hd(n)w(n) ( 1-2 )
[1] (4) 验算技术指标是否满足要求。
1.2.2窗函数法设计FIR滤波器的要求
在使用窗函数法设计FIR滤波器时要满足以下两个条件:
(1)窗谱主瓣尽可能地窄,以获得较陡的过渡带。
(2)尽量减少窗谱的最大旁瓣的相对幅度,也就是使能量尽量集中于主瓣,减小峰肩和纹波,进而增加阻带的衰减。
在实际工程中常用的窗函数有五种,即矩形窗(Rectangular)、三角窗(Triangular)、汉宁窗(Hanning)、汉明窗(Hamming)、布莱克曼窗及凯塞窗(Kaiser)。
1.2.3常用窗函数的性质和特点
(1)矩形窗
5
矩形窗属于时间变量的零次幂窗。矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄露漏,甚至出现负谱现象。
(2)三角形窗
三角形窗又称费杰窗,是幂窗的一次文形式。与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。
(3)汉宁窗
汉宁窗又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和。汉宁窗优于矩形窗,但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。
(4)哈明窗
哈明窗与汉宁窗都是余弦窗,只是加权系数不同,哈明窗加权的系数能使旁瓣达到更小,所以哈明窗又称为改进的升余弦窗。它的能量更加集中在主瓣中主瓣的能量约占99.96%第一主瓣的峰值比主瓣小40dB,但主瓣宽度和汉宁窗相同仍为8*π/N,哈明窗与汉宁窗都是很有用的窗函数。
(5)布莱克曼窗
布莱克曼窗的幅度函数主要由五部分组成,他们的位移都不同,其幅度也是不同的W (w)使旁瓣再进一步抵消。旁瓣峰值幅度进一步增加,其幅度谱主瓣宽度是矩形窗的3倍。设计程序时用backman函数调用。
(6)凯塞窗
以上几种窗函数是各以一定主瓣加宽为代价,来换取某种程度的旁瓣抑制,窗函数的主瓣宽度和旁瓣峰值衰耗是矛盾的,一项指标的提高总是以另一项指标的下降为代价,窗口选择实际上是对两项指标作权衡。而两项指标是跳变的,于是有人提出可调整窗,适当修改参数,可在这两项指标间作连续的选择。常用的可调整窗是凯塞(Kaiser)窗。而凯窗则是全面地反映主瓣与旁瓣衰减之间的交换关系,可以在它们两者之间自由地选择它们的比重。
1.2.4 语音处理中的采样原理
因为录制的语音信号是模拟信号,要想使用数字滤波器对叠加了噪声的信号进行滤波,则在设计数字滤波器之前首先要进行模数转换,将模拟信号转换为数字信号。
在进行模数转换的过程中,当最高采样频率fs大于信号中最高频率f的2倍时,即:fsmax?2fmax,采样之后的数字信号可以完整地保留原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5,10倍;采样定理又称奈奎斯特定理。
6
频带为F的连续信号 f(t)可用一系列离散的采样值f(t1),f(t1?Δt),f(t1?2Δt),...来表示,只要这些采样点的时间间隔Δt?1/2F,便可根据各采样值完全恢复原来的信号f(t)。这是时域采样定理的一种表述方式。时域采样定理的另一种表述方式是:当时间信号函数f(t)的最高频率分量为fm时,f(t)的值可由一系列采样间隔小于或等于1/2fm的采样值来确定,即采样点的重复频率f?2fm。
采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数是采样周期或者叫采样时间,它是采样之间的时间间隔。通俗的讲采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。
采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。
[2] 每增加一个采样位数相当于力度范围增加了6dB。采样位数越多则捕捉到的信号越精确。
7
第2章 语音信号滤波实现框图
本次课程设计先完成语音信号的采集,并对所采集的语音信号加入不同的干扰噪声,对加入噪声的信号进行频谱分析,针对受干扰语音信号的特点设计不同的滤波器,然后利用窗函数法设计低通,高通,带通等滤波器对采集到的语音信号进行滤波处理,分析语音信号各频率段的特性。对加噪信号进行滤波,恢复原信号。把原始语音信号、加噪语音信号和滤波后的信号进行时域变换和频域变换,画出它们的时域波形和频域波形图,从视觉角度比较分析滤波的效果。实现框图如图2.1所示:
信号的采集
语音信号分析
含噪信号合成
数字滤波器的设计
滤波
结果显示及分析
图2.1 整体设计流程图
要求录制一段语音信号,要求长度不小于10秒,并对录制的信号进行采样,在MATLAB中可以使用wavrecord()函数完成。
语音信号是一种非平稳的时变信号,它携带着各种信息。语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。语音信号分析主要是在时域和频域进行的。FFT为快速傅里叶变换,是离散傅里叶变换的快速算法,对语音信号进行FFT变换就是为了得到它的频域的图形,便于从图中观察出信号的幅度等特性。
在MATLAB软件平台下,给原始的语音信号叠加上噪声,绘制出叠加噪声之后的语音信号时域图形及频域图形,可以在视觉上与原始信号图形对比。
8
这时的这语音信号已经是包含了噪声的合成信号,这些噪声的频率一般较高。所以可以利用MATLAB软件中设计的FIR滤波器进行滤波处理。根据信号的特性,计算出技术指标,利用凯瑟窗设计FIR滤波器。
利用设计好的凯瑟窗的低通FIR滤波器和高通FIR滤波器对合成的含噪信号进行滤波,绘制出FIR滤波器的频率响应,绘出滤波后的时域波形和频谱图,并对滤波前后的信号进行对比,分析信号的变化。
9
第3章 FIR带通滤波器仿真结果
本次课程设计中语音信号的录制以及进一步处理分析都选用了MATLAB平台。MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,不断完善 MATLAB 产品以提高产品自身的竞争能力。MATLAB的数据分析和处理功能十分强大,运用它来进行语音信号的分析、处理和可视化相当便捷。而且编程易学、直观,代码非常符合人们的思维习惯。MATLAB几乎可以在各种机型和操作系统上运行,所以在可移植性和可扩充性上MATLAB远优越于其他的高级编程语言。MATLAB语言具有强大的数值计算能力和视图能力,其偏微分方程工具箱提供了有限
[3] 元求解的一个强大而灵活的环境,并且有限元网格可做精细划分以满足要求。3.1 信号的采集
要求录制一段语音信号,并对录制的信号进行采样。
在MATLAB中可以使用wavrecord()函数完成,例如:y=wavrecord(13*fs,fs,);可以用来录制13秒的语音,wavplay(y,fs); 用来播放录制的语音,wavwrite(y,fs,'aa.wav');
[5] wavwrite(y,'aa.wav');两句则是将录制的语音保存下来。
3.2 语音信号的读入与打开
在MATLAB中,[y,fs,bits]=wavread('aa.wav');用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。
wavplay(y,fs);用于语音的播放,也可以使用sound(y); 用于对声音的回放。向量y则就代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。
在MATLAB中,实现语音的读入,并绘出了语音信号的原始信号图可采用fs=11025; 语音信号的采样频率为11025,x1=wavread('aa.wav'); 读取语音信号的数据赋给变量,sound(x1,11025); 用于播放语音信号。
语音信号是一种非平稳的时变信号,它携带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。 原始语音信号图如图3-1所示:
10
图3-1 原始语音信号图
如图中提取的语音时域与频域的波形图所示,整段音频数据中得声音高低起伏与录入的声音信号基本一致。
3.3 语音信号的FFT变换
FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。函数FFT用于序列快速傅立叶变换,其调用格式为Y=FFT(X),其中,X是序列,Y是序列的FFT,X可以为一向量或矩阵,若X为一向量,Y是X的FFT且和X相同长度;若X为一矩阵,则Y是对矩阵的每一列向量进行FFT。如果X长度是2的幂次方,函数FFT执行高速基,2FFT算法,否则FFT执行一种混合基的离散傅立叶变换算法,计算速度较慢。函数FFT的另一种调用格式为Y=FFT(X,N),式中,X,Y意义同前,N为正整数。函数执行N点的FFT,若X为向量且长度小于N,则函数将X补零至长度N;若向量X的长度大于N,则函数截短X使之长度为N;若X为矩阵,按相同方法对X进行处理。
信号的傅立叶表示在信号的分析与处理中起着重要的作用。因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。语音信号经过FFT变换之后,就可以得到信号的频域图形,另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更深入地说明信号的各项宏物理现象。从图中可以看出语音信号的截止频率为4000Hz。
11
3.4含噪信号的合成
在MATLAB软件平台下,给原始的语音信号叠加上噪声,噪声类型分为如下几种:白噪声、单频噪声(正弦干扰)、正余弦信号、多频噪声(多正弦干扰)、其他干扰,可设置为低频、高频、带限噪声、Chirp干扰、冲激干扰。
绘制出叠加噪声前后的语音信号时域图形及频域图形,在视觉上与原始信号图形对比,或可以通过Windows播放软件或者是利用MATLAB中的sound()函数从听觉上进行对比,分析并体会含噪语音信号频谱和时域波形的改变。
噪声与加噪后语音信号时域及频域图如下图3-2与3-3所示:
图3-2 余弦噪声信号的时域及频域图
图3-3 加噪后语音信号时域及频域图
与噪音信号对比,加入噪声后的波形与噪音信号相比出现了一些区别:噪音看起来是
12
一条蓝色的纸带,实际是余弦信号,时域幅值在-0.5与0.5之间,但是在加了噪音之后语音信号发生了巨大差别,不在是一条光滑的纸带,时域幅值在-2与2之间,其频域变化不大,图3-2所示的噪声信号与加噪后图3-3所示的信号时域、频谱对比可看出。 3.5 FIR滤波器的设计
3.5.1 FIR滤波器设计原理
数字滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数字方法按预定的要求对信号进行变换。
数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。从性能上来说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可用较低的阶数获得高的选择性,所用的存贮单元少,所以经济而效率高。但是这个高效率是以相位的非线性为代价的。选择性越好,则相位非线性越严重。相反,FIR滤波器却可以得到严格的线性相位,然而由于FIR滤波器传输函数的极点固定在原点,所以只能用较高的阶数达到高的选择性;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可以比IIR滤波器高5~10倍,结果,成本较高,信号延时也较大;如果按相同的选择性和相同的线性要求来说,则IIR滤波器就必须加全通网络进行相位较正,同样要大增加滤波器的节数和复杂性。
整体来看,IIR滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;FIR滤波器没有稳定性问题,线性相位,但阶数多,延迟大。
给出滤波器的归一化性能指标,采用窗函数法设计各种类型的滤波器(低通、高通、
[4] 带通、带阻)来对叠加噪声后的与语音信号进行滤波处理。
3.5.2 FIR带通滤波器设计要求
利用MATLAB仿真软件系统结合窗函数法设计一个数字带通FIR滤波器。 设计要求:
(1)用所设计的滤波器对受噪声影响的信号进行滤波,画出滤波后语音信号的时域波形图和频谱图;
(2)对滤波前后的信号进行对比,分析信号的变化;回放语音信号,并与原始语音信号对比。
技术指标:
13
低端阻带截止频率 fc1,1000 Hz
低端通带截止频率 fb1,1200 Hz
高端通带截止频率 fb2,3000 Hz
高端阻带截止频率 fc2,3200 Hz
通带衰减系数 ap,1dB
阻带衰减系数 as,100 dB
3.5.3 设计方法
设计FIR数字滤波器的方法通常有三种:窗函数法,频率抽样法,等纹波逼近法。本次课程设计讨论的是第一种窗函数法。这种方法也叫傅里叶级数法。
一般是先给定所要求的理想滤波器频率响应 ,导出 ,我们知道理想滤波器的冲击响应 是无限长的非因果序列,而我们要设计的是h(n)是有限长的FIR滤波器,所以要用有限长序列h(n)来逼近无限长序列,从美玉老师的《数字信号处理》得下式:
1,jwjwH(e)edwh(n),,d, = (3-1) 2,
即: 常用的方法是使用有限长的窗函数w(n)来截取
h(n)=w(n) (3-2)
根据在时域是相乘关系,在频域则是卷积关系:
1,,jwj(w),jwH(e)W[e]d,H(e),dR, = (3-3) ,2,
jwjwH(e)W(e)R其中为矩形窗谱,是FIR滤波器频率响应。
在设计过程中,将无限长序列变为有限长序列是通过时域加矩形窗乘积来实现的截断。常见的窗函数有:矩形窗,汉宁窗,海明窗,布莱克曼窗,凯泽窗等,从李勇、徐震的《MATLAB辅助现代工程数字信号处理》中得下面分几种常见的窗函数:
R(n)矩形窗:w(n)= N (3-4)
N,1,jwW,w(n)e, + ,jw(N,1)/2RWe 窗谱: =n,R0 (3-5) 布莱克曼窗的时域形式可表示为:
14
2n4n,,,,0.42,0.5cos(),0.8cos(), (3-6) w(n),,M,1M,1
,0,,本次课程设计使用布莱克曼窗设计带通滤波器,对加了噪音的信号进行处理,还原出原始语音信号。
设计步骤 3.5.4
从宋寿鹏的《数字滤波器设计及工程应用》中得窗函数法设计FIR滤波器的主要步骤及公式如下:
a.给出希望设计的滤波器的频率响应的函数 ;
b.根据允许的过渡带宽度及阻带衰减,初步选定窗函数及其长度N;
c.根据技术要求确定待求滤波器的单位取样响应;
,jjn,,1hnHeed()(),,dd,2,,, (3-7)
或 2,jjn,,1hnHeed,,()(),dd,2 (3-8) 0
将 与窗函数相乘得FOR数字滤波器的单位取样响应 , d.
hhn(n)=()(n),d (3-9)
e.按如下方法计算FIR数字滤波器的频率响应,并验证是否达到所要求的技术指标:
jjj,,, (3-10) HH(e)=12(e)*W(e),d
或 N-1,,jjn- (3-11) Hh(e)=(n)e,n=0j,j, 由计算幅度响应 和相位响应 。计算式(15)时可用FFT算法。如果或,,()H(e)H(e)不满足要求,可根据具体情况重复b,c,d,e步骤,直到满足技术要求。
根据布莱克曼窗设计的FIR带通滤波器响应及特性如下图所示:
图3-4 带通滤波器响应及函数特性图
15
3.6 利用FIR带通滤波器滤波并分析结果
利用布莱克曼窗设计的FIR带通滤波器对合成的含噪信号进行滤波,绘出滤波前后的时域波形和频谱图,并对滤波前后的信号进行对比,分析信号的变化;在相同的性能指标下比较滤波效果,并从理论上进行分析。
语音信号中包含背景噪声,这些噪声的频率一般较高。所以可以利用MATLAB软件中设计的FIR滤波器进行滤波处理,得到较为理想的语音信号。
图3-5 滤波前后的时域波形和频谱图
通过对比分析可知,滤波后的输出波形和原始语音加噪声信号的图形发生了一些变化:滤波后的输出波形明显在对应时间幅度比原语音加噪声信号的要小,而且滤波的效果也与 滤波器的选择有关,可以看出滤波器的性能差异以及参数的调节会对滤波器产生一定的影响,并且通过回放可以发现滤波前后的声音有变化.带通滤波器滤波后,已很接近原来的声音。从频谱图中我们还可以看出声音的能量信号主要集中在两边,滤波器达到既定要求。
16
总结
要求录制一段语音信号,并对录制的信号进行采样,使用MATLAB绘出采样后的语音信号的时域波形和频谱图;然后在给原始的语音信号叠加上噪声,并绘出叠加噪音后的时域图及频谱图;再次设计FIR带通滤波器,针对语音信号的性质选取一种适合的窗函数设计滤波器进行滤波;画出滤波后的时域波形图和频谱图,最后对滤波前后的信号进行对比分析,回放语音信号,并与原始信号对比,分析结果。
语音信号是一种非平稳的时变信号,它携带着各种信息。语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数。语音信号经过FFT变换之后,就可以得到信号的频域图形,另外,频域图形使信号的某些特性变得更明显,信号的傅立叶表示在信号的分析与处理中起着重要的作用。因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。
应用MATLAB 根据给定的技术指标进行FIR 数字滤波器设计时,可根据设计要求随时改变参数,以使滤波器达到最优化。 使用布莱克曼窗设计FIR带通滤波器对合成的含噪信号进行滤波,并对叠加噪声后的语音信号进行滤波。比较滤波前后的时域波形和频谱并进行分析。在频域波形中,我们可以明显的看到设计的滤波器对语音信号进行了滤波处理,将噪声进行了滤除。此次滤波基本达到了要求,完成了设计指标。
总之,加噪声的后的语音信号经过FIR滤波器的滤波处理,时域和频域图与原始信号都几乎一样,这说明噪声几乎全被滤掉了,同时也说明FIR滤波器设计还算理想,能满足所需要求。也可看出滤波之后仍有一小段噪声没有滤除,后面经过调试滤波器的参数发现当fp、fs参数的数值相差增大时,剩余噪声便会减少,于是通过进一步调试得到了较好的效果。
本课程设计的主要目的是在MATLAB环境下,使用窗函数设计法设计一个FIR滤波器,并对叠加了噪声后的语音信号进行滤波去噪。此次滤波基本达到了要求,完成了设计指标。
17
参考文献
[1]丁美玉. 数字信号处理. 西安电子科技大学出版社 151:222
[2]朱冰莲 .数字信号处理. 电子工业出版社 87:93
[3]李勇、徐震,MATLAB辅助现代工程数字信号处理,西安电子科技大学出版社 48:56 [4]刘树棠译.数字信号处理——使用MATLAB.西安:西安交通大学出版社 42:49 [5]罗军辉等编著.MATLAB7.0在数字信号处理中的应用.北京:机械工业出版社.28:34 [6] 万永革.数字信号处理的MATLAB实现.科学出版社,2007.
[7] 王力宁.MATLAB与通信仿真.人民邮电出版社,1999.
[8] 宋寿鹏.数字滤波器设计及工程应用.江苏大学出版社,2007.
[9] 普埃克著,方艳梅译.数字信号处理(第四版).电子工业出版社,2007. [10] 程佩青.数字信号处理教程(第3版).清华大学出版社,2007. [11] 陈亚勇等.MATLAB信号处理详解.人民邮电出版社,2001.
18
附录 %声音采集及绘制原始语音信号的时域波形和FFT频谱图
[y,fs,nbits]=wavread ('C:\Documents and Settings\jszx\桌面\录音.wav');
y=y(:,1);
N=length (y); %求出语音信号的长度 Y=fft(y,N); %傅里叶变换
subplot(2,1,1); t=(0:N-1)/fs;
figure(1);
plot(t,y);
axis([0 12 -1.5 1.5]); title('原始信号波形');
subplot(2,1,2); plot(abs(Y));
title('原始信号频谱');
f=fs*(0:1023)/2048; Au=0.5;
d=[Au.*cos(2*pi*10000*t)]'; %噪声为10kHz的余弦信号
d=d(:,1);
dd=fft(d,N); %傅里叶变换 figure(2);
subplot(2,1,1); plot(t,d);
axis([0 12 -0.6 0.6]) title('噪声信号波形');
subplot(2,1,2); plot(abs(dd));
title('噪声信号频谱');
x2=y+d;
19
S=fft(x2);
figure(3);
subplot(2,1,1);
plot(t,x2);
axis([0 12 -2 2])
title('加噪信号波形');
subplot(2,1,2);
plot(abs(S));
title('加噪信号频谱');
%FIR带通滤波器
fp1=1200;%输入设计指标
fp2=3000;
fs1=1000;
fs2=3200;
Fs=8000;
wp1=fp1/(Fs/2);%计算归一化角频率
wp2=fp2/(Fs/2);
ws1=fs1/(Fs/2);
ws2=fs2/(Fs/2);
deltaw=wp1-ws1;%计算过渡带的宽度
N0=ceil(11/deltaw);%按布莱克曼窗设计算滤波器长度 N=N0+mod(N0+1,2)%为实现FIR类型I偶对称滤波器,应确保N为奇数
windows=blackman(N);%使用布莱克曼窗
wc1=(ws1+wp1)/2;%截止频率取通阻带频率的平均值 wc2=(ws2+wp2)/2;
b=fir1(N-1,[wc1,wc2],windows);%用fir1子函数求系统函数系数
[db,mag,pha,grd,w]=freqz_m(b,1);
n=0:N-1;
dw=2/1000;
Rp=-(min(db(wp1/dw+1:wp2/dw+1)))
20
ws0=[1:ws1/dw+1,ws2/dw+1:501]; As=-round(max(db(ws0)))
figure(4);
subplot(2,2,1)
stem(0:N-1,b);
axis([0,N,1.1*min(b),1.1*max(b)]); title('实际脉冲响应');
xlabel('n');
ylabel('h(n)');
subplot(2,2,2)
stem(n,windows);
axis([0,N,0,1.1]);
title('窗函数特性');
xlabel('n');
ylabel('wh(n)');
subplot(2,2,3)
plot(w/pi,db);
axis([0,1,-100,10]);
title('幅频响应');
xlabel('频率(×\pi)');
ylabel('H(e^(j\omega))');
set(gca,'XTickMode','manual','XTick',[0,wc1,wc2,1]);
set(gca,'XTickMode','manual','YTick',[-50,-20,-3,0]);
grid
subplot(2,2,4)
plot(w/pi,pha);
axis([0,1,-4,4]);
title('相频响应');
xlabel('频率(×\pi)');ylabel('\phi(\omega)'); set(gca,'XTickMode','manual','XTick',[0,wc1,wc2,1]);
set(gca,'XTickMode','manual','YTick',[-pi,0,pi]);
21
grid
[y,fn,nbits]=wavread(' C:\Documents and Settings\jszx\桌面\录音.wav ');
Y=fft(y);
y1=fftfilt(b,y); %用blabckman滤波器进行滤波 Y1=fft(y1);
n=0:length(y)-1;
figure(5);
subplot(2,2,1);plot(y);title('未滤波语音波形'); subplot(2,2,2);plot(y1);title('滤波后语音波形'); subplot(2,2,3);plot(n,Y);title('未滤波语音频谱'); subplot(2,2,4);plot(n,Y1);title('滤波后语音频谱'); sound(y1,fn,nbits); %滤波后语音回放
22
致谢
通过本次信号处理课程设计,我了解到了做任何事都要有耐心、更要细心做事。这次的课程设计让我也意识到自己的理论知识还是不够好,在今后的学习中我们需要更努力的学习课本的专业知识。课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。我学到了许多东西,体会到了从书本学习与实际应用中的不同,这种感同身受必将对我们今后的学习与生活带来很大的帮助。
虽然我们每个人都有自己的题目,但是我们还是充分发挥了我们的团结合作能力,有什么错误的大家一起讨论,一起找资料解决,特别是题目相似的同学,大家有资料都一起研究,而且还有我们指导老师陈老师的精心指导,大家合作得都很愉快。
最后,在这里我还要感谢陈海燕老师给予我的帮助,以前很少与她进行交流,但是通过这次课程设计,在她的指导下她我学到了很多以前没有学到的东西也让我明白了自己的不足,在以后的日子里,我会不断的努力学习,把专业学好,并锻炼自己独立思考、解决问题的能力,理论联系实际学以致用,真正地达到锻炼自己能力的目的,取得圆满成功。
23
范文二:DSP课程设计_fir数字滤波器
黄冈师范学院
数字滤波器设计
设计课题:数字滤波器设计
学院名称:物理与电子信息学院 专业班级:电子信息科学与技术 1002班 学生姓名:程伟祥
学 号:201022340214
指导教师:雷学堂
目 录
第 1章 绪论 ..............................................2 1.1设计背景 .............................................2 1.2设计要求 .............................................2 1.3设计思路简介 .........................................2 第 2章 系统开发平台与环境 ................................. 3
1.1CCS 开发环境 .........................................3
2.2SEED-DEC2812开发实验箱 ..............................3第 3章 FIR滤波器设计过程 ...............................4 3.1FIR 滤波器设计总框图 .................................4 3.2FIR 滤波器设计的原理 .................................5 3.3 FIR 滤波器的设计方法 ................................6第 4章 系统软件设计 .......................................6 4.1程序流程图 ...........................................7 4.2程序源代码 ...........................................7 第 5章 系统仿真 ..........................................12 5.1仿真设置 ............................................12 5.2仿真图 ..............................................14
第 6章 总结 ..............................................17参考文献 .................................................17第 1章 绪论
1.1设计背景
在信号处理中, 滤波占有十分重要的地位。 数字滤波是数字信号处理的基本 方法。 数字滤波与模拟滤波相比有很多优点, 它除了可避免模拟滤波器固有的电 压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。 低通有限冲激响应滤波器 (低通 FIR 滤波器 ) 有其独特的优点, 因为 FIR 系统只有 零点, 因此, 系统总是稳定的, 而且容易实现线性相位和允许实现多通道滤波器。 DSP (数字信号处理器)与一般的微处理器相比有很大的区别,它所特有 的系统结构、 指令集合、 数据流程方式为解决复杂的数字信号处理问题提供了便 利,本文选用 TMS320C54X 作为 DSP 处理芯片,通过对其编程来实现 FIR 滤波器。
对数字滤波器而言 , 从实现方法上 , 有 FIR 滤波器和无限冲激响应 (IIR ) 滤波器 之分。由于 FIR 滤波器只有零点 , 因此这一类系统不像 IIR 系统那样易取得比较 好的通带与阻带衰减特性。 但是 FIR 系统有自己突出的优点 :①系统总是稳定的 ; ②易实现线性相位 ; ③允许设计多通带 (阻带 ) 滤波器。 其中后两项是 IIR 系统不易 实现的。
1.2设计要求
利用 C 语言在 CCS 环境中编写一个 FIR 滤波器程序,并能利用已设计好 的滤波器对常用信号进行滤波处理。
1.3设计思路简介
在 TMS320C54x 系统开发环境 CCS (Code Composer Studio ) 下对 FIR 滤波器的 DSP 实现原理进行讨论。利用 C 语言设计相应的滤波器,通过 实验仿真,从输入信号和输出信号的时域和频域曲线可看出在 DSP 上实现的 FIR 滤波器能完成预定的滤波任务。
第 2章 系统开发平台与环境
1.1 CCS开发环境
CCS 提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌 入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。 CCS 提供了基本的代码生成工具, 它们具有一系列的调试、 分析能力。 CCS 支持如下图 1.1所示的开发周期的所有阶段。
图 1.1
2.2 SEED-DEC2812开发实验箱
SEED-DECxxxx 系列嵌入式 DSP 开发板本着模块化、总线型、开放式、 系列化的设计思想,采用统一的系统结构、模块结构和机械结构,以多种典型 DSP 处理器构成具有标准总线和相同物理尺寸的高性能嵌入式 DSP 开发板。 SEED-DEC2812 嵌入式 DSP 开发板原理框图如图 1.2所示 :
图 1.2 第 3章 FIR滤波器设计过程
3.1 FIR滤波器设计总框图
FIR 滤波器设计总框图如图 3.1所示
图 3.1 FIR滤波器设计总框图
3.2 FIR滤波器设计的原理
设 a i(i=0, 1, 2, … , N-1) 为滤波器的冲激响应 , 输入信号为 x(n), 则 FIR 滤波器的输入输出关系为:
FIR 滤波器的结 构如图 3.2所示:
当第一次执行完 ∑= -
= 4 0
) (
) ( i
i
i n x a
n
y 之后,间接寻址的辅助寄存器
x
AR 指向 x(n-4)。然后,从 I/O口输入数据 x(n+1),将原来存放 x(n-4)的数据存储单元
改写为 x(n+1)。接着,进行第二次乘法累加运算, ∑=
-+
= + 4 0
) 1 (
) 1 (
i
i
i n x a
n
y ,最
后
x
AR 指向 x(n-3)。然后从 I/O口输入数据 x(n+2),将原来存放 x(n-4)的数 据存储器单元改写为 x(n+2)。
第 4章 系统软件设计
4.2.1 FILTER.c代码:
#include
#include
#include
unsigned int DataLong=1024; unsigned int i,j;
unsigned int k= 0;
unsigned short Ad_data[2048]; short Ad_data_signed[2048]; short filter_result[1024];
unsigned int convcount = 0;
volatile unsigned int adconvover =0; interrupt void ISRTimer2(void); interrupt void ad(void);
void main(void)
{
/*初始化系统 */
InitSysCtrl();
/*关中断 */
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化 PIE 中断 */
InitPieCtrl();
/*初始化 PIE 中断矢量表 */ InitPieVectTable();
//初始化 cputimer
InitCpuTimers();
/*设置中断服务程序入口地址 */ EALLOW;
PieVectTable.TINT2 = &ISRTimer2; PieVectTable.ADCINT = &ad;
EDIS;
/*开中断 */
IER |= M_INT1; //ADC中断
EINT;
ERTM;
/*设置 CPU*/
DINT;
ConfigCpuTimer(&CpuTimer2, 150, 22); StartCpuTimer2();
/*开中断 */
IER |= M_INT14;
EINT;
InitAdc();
for(;;){
/*fir滤波处理 */
for(i=0;i<>
Ad_data_signed[i]=(short)(Ad_data[i]-0x5300);
fir_filter(Ad_data_signed,hfir,filter_result,ORDER_FIR,DataLong,ROU ND_FIR);
adconvover=0;
}
}
}
interrupt void ad(void)
{
IFR=0x0000;
PieCtrl.PIEACK.all=0xffff;
if(adconvover==0){
Ad_data[convcount] = AdcRegs.RESULT0;
convcount++;
}
if (convcount==DataLong){
convcount=0;
adconvover=1;//接满标志
}
}
interrupt void ISRTimer2(void)
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
}
4.2.2 FIR_filter.c代码:
//const short x[]:输入信号的缓冲数组, short 类型
//const short h[]:滤波器的系数数组, short 类型
//short y[]:输出信号的缓冲数组, short 类型
//n :滤波器长度
//m :输入信号的长度,即 x[]的长度
//s :生成整型的滤波器系数时使用的移位数目
void fir_filter(const short x[],const short h[],short y[],int n,int m,int s) {
int i,j;
long y0;
long acc;
_nassert(m>=16);
_nassert(n>=16);
for(j=0;j<>
{
acc=0;
for(i=0;i<>
{
if(i+j>=m)
break;
else
{
y0=(long)x[i+j]*(long)h[i];
acc=acc+y0;
}
}
*y++=(short)(acc>>s);
}
}
第 5章 系统仿真
5.1仿真设置
1.fir_filter(Ad_data_signed,hfir,filter_result,ORDER_FIR,DataLong ,ROUND_FIR)和 adconvover=0处设置断点
2. 在 Graph Property Dialog中设置 Start Address和 Display Type如图 5.1、 图 5.2、 图 5.3、 图 5.4
图 5.1
图
5.2 图
5.3
图 5.4
3. 设置实验板输入信号的参数,再运行程序得到仿真图。 5.2 仿真图
(1) 标准矩形波, 频率为 300Hz , 振幅为 800mV 。 滤波前的波形如图 5.5和图 5.6,滤波后的波形如图 5.7和图 5.8。
图
5.5
图 5.6
图
5.7
图 5.8
(2) 噪声三角波, 频率为 400Hz , 振幅为 800mV 。 滤波前的波形如图 5.9和图 5.10,滤波后的波形如图 5.11和图 5.12。
图 5.9
图
5.10
图
5.11
图 5.12
第 6章 总结
FIR 滤波器的设计是数字信号处理技术的基础,也是 DSP 芯片的重要组 成部分。 FIR 滤波器性能的好坏直接影响着 DSP 的运行速度和精度,对现代电 子技术的发展起决定性作用, FIR 滤波器的设计在以后的一段相当长的时间里将 持续主导 DSP ,而 DSP 随着电子技术的不断发展,应用领域愈来愈广泛。 这次课程设计实现了一个简单的 FIR 滤波器的设计,在罗老师的精心指导 和帮助以及自己上网查找资料, 较好的完成了课程设计的任务并达到了理想的目 的。 在这里我对罗老师表示感谢, 感谢她的耐心和热心。 通过这次课程设计使我 对 DSP 芯片有了更深一步的了解,也不断的强化了自己的基础知识。
参考文献
[1]程佩青 . 数字信号处理教程 [M].北京:清华大学出版社, 1999年
[2]孙宗瀛 , 谢鸿林 .TMS320C5xDSP 原理设计与应用 [M].北京:清华大学出版社, 2002年 [3]乔瑞萍 , 崔涛 , 张芳娟 .TMS320C54xDSP 原理及应用 [M].西安:西安电子科技大学出版社, 2005年
[4]张雄伟 . DSP芯片的原理与开发应用(第三版) [M].北京:电子工业出版社, 2003年 [5]郑红 .TMS320C54XDSP 应用系统设计 [M]. 北京:北京航空航天大学出版社, 2002年
范文三:fir滤波器的课程设计
摘 要
数字滤波技术是数字信号处理的一个重要组成部分, 滤波器的设计是信号处理 的核心问题之一。 根据 FIR 滤波器的原理,提出了 FIR 滤波器的窗函数设计法,并对 常用的几种窗函数进行了比较。给出了在 MATLAB 环境下,用窗函数法设计 FIR 滤 波器的过程和设计实例。 仿真结果表明, 设计的 FIR 滤波器的各项性能指标均达到了 指定要求,设计过程简便易行。该方法为快速、高效地设计 FIR 滤波器提供了一个可 靠而有效的途径。分析了 FIR 数字滤波器的基本原理,在 MATLAB 环境下利用窗函 数设计 FIR 滤波器, 实现了 FIR 低通滤波器的设计仿真。 将设计的符合要求的滤波器 在 TI 公司 DSP 上实现。 通过实验结果表明 FIR 滤波器准确度高、稳定性好,可以 有效的滤除干扰信号,设计结果满足性能指标要求。数字滤波器的应用十分广泛,运 行 MATLAB 语言,能很容易地设计出具有严格要求(如线性相位等)的滤波器。用 定点 DSP 实现滤波器械要考虑 DSP 的定标、误差、循环寻址等几个关键问题。文中 实例是为了表明,可方便地用 DSP 实现模拟信号的实时滤波处理,所采用的采样频 率并不高。如果 DSP 采用更高的时钟,它的处理速度将更快,将能够满足更高采样 率的数字信号的实时滤波处理。
关键字 :DSP ; FIR ;滤波器; MATLAB ;仿真
目 录
摘要 ........................................................ 1
1 前言 ..................................................... 3
2 FIR 数字滤波器的基本原理 ................................. 4 2.1 关于 FIR 滤波器 . ........................................ 4 2.2 FIR 滤波器的优点 ....................................... 5 2.3 数字滤波器的设计 ....................................... 5
2.4 TMS320C54x DSP芯片说明 ................................. 6
3 FIR 滤波器的实现 ......................................... 7 3.1 窗函数设计法及 MATLAB 仿真 ............................... 7
3.2 CCS 简介及实验结果与仿真 . ............................... 10
4 总结与展望 .............................................. 12
5 附录程序 ................................................ 12参考文献 :................................................. 14
1前言
随着信息时代的到来,数字信号处理已经成为当今一门极其重要的学科和技术, 并且在通信、语音、图像、自动控制等众多领域得到了广泛的应用。在数字信号处理 中,数字滤波器占有极其重要的地位,它具有精度高、可靠性好、灵活性大等特点。 现代数字滤波器可以用软件或硬件两种方式来实现。 软件方式实现的优点是可以通过 滤波器参数的改变去调整滤波器的性能。
几乎在所有的工程技术领域中都会涉及到信号处理问题,其信号表现形式有电、 磁、机械以及热、光、声等,信号处理的目的一般是对信号进行分析、变换、综合、 估值与识别等。 如何在较强的噪声背景下提取出真正的信号或信号的特征, 并将其应 用于工程实际是信号处理的首要任务。 根据处理对象的不同, 信号处理技术分为模拟 信号处理和数字信号处理技术。 随着信息时代和数字世界的到来, 数字信号处理技术 已 成 为 当 今 一 门 极 其 重 要 的 学 科 和 技 术 领 域 。 数 字 信 号 处 理 DsP(DigitalSignalproeessing)是利用计算机或专用处理设备, 以数值计算的方法对信号 进行采样、 变换、 综合、 估值和识别等加工处理, 以达到提取信息和便于应用的目的。 目前, 它已经发展成为一项成熟的技术, 并且在许多的应用领域逐步代替了传统 的模拟信号处理系统,如通讯、自动控制、电力系统、故障检测、语音、图象、自动 化仪表、航空航天、铁路、生物医学工程、机器人、雷达、声纳、遥感遥测等。数字 信号处理中一个非常重要且应用普遍的技术就是数字滤波。 所谓数字滤波, 是指其输 入、 输出均为数字信号, 通过一定的运算关系改变输入信号所含频率成分的相对比例 或滤出掉某些频率成分, 达到提取和加强信号中有用成分, 消弱无用的干扰成分的目 的
2FIR 数字滤波器的基本原理
2.1关于 FIR 滤波器
设 h ( n) ( n = 0, 1, 2 ? N - 1)为滤波器的冲激响应,输入信号为 x ( n), 则 F IR滤波器就是要实现下列差分方程 :
式 (1)就是 FIR 滤波器的差分方程。 F IR 滤波器的最主要的特点是没有反馈回路, 因此它是无条件稳定系统。它的单位脉冲响应 h ( n) 是一个有限长序列。由上面的方 程可见, F IR 滤波算法实际上是一种乘法累加运算,它不断地输入样本 x ( n) ,经 延时 ( Z 3 /1)做乘法累加,再输出滤波结果 y(n)[1,2,3] 。对式 (1)进行 Z 变换,整理后 可得 FIR 滤波器的传递函数为 :
由式 (2)可以看出, FIR 滤波器的一般结构如图 1 所示。
FIR 数字滤波器的设计方法主要有窗函数法和频率抽样设计法,其中窗函数法是 基本而有效的设计方法。
2.2 FIR滤波器的优点
在数字信号处理应用中,数字滤波是各种 DSP 应用中的基本算法,在数字信号 处理中有很重要的地位, 数字滤波器十分重要并己获得广泛的应用。 所谓数字滤波器, 是指其输入、 输出均为数字信号, 通过一定的运算关系改变输入信号所含频率成分的 相对比例或滤出掉某些频率成分的器件,因而在数字通讯、语音图象处理、谱分析、 模式识别、自动控制等领域得到了广泛的应用。相对于模拟滤波器,数字滤波器没有 电压漂移、温度漂移和噪声等,还能够处理低频信号,频率响应特性可作成非常接近 于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应 用 将 会 越 来 越 来 广 泛 。 同 时 DSP(DigitalSignalProcessor)处 理 器 的 出 现 和 FPGA(FieldProgralnlnableGateArray)的迅速发展也促进了数字滤波器的发展,并为数 字滤波的硬件实现提供了更多的选择相对于模拟滤波器, 数字滤波器具有以下显著优 点 :精度高 :因此在一般精度要求高的滤波系统中,就必须采用数字滤波来实现。灵活 性大 :数字滤波的性能主要取决于乘法器的各项系数,而这些系数是存放在系统存储 器中的,只要改变存储器存放的系数,就可以得到不同的系统,这些都比改变模拟滤 波器系统的特性要容易和方便的多,因而具有很大的灵活性。可靠性高 :因为数字系 统只有两个电平信号“ 1”和“ O ” ,受噪声及环境条件的影响小,而模拟滤波各个参 数都有一定的温度系数,易受到温度、振动、电磁感应等影响。易于大规模集成 :数 字部件具有高度的规范性,便于大规模集成,大规模生产,且数字滤波器电路主要工 作在截止或饱和状态,对电路参数要求不严格,因此产品的成品率高,价格也日趋降 低。 相对于模拟滤波器, 数字滤波器在体重、 重量和性能方面的优势己越来越来明显。 并行处理 :数字滤波器的另外一个最大的优点就是可以实现并行处理,比如数字滤波 器可以采取 DSP 处理器来实现并行处理。
2.3数字滤波器的设计
数字滤波器设计的基本步骤如下 :
(l)确定指标。在设计一个滤波器之前,必须首先根据工程实际需要确定滤波器 的技术指标。在很多实际应用中,数字滤波器常常被用来实现选频操作。因此,指标 的形式一般在频域中给出幅度响应和相位响应。 幅度指标主要以两种方式给出。 第一 是绝对指标,它提供对幅度响应函数的要求,一般应用于 FIR 滤波器的设计。第二种
指标是相对指标。它以分贝值的形式给出要求,在工程实际中,比较受到欢迎。对于 相位响应指标形式, 通常希望系统在通频带中仍然有线性相位。 运用线性相位响应的 指标进行滤波器设计具有如下优点 :①只包含实数算法,不涉及复数运算 ; ②不存在延 迟失真, 只有固定数量的延迟 ; ③长度为 N 的滤波器 (阶数为 N--l) , 计算量为 N/2数量 级。
(2)逼近。确定了技术指标后,就可以建立一个目标的数字滤波器模型。通常采 用理想的数字滤波器模型。之后,利用数字滤波器的设计方法,设计出一个
实际滤波器模型来逼近给定的目标。 (3)性能分析和计算机仿真。 上两步的结果是 得到以差分或系统函数或冲激响应描述的滤波器。 根据这个描述就可以分析其频率特 性和相位特性, 以验证设计结果是否满足指标要求, 或者利用计算机仿真实现设计的 滤波器,再分析滤波结果来判断。
窗函数法设计 FIR 滤波器的 MATLAB 仿真
MATLAB 是一套用于科学计算的可视化高性能语言与软件环境。 它集数值分析、 矩阵运算、信号处理和图形显示于一体,构成了一个界面友好的用户环境。它的信号 处理工具箱包含了各种经典的和现代的数字信号处理技术, 是一个优秀的算法研究与 辅助设计的工具。
2.4TMS320C54x DSP芯片说明
TMS320C54x 是 TI 公司针对通信应用推出的中高档 16位定点 DSP 系列器件。 该系列器件功能强大、灵活,较之 TMS320C2xx ,具有以下突出优点:
(1)速度更快:40~100MIPS ;
(2)指令集更为丰富;
(3)更多的寻址方式选择;
(4)两个 40位的累加器;
(5)硬件堆栈指针;
(6)支持块重复和环型缓冲区管理。
3. FIR滤波器的实现
3.1窗函数设计法及 MATLAB 仿真
窗函数设计滤波器的基本思想, 就是根据给定的滤波器技术指标, 选择滤波器的 阶数 N 和合适的窗函数 ω(n)。 即用一个有限长度的窗口函数序列 ω(n)来截取一个无 限长的序列 hd(n)获得一个有限长序列 h(n), 即 h(n)=w(n)*hd(n), 并且要满足以下 两个条件:(1)窗谱主瓣尽可能地窄,以获得较陡的过渡带; (2)尽量减少窗谱的最大 旁瓣的相对幅度,也就是能量尽量集中于主瓣,使峰肩和纹波减小,就可增多阻带的 衰减。这就给窗函数序列的形状和长度选择。
Matlab 为用户提供了一种综合、 简便的图形用户工具— FDATool 滤波器设计 分析工具箱和 SPTool 信号处理工具箱。利用这两个工具可以使复杂的滤波器最佳 设计方法变得简单 , 用户只需在 FDATool 或 SPTool 图形工具里选择相应的滤波器 设计方法 , 并填入滤波器设计指标 , 即可为用户生成所需的滤波器频率响应特性。因为 在 SPTool 工具里可以看到根据设计指标得到的实际滤波特性的数字显示 , 所以可以 更准确地通过拖动特性曲线或改变指标使实际滤波器更满足要求 , 所以设计时 , 可先在 SPTool 里预设计 , 然后再将实际特性指标移到 FDATool 中 , 利用其提供的定点分析 工具将滤波系数变为定点系数 , 并观察系数截断后的频率响应。 最后通过 FDATool 工 具提供的可将数据以 C 头文件方式导出功能 , 将滤波系数以 Q15格式输出 , 供 DSP 处 理用。
针对设计要求,采用 Kaiser 窗函数法进行设计,代入相应的参数。
程序如下 :
fp=1500;
fc=1000;
as=80;
ap=1;
fs=22000;
wp=2*fp/fs;
wc=2*fc/fs;
N=32;
0200040006000800010000-1000-500
0Frequency (Hz)
P h a s e (d e g r e e s ) 0200040006000800010000-300-200-100
0Frequency (Hz)
M a g n i t u d e (d B ) beta=0.1102*(as-8.7);
window=Kaiser(N+1,beta);
b=fir1(N,wc,window);
freqz(b,1,512,fs);
figure;
plot(b);
所得 FIR 滤波器频率特性,结果如下图所示 :
图一、滤波器频率特性曲线
05101520253035
-0.0200.020.040.060.080.1
0.12
图二、滤波器系数曲线
即得到滤波器系数:
b =
Columns 1 through 9
-0.0001 -0.0002 -0.0005 -0.0007 -0.0007 0.0000 0.0020 0.0060 0.0125
Columns 10 through 18
0.0218 0.0339 0.0481 0.0632 0.0776 0.0895 0.0974 0.1002 0.0974
Columns 19 through 27
0.0895 0.0776 0.0632 0.0481 0.0339 0.0218 0.0125 0.0060 0.0020
Columns 28 through 33
0.0000 -0.0007 -0.0007 -0.0005 -0.0002 -0.0001
3.3 CCS简介及实验结果与仿真
CCS(Code Composer Studio)是 TI 推出的用于开发其 DSP 芯片的继承开发调试工 具,它采用 Windows 风格的界面,集编辑、编译、链接、软件仿真、硬件调试及实 时 跟 踪 等 功 能 于 一 体 , 极 大 地 方 便 了 DSP 程 序 的 设 计 与 开 发 。 以 上 程 序 在 TMS320LF2407A 的开发板上调试通过, 实验波形由 DSP 编译软件 CCS 提供显示时 频图显示。 CCS 提供的图形显示包括时频分析、星座图、眼图和图像显示。用户准 备好需要显示的数据后,选择命令 View → Graph ,设置相应的参数,即可按所选图形 类型显示数据。从图 3 输入波形图和图 4 输出波形图中可以看出通过 FIR 数字滤波 可以有效的滤掉信号杂波,提高信号质量。
FIR 滤波器以它优越的性能,在数字信号处理领域中占有很重要的地位。采用 DSP 芯片实现 FIR 数字滤波, 不仅具有准确度高、 执行速度快等特点, 而且程序可移 植性好,实用性强,可以十分方便地改变滤波器特性。
低通滤波器频率特性
由上图可以更清楚地得出滤波器中频率高于 1200Hz 的干扰信号都能有效滤除, 所 以此滤波器符合设计要求
4. 总结与展望
完成了以下工作 :
① 研究了数字滤波的理论知识 , 为系统整体设计奠定了理论基础
② 研究了 MATLAB 软件在数字信号处理 , 尤其是数字滤波器处理中的出了集中 数字滤波器的基本模型
③ 研究了数字滤波器的一种具体算法
④ 在 MATALAB 一 DSP 的集成开发环境下实现了数字滤波器从模型到 DSP 程 序的开发全过程。
数字滤波只是数字信号处理中应用比较广泛的一个领域 , 在以后的工作和学习生 活中 , 综合运用模拟电子、数字电子和 DSP 基本原理等课程中所学到的理论知识去独 立完成一个设计项目的设计。不仅要掌握关于 MATLAB 设计数字滤波器的方法,更 要学会利用多种途径设计各种 DsP 最小系统,熟练编程。在设计、动手组装、调试等 实践来验证所学的基本理论,培养设计应用电子电路的设计、制作和调试技能,培养 了较强的实践能力 ; 通过查阅文献培养独立分析和解决实际问题的能力 ; 学会了应用电 子电路的故障分析和处理能力。 由于时间和能力的限制, 还存在一些问题和不足之处, 有待今后的工作中去研究和思考。
通过对本课题的学习和研究,从中取得了一些成绩,理论水平一定程度的提高, 但是也暴露了一些问题 :首先,对一个陌生的课题需要查阅大量的文献和书籍来获得 一定懂得感性认识,然后才能有自己的构思,这是一条必经之路 ; 其次,理论基础知 识要扎实,课程设计到很多的基本算法,同时也应用到很多的基础理论,如果没有平 常的积累,则需要花费很多的时间去学习这些理论,这样会延缓工程项目的进度 ; 最 后在实际项目中必须自信,遇到困难要虚心向别人请教,这样就可以加快研究进程。 以上是我做课程设计的一些体会, 这将对我今后的学习和工作有很大的帮助。 同 时感谢指导老师的耐心指导。
5. 附录程序
利用 DSP 实现 FIR 数字滤波器算法程序 :
#define PI 3.1415926
#define NUM 100
const int length=NUM;
#define COUNT 33
static signed long h[COUNT]={
-0.0001 -0.0002 -0.0005 -0.0007 -0.0007 0.0000 0.0020 0.0060 0.0125
0.0218 0.0339 0.0481 0.0632 0.0776 0.0895 0.0974 0.1002 0.0974
0.0895 0.0776 0.0632 0.0481 0.0339 0.0218 0.0125 0.0060 0.0020
0.0000 -0.0007 -0.0007 -0.0005 -0.0002 -0.0001 };%滤波器系数
static long x1[NUM+COUNT];
void filter(int xin[], float xout[], int n, signed long h[])
{
int i, j;
long sum;
for(i=0;i<>
x1[n+i-1]=xin[i];
for(i=0;i<>
{
sum=0;
for(j=0;j<>
sum+=(long)h[j]*x1[i-j+n-1];
xout[i]=sum>>15;
xout[i]=(float) xout[i]/32768;
}
for(i=0;i<>
x1[n-i-2]=xin[length-i-1];
}
参考文献:
[l]刘燕基于 TMS32oc54x 的 FIR 数字滤波器的设计 [J].现代电子技术, 2005,(14). [2」胡广书 . 数字信号处理—理论、算法与实现 [M] 北京 :清华大学出版杜 ,2003. [3]乔瑞萍 .TMS320C54X DSP原理及应用 . 西安电子科技大学出版社 .2004.
[4]程佩青 . 数字信号处理教程 [M ].北京 :清华大学出版社 ,2001.
[5]陈怀琛 .MATLAB 及其在理工课程中的应用指南 . 西安电子科技大学出版社 ,2007. [6]赵 力 . 语音信号处理 . 机械工业出版社 ,2004.
[7]张雄伟 . DSP芯片的原理与开发应用(第三版) [M].北京:电子工业出版社, 2003年 [8]丁玉美、高西全编著 . 数字信号处理教程 [M].西安 :西安电子科技大学出版社 2000年
范文四:fir滤波器设计,c语言,
C 语言编写 FIR 滤波器,代码如下:
#include #include #include /**********************************宏 定 义 **************************************/ #define PI 3.1415926535 #define Size_Datas 512 /*******************************数 据 类 型 构 造 ***********************************/ inti=0,j=0, nNow=0; // h[]参数使用 matlab 计算获得 , 用 fopen ,接着 fprintf, 最后 fclose 等命令保 存为 dat 文件,不要直接用 save 命令。 float h[]={ #include }; constint ORDER = sizeof(h)/sizeof(h[0]); //输入数据形式与滤波器参数形式相同 float Xin[] = { #include }; float sum=0; float output[Size_Datas],w[Size_Datas]; int n1; void main(void) { for (i=0; i { for(j=0;j<> { if(i>=j) sum+=h[j]*Xin[i-j]; // 时域卷积 else ; } output[i] = sum ; } //考虑到前 33个点为不完全累加和,故抛去前 33个点。应该是前后各 32个点 //都是不完全累加和, //都应该去掉,对于数据分段进入滤波器的情况,应该把前一段的后面数据放到 //下一段的前面 for(i=0;i<> { output[i]=output[i+ORDER]; } } 目 录 1 绪论 ........................................................................................................... 1 1.1 滤波器的发展历程 . ................................................................................. 1 1.2 滤波器的分类 . ......................................................................................... 1 1.3 DSP 芯片的发展及应用 ......................................................................... 1 2 方案选择 ................................................................................................... 2 2.1 FIR 滤波器 . .............................................................................................. 2 2.2 基于 DSP 实现 FIR 的优点 .................................................................... 2 3 滤波器原理与 MATLAB 工具的设计 . ........................................................ 3 3.1 滤波器的原理 . ......................................................................................... 3 3.2 滤波器的设计步骤:. ............................................................................. 3 3.3 滤波器的 MATLAB 设计 ....................................................................... 3 4 软件的设计 . .............................................................................................. 6 4.1 程序的流程设计 . ..................................................................................... 6 4.2 源程序编写 . ............................................................................................. 7 4.3 FIR 滤波器的设计结果 . .......................................................................... 9 5 结束语 ....................................................................................................... 14参考文献:..................................................................................................... 15 1 绪论 1.1滤波器的发展历程 凡是有能力进行信号处理的装置都可以称为滤波器。 在近代电信设备和各类控制 系统中,滤波器应用极为广泛;在所有的电子部件中,使用最多,技术最为复杂的要 算滤波器了。 滤波器的优劣直接决定产品的优劣, 所以, 对滤波器的研究和生产历来 为各国所重视。 1917年美国和德国科学家分别发明了 LC 滤波器, 次年导致了美国第 一个多路复用系统的出现。 20世纪 50年代无源滤波器日趋成熟。自 60年代起由于 计算机技术、 集成工艺和材料工业的发展, 滤波器发展上了一个新台阶, 并且朝着低 功耗、高精度、小体积、多功能、稳定可靠和价廉方向努力,其中小体积、多功能、 高精度、 稳定可靠成为 70年代以后的主攻方向。 导致 RC 有源滤波器 、 数字滤波器、 开关电容滤波器和电荷转移器等各种滤波器的飞速发展,到 70年代后期,上述几种 滤波器的单片集成已被研制出来并得到应用。 80年代,致力于各类新型滤波器的研 究,努力提高性能并逐渐扩大应用范围。 90年代至现在主要致力于把各类滤波器应 用于各类产品的开发和研制。当然,对滤波器本身的研究仍在不断进行。 1.2 滤波器的分类 根据滤波器的选频作用, 滤波器可以分成四类:低通、 高通、 带通和带阻滤波器。 低通滤波器 , 只允许 0~f2 的频率成分通过,而大于 f2 的频率成分衰减为零; 高通 滤波器与低通滤波器相反, 它只允许 f1~∞ 的频率成分通过, 而 f 从 80年代至今的十多年中, DSP 芯片在运算速度、运算精度、制造工艺、芯片 成本、体积、工作电压、重量和功耗方面取得了划时代的发展,开发工具和手段不断 完善。 DSP 芯片有着非常快的运算速度,使许多基于 DSP 芯片的实时数字信号处理 系统得以实现。目前, DSP 芯片已应用在通信、自动控制、航天航空及医疗领域,取 得了相当的成果。在载人航天领域,基于 DSP 芯片的技术具有广阔的应用前景。 2 方案选择 2.1 FIR滤波器 数字滤波器用于改变输入信号 X(n)的频谱特性以满足某种特定的设计要求。一 个因果的数字滤波器可以用它的单位冲激响应 h(n)、 传输函数 H(z)或者差分方程来表 达。 其中单位冲激响应和传输函数描述了系统的时域和频域性质, 差分方程则反映了 实现该滤波器所需的运算。 一个线性时不变因果滤波器可以用式 (1)的差分方程描述: ∑∑-= = - + -- = 1 0 1 ) ( ) ( ) ( M k k N k k k n x b k n y a n y 如果 1≤k≤N 时, ak=0,则: ∑-= - = 1 0 ) ( ) ( M k k k n x b n y 这就是一个 M 阶的 FIR 滤波器,是非递归运算。 2.2 基于 DSP 实现 FIR 的优点 本设计所采用的 TMS320C5000采用改进的哈佛结构 , 具有以下优点 :具有高度并 行性和专用硬件逻辑的 CPU 设计 , 芯片性能大大提高 ; 哈佛结构不同于传统的冯 ·诺依 曼 (Von Neuman) 结构的并行体系结构 , 其程序存储器和数据存储器是相互独立的存储 器 , 每个存储器独立编址 , 独立访问。系统中设置了 1组程序总线和 3组数据总线及 4组地址总线 , 从而使数据的吞吐率大大提高。基于此,本设计设计了 FIR 数字滤波器, 着重介绍 FIR 滤波器设计及 DSP 中 FIR 滤波器的实现原理及方法。 基于 DSP 芯片 TMS320C5000的 FIR 滤波器设计方法,利用 MATLAB 仿真与 DSP 实现相结合的方 式可以方便、快捷地设计具有严格线性相位的 FIR 系统 , 而且参数的修改十分方便。 用 DSP 实现 FIR 数字滤波 , 具有准确度高、可移植性好、灵活性强等优点。该研究对 其它类型滤波器的设计也有一定的参考价值。 3 滤波器原理与 MATLAB 工具的设计 3.1 滤波器的原理 数 字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应 (IIR )滤波器和有限长冲激响应(FIR )滤波器。 IIR 滤波器的特征是,具有无限持 续时间冲激响应。 种滤波器一般需要用递归模型来实现, 因而有时也称之为递归滤波 器。 FIR 滤波器的冲激响应只能延续一定时间,在工程实际中可以采用递归的方式实 现, 也可以采用非递归的方式实现。 数字滤波器的设计方法有多种, 如双线性变换法、 窗函数设计法、插值逼近法和 Chebyshev 逼近法等等。随着 MATLAB 软件尤其是 MATLAB 的信号处理工作箱的不断完善,不仅数字滤波器的计算机辅助设计有了可 能,而且还可以使设计达到最优化。 3.2 滤波器的设计步骤: 数字滤波器设计的基本步骤如下: (1) 确定指标; (2) 逼近; (3) 性能分析和计算机仿真。 3.3 滤波器的 MATLAB 设计 3.3.1 关于 MATLAB MATLAB 是一套用于科学计算的可视化高性能语言与软件环境。 它集数值分析、 矩阵运算、 信号处理和图形显示于一体, 构成了一个界面友好的用户环境。 它的信号 处理工具箱包含了各种经典的和现代的数字信号处理技术, 是一个非常优秀的算法研 究与辅助设计的工具。在设计数字滤波器时,通常采用 MATLAB 来进行辅助设计和 仿真。 3.3.2 FIR 滤波器的 MATLAB 设计 下面以设计线性相位 FIR 滤波器为例介绍具体的设计方法。 线性相位 FIR 滤波器通常采用窗函数法设计。窗函数法设计 FIR 滤波器的基本 思想是:根据给定的滤波器技术指标,选择滤波器长度 N 和窗函数 ω(n ) ,使其具 有最窄宽度的主瓣和最小的旁瓣。 其核心是从给定的频率特性, 通过加窗确定有限长 单位脉冲响应序列 h(n)。 工程中常用的窗函数共有 6种, 即矩形窗、 巴特利特 (Bartlett ) 窗、 汉宁 (Hanning ) 窗、 汉明 (Hamming ) 窗、 布莱克曼 (Blackman ) 窗和凯塞 (Kaiser ) 窗。下面以 Kaiser 为例,设计一个低通滤波器: fp=2500; fc=6000; as=100; ap=1; fs=60000; wp=2*fp/fs; wc=2*fc/fs; N=ceil((as-7.95)/(14.36*(wc-wp)/2))+1; beta=0.1102*(as-8.7); window=Kaiser(N+1,beta); b=fir1(N,wc,window); freqz(b,1,512,fs); 结果如下: 生产系数如下: -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0001 -0.0001 -0.0000 0.0001 0.0002 0.0003 0.0003 0.0001 -0.0001 -0.0005 -0.0007 -0.0007 -0.0003 0.0004 0.0011 0.0016 0.0015 0.0007 -0.0008 -0.0023 -0.0033 -0.0031 -0.0013 0.0015 0.0045 0.0062 0.0057 0.0024 -0.0027 -0.0081 -0.0112 -0.0101 -0.0043 0.0049 0.0143 0.0199 0.0182 0.0079 -0.0090 -0.027 -0.0389 -0.0371 -0.0171 0.0212 0.0722 0.1261 0.1711 0.1966 0.1966 0.1711 0.1261 0.0722 0.0212 -0.0171 -0.0371 -0.0389 -0.0271 -0.0090 0.0079 0.0182 0.0199 0.0143 0.0049 -0.0043 -0.0101 -0.0112 -0.0081 -0.0027 0.0024 0.0057 0.0062 0.0045 0.0015 -0.0013 -0.0031 -0.0033 -0.0023 -0.0008 0.0007 0.0015 0.0016 0.0011 0.0004 -0.0003 -0.0007 -0.0007 -0.0005 -0.0001 0.0001 0.0003 0.0003 0.0002 0.0001 -0.0000 -0.0001 -0.0001 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 3.3.4 数字滤波器的实现方法 数字滤波器的实现方法一般有以下几种。 ① 采用加法器、乘法器、延时器设计专用的滤波电路。 ② 在通用计算机系统中加上专用的加速处理机设计实现。 ③ 用通用的可编程 DSP 芯片实现。 ④ 用专用的 DSP 芯片实现。在一些特殊的场合,要求的信号处理速度极高,用 通用 DSP 芯片很难实现。这种芯片将相应的滤波算法在芯片内部用硬件实现,无需 进行编程。 ⑤ 采用 FPGA/CPLD设计实现。 4 软件的设计 4.1 程序的流程设计 4.1.1 在 CCS 中编写处理程序 在 CCS IDE中建立 fir . pjt 工程,用 C 语言编写处理主程序 fir . c ,利用汇编语 言文件, 来定义中断服务程序。 另外根据板上的存储器配置方式, 编写存储器配置文 件 (. cmd 文件 ) ,编译、链接,生成可执行文件 (fir. out 文件 ) ,加载到目标 DSP 程 序存储器中,流程图如下: 4.1.2 程序程序图 4.2 源程序编写 #include #include #include unsigned int DataLong=1024; //采样点数 1024 unsigned int i,j; unsigned int k= 0; unsigned short Ad_data[2048]; short Ad_data_signed[2048]; short filter_result[1024]; unsigned int convcount = 0; volatile unsigned int adconvover =0; interrupt void ISRTimer2(void); interrupt void ad(void); void main(void) {/*初始化系统 */ InitSysCtrl(); /*关中断 */ DINT; IER = 0x0000; IFR = 0x0000; /*初始化 PIE 中断 */ InitPieCtrl(); /*初始化 PIE 中断矢量表 */ InitPieVectTable(); //初始化 cputimer InitCpuTimers(); /*设置中断服务程序入口地址 */ EALLOW; // This is needed to write to EALLOW protected registers PieVectTable.TINT2 = &ISRTimer2; PieVectTable.ADCINT = &ad; EDIS; // This is needed to disable write to EALLOW protected registers /*开中断 */ IER |= M_INT1;//ADC中断 EINT; // Enable Global interrupt INTM ERTM; // Enable Global realtime interrupt DBGM /*设置 CPU*/ DINT; ConfigCpuTimer(&CpuTimer2, 150, 22); StartCpuTimer2(); /*开中断 */ IER |= M_INT14; EINT; InitAdc(); for(;;){ if (adconvover==1){ /*fir滤波处理 */ for(i=0;i<> Ad_data_signed[i]=(short)(Ad_data[i]-0x5300); fir_filter(Ad_data_signed,hfir,filter_result,ORDER_FIR,DataLong,ROUND_FIR); adconvover=0; }}} interrupt void ad(void) {IFR=0x0000; PieCtrl.PIEACK.all=0xffff; if(adconvover==0){ Ad_data[convcount] = AdcRegs.RESULT0; convcount++;} if (convcount==DataLong){ convcount=0; adconvover=1;//接满标志 } } interrupt void ISRTimer2(void) {AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1; AdcRegs.ADCTRL2.bit.SOC_SEQ1=1; } 4.3 FIR 滤波器的设计结果 4.3.1 设置参数 (1)fir_filter(Ad_data_signed,hfir,filter_result,ORDER_FIR,DataLong,ROUND_FIR)和 adconvover=0处设置断点; (2)在 Graph Property Dialog中设置 Start Address和 Display Type如图 A 、图 B 、 图 C 、图 D 。其中 A , B 图分别为滤波前的波形和频谱, C,D 图分别为滤波后的波形 和频谱图: 图 A 图 B 图 C 图 D 4.3.2 输入信号源的波形 (频率为 1000Hz ,振幅为 800mV ) : 标准三角波的波形 标准三角波的频谱 标准方波的波形 标准方波的频谱 噪声三角波 噪声三角波的频谱 4.3.3 输出信号的波形 标准三角波滤波后波形 标准三角波滤波后的频谱 滤波后的方波波形 滤波后的标准方波频谱 滤波后噪声三角波的波形 滤波后噪声三角波的频谱 5 结束语 数字滤波器是语音、图象处理、模式识别以及谱分析中的基本运算的处理运算。 DSP 由于其本身具有并行的硬件乘法器、流水结构以及快速的片内存储器等资源 , 其 技术已广泛地应用于噪声及振动的各个领域。 采用 MATLAB 语言可方便、 快捷地设 计具有严格线性相位的 FIR 系统 , 且参数的修改也十分方便。用 DSP 芯片实现低通 FIR 数字滤波 , 除具有准确度高、 不受环境影响等优点外 , 由于 DSP 芯片具有可编程特 性 , 程序的可移植性好 , 灵活性强。 实际应用时只需按要求修改滤波器参数 , 并对程序作 较少的改动 , 即可实现不同截止频率的低通 FIR 滤波器 , 实用性较强 . 在设计 FIR 数字 滤波器时,采用 MATLAB 来进行辅助设计和仿真,达到了预期的效果。 通过本次的课程设计, 我对 DSP 和数字信号处理有了更深刻的认识, 对 MATLAB 也有了更深的理解。 虽然在本次的设计中遇到了一些挫折, 但是在老师和同学的帮助 下还是顺利的完成了。 这次设计让我将学到的理论知识与实践相结合, 也认识到了学 知识光学理论知识是不够的, 只有能将理论与实践相结合才是真的知识。 我自己也认 识到了,当遇到问题时不能烦躁,不能抱怨,要静下心来解决问题,翻阅书籍,课内 的和课外的,必要时可以借助 internet ,那里有许多有价值的东西,可以借鉴。 本次课程设计能够顺利的完成, 我要特别感谢何海浪老师的精心指导, 让我能够 把理论与实践结合在一起,还要感谢同学们对我的帮助。谢谢! 参考文献: [1]乔瑞萍 .TMS320C54X DSP原理及应用 . 西安电子科技大学出版社 .2004. [2]程佩青 . 数字信号处理教程 [M ].北京 :清华大学出版社 ,2001. [3]陈怀琛 .MA TLAB 及其在理工课程中的应用指南 . 西安电子科技大学出版社 ,2007. [4]赵 力 . 语音信号处理 . 机械工业出版社 ,2004. [5]张雄伟 . DSP芯片的原理与开发应用(第三版) [M].北京:电子工业出版社, 2003年 转载请注明出处范文大全网 » fir带通滤波器设计范文五:滤波器fir的课程设计