数字滤波器的MATLAB设计与实现.
使用MATLAB进行数字滤波器设计的步骤与方法

使用MATLAB进行数字滤波器设计的步骤与方法数字滤波器是用于信号处理的重要工具,它可以对信号进行去噪、频率调整等操作。
而MATLAB作为一种强大的数学计算软件,提供了丰富的数字信号处理工具箱,可以方便地进行数字滤波器的设计与仿真。
本文将介绍使用MATLAB进行数字滤波器设计的步骤与方法。
1. 了解数字滤波器的基本原理在进行数字滤波器设计之前,首先需要了解数字滤波器的基本原理。
数字滤波器根据其频率响应特性可以分为低通、高通、带通和带阻滤波器等。
此外,数字滤波器的设计还需要考虑滤波器的阶数、截止频率以及滤波器类型等因素。
在设计中,我们可以选择滤波器的类型和相应的参考模型,然后利用MATLAB工具箱提供的函数进行设计。
2. 导入MATLAB中的数字信号处理工具箱使用MATLAB进行数字滤波器设计需要先导入数字信号处理工具箱。
通过在MATLAB命令窗口输入`>> toolbox`即可打开工具箱窗口,并可以选择数字信号处理工具箱进行加载。
加载完成后,就可以调用其中的函数进行数字滤波器设计。
3. 设计数字滤波器在MATLAB中,常用的数字滤波器设计函数有`fir1`、`fir2`、`iirnotch`等。
这些函数可以根据系统特性需求设计相应的数字滤波器。
以FIR滤波器为例,可以使用`fir1`函数进行设计。
该函数需要输入滤波器的阶数和截止频率等参数,输出设计好的滤波器系数。
4. 评估滤波器性能设计好数字滤波器后,需要进行性能评估。
可以使用MATLAB提供的`fvtool`函数绘制滤波器的幅频响应、相频响应和群延迟等。
通过观察滤波器在频域的性能表现,可以判断设计的滤波器是否满足要求。
5. 对滤波器进行仿真在对滤波器性能进行评估之后,还可以使用MATLAB进行滤波器的仿真。
通过将需要滤波的信号输入设计好的滤波器中,观察输出信号的变化,可以验证滤波器的去噪效果和频率调整能力。
MATLAB提供了函数`filter`用于对信号进行滤波处理。
用MATLAB设计FIR数字滤波器

实验八 用MATLAB 设计FIR 数字滤波器(二)一、实验目旳:1、加深对窗函数法设计FIR 数字滤波器旳基本原理旳理解。
2、学习用MATLAB 语言旳窗函数法编写设计FIR 数字滤波器旳程序。
3、理解MATLAB 语言有关窗函数法设计FIR 数字滤波器旳常用函数用法。
二、实验原理:1、用窗函数法设计FIR 数字滤波器 FIR 数字滤波器旳系统函数为N-1-n n=0H(z)=h(n)z ∑这个公式也可以当作是离散LSI 系统旳系统函数M-m -1-2-mmm=0012m N -1-2-k-k12k k k=1bz b +b z +b z ++b z Y(z)b(z)H(z)====X(z)a(z)1+a z +a z ++a z1+a z ∑∑ 分母a 0为1,其他a k 全都为0时旳一种特例。
由于极点所有集中在零点,稳定和线性相位特性是FIR 滤波器旳突出长处,因此在实际中广泛使用。
FIR 滤波器旳设计任务是选择有限长度旳h(n),使传播函数H(e j ω)满足技术规定。
重要设计措施有窗函数法、频率采样法和切比雪夫等波纹逼近法等。
本实验重要简介窗函数法。
用窗函数法设计FIR 数字滤波器旳基本环节如下:(1)根据过渡带和阻带衰减指标选择窗函数旳类型,估算滤波器旳阶数N 。
(2)由数字滤波器旳抱负频率响应H(e j ω)求出其单位脉冲响应h d (n)。
可用自定义函数ideal_lp实现抱负数字低通滤波器单位脉冲响应旳求解。
程序清单如下:function hd=ideal_lp(wc,N) %点0到N-1之间旳抱负脉冲响应%wc=截止频率(弧度)%N=抱负滤波器旳长度tao=(N-1)/2;n=[0:(N-1)];m=n-tao+eps; %加一种小数以避免0作除数hd=sin(wc*m)./(pi*m);其他选频滤波器可以由低通频响特性合成。
如一种通带在ωc1~ωc2之间旳带通滤波器在给定N值旳条件下,可以用下列程序实现:Hd=ideal_lp(wc2,N)-ideal_lp(wc1,N)(3)计算数字滤波器旳单位冲激响应h(n)=w(n)h d(n)。
基于matlab的数字滤波器设计

