基于MATLAB的双音多频拨系统的仿真设计_第1页
基于MATLAB的双音多频拨系统的仿真设计_第2页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、淮阴工学院数字信号处课程设计报告题目:基于MATLAB的双音多频拨号系统,y丿亠亠的仿真系(院):算机工程学院专业:通信工程班级:号:姓>名:指导教师:顾相平学学期:20132014学第1学期专业专注201312月15日摘要双音多频(DualToneMultiFrequency,DTMF)信号是音频电话中的拨号信号,由美国AT&T贝尔公司实验室研制,并用于电话网络中。DTMF信号在电话中有两种作用,一个是用拨号信号去控制交换机接通被叫的用户电话机,另一个作用是控制电话机的各种动作,如播放言、语音信箱等。MATLAB语言是一种广泛应用于工程计算及数直分析领域的新型高级语言,MATL

2、AB功能强大、简单学、编程效高,深受广大科技工作者的欢迎。特别是MATLAB还具有信号分析工具箱,需具备很强的编程能,就可以很方地进信号分析、处和设计。所以该课程设计用MATLAB进仿真,编写代码,运程序,根据提示键入8位电话号码如12345678,回车后可以听见8位电话号码对应的DTMF信号的声音,并输出相应的8幅频谱图,最后显示检测到的电话号码12345678。说明DTMF信号的参数:采样频、DFT的变换点数以及观测时间的确定原则。关键词多音双频频谱图采样频1引丨言-6-2课程设计题目描述和要求-7-3课程设计报告内容83.1信号的产生及算法实现83.2详细设计-13-3.3结果分析17总

3、结-18-1引言双音多频(DualToneMultiFrequency,DTMF)信号是音频电话中的拨号信号,由美国AT&T贝尔公司实验室研制,并用于电话网络中。这种信号制式具有很高的拨号速,且容自动监测识别,的拨号制式。这种双音多频信号制式仅用在电话网络中,还可以用于传输十进制数据的其它通信系统中,用于电子邮件和银系统中。这些系统中用户可以用电话发送DTMF信号选择语音菜单进操作。DTMF信号系统是一个典型的小型信号处系统,它要用数字方法产生模拟信号并进传输,其中还用到D/A变换器;在接收端用A/D变换器将其转换成数字信号,并进数字信号处与识别。为系统的检测速并低成本,还开发一种特殊

4、的DFT算法称为戈泽尔(Goertzel)算法,这种算法既可以用硬件(专用芯片)实现,也可以用软件实现。下面首先介绍双音多频信号的产生方法和检测方法,包括戈泽尔算法,最后进模拟实验。下面先介绍电话中的DTMF信号的组成。所用的8个频分成高频带和低频带两组,低频带有四个频:679Hz,770Hz,852Hz和941Hz;高频带也有四个频:1209Hz,1336Hz,1477Hz和1633Hz.。每一个数字均由高、低频带中各一个频构成,如1用697Hz和1209Hz两个频,信号用sin(2吋t)+sin(2吋t)表示,其中f=679Hz,f=1209Hz。这样8个频形成121216种同的双频信号。

5、具体号码以及符号对应的频如表1所示。表中最后一在电话中暂时夫用。的用户电话机,另一个作用是控制电话机的各种动作,如播放言、语音信箱等。2课程设计题目描述和要求DTMF(DoubleToneMultiFrequency,双音多频)信号是音频电话拨号信号,由美国AT&T贝尔实验室开发。作为实现电话号码快速可靠传输的一种技术,它具有很强的扌抗干扰能和较高的传输速,因此,可广泛用于电话通信系统中。但绝大部分是用作电话的音频拨号。另外,它也可以在数据通信系统中广泛地用夹实现各种数据和语音等信息的远程传输。这种拨号方法取代脉冲拨号,在DTMF通信系统中共有8个频,分为4个高频音和4个低频音.用1个

6、高频音和1个低频音的组合夹表示一个信号.这样,共能提供16种组合,分别代表16种信号.图一为电话按键与信号频和寸应关系。679HZ770HZ852HZ941HZ1290HZ1366HZ1477HZ1633HZ图-DTMF编码各种DTMF信号的应用离开DTMF信号的检测,这是DTMF信号应用的关键。对它的检测,主要通过数字信号处的算法以及硬件实现。本文主要通过MATLAB的软件编程夹实现DTMF信号的仿真检测,从频域分析快速傅叶变换(FFT)和GOERTZEL两种方法,并对GOERTZEL算法进详细的推导,提出采用Goertzel算法夹实现DTMF信号的检测。3课程设计报告内容3.1信号的产生及

