DTMF信号的产生与检测实验报告Word下载.docx

上传人:b****3 文档编号:13800632 上传时间:2022-10-13 格式:DOCX 页数:33 大小:738KB
下载 相关 举报
DTMF信号的产生与检测实验报告Word下载.docx_第1页
第1页 / 共33页
DTMF信号的产生与检测实验报告Word下载.docx_第2页
第2页 / 共33页
DTMF信号的产生与检测实验报告Word下载.docx_第3页
第3页 / 共33页
DTMF信号的产生与检测实验报告Word下载.docx_第4页
第4页 / 共33页
DTMF信号的产生与检测实验报告Word下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

DTMF信号的产生与检测实验报告Word下载.docx

《DTMF信号的产生与检测实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《DTMF信号的产生与检测实验报告Word下载.docx(33页珍藏版)》请在冰豆网上搜索。

DTMF信号的产生与检测实验报告Word下载.docx

DTMF检测时采用改进的Goertzel算法,从频域搜索两个正弦波的存在。

1.1实验目的

掌握DTMF信号的产生和检测的DSP设计可使学生更加透彻的理解和应用奈奎斯特采样定理,与实际应用相结合,提高学生系统地思考问题和解决实际问题的能力。

通过对DSP信号处理器及D/A和A/D转换器的编程,可以培养学生C语言编程能力以及使用DSP硬件平台实现数字信号处理算法的能力。

1.2技术指标及设计要求

1.2.1基本部分

1)使用C语言编写DSP下DTMF信号的产生程序,要求循环产生0~9、*、#、A、B、C、D对应的DTMF信号,并且符合CCITT对DTMF信号规定的指标。

2)使用C语言编写DSP下DTMF信号的检测程序,检测到的DTMF编码在CCS调试窗口中显示,要求既不能漏检,也不能重复检出。

3)DTMF信号的发送与接收分别使用不同的实验板完成。

1.2.2发挥部分

1)使用一个DSP工程同时实现DTMF信号的发送和检测功能。

2)改进DTMF信号的规定指标,使每秒内可传送的DTMF编码加倍。

3)发送的DTMF信号的幅度在一定范围内可调,此时仍能完成DTMF信号的正常检测。

1.3方案完成情况

在实现基本要求的基础上,我们又完成了发挥部分的全部要求:

能够实现在一个DSP实验箱上同时实现自发自收,基本能实现无差错传输。

通过改变处理信号的点数N的数值实现了DTMF信号编码加倍,能够在一秒内传送够多的数据。

通过gel添加滑动条的方法实现输入信号幅度可调,并实现判决门限的自适应处理,能随着幅度的变化自动调整门限的值,进而了判决传输信号的正确性。

2设计内容

2.1DTMF信号的的定义

双音多频(DTMF)信号是由两个不同频率的信号叠加而成,设V(t)为DTMF信号、和分别为构成V(t)的两个信号,则它们应满足关系式

(1)。

V(t)=+

(1)

根据CCITT建议,国际上采用697Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz、1633Hz8个频率,并将其分成两个群,即低频群和高频群。

从低频群和高频群中任意抽出一个频率进行叠加组合,具有16种组合形式,让其代表数字和功率,如表3-1所列,则有关系式

(2)。

V(t)=Asint+Bsint

(2)

其中Asint为低频群的值,Bsint为高频组的值,A、B分别为低频群和高频群样值的量化基线,具体见表2-1。

1209

1336

1477

1633

697

1

2

3

A

770

4

5

6

B

852

7

8

9

C

941

*

#

D

表2-1DTMF频率及其对应的键值

2.2DTMF信号生成方法

2.2.1利用math.h采用数学方法产生DTMF信号

buffer[k]=sin(2*pi*k*f0/fs)+sin(2*pi*k*f1/fs)(式2-1)

f0为行频频率,f1为列频频率,fs为8000采样频率,k为对信号的采样。

2.2.2利用两个二阶数字正弦波振荡器产生DTMF信号(本课程设计实际采用方法)

DTMF编码器基于两个二阶数字正弦波振荡器,一个用于产生行频,一个用于产生列频。

向DSP装入相应的系数和初始条件,就可以只用两个振荡器产生所需的八个音频信号。

典型的DTMF信号频率范围是700~1700Hz,选取8000Hz作为采样频率,即可满足Nyquist条件。

由数字振荡器对的框图,可以得到该二阶系统函数的差分方程

(式2-2)

其中a1=-2cosω0,a2=1,ω0=2πf0/fs,fs为采样频率,f0为输出正弦波的频率,A为输出正弦波的幅度。

该式初值为y(-1)=0,y(-2)=-Asinω0。

CCITT对DTMF信号规定的指标是,传送/接收率为每秒10个数字,即每个数字100ms。

代表数字的音频信号必须持续至少45ms,但不超过55ms。

100ms内其他时间为静音,以便区别连续的两个按键信号。

编程的流程如图1所示,由CCITT的规定,数字之间必须有适当长度的静音,因此编码器有两个任务,其一是音频信号任务,产生双音样本,其二是静音任务,产生静音样本。

