DTMF信号系统的Matlab课程设计解读.docx
《DTMF信号系统的Matlab课程设计解读.docx》由会员分享,可在线阅读,更多相关《DTMF信号系统的Matlab课程设计解读.docx(19页珍藏版)》请在冰豆网上搜索。
DTMF信号系统的Matlab课程设计解读
闽江学院
课程设计报告书
设计题目:
系别:
年级专业:
指导教师:
摘要
所谓双音多频(DTMF),就是用两个频率一一行频和列频来表示电话机键盘上的一个数字。
DTMF电话的指令正在迅速的取代脉冲指令。
除了在电话呼叫信号中使用外,DTMF还广泛的使用在交互式控制应用,例如电话银行、电子邮件甚至家电远程控制等,
用户可以从电话机发送DTMF信号来做菜单选择。
本文基于MATLAB的双音多频拨号
系统的仿真实现。
主要涉及到电话拨号音合成的基本原理及识别的主要方法,利用
MATLAB软件以及DFT算法实现对电话通信系统中拨号音的合成与识别。
并进一步利
用MATLAB中的图形用户界面GUI制作简单直观的模拟界面。
还能够利用矩阵不同的
基频合成0—9不同按键的拨号音,并能够对不同的拨号音加以正确的识别,实现由
拨号音解析出电话号码的过程,进一步利用GUI做出了简单的图形操作界面。
本文具有
界面清楚,画面简洁,易于理解,操作简单的优点,从而实现对电话拨号音系统的简单
的信号仿真。
关键词:
双音多频(DTMF)MATLABGUI信号仿真
课程设计学生日志
时间
设计内容
2012.12.21—
2013.1.3
五个组员一起查阅资料,商量确定方案
2013.1.7—
2013.1.8
设计总体方案一一负责编程与设计程序,负
责整合资料,负责记录日常工作及解决课
程设计过程中出现的一些意外情况。
2013.1.9
2013.1.10
和负责将各个子模块程序整合起来,
和负责制作程序的gui界面,负责总程序的
调试
2012.1.11
五人T制作课程设计报告,并答辩完成课程设计
1引言3
2双音多频系统MATLAB的设计与实现4
3双音多频(DTMF)信号的产生与检测原理6
3.1双音多频信号6
3.2双音多频信号的产生原理7
4双音多频(DTMF)信号的产生与检测9
4.1双音多频信号的产生9
4.2双音多频信号的检测9
5检测(DTMF)信号的DFT参数选择12
5.1
5.2频谱分析的频率范围12
6详细的设计步骤12
5.2.1默认模块17
5.2.2按键模块设计17
6.3图形电话拨号面板的制作22
6.4DTMF信号的检测识别23
6.5DTMF的整体界面设计结果23
7结论25
8参考文献26
1引言
双音多频(DualToneMultiFrequency,DTMF)信号是音频电话中的拨号信号,由美国AT&T贝尔公司实验室研制,并用于电话网络中。
这种信号制式具有很高的拨号速度,且容易自动监测识别,很快就代替了原有的用脉冲计数方式的拨号制式。
这种双音多频信号制式不仅用在电话网络中,还可以用于传输十进制数据的其它通信系统中,
用于电子邮件和银行系统中。
这些系统中用户可以用电话发送DTMF信号选择语音菜单
进行操作。
DTMF信号系统是一个典型的小型信号处理系统,它要用数字方法产生模拟信号并
进行传输,其中还用到了D/A变换器;在接收端用A/D变换器将其转换成数字信号,并
进行数字信号处理与识别。
为了系统的检测速度并降低成本,还开发一种特殊的DFT算
法,称为戈泽尔(Goertzel)算法,这种算法既可以用硬件(专用芯片)实现,也可以用软件实现。
下面首先介绍双音多频信号的产生方法和检测方法,包括戈泽尔算法,最后进行模拟实验。
下面先介绍电话中的DTMF信号的组成。
在电话中,数字0〜9的中每一个都用两个不同的单音频传输,所用的8个频率分成高频带和低频带两组,低频带有四个频率:
679Hz,770Hz,852Hz和941Hz;高频带也有
四个频率:
1209Hz,1336Hz,1477Hz和1633Hz.。
每一个数字均由高、低频带中各一个频率构成,例如1用697Hz和1209Hz两个频率,信号用表示,其中,这样8个频率形成16种不同的双频信号。
具体号码以及符号对应的频率如表1所示。
表中最后一列
在电话中暂时未用。
表1双频拨号的频率分配1209Hz1336Hz1477Hz633Hz
697Hz
1
2
3
A
770Hz
4
5
6
B
852Hz
7
8
9
C
942Hz
*
0
#
D
DTMF信号在电话中有两种作用,一个是用拨号信号去控制交换机接通被叫的用户电话机,另一个作用是控制电话机的各种动作,如播放留言、语音信箱等。
2双音多频系统的MATLA股计与实现
MATLAB:
具简介
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工
程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今
国际科学计算软件的先进水平。
[13]
MATLAB产品族可以用来进行以下各种工作:
・数值分析
・数值和符号计算
・工程与科学绘图
・控制系统的设计与仿真
・数字图像处理技术
・数字信号处理技术
・通讯系统设计与仿真
・财务与金融工程
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。
它有如下的特点:
1.功能强的数值运算一一在MATLAB环境中,有超过500种数学、统计、科学及工程方面的函数可使用,函数的标示自然,使得问题和解答像数学式子一般简单明了,
让使用者可全力发挥在解题方面,而非浪费在电脑操作上。
2.先进的资料视觉化功能一一MATLAB的物件导向图形架构让使用者可执行视觉数据分,并制作高品质的图形,完成科学性或工程性图文并茂的文章。
3.高阶但简单的程式环境一一作为一种直译式的程式语言,MATLAB容许使用者在短时间内写完程式,所花的时间约为用FORTRAN或C的几分之一,而且不需要编译
(compile)及联结(link)即能执行,同时包含了更多及更容易使用的内建功能。
4.开放及可延伸的架构一一MATLAB容许使用者接触它大多数的数学原始码,检视运算法,更改现存函数,甚至加入自己的函数使MATLAB成为使用者所须要的环境。
5.丰富的程式工具箱一一MATLAB的程式工具箱融合了套装前软体的优点,与一个灵活的开放但容易操作之环境,这些工具箱提供了使用者在特别应用领域所需之许多
函数。
现有工具箱有:
符号运算(利用MapleV的计算核心执行)、影像处理、统计分析、讯号处理、神经网路、模拟分析、控制系统、即时控制、系统确认、强建控制、弧
线分析、最佳化、模糊逻辑、mu分析及合成、化学计量分析。
因为有了这些工具箱,大
量繁杂的数学运算和分析可通过调用MATLAB函数直接求解,大大提高了编程效率,其
程序编译和执行速度远远超过了BASIC、FORTRAN和C等语言。
在欧美的大学和研究机构中,MATLAB是一种非常流行的计算机语言,许多重要的
学术刊物上发表的论文均是用MATLAB来分析计算和绘制各种图形。
它还是一种有力的
教学工具,它在大学的线性代数、自动控制理论、数理统计、数字信号处理、动态系统仿真等课程的教学中,已成为标准的教学工具。
3双音多频(DTMF)信号的产生与检测原理
3.1双音多频信号
DTMF,由高频群和低频群组成,高低频群各包含4个频率。
一个高频信号和一个低
频信号叠加组成一个组合信号,代表一个数字。
DTMF信令有16个编码。
利用DTMF
信令可选择呼叫相应的对讲机同时,双音多频信号是电话系统中电话机与交换机之间的一种用户信令,通常用于发送被叫号码。
在使用双音多频信号之前,电话系统中使用一连串的断续脉冲来传送被叫号码,称为脉冲拨号。
脉冲拨号需要电信局中的操作员手工完成长途接续。
双音多频的拨号键盘是4>4的矩阵,每一行代表一个低频,每一列代表一个高频。
每按一个键就发送一个高频和低频的正弦信号组合,比如'1'相当于697和1209赫兹(Hz)。
交换机可以解码这些频率组合并确定所对应的按键。
DTMF编解码器在编码时将击键或数字信息转换成双音信号并发送,解码时在收到的
DTMF信号中检测击键或数字信息的存在性。
表2-1数字或功能键组合表
、、、行频
列频
1209Hz
1336Hz
1477Hz
1633Hz
697Hz
1
2
3
A
770Hz
4
5
6
B
852Hz
7
8
9
C
941Hz
*
0
#
D
DTMF是用两个特定的单音频组合信号来代表数字信号以实现其功能的一种编码技术。
两个单音频的频率不同,代表的数字或实现的功能也不同。
这种电话机中通常有16个
按键,其中有10个数字键0〜9和6个功能键*、#、A、B、C、Do由于按照组合原理,一般应有8种不同的单音频信号。
因此可采用的频率也有8种,故称之为多频,又
因它采用从8种频率中任意抽出2种进行组合来进行编码,所以又称之为“8中取2”的
编码技术。
根据CCITT的建议,国际上采用的8个频率为:
687Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz和1633Hz。
用这8个频率可形成16种不同的组合,从而代表16个不同的数字或功能键,具体组合见表2-1。
3.2.1双音多频信号的产生原理
DTMF信号包含两组音频信号,解码器的任务是通过数学变换把它从时域转化到频域,然后得出对应的数字信息。
在接收端,将收到的模拟音频信号进行A/D变换,恢复为数字信号,然后检测其中
的音频频谱来确定所发送的数字。
检测算法可以是快速傅立叶变换(FFT)算法的DFT,或
是用一组滤波器来提取所需频率。
以下章节对两种方法进行分析并对GOERTZEL算法进
行详细的推导。
由上面可以知道一个DTMF信号是由两个不通频率fL和fH的正弦波组成,它可以用下式表示
x(t)=ALsin(2:
FLtL)AHsin(2:
FHH)(2-1)
我们可以考虑通过离散傅立叶变换进行信号的频谱分析来检测离散的双音多频码。
这是因为只有时域及频域都是离散的情况下,才能适合于在计算机上运算;也就是周期的离散时间信号与离散频率间的变换对。
周期性离散时间信号x(n)的离散傅立叶变换—周期性离散频率函数X(k)两相邻谱线
分量之间的角频率增量与周期tp之间的关系可表示为_0丁匚,
2/tp-2F
代表信号的基频。
取样频率fs与取样周期T的关系是fs=1T
取样角频率,■1227/1-
T为时域取样间隔为,在一个周期内取样点数为No在自变量为t及f的情况下,在
一个时域中对函数进行取样,两取样点间增量的倒数,必是另一个域中函数的周期。
现
序列的周期为NT,所以对频谱取样的间距是1/nt。
以数字频率表示时,则频谱间距是
0=2二k/N
k=0,1,,N-1
2.:
-,-
令WN=g」N并称之为Wn因子。
离散傅立叶变换(DFT)可写成如下形式:
n1(2-2)
X(k)=DFT[x(n)]=:
:
x(n)WNkn
n=0
0离散傅立叶变换(DFT)在有关频率检测数字信号处理系统的设计和实现方面起着非
常重要的作用。
DFT的表达式可以直接写成:
NJ」2%(2-3)
X(k)=.、,x(n)Nn=0
k=0,1,……,N-1
nk.
一般来说,x(n^DWN都是复数,X(k)也是复数,每计算一个X(k)值,需要N次复
数乘法x(n)与W:
k相乘以及N-1次复数加法。
而X(k)一共有N个点(k从0取到N-1),
所以完成整个DFT运算总共需要N2次复数乘法及N(N—1)次复数加法。
复数运算实际上是由实数运算来完成的,因此上式可写成:
N」
nk
X(k)-'x(n)WN
n=0
N1
='(Re[x(n)]-jm[x(n)])(Re[Wjk]•jmiWjk]
na(2-4)
N」
八一{(Re[x(n)]Re[W;k]_:
m[x(n)]MW;k])n3
-j(Re[x(n)]-m[WNnk]-m[x(n)]Re[WNnk]}
由此可见,一次复数乘法需用四次实数乘法和两次实数加法;一次复数加法则需两次复数加法。
因而每运算一个需要4N次复数乘法和2N+2(N-1)=2(2N-1)次实数加法。
所以,直接计算DFT,乘法次数和加法次数都是和N2成正比的,当N很大时,运
算量是很可观的,例如,当N=8时,DFT需64次复数乘法,而当N=1024时,DFT所
需复数乘法为1,048,576次,即一百多万次复数乘法运算,这对实时性很强的信号处理来
说,对计算速度的要求太高了。
因而需要改进对DFT的计算方法,以大大减少运算次数。
仔细观察DFT的运算量可以看出,利用系数的以下固有特性,可以减少DFT的运算量。
1.W『的对称性:
WnK(N」)=Wn4n=(WNkn)”
2.WNnk的周期性:
WNnk=WN(n4N)k=WNn(k+N)
由此得出WN^N,)=Wn(Nak=Wn口k,WNN2=-1,W产,=nk
这样,
(1)利用这些特性,使DFT运算中有些项可以合并;
(2)利用WN的周期性和
对称性,可以将长序列的DFT分解为短序列的DFT。
而前面已经说到,DFT的运算量使
2
与N成正比的,所以N越小越有利,因而小点数的DFT比大点数的DFT的运算量要小。
基于这样的思路,快速傅立叶变换(FFT)发展起来了。
如果按时间抽取的FFT算法,系统
的运算量是Nl0g2N,运算量明显比dft运算量减少。
但它有一个缺点,需要全部抽样数据到达时,才能进行计算;不适合双音多频信号频谱的计算,满足不了双音拨号系统实时性的要求。
假设时间连续的DTMF信号用x(t尸sin(2*pi*n*f1)+sin(2*pi*n*f2)表示,式中的fl和
f2是按照表2-1中的两个频率,fl代表低频带频率中的一个,f2代表高频带频率中的一
个。
显然采用数字的方法产生DTMF信号,方便而且体积小。
下面介绍用数字方法产生
DTMF信号。
规定用8kHz对DTMF信号进行采样,采样后得到的时域离散信号为:
x(t)=sin(2*二*n*f1/8000)+sin(2*二*n*f2/8000)(3-1)
形成上面序列有两种方法,一种是计算法,另一种是查表法。
用计算法求正弦波序列值容易,但实际中要占用一些计算时间,影响运行速度。
查表法是预先将正弦波的各序列值计算出来,存放在存储器中,运行时只要按顺序和一定的速度取出即可。
这种方法要占用一定的存储空间,但是速度快。
采样频率是8kHz,因此要求每125ms输出一个样本,得到的序列再送到D/A变换
器,它的输出经过平滑滤波便是连续时间的DTMF信号。
DTMF信号再送到交换机。
3.2.2双音多频信号的检测原理
检测中采用了频域的方法,N点数据的DFT公式为:
InTi
(2-5)
DFT可以计算出信号中所包
X(k)=DFT[x(n)]八x(n)W;n
n:
0
它的好处是可以得到DFT岬府N点曲值,N卸就是通过含的频率成分。
具体实现时,由于三的自算量斗扁父,因而主要使快速傅立叶变换(FFT)。
对上述产生的DTMF信号,经过200点FFT运算得到DTMF信号的频谱X(K)(如图2-1所示)。
根据结果中两条谱线的位置K值可知其频率分别为820Hz和1290Hz,即对应了
电话号码盘的数字“7;'从图中可以看出,FFT运算中出现了两个问题:
1、由于数据的截断,带来了频谱泄漏误差;2、通过FFT运算,计算出了200点的频谱,而DTMF信
号只需8个频率点,计算效率大大降低。
在接收端,要对收到的双音多频信号进行检测,检测两个正弦波的频率是多少,以判断所对应的十进制数字或者符号。
显然这里仍然要用数字方法进行检测,因此要将收到的时间连续DTMF信号经过A/D变换,变成数字信号进行检测。
检测的方法有两种,一种是用一组滤波器提取所关心的频率,根据有输出信号的2个滤波器判断相应的数字
或符号。
另一种是用DFT(FFT)对双音多频信号进行频谱分析,由信号的幅度谱,判断信号的两个频率,最后确定相应的数字或符号。
本设计采用的是后者。
DTMF信号的产生、检测
4双音多频(DTMF)信号的产生与检测
4.1双音多频信号的产生
假设时间连续的DTMF信号用x(t尸sin(2*pi*n*f1)+sin(2*pi*n*f2)表示,式中的fl和
f2是按照表2-1中的两个频率,fl代表低频带频率中的一个,f2代表高频带频率中的一
个。
显然采用数字的方法产生DTMF信号,方便而且体积小。
下面介绍用数字方法产生
DTMF信号。
规定用8kHz对DTMF信号进行采样,采样后得到的时域离散信号为:
x(t)=sin(2*二*n*f1/8000)+sin(2*二*n*f2/8000)(3-1)
形成上面序列有两种方法,一种是计算法,另一种是查表法。
用计算法求正弦波序列值容易,但实际中要占用一些计算时间,影响运行速度。
查表法是预先将正弦波的各序列值计算出来,存放在存储器中,运行时只要按顺序和一定的速度取出即可。
这种方法要占用一定的存储空间,但是速度快。
采样频率是8kHz,因此要求每125ms输出一个样本,得到的序列再送到D/A变换
器,它的输出经过平滑滤波便是连续时间的DTMF信号。
DTMF信号再送到交换机。
4.2双音多频信号的检测
在接收端,要对收到的双音多频信号进行检测,即检测两个正弦波频率,以判读对应的十进制数字或符号。
显然这里可以用数字方法进行检测,因此要将收到的时间连续DTMF信号经过A/D变换,变成数字信号再进行检测。
在这里我们用戈泽尔算法对信号进行检测。
5检测DTMF信号的DFT参数选择
用DFT检测*II拟DTMF信号所含有的两个音频频率,是一个用DFT对模拟信号进
行频谱分析的问题。
根据第三章用DFT对模拟信号进行谱分析的理论,确定三个参数:
(1)采样频率,
(2)DFT的变换岚数N,
(3)需要对信号的观察时间的长度。
这三个参数不能随意选取,要根据对信号频谱分析的要求进行确定。
这里对信号频
谱分析也有三个要求:
(1)频率分辨率,
(2)谱分析的频谱范围,
(3)检测频率的准确性。
5.1频谱分析的分辨率
观察要检测的8个频率,相邻间隔最小的是第一和第二个频率,间隔是35Hz,要求DFT最少能够分辨相隔35Hz的两个频率,即要求。
DFT的分辨率和对信号的观察时间有关。
考虑到可靠性,留有富裕量,要求按键的时间大于100ms。
5.1频谱分析的频率范围
要检测的信号频率范围是697〜1633Hz,但考虑到存在语音干扰,除了检测这8个
频率外,还要检测它们的二次倍频的幅度大小,波形正常且干扰小的正弦波的二次倍频是很小的,如果发现二次谐波很大,则不能确定这是DTMF信号。
这样频谱分析的频率
范围为697〜3266Hz。
按照采样定理,最高频率不能超过折叠频率,即由此要求最小的采样频率应为7.24KHz。
因为数字电话总系统已经规定H=8KHz,因此对频谱分析范围
的要求是一定满足的。
按照,H=8KHz,算出对信号最少的采样点数为100。
6详细的设计步骤
GUI界面如下:
(说明构成)
按下“A"运行如下图:
15时
观察产生的信号和频率写说明
检测如下图:
地位;Ca>
说明正确性
2具体实现:
因为数字和字母按键实现的方式基本相同,区别在于每个按键的行、列的频率不同。
因此调用一样的模块函数来实现达到简化程序;
%PressKeyDown.m
functionSignal=PressKeyDown(handles,key)
实现输出和画出时域及频域的波形,并播放出声音。
%dtmf.m
functionx=dtmf(key);
根据不同的按键选择不同的频率画出两个cos相加。
%wav_gener.m
functionh=wav_gener(R,omega,N)
产生两个cos信号相加
%FindLowerFreq.m
DesignLowerFilter.m
设计低频带通
找出低频的列
%FindHigherFreq.m
%DesignHigherFilter.m
设计高频带通
找出高频的行
3主要按键的Callback函数如下
按键“1”的Callback函数
functionpushbutton1_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton21(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
set(handles.DecodeText,'string'J);%清空解码显示文本框
Signal=PressKeyDown(handles,'1');
handles.DTMFSignal=Signal;
handles.TelNumber=strcat(handles.TelNumber,'1');
guidata(hObject,handles);
set(handles.CodeText,'string',handles.TelNumber);
%---Executesonbuttonpressinpushbutton2.
按键“解码检测”的Callback
functionpushbutton17_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton17(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)keys=
[T,2,'3','A';'4',5,'6','B'7,