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

下载本文档

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

文档简介

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

2、TLAB语言。 2、基本原理 2.1 双音多频(DTMF)信号 信号就是用两个不同频率的音频信号的组合来传(DTMF)双音多频输信息的一种通信信号形式,可以用数学式表示为 )1 (?)2tf(t)?A(cos2ft?coss LH分别是高频组和低频组的两个信号频率。对这两个频和f式中fLH、频率间隔近、位于人而能够听到的音频频率范围内;2率的要求是:1相邻各个音的频率呈等比关似为乐音音阶的频率间隔(按十二平均律,。),D4 293.71.059463,例如C3 130.8Hz,C4=261.7Hz系,其比值约为 高低频组而且声音悦耳。在电话系统中,这种信号在电话线路上传输,所示。1的频率已经标

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

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

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

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

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

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

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

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

11、P实现。在本次课程设计中要求使用这种方法。 DTMF解码即是在输入信号中搜索出有效的行频和列频。 2.4 数字正弦波振荡器原理 数字正弦波振荡器的功能是利用数字信号处理的方法产生正弦波?。基本原理是:信号的抽样序列?)cos(nT)tcos( 设数字正弦波振荡器要产生的波形为 1 (1)?nT?nTjj? )()?eeu)()?ny()cos(nTunT?nT( 2则其Z变换为 上式的分子与分母同时乘以?2 zy(n)可以看作是一个单位冲击函数激励了一个线性系统的冲击响可以写出该线性系统Y(z)。由Y(z)应。这个线性系统的传递函数就是的差分方程: 式中为数字角频率。?ffT?2?/ s0s令

12、输入x(n)为单位冲击函数,即 则可以得到下面的递推方程 当n2时, (2)?)?2n)n?1?y()2)(yn?cos(y0 实现时,首先将每个频率常数存在一个表中,用来初始化给定键的振荡器;再按照(2)进行迭代计算,就得到正弦序列的输出;将两个这样的输出叠加即可得到双音频的输出。每个数字输出的样本数取决于数双音频中的每一个音调之后都是同样长度的无音周字速率与采样速率。期,从而可以检测到按键的释放。 2.5 数字匹配滤波器原理(Geortzel算法) 计算接收到的DTMF信号在8个既定频率的能量,进而 确定是否有DTMF信号到达以及收到的是哪一对信号,此外通过计算接收信号的总能量来防止误判。

13、为满足检测8个DTMF频点(偏差1.5%),需计算256点FFT,因只对8个频点感兴趣,故可以直接计算8个频点附近的DFT N?1?N?j2/kn, e)x()X(k?n kk,kk,k,kk,k?k825317460n?计算数字信号的频谱可以采用DFT及其快速算法FFT,而在实现DTMF解码时,采用Goertzel算法要比FFT更快。通过FFT可以计算得到信号所有谱线,了解信号整个频域信息,而对于DTMF信号只用关心其8个行频/列频及其二次谐波信息即可(二次谐波的信息用于将DTMF信号与声音信号区别开)。此时Goertzel算法能更加快速地在输入信号中提取频谱信息。Goertzel算法实质是

14、一个两极点的IIR滤波器,其算法原理框图如图5。 图5 Geortzel算法信号流图 对应每一个频点有一个匹配滤波器,第k个频率匹配滤波器的传递函数为 其中 1k?1H(z)?H(z)?1?Wz, 1kN2k2?1?zcos?2z1k?k2fk?fkj?k22?2?k ?sin?e?cosjW?N , kkNkfN?fNs对应的前、后向差分方程为: 后一个方程无需全部计算,只需要在n=N时刻,即最后的输出时刻计算。 如果考虑同步相位误差,也可以在n=N时刻附近计算一段时间内的输出。 前向差分方程也可以改写为便于计算的递归形式: v(n)?0,n?0。在n=N时刻既可以得到所需要的并令初始值为X

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

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

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

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

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

20、的数学运算符号,以及幂次运算()。MATLAB将所有变量均存成double的形式,所以不需经过变量声明。MATLAB同时也会自动进行存储器的使用和回收,而不必像C语言,必须由使用者一一指定。 变量也可用来存放向量或矩阵,并进行各种运算,如下例的行向量(Row vector)运算: x = 1 3 5 2; y = 2*x+1 y = 3 7 11 5 5.2 控制命令 5.2.1 for语句,其基本形式为: for 变量 = 矩阵; 运算式; end 其中变量的值会被依次设定为矩阵的每一行,来执行介于for和end之间的运算式。因此,若无意外情况,运算式执行的次数会等于矩阵的行数。 举例来说,

21、下列命令会产生一个长度为6的调和数列: x = zeros(1,6); % x是一个16的零矩阵 for i = 1:6, x(i) = 1/i; end 语句 while5.2.2 基本形式为: 条件式; while 运算式; end 例如先前产运算式就会一再被执行。 也就是说,只要条件示成立,while圈改写如下:生调和数列的例子,我们可用 x = zeros(1,6); % x是一个16的零矩阵 i = 1; while i 0.5, disp(Given random number is greater than 0.5.); end 5.2.4 MATLAB文件 若要一次执行大量的M

22、ATLAB命令,可将这些命令存放于一个扩展m为扩展名,因此通称m命令的文件都以MATLAB的文件。包含m名为文件,只要直接键入文件名,就可执行其所包含的命令。严格来说,m文件可再细分为命令集(Scripts)及函数(Functions)。 命令集的效果和将命令逐一输入完全一样,因此若在命令集可以直接使用工作空间的变量,而且在命令集中设定的变量,也都在工作空间中看得到。 函数则需要用到输入参数和输出参数来传递变量,这就像是C语言的函数。在调用函数时,你只能经由输入参数来控制函数的输入,经由输出参数来得到函数的输出,但所有的暂时变量都会随着函数的结束而消失。 5.3 MATLAB常用的数学函数 a

23、bs(x):标量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 sign(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为底 2log2(x):以为底的对数

24、数对为以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): 向量x的元素个数 sum(x): 向量x的元素总和 cumsum(x): 向量x的累计元素总和 dot(x, y): 向量x和y的内积 cross(x, y): 向量x和y的外积 5.4 MATLAB 绘图 MATLAB不但擅长于矩阵相关的数值运算,

25、还适合于各种科学绘图。这里简介几种基本平面绘图命令。 plot是绘制一维曲线的基本函数,但在使用此函数之前,需要先定义曲线上每一点的x及y座标。下例可画出一条正弦曲线: close all; x=linspace(0, 2*pi, 100); % 100个点的x座标 y=sin(x); % 对应的y座标 plot(x,y); MATLAB基本绘图函数 plot: x轴和y轴均为线性刻度(Linear scale) loglog: x轴和y轴均为对数刻度(Logarithmic scale) semilogx: x轴为对数刻度,y轴为线性刻度 semilogy: x轴为线性刻度,y轴为对数刻度

26、若要画出多条曲线,只需将座标对依次放入plot函数即可: plot(x, sin(x), x, cos(x); 若要改变颜色,在座标对後面加上相关字串即可: plot(x, sin(x), c, x, cos(x), g); 若要同时改变颜色及图线型态(Line style),也是在座标对後面加上相关字串即可: plot(x, sin(x), co, x, cos(x), g*); plot绘图函数的叁数 字符 颜色 字符 图线型态 点y 黄色. k 黑色 o 圆 xx w 白色 + b + 蓝色 * g 绿色 实线红色 - r 点线 亮青色 c : 点虚线锰紫色m -. 用subplot来同

27、时画出数个小图形于同一个视窗之中:例如: subplot(2,2,1); plot(x, sin(x); subplot(2,2,2); plot(x, cos(x); 5.5 MATLAB帮助 MATLAB功能强大,命令众多,很难记全,但是MATLAB提供了友好的帮助界面。因此利用MATLAB提供的帮助可以方便使用,边用边学。MATLAB帮助界面有两种形式:命令行帮助和网页浏览帮助。这里仅简单介绍命令行帮助。在MATLAB命令(command)窗口中键入help XXX,MATLAB就会给出相应命令的功能、语法解释。 例如,在MATLAB命令(command)窗口中键入help plot M

28、ATLAB就会给出如下提示: PLOT Linear plot. PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix, then the vector is plotted versus the rows or columns of the matrix, whichever line up. If X is a scalar and Y is a vector, length(Y) disconnected points are plotted. PLOT(Y) plots the columns of Y vers

29、us their index. If Y is complex, PLOT(Y) is equivalent to PLOT(real(Y),imag(Y). In all other uses of PLOT, the imaginary part is ignored. Various line types, plot symbols and colors may be obtained with PLOT(X,Y,S) where S is a character string made from one element from any or all the following 3 c

30、olumns: b blue . point - solid g green o circle : dotted r red x x-mark -. dashdot c cyan + plus - dashed m magenta * star y yellow s square k black d diamond v triangle (down) triangle (up) triangle (right) p pentagram h hexagram For example, PLOT(X,Y,c+:) plots a cyan dotted line with a plus at ea

31、ch data point; PLOT(X,Y,bd) plots blue diamond at each data point but does not draw any line. PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,.) combines the plots defined by the (X,Y,S) triples, where the Xs and Ys are vectors or matrices and the Ss are strings. For example, PLOT(X,Y,y-,X,Y,go) plots the data twic

32、e, with a solid yellow line interpolating green circles at the data points. The PLOT command, if no color is specified, makes automatic use of the colors specified by the axes ColorOrder property. The default Color Order is listed in the table above for color systems where the default is blue for on

33、e line, and for multiple lines, to cycle through the first six colors in the table. For monochrome systems, PLOT cycles over the axes LineStyleOrder property. PLOT returns a column vector of handles to LINE objects, one handle per line. The X,Y pairs, or X,Y,S triples, can be followed the of propert

34、ies additional specify to pairs parameter/value by lines. 6. 程序与波形示例 部分程序代码如下: %General parameter clear all; t_symbol=0.1; f_sample=8000; t_sample=1/8000; frequency_LL=697 770 852 941; frequency_HH=1209 1336 1477 1633; symbols=1 2 3 a ;4 5 6 b ;7 8 9 c;# 0 * d; ID_string=input(please input your Iden

35、tical String,s) SNR_dB =input(please input SNR in dB); SNR=power(10,SNR_dB/10); signal_amplitude=1; power_of_signal=1; sigma=sqrt(1/SNR); LL=length(ID_string); total_ss=; for nn=1:LL row,col=identify_ID(ID_string(nn); ss1,ss2=generate_DTMF_signal(row,col); ss=ss1+ss2; total_ss=total_ss ss; end figur

36、e noise=sigma*randn(1,length(total_ss); zz=total_ss + noise; subplot(2,1,1); plot(zz); subplot(2,1,2); plot(abs(fft(zz); zzz=zz; Ttect signal starting position NN1=t_symbol/t_sample; NN2=NN1/2; NN=length(zzz)/NN1; vector=1,NN1,-500,500; % 符号检测 for nn=0:NN-1 %对N个符号检测 figure for k=1:4 %对低频组4个匹配滤波器运算 ss(1)=1; ss(2)=0; coef=2*pi*frequency_LL(k)/f_sample; b0=sin(coef); a1=2*cos(coef); for n=3:NN1 ss(n)=a1*ss(n-1)-ss(n-2)+b0 * zzz(n+nn*NN1); end %匹配滤波器输出信号的模值 XX(k

温馨提示

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

评论

0/150

提交评论