DTMF信号的产生与检测-实验报告

2026/1/21 15:11:51

DTMF信号的产生与检测

图2-1 DTMF编码流程

2.3 DTMF信号的检测方法

DTMF信号的检测方法可以有多种。主要分为从信号时间域处理和从信号频率域处理两大类。

前一种方法包括:过零点位置检测法、信号峰值位置检测法、过零点位置及信号幅值检测法。其特点是实现简单,可以通过MT8880等芯片加上外围电路实现,易于集成化。缺点是易受干扰,对信噪比要求高。现在广泛应用于一般的脉冲拨号电话机。通过神经网络等辅助判别方法可以大大提高信号的识别率。

后一种方法包括:频率判断、能量判断两类。频率判断主要通过滤波器提取DTMF相应的频率信号进行比较判断,滤波器可以用窄带、低通、高通滤波器,应用方式可以有并联、级联、混合联接等方式。能量判断是直接对DTMF信号相应的能量进行计算,找出高、低频率群中最强的信号,进行判断,包括有DFT法(Discrete Fourier Transform)、FFT(Fast Fourier Transform)、Goertzel法等。

本次实验我们采用的是能量判断法,并采用了Goertzel算法。

4

DTMF信号的产生与检测

3 设计方案、算法原理说明

3.1 Goertzel算法原理

Goertzel算法信号解码是将两个音频信号提取出来,并通过他们的频率,确定所接受的DTMF数字。原来使用模拟技术音频信号频率进行检测,一般通过模拟电路进行过零点检测,通过零点计数完成对输入信号的频率检测。在数字信号检测电路中,一般使用频域计算技术代替时域信号处理。我们可以直接通过付立叶变换,直接得到输入的信号频率。信号各个频率分量的幅值直接计算可以使用DFT。对于N点数据序列{x(n)}的DFT为:

nkX?k???x?n?WN,k?0,1,...,N?1

n?0N?1(式 3-1)

如果用FFT算法来实现DFT计算,计算将涉及复数乘法和加法,并且计算量为Nlog2N。虽然我们可以得到DFT的所有N个值,然而,如果希望计算DFT的M个点,并且M

Goertzel算法,从根本上说,是计算DFT的一种线性滤波算法,它可以通过调整滤波器的中心频率和带宽,直接计算出DFT的系数。

kGoertzel算法利用相位因子WN的周期性。我们可以同时将DFT运算表示为线性滤波运?kN算,由于WN=1,我们可以用该因子对公式(4) (DFT表达式)两边相乘,得到:

N?1n?0N?1??W?kNNX?k??X?k???x?n?W?WnkN?kNN?k?N?m? (式 3-2) ??x?m?WNm?0我们注意到,上式就是卷积形式。可以定义序列YK?n?为:

?k?N?m? (式 3-3) Yk?n???x?m?WNm?0N?1显然,Yk (n)就是长度为N的有限长输入序列YK?n?与具有如下单位脉冲响应的滤波器的卷积:

?knhk?n??WNu?n? (式 3-4)

5

DTMF信号的产生与检测

可以看到,当n=N时,该滤波器的输出就是DFT在频点?k?即

2?k值 NX?k??YK?n?n?N (式 3-5)

我们可以通过比较式(6)和式(7) 来验证上式。对于单位脉冲响应为hk?n?的滤波器来说,其系统函数为:

Hk?z??1 (式 3-6) ?k?11?WNz2?k。因此,可以使用输入N这个滤波器只有一个位于单位圆上的极点,其频率为?K?数据块通过N个并行的单极点滤波器或者谐振器组来计算全部的DFT,其中每个滤波器有一个位于DFT响应频率的极点。

因此,对于式(7)的卷积计算,我们可以使用差分方程形式来表示用式(9)给出的滤波器,通过迭代的方法计算YK?n?,从而得出DFT的计算结果:

?k yk?n??WNyk?n?1??x?n?,yk??1??0 (式 3-7)

计算涉及复数加法和复数乘法,计算量大。由于我们只需要计算幅值信息,而不关心相位信息。我们在单位圆上另外引入一个极点,与原有的极点形成一对共扼极点。将两个滤波器组成一对复数共轭极点的谐振器。原有的单极点滤波器计算方式变成形如式(10)的方式。其系统函数为:

k?11?WNz (式 3-8) Hz?z???1?21?2cos?2?kN?z?zK上式中:WN?ej2?k/N,为差分方程的系数。由于引入了复数共扼极点,避免了式(9)

中复杂的复数加法和复数乘法。

显然,对式(10)无法进行直接计算。为了便于计算实现,我们引入中间变量Qk?n?,将式(9)表示为差分方程形式:

?2?k?Qk?n??2?cos???Qk?n?1??Qk?n?2??x?n? (式 3-9)

N??式中,初始条件为: Qk??1??Qk??2??0,n?0,1,...,N

6

DTMF信号的产生与检测

k X?k??Yk?N??Qk?N??WN?Qk?N?1? (式 3-10)

?2?kN其中,W?ekN

3.2 Goertzel算法改进与实现

Goertzel算法是计算离散傅立叶变换的方法,需要计算的频率点数不超过21092 N时Goertzel算法将比FFT(Fast Fourier Transform)更为有效。Goertzel算法相当于一个二阶IIR滤波器,(10)式是它的转移函数我们可以根据(10)式画出改进Goertzel算法的模拟框图,如图 3-1所示

x?n?+Q(n)+z?1yk?n?+Q(n-1)?2nk?2cos???N?K?WN-z?1Q(n-2)-1

图 3-1 Goertzel算法的模拟框图

图2中可看到,整个计算过程分为两部分:前向通路式(11)和反馈通路式(12)。显然,对于式(11)的递推关系计算需要重复N=1,?,N重复N+1次,但是式(12)中的反向计算只需要在n=N时计算一淡。每次计算只需要计算一次实数乘法和两次实数加法。所以,对实数序列x (n), 由于对称性,用这种算法求出X(k)和X(N-k)的值需要N+1次实数乘法运算。

我们现在可应用Goertzel算法完成实现DTMF解码器了。由于有8种可能的音频信号需要检测。所以需要至少8个由式(9)给出的滤波器,将每个滤波器调谐到这8个频率值上。在完成信号判决时,我们并不需要相位信息,只需要幅值信息|X(k)| 。因此,对式(12)两边进行平方,计算幅度的平方值|X(k)|2。我们将递推方程式(9,11, 12)进一步简化,得到滤波器计算的前向部分的简化表达方式,即滤波表达式的分子项部分:

由于我们只需要幅值信息,不需要相位信息,因此,对前向部分进行改进,输出幅度平

7


DTMF信号的产生与检测-实验报告.doc 将本文的Word文档下载到电脑
搜索更多关于: DTMF信号的产生与检测-实验报告 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219