基于MATLAB的双音多频拨号系统的仿真.docx
- 文档编号:6068806
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:14
- 大小:118.33KB
基于MATLAB的双音多频拨号系统的仿真.docx
《基于MATLAB的双音多频拨号系统的仿真.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的双音多频拨号系统的仿真.docx(14页珍藏版)》请在冰豆网上搜索。
基于MATLAB的双音多频拨号系统的仿真
淮阴工学院
数字信号处理课程设计报告
题目:
基于MATLAB的双音多频拨号系统的仿真
系(院):
计算机工程学院
专业:
通信工程
班级:
通信1072
学号:
1071302212
姓名:
金瑶峰
指导教师:
常波顾向平刘虎胡荣林
学年学期:
2009~2010学年第1学期
2009年12月18日
设计任务书
课题
名称
基于MATLAB的双音多频拨号系统的仿真
设计
目的
1.巩固所学的数字信号处理理论知识,了解电话中双音多频信号的产生与检测原理;
2.了解数字信号处理在实际中的使用方法和重要性;
3.学习资料的收集与整理,学会撰写课程设计报告。
实验
环境
1.微型电子计算机(PC);
2.安装Windows2000以上操作系统,MATLAB等开发工具。
任务
要求
1.研究双音多频拨号(DTMF)系统,研究电话中双音多频信号的产生与检测原理;任意送入6位和8位电话号码,打印出相应的幅度谱。
观察程序运行结果,判断程序谱分析的正确性。
2.利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;
3.在第15周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;
4.结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。
工作进度计划
序号
起止日期
工作内容
1
2009.12.14~2009.12.14
在预设计的基础上,进一步查阅资料,完善设计方案。
2
2009.12.14~2009.12.17
设计总体方案,构建、绘制流程框图,编写代码,上机调试。
3
2009.12.17~2009.12.18
测试程序,完善功能,撰写设计报告。
4
2009.12.18
参加答辩,根据教师反馈意见,修改、完善设计报告。
指导教师(签字):
年月日
摘要
双音多频(DualToneMultiFrequency,DTMF)信号是音频电话中的拨号信号,由美国AT&T贝尔公司实验室研制,并用于电话网络中。
DTMF信号在电话中有两种作用,一个是用拨号信号去控制交换机接通被叫的用户电话机,另一个作用是控制电话机的各种动作,如播放留言、语音信箱等。
MATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。
特别是MATLAB还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。
所以该课程设计利用MATLAB进行仿真,编写代码,运行程序,根据提示键入8位电话号码如12345678,回车后可以听见8位电话号码对应的DTMF信号的声音,并输出相应的8幅频谱图,最后显示检测到的电话号码12345678。
说明DTMF信号的参数:
采样频率、DFT的变换点数以及观测时间的确定原则。
关键词多音双频频谱图采样频率
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双频拨号的频率分配
列
行
1209Hz
1336Hz
1477Hz
633Hz
697Hz
1
2
3
A
770Hz
4
5
6
B
852Hz
7
8
9
C
942Hz
*
0
#
D
DTMF信号在电话中有两种作用,一个是用拨号信号去控制交换机接通被叫的用户电话机,另一个作用是控制电话机的各种动作,如播放留言、语音信箱等。
2课程设计题目描述和要求
DTMF(DoubleToneMultiFrequency,双音多频)信号是音频电话拨号信号,由美国AT&T贝尔实验室开发。
作为实现电话号码快速可靠传输的一种技术,它具有很强的抗干扰能力和较高的传输速度,因此,可广泛用于电话通信系统中。
但绝大部分是用作电话的音频拨号。
另外,它也可以在数据通信系统中广泛地用来实现各种数据流和语音等信息的远程传输。
这种拨号方法取代了脉冲拨号,在DTMF通信系统中共有8个频率,分为4个高频音和4个低频音.用1个高频音和1个低频音的组合来表示一个信号.这样,共能提供16种组合,分别代表16种信号.图一为电话按键与信号频率的对应关系。
1
2
4
7
5
8
*A
3
A
B
6
0
9
C
#
D
679HZ
770HZ
852HZ
941HZ
1290HZ
1366HZ
1477HZ
1633HZ
行频率
列频率
图一DTMF编码
各种DTMF信号的应用都离不开DTMF信号的检测,这是DTMF信号应用的关键。
对它的检测,主要通过数字信号处理的算法以及硬件实现。
本文主要通过MATLAB的软件编程来实现DTMF信号的仿真检测,从频域分析了快速傅立叶变换(FFT)和GOERTZEL两种方法,并对GOERTZEL算法进行了详细的推导,提出采用Goertzel算法来实现DTMF信号的检测。
3课程设计报告内容
3.1信号的产生及算法实现
DTMF编码,是将电话拨号盘上的数字0~9,字母A~D,及*/E、#/F,共16个字符,用音频范围的8个频率表示出来。
具体来说,将8个频率分为高频群和低频群两组,分别作为列频和行频。
每一个键的频率模式由来自于列频和行频的两个频率叠加而成。
DTMF信号所规定的指标是:
传送/接收率为每秒10个数字,或每个数字100ms。
每个数字传送过程中,信号必须存在至少45ms,且不得多于55ms,100ms里的其余时间是静音。
1)、DTMF信号的产生
假设时间连续的DTMF信号用
表示,式中
是按照表1选择的两个频率,
代表低频带中的一个频率,
代表高频带中的一个频率。
显然采用数字方法产生DTMF信号,方便而且体积小。
下面介绍采用数字方法产生DTMF信号。
规定用8KHz对DTMF信号进行采样,采样后得到时域离散信号为
形成上面序列的方法有两种,即计算法和查表法。
用计算法求正弦波的序列值容易,但实际中要占用一些计算时间,影响运行速度。
查表法是预先将正弦波的各序列值计算出来,寄存在存储器中,运行时只要按顺序和一定的速度取出便可。
这种方法要占用一定的存储空间,但是速度快。
因为采样频率是8000Hz,因此要求每125ms输出一个样本,得到的序列再送到D/A变换器和平滑滤波器,输出便是连续时间的DTMF信号。
DTMF信号通过电话线路送到交换机。
2)、DTMF信号的检测
检测中采用了频域的方法,N点数据的DFT公式为:
它的好处是可以得到DFT的所有N点的值。
也就是通过DFT可以计算出信号中所包含的频率成分。
具体实现时,由于它的计算量非常大,因而主要使用它的快速算法——快速傅立叶变换(FFT)[3,4]。
对上述产生的DTMF信号,经过200点FFT运算得到DTMF信号的频谱X(K)(如图二所示)。
根据结果中两条谱线的位置K值可知其频率分别为820HZ和1290HZ,即对应了电话号码盘的数字“7”。
从图中可以看出,FFT运算中出现了两个问题:
1、由于数据的截断,带来了频谱泄漏误差;2、通过FFT运算,计算出了200点的频谱,而DTMF信号只需8个频率点,计算效率大大降低。
为解决这个问题,文中采用了GOERTZEL算法[5]。
图二“7”的DTMF编码FFT频谱
GOERTZEL算法本身也是对DFT的快速运算,但可以有选择地计算个别点处的DFT,而对不需要的点不进行计算。
GOERTZEL算法原理如下:
GOERTZEL算法实质是一个两极点的IIR滤波器,其算法原理框图如图三所示:
Yk(n)
Vk(n)
X(n)
图三GOERTZEL算法原理框图
由图可知:
具体推导如下:
令n=m
=
(n=N)
所以对序列X(n)的DFT等价于X(n)与系统传递函数
的第N个卷积值.
对
进行Z变换可得:
=
因此,H(z)可看作是级联型网络:
因此
其中V(-1)=V(-2)=0.
.
因而,系统输出的功率谱为:
其中n=N
图四“7”的DTMF编码GOERTZEL功率谱
根据以上算法,使用MATLAB语言具体实现,程序如下:
k=f/fn;
vk
(1)=0;
vk
(2)=0;
fori1=1:
8
w=2*cos(2*pi*k(i1)/N);
fori2=3:
202
vk(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算法,只需计算出八个点的功率谱就可以进行拨号的判断,减少了运算量,提高了计算效率,使判断可以实时进行。
3.2详细设计
仿真界面图
DTMF信号的产生与识别仿真实验在MATLAB环境下进行,编写仿真程序,运行程序,送入8位电话号码,程序自动产生每一位号码数字相应的DTMF信号,并送出双频声音,再用DFT进行谱分析,显示每一位号码数字的DTMF信号的DFT幅度谱,安照幅度谱的最大值确定对应的频率,再安照频率确定每一位对应的号码数字,最后输出8位电话号码,程序名为exp8。
程序分四段:
第一段(2—7行)设置参数,并读入8位电话号码;第二段(9—20行)根据键入的6位电话号码产生时域离散DTMF信号,并连续发出8位号码对应的双音频声音;第三段(22—25行)对时域离散DTMF信号进行频率检测,画出幅度谱;第四段(26—33行)根据幅度谱的两个峰值,分别查找并确定输入8位电话号码。
根据程序中的注释很容易分析编程思想和处理算法。
程序清单如下:
tm=[1,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];
f1=[697,770,852,941];%行频率向量
f2=[1209,1336,1477,1633];%列频率向量
TN=str2num(get(handles.edit1,'string'));%输入8位数字
TNr=0;%接收端电话号码初值为零
%figure
(1)
form=1:
8;
d=fix(TN/10^(8-m));
TN=TN-d*10^(8-m);
forp=1:
4;
forq=1:
4;
iftm(p,q)==abs(d);break,end%检测码相符的列号q
end
iftm(p,q)==abs(d);break,end%检测码相符的行号p
end
n=0:
1023;%为了发声,加长序列
x=sin(2*pi*n*f1(p)/8000)+sin(2*pi*n*f2(q)/8000);%构成双频信号
sound(x,8000);%发出声音
pause(0.1)
%接收检测端的程序
X=goertzel(x(1:
N),K+1);%用Goertzel算法计算八点DFT样本
val=abs(X);%列出八点DFT向量
%hw=handles.axes1;
%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%查找列号
end
forr=1:
4;
ifval(r)>limit,break,end%查找行号
end
TNr=TNr+tm(r,s-4)*10^(8-m);
set(handles.edit2,'string',num2str(TNr));
end
3.3结果分析
运行程序,根据提示键入8位电话号码12345678,回车后可以听见8位电话号码对应的DTMF信号的声音,并输出相应的8幅频谱图如图五所示,左上角的第一个图在k=18和k=31两点出现峰值,所以对应第一位号码数字1。
最后显示检测到的电话号码12345678。
图五频谱图
序列的N点DFT是对序列频谱函数在0~
区间的N点等间隔采样,如果是一个周期序列,截取周期序列的整数倍周期,进行DFT,其采样点刚好在周期信号的频率上,DFT的幅度最大处就是信号的准确频率。
分析这些DTMF信号,不可能经过采样得到周期序列,因此存在检测频率的准确性问题。
总结
通过本次课程设计我学会了使用MATLAB语言实现DTMF的编解码。
在做界面的过程中,也学到了很多,掌握了句柄的用法。
还掌握如何在各个响应函数间通信。
里面的一些控件的用法和MFC中控件类似,一些概念也是类似的。
做MATLAB界面,做好以后同时会产一个M文件,只要把代码编写在对应的控件中即可以方便的实现仿真。
试验结果表明基于MATLAB的DTMF编解码具有速度快、精度高、稳定性好以及便于灵活应用等特点。
而利用MATLAB语言,可以较好地、快速地进行算法的仿真,对系统的快速开发起到了推动作用。
当然,DTMF信号还要进行有效性检测:
DTMF信号的强度是否足够大,行列频率分量平方幅度和是否高于规定的门限值;如果DTMF信号存在,比较行列频率的最大频率分量差值,因为电话线具有低通特性,列频比行频衰减得厉害,因此需要设置一个门限;分别在行列频率组比较频谱分量,最强的谱线至少要比其他高频信号高一个门限值;二次谐波分量是否小于某个值;判断DTMF信号是否包含稳定的数字信息,只有数字信息被连续检测到两次,才认为数字信息是稳定的;最后要检测数字信息之后是否有停顿状态,只有这样才将当前的数字作为有效数字。
经过这次的课程设计,我对理论知识的掌握更加牢固了,而且把理论与实践联系在一起,提高了自己的实践能力,也从中找到了乐趣。
致谢
在这次课程设计的撰写过程中,我得到了许多人的帮助。
这样的课程设计真的很有意义,第一次自己真真切切的动手设计制作产品,感觉自己学会了很多,成长了很多,让我找回了往日奋斗的激情,也许这样的机会在大学不会再有了,我会深深的记住这次,记住这次饱含我汗水的综合课程设计。
这次也发现了自身很多的不足,许多的基本电路都不是很熟悉,在画原理图的时候就不停的找以前的教材,以后还得多看看教材,牢记一些基本的电路与波形。
首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,感谢XX帮我解决了许多技术上的难题,让我能把系统做得更加完善。
在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。
其次, 与队友的合作更是一件快乐的事情,只有彼此都付出,彼此都努力维护才能将作品做的更加完美。
我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。
同时也感谢学院为我提供良好的做课程设计的环境。
最后在这里忠心的感谢在教学大纲中安排了这次综合课程设计,感谢指导老师的辛勤付出。
参考文献
1高西全,丁玉美.数字信号处理(第三版).西安:
西安电子科技大学出版社,2008.8
2王宏.MATLAB6.5及其在信号处理中的应用.北京:
清华大学出版社,2004
3李正周..北京:
清华大学出版社,2008
4徐明远,刘增力.西安:
电子科技大学出版社,2007
5李显宏..北京:
电子工业出版社,2006
6郭仕剑等..人民邮电出版社,2006
7张明照,刘政波,刘斌..科学出版社,2006
指导教师评语
学号
1071302212
姓名
金瑶峰
班级
通信1072
选题
名称
基于MATLAB的双音多频拨号系统的仿真
序号
评价内容
权重(%)
得分
1
考勤记录、学习态度、工作作风与表现。
5
2
自学情况:
上网检索机时数、文献阅读情况(笔记)。
10
3
论文选题是否先进,是否具有前沿性或前瞻性。
5
4
成果验收:
是否完成设计任务;能否运行、可操作性如何等。
20
5
报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。
30
6
文献引用是否合理、充分、真实。
5
7
答辩情况:
自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。
25
合计
指导教师(签章):
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 双音 拨号 系统 仿真