DTMF产生传输及检测软件仿真课程设计_第1页
DTMF产生传输及检测软件仿真课程设计_第2页
DTMF产生传输及检测软件仿真课程设计_第3页
DTMF产生传输及检测软件仿真课程设计_第4页
DTMF产生传输及检测软件仿真课程设计_第5页
已阅读5页,还剩9页未读, 继续免费阅读

下载本文档

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

文档简介

1、燕山大学课程设计指导书DTMF通信系统设计与仿真燕山大学信息科学与工程学院通信电子教研室1、任务、性质与意义用数学模型的方法对信息传输的过程进行仿真,是分析、设计及改进通信系统性能的重要手段。本次课程设计的任务是综合运用通信原理、数字信号处理等课程所学知识,实现一个双音多频(DTMF)信号传输过程的软件仿真。本次课程设计的性质是通信原理、数字信号处理等课的综合实践环节。它的意义在于,通过本次课程设计可以从理论上加深对有关通信、数字信号处理原理的综合理解,了解DTMF信号原理和用数字信号处理的方法实现DTMF信号的产生、传输与检测的过程。还可以从实践能力上掌握一门新的计算机编程工具MATLAB语

2、言。2、基本原理2.1双音多频(DTMF)信号双音多频(DTMF)信号就是用两个不同频率的音频信号的组合来传输信息的一种通信信号形式,可以用数学式表示为(1)图1DTMF拨号频率标准式中fH和fL分别是高频组和低频组的两个信号频率。对这两个频率的要求是:1、位于人而能够听到的音频频率范围内;2、频率间隔近似为乐音音阶的频率间隔(按十二平均律,相邻各个音的频率呈等比关系,其比值约为1.,例如C3130.8Hz,C4=261.7Hz,D4293.7)。这种信号在电话线路上传输,而且声音悦耳。在电话系统中,高低频组的频率已经标准化,如图1所示。DTMF最早应用是在电话通信系统中作为控制信令使用的。在

3、电话通信系统中,最早的控制信令是使用直流脉冲信号。脉冲拨号方式是由接在旋转拨盘位置上的开关或电子开关控制二线电路的通与断。每拨出一位数字,都有唯一一串电流脉冲相对应,图2中给出了数字3的电流脉冲序列。每个脉冲周期通常为100ms,其中有40%的占空时间,在人工控制条件下,两个相继数字的时间间隔可以从0.5S到数秒之间变化不等。由此可见,利用拨号脉冲拨号,发送一个10位长的号码大约需要7秒的时间。图2脉冲拨号示意图当采用DTMF拨号方式时,号码的每一个数字用一对音频表示,话机中有8个单音频,分为两组,通过拨号盘选拨号码时,各位数字由触键开关输入,其对应的某个频率对(高频和低频)同时传输,图3所示

4、为各频率对应位置。对DTMF信号所规定的指标为:传送速率为每秒10个数字,即每个数字100ms。每个数字传送过程中,信号必须存在至少45ms,且不得多于55ms,100ms里其余时间是静音。另外ITU(国际电信联盟)还规定,DTMF信号在每个频率点上允许有1.5%的偏移,任何超出给定3.5%的信号认为无效,拒绝承认接收。还规定,在最坏检测条件下,信噪比不得低于15dB。显然。DTMF的拨号方式比双脉冲拨号方式可快至10倍,明显缩短了拨号时间。而且DTMF拨号方式发出的信号抗干扰能力大大高于脉冲拨号方式。因此,目前普遍使用DTMF拨号方式。采用DTMF信号,用话音频率发送数字,可以避免占用额外的

5、信道,又比脉冲拨号方式节约时间。在通信、测量、控制、自动服务等领域有着广泛的应用。在基于电话的各种信息服务系统中,广泛使用了DTMF信号来传送按键操作信息。利用这种按键信息,人们可以直接通过电话查询所需要的信息以及进行各种远程控制。在实际系统中,首次拨号由程控交换机识别,完成主叫与被叫之间的接续;二次乃至多次拨号的识别以及操作由用户系统自己完成。DTMF信号还可以用来在话音信道上传送各种类型的控制指令,例如利用电话控制家用电器的启停,传送远方的状态监测信息。目前DTMF信号已经不仅仅限于在电话系统中应用,在测量、控制、遥测遥控等各个领域都有应用。2.2DTMF信号的硬件产生与检测通常是用硬件产