每个任务结束后,启动下一个任务前(音频信号任务或静音任务),都必须复位决定其持续时间的定时器变量。

在静音任务结束后,DSP从数字缓存中调出下一个数字,判决该数字信号所对应的行频和列频信号,并根据不同频率确定其初始化参数a1=-2cosω0与y(-2)=-Asinω0。

该流程图可采用C语言实现,双音信号的产生则由54x汇编代码实现。

整个程序作为C54x的多通道缓冲串口(McBsp)的发射串口中断服务子程序,由外部送入的16000Hz串口时钟触发中断,可实时处理并通过D/A转换器输出DTMF信令信号。

图2-1DTMF编码流程

2.3DTMF信号的检测方法

DTMF信号的检测方法可以有多种。

主要分为从信号时间域处理和从信号频率域处理两大类。

前一种方法包括:

过零点位置检测法、信号峰值位置检测法、过零点位置及信号幅值检测法。

其特点是实现简单,可以通过MT8880等芯片加上外围电路实现,易于集成化。

缺点是易受干扰,对信噪比要求高。

现在广泛应用于一般的脉冲拨号电话机。

通过神经网络等辅助判别方法可以大大提高信号的识别率。

后一种方法包括:

频率判断、能量判断两类。

频率判断主要通过滤波器提取DTMF相应的频率信号进行比较判断,滤波器可以用窄带、低通、高通滤波器,应用方式可以有并联、级联、混合联接等方式。

能量判断是直接对DTMF信号相应的能量进行计算,找出高、低频率群中最强的信号,进行判断,包括有DFT法(DiscreteFourierTransform)、FFT(FastFourierTransform)、Goertzel法等。

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

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

3.1Goertzel算法原理

Goertzel算法信号解码是将两个音频信号提取出来,并通过他们的频率,确定所接受的DTMF数字。

原来使用模拟技术音频信号频率进行检测,一般通过模拟电路进行过零点检测,通过零点计数完成对输入信号的频率检测。

在数字信号检测电路中,一般使用频域计算技术代替时域信号处理。

我们可以直接通过付立叶变换,直接得到输入的信号频率。

信号各个频率分量的幅值直接计算可以使用DFT。

对于N点数据序列{x(n)}的DFT为:

(式3-1)

如果用FFT算法来实现DFT计算,计算将涉及复数乘法和加法,并且计算量为。

虽然我们可以得到DFT的所有N个值,然而,如果希望计算DFT的M个点,并且M<

时,可以看到,直接计算DFT则更加有效。

下面我们用到Goertzel法,是一种直接计算DFT有效的方法。

我们应用Goertzel算法对DTMF信号的检测,并且对其进行改进。

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

Goertzel算法利用相位因子的周期性。

我们可以同时将DFT运算表示为线性滤波运算,由于=1,我们可以用该因子对公式(4)(DFT表达式)两边相乘,得到:

(式3-2)

我们注意到,上式就是卷积形式。

可以定义序列为:

(式3-3)

显然,Yk(n)就是长度为N的有限长输入序列与具有如下单位脉冲响应的滤波器的卷积:

(式3-4)

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

(式3-5)

我们可以通过比较式(6)和式(7)来验证上式。

对于单位脉冲响应为的滤波器来说,其系统函数为:

(式3-6)

这个滤波器只有一个位于单位圆上的极点,其频率为。

因此,可以使用输入数据块通过N个并行的单极点滤波器或者谐振器组来计算全部的DFT,其中每个滤波器有一个位于DFT响应频率的极点。

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

(式3-7)

计算涉及复数加法和复数乘法,计算量大。

由于我们只需要计算幅值信息,而不关心相位信息。

我们在单位圆上另外引入一个极点,与原有的极点形成一对共扼极点。

将两个滤波器组成一对复数共轭极点的谐振器。

原有的单极点滤波器计算方式变成形如式(10)的方式。

其系统函数为:

(式3-8)

上式中:

,为差分方程的系数。

由于引入了复数共扼极点,避免了式(9)中复杂的复数加法和复数乘法。

显然,对式(10)无法进行直接计算。

为了便于计算实现,我们引入中间变量,将式(9)表示为差分方程形式:

(式3-9)

式中,初始条件为:

(式3-10)

其中,

3.2Goertzel算法改进与实现

Goertzel算法是计算离散傅立叶变换的方法,需要计算的频率点数不超过21092N时Goertzel算法将比FFT(FastFourierTransform)更为有效。

Goertzel算法相当于一个二阶IIR滤波器,(10)式是它的转移函数我们可以根据(10)式画出改进Goertzel算法的模拟框图,如图3-1所示

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

图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)进一步简化,得到滤波器计算的前向部分的简化表达方式,即滤波表达式的分子项部分:

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

(式3-1)

3.3改进Goertzel算法原理小结

在式(12)中可以使用A,B分别代替递归项,令,将离散付里叶变换DFT的改进计算过程总结写为:

其中,

可以看到,由于上面两式中:

忽略相位信息,使用实数运算,无复数运算。

等式右边全部是实数运算,大大提高了运算速度,降低计算量。

3.4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1