基于matlab的数字滤波器设计一.概述本文重点介绍MATLAB 中用于数字滤波器设计的函数组。
MATLAB具备设计高性能滤波器的众多工具(toolbox),包括数字滤波器设计工具箱(Digital Filter Design T oolbox)、滤波系统仿真工具箱(Filter Design and Analysis Toolbox )以及信号处理工具箱(Signal Processing Toolbox),可以设计数字滤波器的结构和参数,并实现Advanced Digital Filter Design。
二.数字滤波器介绍数字滤波器,也称计算滤波器,是指利用现代计算机中的数字回授技术来进行信号处理的方法,是对计算机处理信号的一种技术。
数字滤波器是模拟滤波器组成的数字信号处理系统,是将模拟的通全在一个硬件上实现的数字信号处理系统,它的功能比模拟滤波器更加强大。
目前它们已经应用于通信、声音、镜头、图像处理、仪器仪表、数据采集等领域。
三.MATLAB 中的滤波器设计(1)首先,MATLAB中提供了丰富的函数来实现滤波器设计工作。
其中最常用的函数有:a. firpm:有限冲激响应滤波器设计,支持线性和非线性过滤器设计。
b. butter:Butterworth低通和高通滤波器设计。
c. fir1:有限冲激响应低通和高通滤波器设计。
d. cheby1:Chebyshev第一类低通和高通滤波器设计。
(2) MATLAB还可以实现进阶的数字滤波器设计,用户可以用以下函数实现自动设计是否优化的滤波器:a. fda:设计优化低通滤波器b. fda2:设计优化定带滤波器c. fda3:设计优化双带和多带滤波器d. gfd:设计优化频谱均衡滤波器四.总结数字滤波器是一种应用广泛的信号处理技术,对于一些信号处理应用有着至关重要的作用。
MATLAB 可以简便的实现滤波器设计,并可以同时考虑多个优化目标,这些特性使其成为进行数字滤波器设计的理想工具。
基于matlab的fir数字滤波器的设计