7、算法实现DTMF编码,是将电话拨号盘上的数字09,字母AD,及*/E、#/F,共16个字符,用音频范围的8个频表示出夹。具体夹说,将8个频分为高频群和低频群两组,分别作为频和频。每-个键的频模式由夹自于频和频的两个频叠加而成。DTMF信号所规定的指标是:传送/接收为每秒10个数字,或每个数字100ms。每个数字传送过程中,信号必须存在至少45ms,且得多于55ms,100ms的其余时间是静音。1)、DTMF信号的产生假设时间连续的DTMF信号用x(t)二sin(2ft)+sin(2ft)表示,式中f和/是按照表1选择的两个频,f代表低频带中的一个频,于2代表高频带中的一个频。显然采用数字方法产

8、生DTMF信号,方而且体积小。下面介绍采用数字方法产生DTMF信号。规定用8KHz对DTMF信号进采样,采样后得到时域离散信号为x(n)二sin(2fn/8000)+sin(2fn/8000)形成上面序的方法有两种,即计算法和查表法。用计算法求正弦波的序直容,但实际中要占用一些计算时间,影响运速。查表法是预先将正弦波的各序直计算出夹,寄存在存储器中,运时只要按顺序和一定的速取出可。这种方法要占用一定的存储空间,但是速快。因为采样频是8000Hz,因此要求每125ms输出一个样本,得到的序再送到D/A变换器和平滤波器,输出是连续时间的DTMF信号。DTMF信号通过电话线送到交换机。2)、DTMF

9、信号的检测检测中采用频域的方法,N点数据的DFT公式为:X(k)=DFTx(n)=七1x(n)WknNn=0k=0,1,.,N-1它的好处是可以得到DFT的所有N点的直。也就是通过DFT可以计算出信号中所包含的频成分。具体实现时,由于它的计算非常大,因而主要使用它的快速算法快速傅叶变换(FFT)R4。对上述产生的DTMF信号,经过200点FFT运算得到DTMF信号的频谱X(K)(如图二所示)。根据结果中两条谱线的位置K直可知其频分别为820HZ和1290HZ,即对应电话号码盘的数字''7。从图中可以看出,FFT运算中出现两个问题:1、由于数据的截断,带夹频谱泄误差;2、通过FF

10、T运算,计算出200点的频谱,而DTMF信号只需8个频点,计算效大大低。为解决这个问题,文中采用GOERTZEL算法。图二“7的DTMF编码FFT频谱GOERTZEL算法本身也贮寸DFT的快速运算,但可以有选择地计算个别点处的DFT,而对需要的点进计算。GOERTZEL算法原如下:GOERTZEL算法实质是-个两极点的IIR滤波器,其算法原框图如图三所示:X(n)Vk(n)Yk(n)图三GOERTZEL算法原框图由图可知:v(n)=x(n)+2cos(k2nk)v(n-1)-v(n-2)kk.血X(k)=y(N)=v(N)-e-jNkv(N-1)kkk具体推导如下:X(k)=刃x(n)Wk(n

11、一N)(DFT)Nn=0n=mX(k)=Sx(m)Wk(m-n)=X(n)*W-kn(n二N)NNm=0所以对序X(n)的DFT等价于X(n)与系统传递函数h(n)=W-kn的第N个卷N积直.对h(n)二W-kn进Z变换可得:N丿1-W-kZ-1(1一WkZ-1)N12兀1一2Z-1cosk+Z-2N因此,H(z)可看作是级联型网络:H(z)=二2兀一2Z-1cosk+Z-2NH(z)二(1-WkZ-1)2N因此2兀V(n)=2coskV(n一1)一V(n一2)+X(n)N其中V(-l)=V(-2)=0.y(n)=V(n)WkV(n1)N因而,系统输出的功谱为:|y(n)|2=v(n)2+v(

12、n一1)2一2cos(k)v(n)v(n一1)其中n=n图四“7的DTMF编码GOERTZEL功谱根据以上算法,使用MATLAB语言具体实现,程序如下:k=f/fn;vk(l)=0;vk(2)=0;fori1=1:8w=2*cos(2*pi*k(il)/N);fori2=3:202vk(i2)=w.*vk(i2-1)-vk(i2-2)+x(i2);end;Xk(i1)=vk(202).'2+vk(201).'2-w*vk(202)*vk(201);end;程序运结果如图四所示。从图中可以看出,用GOERTZEL算法,只需计算出八个点的功谱就可以进拨号的判断,减少运算,提高计算效