6、生和检测DTMF信号。已经有多种专用的产生和检测DTMF信号的集成电路器件。具有代表性的DTMF发送、接收器的型号为MT8860,MT8862,MT8870,MT8872等。图3DTMF信号发送器电路原理DTMF信号发送器电路原理如图3所示,它主要包括:(1)晶体振荡器外接晶体(通常采用3.58MHz)与片内电路构成振荡器、经分频产生参考信号。(2)键控可变速率时钟产生电路它是一种可变分频比的分频器,通常由n级移位寄存器与键控反馈逻辑单元组成。(3)正弦波产生电路它出正弦波编码器与DA变换器构成。通常可变速时钟信号先经过5位移位寄存器,产生组5位移位代码,再由可编程逻辑阵列(PLA)将其转换成

7、二进制代码,送到DA变换器转换成台阶形正弦波。显然台阶的宽度等于时钟频率的倒数,这样形成的正弦波频率必然对应于时钟的速率和按键的号码。(4)混合电路将键盘所对应产生的行、列正弦波信号(即低高群fL、fH单音)相加,混合成双音信号而输出。(5)附加功能单元,如含有单音抑制、输出控制(禁止)、双键向按无输出等控制电路。DTMF接收器主要包括DTMF分组滤波器和DTMF译码器,其基本原理如图4所示。DTMF接收信号先经高、低群带通滤波进行fL/fH区分,然后过零检测、比较,得到相应于DTMF的两路fL/fH信号输出。该两路信号经译码、锁存、缓冲,恢复成对应于16种DTMF信号音对的4比特二进制码(L

8、1一L4)。图4硬件接收DTMF信号的电路原理2.3双音多频信号软件产生与检测近年来DTMF也应用在交互式控制中,诸如语言菜单、语言邮件、电话银行和ATM终端等。将DTMF信令的产生与检测集成到任一含有数字信号处理器(DSP)的系统中,是一项较有价值的工程应用。为了产生DTMF信号,DSP用软件产生两个正弦波叠加在一起后发送,软件具体实现方式可以有三种方法:(1)用软件模拟DSP的方式产生两个数字正弦波振荡器并把输出合成起来,建立所希望的双音频。(2)通过产生的某频率的方波后再附加滤波器滤出二次以上的谐波,产生DTMF信号。(3)查表输出产生DTMF信号。软件检测DTMF信号主要有以下方法:(

9、1)利用离散傅立叶变换(DFT)及其快速算法(FFT),求取DTMF信号频谱的峰值点,进而利用峰值点的频率判断发送的数字。这种方法的缺点是计算量大,不利于实时处理。但是如果使用MATLAB软件仿真则可以用很简单的几条语句实现。(2)对于DTMF信号的波形,波形过零点数量决定了低频信号的频率,而极值点数量决定了高频信号的频率。因此通过软件分别计算出高频频率和低频频率,从而实现DTMF的解码。这里选择采样频率为8K,已知每一个信号的频率至少持续40ms的时间,我们对DTMF采样160个点,即20ms,这样总会有一个20ms的采样点全部落在40ms的发送范围内,对采样的点进行6次求和取平均,去掉噪声

10、成分,然后分别计算过零点的数目a和极值点的数目b,对应频率可以计算为:既然可以求出DTMF信号的一组频率值,那么就可以得出对应电话号码值。这种算法比较适合于单片机硬件实现,但是其抗噪声性能较差。(3)计算接收到的DTMF信号在8个既定频率的能量,进而确定是否有DTMF信号到达以及收到的是哪一对信号,此外通过计算接收信号的总能量来防止误判。采用Geortzel算法可进一步提高计算效率,Goertzel算法实质是一个两极点的IIR滤波器,对应每一个频点有一个匹配滤波器,在抽样时刻检测。这种方法理论上属于最佳接收方法,而且算法有利于用DSP实现。在本次课程设计中要求使用这种方法。DTMF解码即是在输

11、入信号中搜索出有效的行频和列频。2.4数字正弦波振荡器原理数字正弦波振荡器的功能是利用数字信号处理的方法产生正弦波信号的抽样序列。基本原理是:设数字正弦波振荡器要产生的波形为(1)则其Z变换为上式的分子与分母同时乘以y(n)可以看作是一个单位冲击函数激励了一个线性系统的冲击响应。这个线性系统的传递函数就是Y(z)。由Y(z)可以写出该线性系统的差分方程:式中为数字角频率。令输入x(n)为单位冲击函数,即则可以得到下面的递推方程当n2时,(2)实现时,首先将每个频率常数存在一个表中,用来初始化给定键的振荡器;再按照(2)进行迭代计算,就得到正弦序列的输出;将两个这样的输出叠加即可得到双音频的输出