一、引言数字滤波器是数字信号处理中至关重要的组成部分,它能够对数字信号进行滤波处理,去除噪音和干扰,提取信号中的有效信息。
其中,fir数字滤波器作为一种常见的数字滤波器类型,具有稳定性强、相位响应线性等特点,在数字信号处理领域得到了广泛的应用。
本文将基于matlab软件,探讨fir数字滤波器的设计原理、方法和实现过程,以期能够全面、系统地了解fir数字滤波器的设计流程。
二、fir数字滤波器的基本原理fir数字滤波器是一种有限长冲激响应(finite impulse response, FIR)的数字滤波器,其基本原理是利用线性相位特性的滤波器来实现对数字信号的筛选和处理。
fir数字滤波器的表达式为:$$y(n) = \sum_{k=0}^{M}h(k)x(n-k)$$其中,y(n)为输出信号,x(n)为输入信号,h(k)为滤波器的系数,M为滤波器的长度。
fir数字滤波器的频率响应特性由其系数h(k)决定,通过设计合适的系数,可以实现对不同频率成分的滤波效果。
三、fir数字滤波器的设计方法fir数字滤波器的设计方法主要包括窗函数法、频率抽样法、最小最大法等。
在matlab中,可以通过信号处理工具箱提供的fir1函数和firls函数等来实现fir数字滤波器的设计。
下面将分别介绍这两种设计方法的基本原理及实现步骤。
1. 窗函数法窗函数法是fir数字滤波器设计中最为常见的方法之一,其基本原理是通过对理想滤波器的频率响应进行窗函数加权来满足设计要求。
在matlab中,可以使用fir1函数实现fir数字滤波器的设计,其调用格式为:h = fir1(N, Wn, type)其中,N为滤波器的阶数,Wn为滤波器的截止频率,type为窗函数的类型。
通过调用fir1函数,可以灵活地设计出满足特定要求的fir数字滤波器。
2. 频率抽样法频率抽样法是fir数字滤波器设计中的另一种重要方法,其基本原理是在频域上对理想滤波器的频率响应进行抽样,并拟合出一个最优的滤波器。
基于MATLAB的IIR数字滤波器设计与仿真

基于MATLAB的IIR数字滤波器设计与仿真一、概述在现代数字信号处理领域中,数字滤波器扮演着至关重要的角色。
其通过对输入信号的特定频率成分进行增强或抑制,实现对信号的有效处理。
无限脉冲响应(IIR)数字滤波器因其设计灵活、实现简单且性能优良等特点,得到了广泛的应用。
本文旨在基于MATLAB平台,对IIR数字滤波器的设计与仿真进行深入研究,以期为相关领域的研究与应用提供有益的参考。
IIR数字滤波器具有无限长的单位脉冲响应,这使得其在处理信号时能够展现出优秀的性能。
与有限脉冲响应(FIR)滤波器相比,IIR滤波器在实现相同性能时所需的阶数更低,从而减少了计算复杂度和存储空间。
在需要对信号进行高效处理的场合,IIR滤波器具有显著的优势。
MATLAB作为一款功能强大的数学软件,提供了丰富的函数和工具箱,使得数字滤波器的设计与仿真变得简单而高效。
通过MATLAB,我们可以方便地实现IIR滤波器的设计、分析和优化,从而满足不同应用场景的需求。
本文将首先介绍IIR数字滤波器的基本原理和特性,然后详细阐述基于MATLAB的IIR数字滤波器的设计方法和步骤。
接着,我们将通过仿真实验验证所设计滤波器的性能,并对其结果进行分析和讨论。
本文将总结IIR数字滤波器设计与仿真的关键技术和注意事项,为相关领域的研究人员和工程师提供有益的参考和启示。
1. IIR数字滤波器概述IIR(Infinite Impulse Response)数字滤波器是数字信号处理中常用的一类滤波器,它基于差分方程实现信号的滤波处理。
与FIR (Finite Impulse Response)滤波器不同,IIR滤波器具有无限长的单位脉冲响应,这意味着其输出不仅与当前和过去的输入信号有关,还与过去的输出信号有关。
这种特性使得IIR滤波器在实现相同的滤波效果时,通常具有更低的计算复杂度,从而提高了处理效率。
IIR滤波器的设计灵活多样,可以根据不同的需求实现低通、高通、带通和带阻等多种滤波功能。
数字滤波器的设计matlab

数字滤波器的设计matlab
数字滤波器的设计可以使用MATLAB中的fdatool或者直接使用代码实现。
具体步骤如下:
1. 确定滤波器的类型(低通、高通、带通、带阻)以及参数(截止频率、通带、阻带宽度等)。
2. 使用MATLAB中的fdatool进行滤波器的设计,可以手动调节参数并进行实时分析和优化,或者选择预设的滤波器模板进行修改。
3. 点击Export将滤波器参数导出至matlab代码中。
4. 使用生成的代码进行滤波器的实现,例如:
```
fs = 1000; %采样率
fc = 100; %截止频率
[b, a] = butter(6, fc/(fs/2)); %设计6阶巴特沃斯低通滤波器input_signal = sin(2*pi*50*(0:1/fs:1)); %输入信号
output_signal = filter(b, a, input_signal); %滤波结果
```
其中,b和a分别为滤波器的分子和分母系数,可以根据不同的设计方法得到,input_signal为需要进行滤波的信号,output_signal为滤波后的结果。
FIR滤波器的MATLAB设计与实现

