第五章 数字信号处理- 微弱信号处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章微弱信号处理
5.1 微弱信号检测技术中气体浓度检测仪中的应用
微弱信号不仅意味着信号的幅度小,而且主要指被噪声淹没中的信号。
为了检测被背景噪音淹没的信号,就需要分析噪声产生的原因和规律,研究被测信号的特点、相关性以及噪声的统计特性,以寻找出从背景噪声中检测有用信号的方法。
因此,微弱信号检测技术的首要任务是提高信噪比。
它不同于一般的检测技术,它注重的不是传感器的物理模型和传感原理、相应的信号转换电路和仪表实现方法,而是如何抑制噪声和提高信噪比。
由于被测量的信号微弱,传感器的固有噪声、放大电路及测量仪器的固有噪声以及外界的干扰噪声往往比有用信号的幅度大得多,放大被测信号的过程同时也放大了噪声,而且必然还会附加一些额外的噪声,因此只靠放大是不能把微弱信号检测出来的。
只有在有效地抑制噪声的条件下增大微弱信号的幅度,才能提取出有用的信号。
为了表征噪声对信号的淹没程度,引入信噪比SNR来表示,它指的是信号的有效值S与噪音的有效值N之比。
而评价一种微弱信号检测方法的优劣,经常采用两种指标:
一种是信噪改善比SNIR,它等于系统输出端的信噪比
SNR和系统输入段
o
SNR之比。
SNIR越大,表明系统抑制噪声的能力越强。
i
另一个指标是检测分辨率,指的是检测仪器指示值可以响应与分辨的最小输入值的变化值。
检测分辨率不同于检测灵敏度,后者表示的是检测系统标定曲线的斜率,定义为输出变化量y
∆之比。
一般情况下,
∆的输入变化量x
∆与引起y
灵敏度越高,分辨率越好。
但提高系统的放大倍数虽可提高灵敏度,但却不一定能提高分辨率,因为分辨率要受噪声和误差额制约。
5.1.1 本检测系统的噪声源
广义的噪声是扣除被测信号真实值以后的各种测量值,可以分为两类:一是干扰;另一被称为电子噪声(狭义)。
干扰是指被非被测信号或非测量系统所引起的噪声。
从理论上讲,干扰是属于理想上可排除的噪声。
不少干扰源发出的干扰是有规律的,有些具有周期性,有些只是瞬时值。
电子干扰的引入途径,主要为感应和电源耦合。
这些可通过采用适当的屏蔽,滤波或电路元件的配置等措施来减小或消除。
电子噪声属于电路中的随机扰动,它可能来自电路中元器件中的电子热运动,或者是半导体器件中载流子的不规则运动。
它的特点是不可以彻底消除的,只能设法减少。
在红外系统和其它元件中主要的基本噪声有:热噪声、散粒噪声、辐射噪声、f /1噪声、过剩噪声、光子噪声。
这些噪声除了对红外气室传感器部分有影响外,他们经过传感器信号采集进入探测仪的电子线路系统。
我们所采用DSP 的中央处理系统同样会受电子线路的噪声影响。
在红外波段,探测器和电子线路的噪声主要由温度引起,如温度噪声和热噪声,其次是白噪声和低频噪声,它们和信号功率无关。
各种噪声的产生机理如下:
一、热噪声。
也常称为约翰逊(J.B.Johnson )噪声。
任何电阻或导体,即使没有连接到任何信号源或电源,也没有任何电流流过该电阻,其两端也会呈现噪声电压起伏,这就是电阻的热噪声。
电阻的热噪声起源于电阻中的电子的随机热运动,导致电阻两端电荷的瞬时堆积。
奈奎斯特(Nyquist )用热力学推理方法,描述了热噪声的统计特性: 热噪声电压有效值:f kTR V N ∆=4 (5-1) 热噪声电流有效值:R f kT I N /4∆= (5-2)
热噪声功率谱密度:kT I V P N N N 4=⨯= (5-3)
其中,k 是波尔兹曼常数,f ∆是系统的频带宽度,T 是绝对温度,R 是负载电阻。
频带宽度越宽,噪声越大,因此,可认为热噪声有各种频率,其低频、高频的热噪声幅度相同的,所以可认为热噪声是白噪声。
要减小热噪声,首要的是降温。
也可用减小系统允许通过的带宽方法。
二、散粒噪声。
也被称为散弹噪声(shot noise )。
在电子管、双极晶体管、半导体二极管、光电传感器等器件中流动的电流不是平滑和连续的,而是各携带着一个电子电荷的载流子的流动产生的电流脉冲之和。
其原因在于这些器件中有势垒存在。
由于载流子各自独立而随机地通过势垒导致注入电流在其平均值附近随机起伏,从而引起散粒噪声。
各种散粒噪声都是白噪声,遵守肖特基(W.Schottky )公式:
f eI I N ∆=平2 (5-4)
2R 2V f eI N ∆=平 (5-5)
hv P P I b /)(e S +=η平 (5-6)
其中,平I 为平均转换电流,e 为电子电量,η为量子效率,S P 为信号光功率,b P 为背景光功率。
对于光电转换传感器器件,减少散粒噪声的有效方法,是减小背景光和接收器带宽。
三、低频噪声或f /1噪声。
也叫闪烁(flicker )噪声,或接触噪声。
f /1噪声是由于两种导体的接触点电导的随机涨落引起的,凡是有导体接触不理想的器件都存在f /1噪声。
因为其功率谱密度正比于f /1,频率越低f /1噪声越严重。
四、过剩噪声。
本系统说的过剩噪声是指电流流过合成碳质电阻这种不连续介质时所产生的噪声。
“过剩”是指电阻热噪声以外多于产生的意思。
五、辐射噪声。
它是由于入射辐射通量的起伏而引起的,这类噪声是接收期间的极限噪声,故也称为背景限噪声。
这种噪声与频率无关,因此其功率谱也是均匀的。
六、白噪声。
它是指功率是均匀变化的,且变化与频率无关。
热噪声、散粒噪声和辐射噪声都属于白噪声。
系统主要的噪声源是:
◆激光源
TDLAS的测量灵敏度受到激光器的功率波动限制,这种功率上的波动被称为激光的额外噪声,它可归根于激光二极管本身固有的噪声,也可以由外部条件引起,如注入电流噪声、温度不稳定、机械振动以及光反馈等,可以采用高稳定性能的恒流源来抑制注入电流的噪声,用液态制冷剂保持温度恒定,还可以通过锁定激光在气体的吸收特征上来克服机械振动的影响等。
对于光反馈噪声,它是由外部光学系统的反射或衍射进入激光器的谐振腔引起的,导致了激光谱线特征的下降,通常利用恰当的准直系统或者用光学隔离器等方法能够起到一定的效果,但这样也将会导致激光器能量的部分损失。
激光器额外噪声与信号的检测带宽有光,可以通过相应的窄带检测技术对其进行抑制。
◆剩余幅度调制(RAM)
利用高频调制技术在理论上能够实现散粒噪声限制下的灵敏度,但由于剩余幅度调制引起的偏移噪声存在,使灵敏度受到了很大的影响。
由RAM引起的这种偏移是我们不想要的,主要是因为两个原因,首先,在利用谐波光谱射入痕量浓度气体气室之前,这个偏移必需被减去;第二个原因是,RAM 使得激光器的噪声能通过锁相探测器的输出,而在没有偏移时,只有在检测频率上的激光噪声才在锁相放大器的输出中出现。
解决第一个问题相对简单一些,可以先通过在气室注入零浓度气体而测量得到背景谱,这样背景谱中也包含了偏移值,将测量得到的光谱信号减去背景谱,便可以消除偏移对浓度的影响。
本系统采用了双光路自平衡激光接收器系统,通过信号光路和参考光路的自动平衡处理,去除了背景谱,大大抑制了噪声。
◆光电接收器。
在初始探测阶段,存在散粒噪声即光子特性符合泊松分布
的基本噪声,它是指甚至在无光照的情况下,光电二极管产生的电流。
雪崩光电二极管在增益过程中,产生过剩噪声。
探测信号的外部放大器由于负载的存在产生热噪声,这一噪声与放大器的有源元件有关。
图5-1 光电接收器噪声示意图 5.1.2 随机噪声的统计特性
电路中噪声是一种连续型随机变量,最具有代表性的统计特征量为: 数学期望⎰∞
∞-=dn n np n E )(][ (5-7)
方差 ⎰∞∞--=dn n p n E n n D )()((][2 (5-8) 常见的噪声概率分布函数:
正态分布(高斯分布):]2)(exp[21
)(22n n n n n p σπσ-
--= (5-9) 二项式分布:m n m A q p m n m n m P --=)!
(!!)( (5-10) 泊松分布: !/)(m e m P m A λλ-= (当n 很大,p 很小时) (5-11)
常见的白噪声属于高斯分布;而散粒噪声则属于泊松分布。
噪声虽然是一种随机过程,即各时刻取值是随机的,但两个不同时刻的噪声值仍存在一定的关系。
研究噪声在不同时刻取值之间的相关性,这也是电噪声的一个主要统计特征。
一、噪声的自相关函数。
它是指一个随机过程在不同时刻取值的相关性。
⎰-∞→-=-=T
T T n dt t n t n T t n t n E R )()(21lim )]()([)(τττ (5-12)
电噪声的自相关函数有如下特性:)(τn R 仅与时间差τ有关,与计算时间的
起点无关。
)(τn R 是一个偶函数,随着τ的增加,逐渐衰减,表示在时间上相关性逐渐减少。
特别是对零均值噪声,当∞→τ时,0)(→τn R 。
当τ=0时,)(τn R 有最大值。
二、噪声的互相关函数。
它描述的是两个随机过程的相关性。
⎰-∞→-=-=T
T T xy dt t y t x T t y t x E R )()(21lim )]()([)(τττ (5-13)
电噪声的互相关函数具有下列重要特性:
◆ )(τxy R 仅与时间差τ有关,与计算时间的起点无关。
◆ )(τxy R =)(τ-yx R 。
◆ 当两个随机过程互不相关是,则一定有)(τxy R =)(τyx R =0。
这个特性对于从噪声中检测微弱信号极为有用。
可用来设计互相关器,见图5-2。
这是数字锁定放大器的基本原理。
图5-2数字锁定放大器的基本原理
经互相关器输出的信号即为互相关函数
)()()()()]()([21lim )(τττττsy ny sy T
T T xy R R R dt t y t n t s T R =+=-⋅+=⎰-∞→ (5-14)
可见,只要测量互相关器的输出值,就能检测到混在噪声中的信号。
理论上只要T 足够长,则一定有)(τsy R =0,从而检测到极微弱的信号,但实际上因测量时间T 有限,故输出仍有一定噪声。
5.1.3 在气体浓度检测仪中采用的微弱信号检测方法
提高信号检测灵敏度或降低可检测下限的基本方法有二。
一是从传感器及
放大器入手,通过降低它们的固有噪声水平,或研制新的低噪声传感器。
二是分析测量中的噪声规律和信号规律,通过各种手段从噪声中提取信号。
微弱信号检测,主要是指第二种方法。
一、自适应噪声抵消。
自适应噪声抵消是一种补偿抵消的方法,是基于自适应滤波器原理的一种扩展应用。
所谓补偿抵消,就是在检测有用信号的同时,还专门设计一个传感器检测干扰噪声,之后再从检测信号中减去传感器的输出,以抵消叠加在有用信号上的干扰噪声。
但是由于两个传输通道的差异,以及传感器特性的不一致,一般情况下两个传感器输出的噪声不会完全相同,所以这种方法不能做到完全补偿,只能是部分补偿。
而自适应噪声抵消可以自适应地调节另一路传感器的输出(包括幅度、相位等参数),已使噪声抵消的效果达到最佳。
自适应噪声抵消的原理框架如图示所示。
插入滤波器的目的是要补偿噪声源到两个传感器的传输特性的差异。
自适应噪声抵消的核心部分是自适应滤波器,自适应滤波过程是用自适应算法调整数字滤波器的参数,以是使滤波器输出)
z逼近
(k
传感器1输出信号中叠加的噪声)
(k
(k
e逼近
n,这样就可以使抵消器的输出)
被测信号)
s。
自适应滤波所采用的最有优准则有最小均方误差准则、最小二
(k
乘法准则、最大信噪比准则、统计检测准则等,其中应用最广泛的准则为最小均方误差准则。
具体详见自平衡光电接收器系统。
图5-3自适应噪声抵消系统原理
二、锁相放大。
单频余弦(或正弦)信号,或频带很窄的正、余弦信号,属于频点信号。
由于信号频率固定,我们可以通过限制测量系统带宽的方法,把大量带宽外的噪声排除。
此种技术称为窄带化技术。
如果信号具有相干性,而噪声无相干性,则可利用相干检测技术,把与信号相位不同的噪声部分排除,窄带化技术,是利用相应的滤波器排除噪声,而滤波器性能取决于带宽f∆的大小。
但
带宽f∆实际上不可能做的很窄,因此排除噪声是有限的,不能满足太微弱信号的检测。
而采用锁相放大器,利用相敏检波(PSD),即作变频,又作相干降噪,再用直流放大器做积分、滤波,最后才做信号幅度测量,则可解决这个难题,进一步窄化带宽,提高信噪比。
具体见下文的数字滤波器和数字锁定放大器。
三、数字式平均。
对于淹没在噪声中的正弦信号的幅度和相位,可利用锁定放大器进行检测,但是如果需要恢复淹没在噪声中的快速变化的微弱信号,则需采用取样积分法。
也就是必须把每个信号周期分成若干个时间间隔,间隔的大小取决于恢复信号所要求的精度,然后对这些时间间隔的信号进行取样,并将个周期中出于相同位置(对于信号周期起点具有相同的延时)的取样进行积分或平均。
信号若是脉冲波列,则信号有很宽的频域。
根据噪声是随机的特性,多次测量的平均则可排除噪声的影响。
这种对多次重复的信号进行逐点多次的采测,用数字信号处理器以数字处理的方式实现求平均的方法,称为数字式平均处理。
两者的比较如下表:
表5-1 取样积分和数字式多点平均的特点比较
5.2 硬件在环信号处理仿真平台
越来越多的实时嵌入式测量系统需要进行现场实时仿真,而常用的仿真工具MATLAB由于执行速度慢,不适合作系统的实时信号处理,普通PC机也无法满足实时信号处理所要求的高速数据输入/输出,难以应用于实时嵌入式系统。
我们利用MathWorks公司和TI公司联合开发的Matlab Link for CCS Development Tools(CCSLink)工具,把MATLAB和TI 集成开发环境Code Composer Studio (CCS)及DSP开发板连接起来,搭建了一个硬件在环(Hardware in Loop--HIL)实时仿真系统,解决了需要实时信号处理的嵌入式系统的硬件在环仿真问题。
5.2.1 在TDLAS测量系统中滤波器设计问题
数字锁定放大器(Digital Lock-in Amplifier, DLIA)是为了在强背景噪声中把微弱信号提取出来,另外在信号输入到锁定放大器之前应将信号频谱范围之外的噪音去掉。
由于TDLAS系统是个实时动态测量系统,所有参数需在现场进行调试。
以往的滤波器设计是先按性能指标在MATLAB上编写算法,然后进行离线的系统仿真,再编写滤波程序到实际环境中进行测试,以发现DSP程序设计中的偏差。
该设计方法需要不断地在PC机上离线仿真和实际环境中测试这两者之间反复切换,造成极大的不便,因此需要一种新的工具把MATLAB和DSP开发工具集成起来。
5.2.2连接MATLAB与DSP的硬件在环实时仿真系统
利用CCSLink工具把MATLAB、TI开发环境CCS及DSP目标板双向连接起来,允许开发者利用MATLAB强大的可视化、数据处理和分析函数对来自CCS 的数据进行分析和处理,在MATLAB环境下完成对CCS的操作,如调用DSP 目标程序中的函数,读写DSP中的某一段存储器或寄存器等,大大简化了DSP 软件开发的调试和验证过程。
三者关系如图5-4所示。
图5-4 CCSLink 实现MATLAB和TI开发环境CCS及DSP目标板的连接
本文用CCSLink工具,搭建了一个数字滤波器的硬件在环实时仿真系统,它可实时地把来自TDLAS系统中的自平衡接收器的信号,经滤波处理后输出到锁定放大器中,实际的数字滤波器硬件在环实时仿真系统框图如图5-5所示。
图5-5 实际的数字滤波器的硬件在环实时仿真系统在MATLAB中完成数字滤波器的建模仿真和参数设计后,使用CCSLink中的实时数据交换技术(RTDX),在MATLAB和实时运行的DSP硬件之间建立连接。
利用此技术可不停止DSP上正在运行的程序而在它们之间实时传递数据:可在MATLAB中改变参数,并把此值传递给正在运行的DSP,在将DSP的处理结果返回给MATLAB,与MATLAB中的仿真结果进行比较,从而可实时地调整或改变滤波处理算法。
整个开发过程借助于硬件在环的实时仿真方法,将滤波器的设计和测量系统的其余部分分离开来,便于模块化设计。
5.3 基于硬件在环平台的FIR数字滤波器设计
当进入数字锁定放大器的噪音幅度的越小时,信噪比越高。
因此很有必要先对信号进行预处理,以减弱噪音的强度。
从自平衡接收器出来的信号,在经过12位的AD转换到变成数字信号的过程中,受到的噪音干扰主要是白噪音,这可通过数字滤波器滤除。
本系统利用MathWorks公司和TI公司联合开发的Matlab
Link for CCS Development Tools(CCSLink)工具,把MATLAB和TI 集成开发环境Code Composer Studio(CCS)及DSP开发板连接起来,搭建了如图5-5所示的硬件在环实时仿真系统。
利用CCSLink工具,可实现不停止DSP上正在运行的程序而在它们之间实时传递数据:可在MATLAB中改变FIR带通数字滤波器的参数,并把此值传递给正在运行的DSP,再将DSP的滤波输出结果返回给MATLAB,与MATLAB中的滤波仿真结果进行比较,从而可实时地调整或改变滤波处理算法,实现FIR数字滤波器的快速设计。
该滤波器准确度高,具有较强的实用性与灵活性。
5.3.1 FIR数字滤波器设计理论
FIR数字滤波器的差分方程,表示为:
∑-
x
k
n
n
h
y
(
=)
)
(
)
(k
(5-15)
式中x(n)为滤波器的输入信号;对式(1)进行Z变换,整理后可得到FIR滤波器的传递函数:
∑-
H)
(
((5-16)
)
z
=k
h
z
k
h(k), (k=0,1,…, N-1),为FIR数字滤波器的冲击响应系数。
FIR滤波器主要有四种结构:直接形式、频率采样形式、网格结构形式、基于FFT的形式。
由式(2)可看出,如图5-6所示的直接形式,其结构简单、有效,故把它选为要实现的FIR滤波器的结构。
图5-6直接形式FIR滤波器结构
FIR数字滤波器的设计步骤如下:
(1)在设计滤波器前,根据具体应用确定相应的性能指标。
(2)设计一个滤波器模型来逼近给定的性能指标。
(3)编制DSP程序实现滤波算法,并进行实时调试和验证。
5.3.2 FIR滤波器的MATLAB软件设计
◆FIR数字滤波器的参数指标分析
TDLAS系统的锁定放大器模块,如图5-7所示,自平衡接收器输出的模拟信号被ADC模块以300KHz的固定采样频率转换为数字信号,再经FIR数字滤波后,输入到锁定放大器以锁定被测信号的二次谐波信号分量。
参考信号
参考通道
图5-7 数字锁定放大器模块
要使数字锁定放大器获得准确的频率选择性能和精确的频谱定焦能力,在信号到达数字锁定放大器之前,要对信号进行滤波处理。
锁定放大器的互相关检测中的参考信号频率fr=60Kz,因此设采样频率fs=300KHz以防止产生混迭效应。
由于我们关心的是被测信号的二次谐波分量,而它的频谱范围,经过理论分析,在50KHZ和70KHZ之间,因此要设计个带通滤波器进行滤波处理。
◆基于FDATool的FIR带通滤波器模型设计
MATLAB提供了一个工具箱FDATOOL(Filter Design and Analysis Tool)来设计滤波器,FDATOOL既可以用来设计滤波器,也可以导入FIR或IIR滤波器进行分析。
相关设计采用图形用户界面,与用数字信号处理软件包提供的专用函数求取FIR滤波器系数相比,更加方便直观。
FIR滤波器的Matlab程序设计分为两部分。
第一部分是由fdatool设计FIR带通滤波器参数。
在MATLAB命令窗中,键入fdatool,进入设计界面。
选择Bandpass带通滤波器;在保证性能指标的前提下,为得到最小的阶数,本系统选择FIR中的Complex Equiripple,采样频率设定为fs=300KHz,Fstop1=40KHz, Fpass1=50KHz, Fpass2=70KHz,Fstop2=80KHz, 滤波器的长度为68,设计得到的FIR滤波器如图5-8所示,其阻带衰减小于60db,基本满足要求。
设计完成后,在FDATool设计界面中选择Targets→Export to Code Composer Studio IDE,按提示将生成的滤波器系数作为头文件输出到CCS工程中。
其中,C头文件中输出数据类型选择为Signed32-bit integer,目标选择项中
根据本仿真系统而选择指定板号:TDS560USB 和DSP 号:cpu_1。
图5-8 FIR 带通滤波器模型设计
第二部分把经过ADC 转换后的数字信号从DSP 的存储区 (inp_buffer)中读入到Matlab 的工作空间中,再用已在MATLAB 中设计好的滤波器进行滤波,用于和DSP 滤波进行比较。
5.3.3 FIR 数字滤波器的DSP 实现
用DSP 芯片实现数字滤波除了稳定性好、精确度高、不受环境影响外,还具有灵活性强的特点,可通过修改DSP 程序来改变数字滤波器的滤波特性。
FIR 滤波的数据结构分析
由式(2)可见FIR 滤波的主要运算是乘/累加运算,同时还要充分利用块循环。
TMS320F2812提供了并行乘/累加指令MPYE||ADDF 和块循环指令RPTB 。
执行这些指令需要一定的条件。
这些条件本质上就是对数据结构的要求,一般可采用如图5-9所示数据结构。
低地址
高地址冲击响应
最后输入采样初始输入采样
图5-9 滤波器的数据结构
TI公司为滤波设计提供了C28x滤波器库[40],为了在C编程环境中更方便的使用这些库,所有相关的库函数(指针)及变量会被包含到一个数据结构中,所有的初始化以及运算都是通过这个数据结构的对象来实现。
◆用MATLAB控制DSP实现FIR数字滤波器
软件开发环境为MATLAB R2007a和TI 公司的DSP集成开发环境CCStudio v3.1,硬件为eZdsp TM F2812最小系统评估板。
在Matlab的环境下可对CCS IDE连接对象进行操作[41]。
在Matlab7.0的命令窗中输入ccsboardinfo,察看CCS 中安装的目标板TMS320USB开发板是否已经链接好,再键入cc=ccsdsp('boardnum',0,'procnum',0),创建Matlab和CCS及DSP目标板的连接。
上述函数创建了Matlab的一个对象cc,利用连接对象cc就可以对此DSP进行访问。
先利用Malab把文件加载到CCS中“open(cc,projfile);”,并进行编译“build(cc); ”,再把可执行文件加载到目标板“load(cc,projfile1);”,便可运行目标DSP的程序“run(cc);”。
为了DSP中的数据与Matlab进行实时交换,创建了DSP程序中全局变量的嵌入式对象,并把信号数据写入到数据缓冲区。
inp_buffer=createobj(cc,'inp_buffer');%创建DSP程序中全局变量输入的嵌入式对象
out_buffer=createobj(cc,'out_buffer'); %创建DSP程序中全局变量输出的嵌入式对象
B=createobj(cc,'B');%创建滤波器系数变量B的嵌入式对象
write(inp_buffer,round(x));%从Matlab中向目标板DSP的存储器写入数据inpbuffer=read(inp_buffer); %从Matlab中向目标板DSP的存储器获取数据注意:用read函数向DSP的存储器中写入数据时,写入的数据类型要与访问的成员的数据类型相一致。
最后,在输入数据后,调用C28x滤波器库中的滤波器计算函数bpf.calc()进行FIR滤波,滤波后的数据放入存储区(out_buffer),由Matlab读出并画出图形,与Matlab非实时的滤波结果进行对比。
◆实现FIR数字滤波器的程序流程图
头文件fdacoefs.h存放着Fdatool设计的滤波器系数,把其添加到工程中,重新对工程编译连接后,这些头文件会自动添加到工程中,并会在目标DSP中分配相应的存储空间存储这些滤波器系数。
tmwtypes.h是MATLAB目录下的头文件,在fdacoefs.h头文件中要用到tmwtypes.h头文件。
以下是DSP滤波的部分程序:
FIR16 lpf = FIR16_DEFAULTS; //定义FIR16结构的滤波器对象,赋默认值long int inp_buffer[BUFSIZE]; //定义信号输入缓冲区
long int out_buffer[BUFSIZE]; //定义信号输出缓冲区
lpf.input = inp_buffer[adcCount]; //向滤波器对象输入数据
lpf.calc(&lpf); //调用滤波器的计算函数
out_buffer[adcCount] = lpf.output; //从滤波器对象输出结果
FIR数字滤波器的程序流程图如图5-10所示。
图5-10 DSP数字滤波器程序流程图
5.3.4 DSP滤波与Matlab滤波结果比较
在MATLAB中使用Read函数从目标DSP的存储器中读入一段数据,再由MATLAB画出DSP的输入波形、经过滤波后的输出波形以及MATLAB的输入波形、经过滤波后的输出波形一起进行对比,如图9所示。
其中,DSP滤波结果开始一段时间的数据不正常,这是因为FIR滤波器的相位延迟,造成输出波形有。