12、。每个数字输出的样本数取决于数字速率与采样速率。双音频中的每一个音调之后都是同样长度的无音周期,从而可以检测到按键的释放。2.5数字匹配滤波器原理(Geortzel算法)计算接收到的DTMF信号在8个既定频率的能量,进而确定是否有DTMF信号到达以及收到的是哪一对信号,此外通过计算接收信号的总能量来防止误判。为满足检测8个DTMF频点(偏差1.5%),需计算256点FFT,因只对8个频点感兴趣,故可以直接计算8个频点附近的DFT,计算数字信号的频谱可以采用DFT及其快速算法FFT,而在实现DTMF解码时,采用Goertzel算法要比FFT更快。通过FFT可以计算得到信号所有谱线,了解信号整个频

13、域信息,而对于DTMF信号只用关心其8个行频/列频及其二次谐波信息即可(二次谐波的信息用于将DTMF信号与声音信号区别开)。此时Goertzel算法能更加快速地在输入信号中提取频谱信息。Goertzel算法实质是一个两极点的IIR滤波器,其算法原理框图如图5。图5Geortzel算法信号流图对应每一个频点有一个匹配滤波器,第k个频率匹配滤波器的传递函数为其中,对应的前、后向差分方程为:后一个方程无需全部计算,只需要在n=N时刻,即最后的输出时刻计算。如果考虑同步相位误差,也可以在n=N时刻附近计算一段时间内的输出。前向差分方程也可以改写为便于计算的递归形式:并令初始值为。在n=N时刻既可以得到

14、所需要的X(k)。由于在DTMF检测中,输入的信号是实数序列,并不需要检测出8个行频/列频的相位,只需要计算出其幅度平方即可。因此计算|X(k)|2如下:这里分别表示状态变量在N和N-1时刻的值。在输入信号中检测DTMF信号,并将其转换为实际的数字,这一解码过程本质是连续的过程,需要在输入的数据信号流中连续地搜索DTMF信号频谱的存在。整个检测过程分两步:首先采用Goertzel算法在输入信号中提取频谱信息;接着作检测结果的有效性检查。2.6仿真系统框图键控输入DTMF信号的产生DTMF信号检测电话信道判断输出高斯噪声图6仿真系统框图软件流程图(1) 输入键号(2) 生成DTMF信号(时域、频

15、域显示)(3) 产生高斯噪声(时域、频域显示)(4) 信道传输(高斯白噪声信道,可选作带限滤波器信道)(5) 接收端随机延迟(30个点以内)(6) 匹配滤波接收(7) DTMF信号到达检测(8) DTMF信号识别(时域、频域显示)(9) DTMF键号识别3.工作内容与思考题3.1工作内容1、设计计算正弦波数字振荡器、数字匹配滤波器的参数;2、用MATLAB语言设计一个利用DTMF信号传输学号代码的仿真系统。观察下列信号的波形:学号代码的非归零基带信号、DTMF信号、信道加入噪声、接收信号、匹配滤波器输出、译码判决结果;3、利用仿真的系统进行抗干扰性能等方面的试验分析,试验分析的具体内容详见思考

16、题。3.2思考题1分析DTMF信号的频谱,为什么DTMF信号能够在电话信道传输,要求的带宽为多少?2设信噪比分别为20dB,10dB,0dB,-6dB,-10dB,-20dB,分析在理想(信道无失真)情况下,仿真计算误码率与信噪比的关系,并与理论分析结果比较。3仿真分析匹配滤波器中心频率误差对DTMF信号检测有什么影响?4仿真分析DTMF信号的时间长度对信号的检测有什么影响?5如果在匹配滤波器前插入FIR带通滤波器,通频带在600-1800Hz之间。用窗函数法设计FIR带通滤波器,并分析插入带通滤波器对检测性能有什么影响?4设计要求1、自学复习通信原理、数字信号处理的有关内容,掌握算法原理;2

17、、掌握MATLAB语言的使用;3、完整实现仿真系统,发送自己的学号,接收自己的学号;4、记录观察到的各种波形;5、撰写课程设计报告。报告统一使用B5纸,统一报告封面,报告篇幅以3000字为宜。报告中要有设计目的;设计基本内容及步骤;每一步中应用的原理方法;试验仿真结果及相关波形;对试验结果进行的性能分析。报告正文用手写,图、程序可以打印作为附件。5编程工具MATLAB简介(亦可以采用C语言、C+、VC、VB等编程语言实现)5.1基本运算与函数在MATLAB下进行基本数学运算,只需将运算式直接打入提示号()之后,并按入Enter键即可。例如:(5*2+1.3-0.8)*10/25ans=4.20