13、,使判断可以实时进。3.2详细设计仿真界面图DTMF信号的产生与识别仿真实验在MATLAB环境下进,编写仿真程序,运程序,送入8位电话号码,程序自动产生每一位号码数字相应的DTMF信号,并送出双频声音,再用DFT进谱分析,显示每一位号码数字的DTMF信号的DFT幅谱,安照幅谱的最大直确定对应的频,再安照频确定每-位对应的号码数字,最后输出8位电话号码,程序名为exp8°程序分四段:第一段(27)设置参数,并读入8位电话号码;第二段(920)根据键入的6位电话号码产生时域离散DTMF信号,并连续发出8位号码对应的双音频声音;第三段(2225)对时域离散DTMF信号进频检测,画出幅谱;第

14、四段(2633)根据幅谱的两个峰直,分别查找并确定输入8位电话号码。根据程序中的注释很容分析编程思想和处算法。程序清单如下:tm=l,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68;%DTMF信号代表的16个数N=205;K=18,20,22,24,31,34,38,42;fl=697,770,852,941;%频向f2=1209,1336,1477,1633;%频向TN=str2num(get(handles.editl,'string');%输入8位数字TNr=0;%接收端电话号码初直为%figure(1)form=1:8;d=fix(TN/10&#

15、39;(8-m);TN=TN-d*10'(8-m);forp=1:4;forq=1:4;iftm(p,q)=abs(d);break,end%检测码相符的号qendiftm(p,q)=abs(d);break,end%检测码相符的号pendn=0:1023;%为发声,加长序x=sin(2*pi*n*fl(p)/8000)+sin(2*pi*n*f2(q)/8000);%构成双频信号sound(x,8000);%发出声音pause(0.1)%接收检测端的程序X=goertzel(x(l:N),K+l);%用Goertzel算法计算八点DFT样本val=abs(X);%出八点DFT向%hw

16、=handles.axesl;%plot(val,'parent',hw);subplot(4,2,m);stem(K,val,'.');grid;xlabel('k');ylabel('|X(k)|')%画出DFT(k)幅axis(10500120)limit=80;%fors=5:8;ifval(s)>limit,break,end%查找号endforr=1:4;ifval(r)>limit,break,end%查找号endTNr=TNr+tm(r,s-4)*10'(8-m);set(handles.edi

17、t2,'string',num2str(TNr);end3.3结果分析运程序,根据提示键入8位电话号码12345678,回车后可以听见8位电话号码对应的DTMF信号的声音,并输出相应的8幅频谱图如图五所示,左上角的第一个图在k=18和k=31两点出现峰直,所以对应第一位号码数字1。最后显示检测到的电话号码12345678。图五频谱图序的N点DFT是对序频谱函数在02区间的N点等间隔采样,如果是一个周期序,截取周期序的整数倍周期,进DFT,其采样点刚好在周期信号的频上'DFT的幅最大处就是信号的准确频。分析这些DTMF信号,可能经过采样得到周期序,因此存在检测频的准确性问

18、题。总结通过本次课程设计我学会使用MATLAB语言实现DTMF的编解码。在做实训的过程中,也学到很多,懂得团队合作的。在做MATLAB界面,做好以后同时会产一个M文件,只要把代码编写4寸应的控件中即可以方的实现仿真。试验结果表明基于MATLAB的DTMF编解码具有速快、高、稳定性好以及于灵活应用等特点。而用MATLAB语言,可以较好地、快速地进算法的仿真。我要感谢我的师和同学们在课程设计上给予我的指导、和帮助,感谢网络帮我解决许多技术上的难题,让我能把信息处实训做得好。期间,我仅学到许多新的知识,而且也开阔视野,提高自己的设计能。致谢时光荏苒,知觉此次数字信号处实验已经接近尾声,首先我要郑重感谢淮阴工学院、计算机工程学院提供的实践机会实验室人员提供的实验环境,顾相

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论