FIR滤波器的MATLAB设计与实现FIR滤波器(Finite Impulse Response Filter)是一种数字滤波器,其特点是其响应仅由有限长度的序列决定。
在MATLAB中,我们可以使用信号处理工具箱中的函数来设计和实现FIR滤波器。
首先,需要明确FIR滤波器的设计目标,包括滤波器类型(低通、高通、带通、带阻)、通带和阻带的频率范围、通带和阻带的增益等。
这些目标将决定滤波器的系数及其顺序。
在MATLAB中,我们可以使用`fir1`函数来设计FIR滤波器。
该函数的使用方式如下:```matlabh = fir1(N, Wn, type);```其中,`N`是滤波器长度,`Wn`是通带边缘频率(0到0.5之间),`type`是滤波器的类型('low'低通、'high'高通、'bandpass'带通、'stop'带阻)。
该函数会返回一个长度为`N+1`的滤波器系数向量`h`。
例如,如果要设计一个采样频率为10kHz的低通滤波器,通带截止频率为2kHz,阻带频率为3kHz,可以使用以下代码:```matlabfc = 2000; % 通带截止频率h = fir1(50, fc/(fs/2), 'low');```上述代码中,`50`表示滤波器的长度。
注意,滤波器的长度越大,滤波器的频率响应越陡峭,但计算成本也更高。
在设计完成后,可以使用`freqz`函数来分析滤波器的频率响应。
例如,可以绘制滤波器的幅度响应和相位响应曲线:```matlabfreqz(h);```除了使用`fir1`函数外,MATLAB还提供了其他函数来设计FIR滤波器,如`fir2`、`firpm`、`firls`等,具体使用方式可以参考MATLAB的文档。
在实际应用中,我们可以将FIR滤波器应用于音频处理、图像处理、信号降噪等方面。
例如,可以使用FIR滤波器对音频信号进行去噪处理,或者对图像进行锐化处理等。
如何利用Matlab技术进行数字滤波