18、00MATLAB会将运算结果直接存入一变量ans,代表MATLAB运算后的答案(Answer),并显示其数值于屏幕上。(为简便起见,在下述各例中,我们不再印出MATLAB的提示号。)我们也可将上述运算式的结果设定给另一个变量x:x=(5*2+1.3-0.8)*102/25x=42此时MATLAB会直接显示x的值。若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算()。MATLAB将所有变量均存成double的形式,所以不需经过变量声明。MATLAB同时也会自动

19、进行存储器的使用和回收,而不必像C语言,必须由使用者一一指定。变量也可用来存放向量或矩阵,并进行各种运算,如下例的行向量(Rowvector)运算:x=1352;y=2*x+1y=371155.2控制命令5.2.1for语句,其基本形式为:for变量=矩阵;运算式;end其中变量的值会被依次设定为矩阵的每一行,来执行介于for和end之间的运算式。因此,若无意外情况,运算式执行的次数会等于矩阵的行数。举例来说,下列命令会产生一个长度为6的调和数列:x=zeros(1,6);%x是一个16的零矩阵fori=1:6,x(i)=1/i;end5.2.2while语句基本形式为:while条件式;运算

20、式;end也就是说,只要条件示成立,运算式就会一再被执行。例如先前产生调和数列的例子,我们可用while圈改写如下:x=zeros(1,6);%x是一个16的零矩阵i=1;whilei0.5,disp(Givenrandomnumberisgreaterthan0.5.);end5.2.4MATLAB文件若要一次执行大量的MATLAB命令,可将这些命令存放于一个扩展名为m的文件。包含MATLAB命令的文件都以m为扩展名,因此通称m文件,只要直接键入文件名,就可执行其所包含的命令。严格来说,m文件可再细分为命令集(Scripts)及函数(Functions)。命令集的效果和将命令逐一输入完全一样

21、,因此若在命令集可以直接使用工作空间的变量,而且在命令集中设定的变量,也都在工作空间中看得到。函数则需要用到输入参数和输出参数来传递变量,这就像是C语言的函数。在调用函数时,你只能经由输入参数来控制函数的输入,经由输出参数来得到函数的输出,但所有的暂时变量都会随着函数的结束而消失。5.3MATLAB常用的数学函数abs(x):标量的绝对值或向量的长度angle(z):复数z的相角(Phaseangle)sqrt(x):开平方real(z):复数z的实部imag(z):复数z的虚部conj(z):复数z的共轭复数round(x):四舍五入至最近整数fix(x):无论正负,舍去小数至最近整数sig

22、n(x):符号函数。当x0时,sign(x)=1。rem(x,y):求x除以y的余数gcd(x,y):整数x和y的最大公因数lcm(x,y):整数x和y的最小公倍数exp(x):自然指数pow2(x):2的指数log(x):以e为底的对数,即自然对数或log2(x):以2为底的对数log10(x):以10为底的对数sin(x):正弦函数cos(x):余弦函数tan(x):正切函数asin(x):反正弦函数acos(x):反馀弦函数atan(x):反正切函数min(x):向量x的元素的最小值max(x):向量x的元素的最大值sort(x):对向量x的元素进行排序(Sorting)length(x

23、):向量x的元素个数sum(x):向量x的元素总和cumsum(x):向量x的累计元素总和dot(x,y):向量x和y的内积cross(x,y):向量x和y的外积5.4MATLAB绘图MATLAB不但擅长于矩阵相关的数值运算,还适合于各种科学绘图。这里简介几种基本平面绘图命令。plot是绘制一维曲线的基本函数,但在使用此函数之前,需要先定义曲线上每一点的x及y座标。下例可画出一条正弦曲线:closeall;x=linspace(0,2*pi,100);%100个点的x座标y=sin(x);%对应的y座标plot(x,y);MATLAB基本绘图函数plot:x轴和y轴均为线性刻度(Linears

24、cale)loglog:x轴和y轴均为对数刻度(Logarithmicscale)semilogx:x轴为对数刻度,y轴为线性刻度semilogy:x轴为线性刻度,y轴为对数刻度若要画出多条曲线,只需将座标对依次放入plot函数即可:plot(x,sin(x),x,cos(x);若要改变颜色,在座标对後面加上相关字串即可:plot(x,sin(x),c,x,cos(x),g);若要同时改变颜色及图线型态(Linestyle),也是在座标对後面加上相关字串即可:plot(x,sin(x),co,x,cos(x),g*);plot绘图函数的叁数字符颜色字符图线型态y黄色.点k黑色o圆w白色xxb蓝

25、色+g绿色*r红色-实线c亮青色:点线m锰紫色-.点虚线用subplot来同时画出数个小图形于同一个视窗之中:例如:subplot(2,2,1);plot(x,sin(x);subplot(2,2,2);plot(x,cos(x);5.5MATLAB帮助MATLAB功能强大,命令众多,很难记全,但是MATLAB提供了友好的帮助界面。因此利用MATLAB提供的帮助可以方便使用,边用边学。MATLAB帮助界面有两种形式:命令行帮助和网页浏览帮助。这里仅简单介绍命令行帮助。在MATLAB命令(command)窗口中键入helpXXX,MATLAB就会给出相应命令的功能、语法解释。例如,在MATLAB

26、命令(command)窗口中键入helpplotMATLAB就会给出如下提示:PLOTLinearplot.PLOT(X,Y)plotsvectorYversusvectorX.IfXorYisamatrix,thenthevectorisplottedversustherowsorcolumnsofthematrix,whicheverlineup.IfXisascalarandYisavector,length(Y)disconnectedpointsareplotted.PLOT(Y)plotsthecolumnsofYversustheirindex.IfYiscomplex,PLOT

27、(Y)isequivalenttoPLOT(real(Y),imag(Y).InallotherusesofPLOT,theimaginarypartisignored.Variouslinetypes,plotsymbolsandcolorsmaybeobtainedwithPLOT(X,Y,S)whereSisacharacterstringmadefromoneelementfromanyorallthefollowing3columns:bblue.point-solidggreenocircle:dottedrredxx-mark-.dashdotccyan+plus-dashedm

28、magenta*staryyellowssquarekblackddiamondvtriangle(down)triangle(up)triangle(right)ppentagramhhexagramForexample,PLOT(X,Y,c+:)plotsacyandottedlinewithaplusateachdatapoint;PLOT(X,Y,bd)plotsbluediamondateachdatapointbutdoesnotdrawanyline.PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,.)combinestheplotsdefinedbythe(X,

29、Y,S)triples,wheretheXsandYsarevectorsormatricesandtheSsarestrings.Forexample,PLOT(X,Y,y-,X,Y,go)plotsthedatatwice,withasolidyellowlineinterpolatinggreencirclesatthedatapoints.ThePLOTcommand,ifnocolorisspecified,makesautomaticuseofthecolorsspecifiedbytheaxesColorOrderproperty.ThedefaultColorOrderisli

30、stedinthetableaboveforcolorsystemswherethedefaultisblueforoneline,andformultiplelines,tocyclethroughthefirstsixcolorsinthetable.Formonochromesystems,PLOTcyclesovertheaxesLineStyleOrderproperty.PLOTreturnsacolumnvectorofhandlestoLINEobjects,onehandleperline.TheX,Ypairs,orX,Y,Striples,canbefollowedbyp

31、arameter/valuepairstospecifyadditionalpropertiesofthelines.6.程序与波形示例部分程序代码如下:%Generalparameterclearall;t_symbol=0.1;f_sample=8000;t_sample=1/8000;frequency_LL=1;frequency_HH=71633;symbols=123a;456b;789c;#0*d;ID_string=input(pleaseinputyourIdenticalString,s)SNR_dB=input(pleaseinputSNRindB);SNR=power(

32、10,SNR_dB/10);signal_amplitude=1;power_of_signal=1;sigma=sqrt(1/SNR);LL=length(ID_string);total_ss=;fornn=1:LLrow,col=identify_ID(ID_string(nn);ss1,ss2=generate_DTMF_signal(row,col);ss=ss1+ss2;total_ss=total_ssss;endfigurenoise=sigma*randn(1,length(total_ss);zz=total_ss+noise;subplot(2,1,1);plot(zz)

33、;subplot(2,1,2);plot(abs(fft(zz);zzz=zz;%detectsignalstartingpositionNN1=t_symbol/t_sample;NN2=NN1/2;NN=length(zzz)/NN1;vector=1,NN1,-500,500;%符号检测fornn=0:NN-1%对N个符号检测figurefork=1:4%对低频组4个匹配滤波器运算ss(1)=1;ss(2)=0;coef=2*pi*frequency_LL(k)/f_sample;b0=sin(coef);a1=2*cos(coef);forn=3:NN1ss(n)=a1*ss(n-1)-ss(n-2)+b0*zzz(n+nn*NN1);end%匹配滤波器输出信号的模值XX(k)=0;fortt=1:5,XX(k)=XX(k)+ss(NN2-tt)*ss(NN2-tt);endXX(k)subplot(4,2,k);plot(ss,r);AXIS(vector);end

温馨提示

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

评论

0/150

提交评论