如何利用Matlab技术进行数字滤波数字滤波是一种广泛应用于信号处理和图像处理中的技术。
而Matlab作为一种强大的数学软件工具,在数字滤波方面也有很高的应用价值。
本文将介绍如何利用Matlab技术进行数字滤波,从概念到具体实现,帮助读者更好地掌握这一技术。
一、数字滤波的基本概念数字滤波是一种对数字信号进行处理的技术,通过改变信号的频率特性或时域特性,达到去除或强调信号中某些成分的目的。
数字滤波可以分为无限长脉冲响应(IIR)滤波器和有限长脉冲响应(FIR)滤波器两种。
二、Matlab中数字滤波的基本函数在Matlab中,数字滤波可以使用一些基本函数实现。
其中最常用的是fir1和filter函数。
fir1函数用于设计FIR滤波器的滤波器系数,而filter函数用于对信号进行滤波处理。
三、设计FIR滤波器FIR滤波器是一种非递归滤波器,其系统函数是有限长的。
在Matlab中,可以使用fir1函数对FIR滤波器的系数进行设计。
fir1函数的输入参数包括滤波器阶数、截止频率以及窗函数类型等。
通过调节这些参数,可以设计出不同的FIR滤波器。
四、对信号进行滤波处理在得到FIR滤波器的系数后,可以使用filter函数对信号进行滤波处理。
filter函数的输入参数包括滤波器系数和待滤波的信号等。
通过调用filter函数,可以对信号进行低通滤波、高通滤波或带通滤波等操作。
五、实例演示为了更好地理解如何利用Matlab进行数字滤波,下面将通过一个实例对其进行演示。
假设有一个包含高频噪声的信号,我们希望去除这些噪声,得到清晰的信号。
首先,我们使用fir1函数设计一个低通滤波器。
假设我们希望截止频率为1kHz,滤波器阶数为100。
通过调用fir1函数,得到该滤波器的系数。
接下来,我们生成一个包含高频噪声的信号,并加上一些正弦波成分。
我们将这个信号输入到filter函数中,利用之前得到的滤波器系数进行滤波处理。
最终,我们可以得到去除了噪声的清晰信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字滤波器的MATLAB设计与实现数字滤波器的MATLAB设计与实现类别:电子综合引言随着信息时代和数字世界的到来,数字信号处理已成为今一门极其重要的学科和技术领域。
数字信号处理在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。
在数字信号处理应用中,数字滤波器十分重要并已获得广泛应用。
1 数字滤波器的设计1.1 数字滤波器设计的基本步骤数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
IIR滤波器的特征是,具有无限持续时间冲激响应。
种滤波器一般需要用递归模型来实现,因而有时也称之为递归滤波器。
FIR滤波器的冲激响应只能延续一定时间,在工程实际中可以采用递归的方式实现,也可以采用非递归的方式实现。
数字滤波器的设计方法有多种,如双线性变换法、窗函数设计法、插值逼近法和Chebyshev逼近法等等。
随着MATLAB软件尤其是MATLAB的信号处理工作箱的不断完善,不仅数字滤波器的计算机辅助设计有了可能,而且还可以使设计达到最优化。
数字滤波器设计的基本步骤如下:(1)确定指标在设计一个滤波器之前,必须首先根据工程实际的需要确定滤波器的技术指标。
在很多实际应用中,数字滤波器常常被用来实现选频操作。
因此,指标的形式一般在频域中给出幅度和相位响应。
幅度指标主要以两种方式给出。
第一种是绝对指标。
它提供对幅度响应函数的要求,一般应用于FIR滤波器的设计。
第二种指标是相对指标。
它以分贝值的形式给出要求。
在工程实际中,这种指标最受欢迎。
对于相位响应指标形式,通常希望系统在通频带中人有线性相位。
运用线性相位响应指标进行滤波器设计具有如下优点:①只包含实数算法,不涉及复数运算;②不存在延迟失真,只有固定数量的延迟;③长度为N 的滤波器(阶数为N-1),计算量为N/2数量级。
因此,本文中滤波器的设计就以线性相位FIR滤波器的设计为例。
(2)逼近确定了技术指标后,就可以建立一个目标的数字滤波器模型。
通常采用理想的数字滤波器模型。
之后,利用数字滤波器的设计方法,设计出一个实际滤波器模型来逼近给定的目标。
(3)性能分析和计算机仿真上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器。
根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求;或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。
1.2 滤波器的MATLAB设计(1)MATLAB MATLAB是一套用于科学计算的可视化高性能语言与软件环境。
它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个界面友好的用户环境。
它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,是一个非常优秀的算法研究与辅助设计的工具。
在设计数字滤波器时,通常采用MATLAB来进行辅助设计和仿真。
(2)FIR滤波器的MATLAB设计下面以设计线性相位FIR滤波器为例介绍具体的设计方法。
线性相位FIR滤波器通常采用窗函数法设计。
窗函数法设计FIR滤波器的基本思想是:根据给定的滤波器技术指标,选择滤波器长度N 和窗函数ω(n),使其具有最窄宽度的主瓣和最小的旁瓣。
其核心是从给定的频率特性,通过加窗确定有限长单位脉冲响应序列h(n)。
工程中常用的窗函数共有6种,即矩形窗、巴特利特(Bartlett)窗、汉宁(Hanning)窗、汉明(Hamming)窗、布莱克曼(Blackman)窗和凯塞(Kaiser)窗。
假设实际工程需要设计一个线性相位带通FIR滤波器指标如下:fn=[1000,1375,3625,4000]; a=[0,1,0]; dev=[0.0005,0.05,0.0005]; 阻带最小衰减60dB,再设采样频率fs=10kHz,则根据阻带最小衰减来选择凯塞(Kaiser)窗,利用MATLAB的求阶函数和FIR滤波器的设计函数,可以快速地设计出所需的数字滤波器。
这两个设计函数如下:[N,Wn,beta,ftype]=kaiserord(fn,a,dev,fs);b=fir1(n,Wn,ftype,Kaiser(n+1,beta);最后,利用的滤波器分析函数freqz 分析所设计出的滤波器的幅频特性和相频特性,并用图形显示函数plot将它们显示出来,如图1所示。
由图1可见,设计结果满足指标要求。
align=center> 2 数字滤波器的实现方法数字滤波器的实现方法一般有以下几种。
①采用加法器、乘法器、延时器设计专用的滤波电路。
②在通用计算机系统中加上专用的加速处理机设计实现。
③用通用的可编程DSP芯片实现。
④用专用的DSP芯片实现。
在一些特殊的场合,要求的信号处理速度极高,用通用DSP芯片很难实现。
这种芯片将相应的滤波算法在芯片内部用硬件实现,无需进行编程。
⑤采用FPGA/CPLD设计实现。
在上述几种方法中,第②种方法的缺点是速度较慢,一般可用于DSP算法的模拟。
第①、④种方法专用性强,应用受到很大的限制。
第③、⑤种方法都可以通过编程来实现各种数字滤波,但是,第③种因有专用的指令来实现滤波运算编程实现容易,而第⑤种方法编程实现较为困难。
3 数字滤波器的DSP实现 DSP是一种实时、快速、特别适合于实现各种数字信号处理运算的微处理器。
由于它由具有丰富的硬件资源、改进的哈佛结构、高速数据处理能力和强大的指令系统,而在通信、航空、航天、雷达、工业控制、网络及家用电器等各个领域得到广泛应用。
DSP 分为定点和浮点两种,下面以定点DSP芯片为例,讨论FIR滤波器实现的几个关键问题。
所讨论的这些问题,在DSP系统设计中有实际的参考和应用价值。
3.1 定点数的定标在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。
一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。
显然,字长越长,所能表示的数的范围越大,精度也越高。
在滤波器的实现过程中,DSP所要处理的数可能是整数,也可能是小数或混合小数;然而,DSP在执行算术运算指令时,并不知道当前所处理的数据是整数还是小数,更不能指出小数点的位置在哪里。
因此,在编程时必须指定一个数的小数点处于哪一位,这就是定标。
通过定标,可以在16位数的不同位置上确定小数点,从而表示出一个范围大小不同且精度也不同的小数。
例如:在Q15中,1080H=0.12890625;在Q0时,1080H=4224。
在使用定点DSP 时,如何选择合适的Q值是一个关键性问题。
就DSP运算的处理过程来说,实际参与运算的都是变量,有的是未知的,有的则在运算过程中不断改变数值,但它们在一实际工程环境中作为一个物理参量而言都有一定的动态范围。
只要个动态范围确定了,Q值也就确定了。
因此,在程序设计前,首先要通过细致和严谨的分析,找出参与运算的所有变量的变化范围,充分估计运算中可能出现的各种情况,然后确定采用何种定标标准才能保证运算结果正确可靠。
这里,所讨论的理论分析法和统计分析法确定变量绝对值最大值|max|,然后根据|max|再确定Q值。
但是,DSP操作过程中的意外情况是无法避免的,即使采用统计分析法也不可能涉及到所有情况。
因此,在定点运算过程中应该采取一些判断和保护措施(特别是在定点加法中)。
另外,在数字信号处理中的大量运算是乘法和累加,应尽量采用纯整数或纯小数运算,即全部变量都用Q0或Q15格式表示。
这样做的好处是操作简单、编程方便。
只有当纯整数或纯小数运算不能满足变量的动态范围和精度要求时,才采用混合小数表示法进行定点运算。
3.2 误差问题因为在用定点DSP实现时,所有的数据都是定长的,运算也都是定点运算,因而会产生有限字长效应。
所产生的误差主要包括:数模转换引起的量化误差、系数量化引起的误差以及运算过程中的舍入误差。
在用定点DSP时,产生误差是不能避免的,但是可以通过一些方法减小误差。
如,可以用两个存储单元来表示一个数,运算时使用双字运算;可以根据需要要将滤波器系数都用双字表示,也可以只将一半的系数用双字表示,视需要而定。
另外,FIR数字滤波器和IIR数字滤波器所引入的量化误差是不一样的。
FIR数字滤波器主要采用非递归结构,因而在有限精度的运算中都是稳定的;而IIR数字滤波器是递归结构,极点必须在z平面单位圆内才能稳定,这种结构运算中的四舍五入处理有时会引起寄生振荡。
除了有限字长效应以外,不同结构引入的误差也有所不同。
在实际设计中,要注意实现中的误差问题。
在选择不同的结构时,应考虑它们所引入的误差,并用高级语言进行定点仿真,以比较不同结构下误差的大小,从而作出合理选择。
3.3 循环寻址循环寻址(circular addressing)是DSP中经常用到的一种寻址方式。
该寻址方法可以对一块特定存储区实现循环的操作。
可以把循环寻址理解为实现一个滑动窗,新数据引入后将覆盖老的数据,便得该窗中包含了需处理的最新数据。
在数字信号处理中的FIR、卷积等运算中,循环寻址具有极其重要的意义。
在TI的DSP中,循环寻址通过如下方法实现。
①设定BK(寄存器块大小)值,以确定循环寻址缓冲区的大小,也可将它看作是循环的周期。
②设定缓冲区的底部地址。
必须注意:其低N位为零,其中N为满足式(1)的最小N值。
2 N>BK (1)③用辅助寄存器间接寻址循环缓冲区。
3.4 实现举例根据上述设计出来的FIR滤波器,考虑工程实际的需要(精度的要求)和采用定点DSP芯片的方便实现,选择Q15定标。
为此,必须对输入数据和滤波器的系数进行归一化处理。
输入数据的归一化处理可通过设置A/D转换的参考电平来实现。
滤波器的系数归一化只要求取系数中的最大值,再用这个最大值去系数便可。
由于一个N(设N 为偶数)阶的FIR滤波器具有系数对称特性,其输出方程可以写为:y(n)=ao[x(n)+x(n-N+1)]+a1[x(n-1)+x(n-N+2)]+…+aN/2-1[X(n-N/2+1)+x(n-N/2)] (2) 根据式(2)可建立如下实现算法:①在数据存储中开辟两个循环缓冲区,New循环缓冲区存放新数据,O1d循环缓冲区中存放老数据。
循环缓冲区的长度为N/2。
②设置循环缓冲区指针,AR2指向New缓冲区中最新的数据,AR3指向O1d缓冲区中最老的数据。
③在程序存储器中设置系数表。
④(AR2)+(AR3)→AH(累加器A的高位);(AR2)-1→AR2;(AR3)-1→AR3。
⑤将累加器B清零,重复执行下列操作N/2次:(AH)*系数ai+(B)→B,系数指针(PAR)加1,(AR2)+(AR3)→AH,AR2和AR3减1。
⑥保存和输出结果(结果在BH中)。
⑦修正数据指针,让AR2和AR3分别指向New缓冲区最新数据和O1d缓冲区中最老的数据。