




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DTMF 中的拨号信号发生 与检测系统仿真摘要信号处理的基本概念和分析方法已应用于许多不同领域和学科中,尤其是数字计算机的出现和大规模集成技术的高度发展,有力地推动了数字信号处理技术的发展和应用。信号处理的目的就是对被观测到的信号进行分析,变换,综合,估计和识别等。数字信号处理可以用硬件和软件两种方法来实现。主要阐述了DTMF 编码的原理以及通过MATLAB产生DTMF 信号的方法,利用Goertzel 算法对输入的DTMF 信号提取频谱信息, 从而对输入信号进行检测、解码.1、任务、性质与意义用数学模型的方法对信息传输的过程进行仿真,是分析、设计及改进通信系统性能的重要手段。本次课程设计的任
2、务是综合运用通信原理、数字信号处理等课程所学知识,实现一个双音多频(DTMF)信号传输过程的软件仿真。本次课程设计的性质是通信原理、数字信号处理等课的综合实践环节。它的意义在于,通过本次课程设计可以从理论上加深对有关通信、数字信号处理原理的综合理解,了解DTMF信号原理和用数字信号处理的方法实现DTMF信号的产生、传输与检测的过程。还可以从实践能力上掌握一门新的计算机编程工具MATLAB语言。2、基本原理2.1 双音多频(DTMF)信号双音多频(DTMF)信号就是用两个不同频率的音频信号的组合来传输信息的一种通信信号形式,可以用数学式表示为 (1)式中fH和fL分别是高频组和低频组的两个信号频
3、率。对这两个频率的要求是:1、位于人而能够听到的音频频率范围内;2、频率间隔近似为乐音音阶的频率间隔(按十二平均律,相邻各个音的频率呈等比关系,其比值约为1.059463,例如C3 130.8Hz,C4=261.7Hz,D4 293.7)。这种信号在 线路上传输,而且声音悦耳。2.2 双音多频信号软件产生与检测为了产生DTMF信号,DSP用软件产生两个正弦波叠加在一起后发送,软件具体实现方式可以有三种方法:(1)用软件模拟DSP的方式产生两个数字正弦波振荡器并把输出合成起来,建立所希望的双音频。(2)通过产生的某频率的方波后再附加滤波器滤出二次以上的谐波,产生DTMF信号。(3)查表输出产生D
4、TMF信号。软件检测DTMF信号主要有以下方法:(1)利用离散傅立叶变换(DFT)及其快速算法(FFT),求取DTMF信号频谱的峰值点,进而利用峰值点的频率判断发送的数字。这种方法的缺点是计算量大,不利于实时处理。但是如果使用MATLAB软件仿真则可以用很简单的几条语句实现。(2)对于DTMF信号的波形,波形过零点数量决定了低频信号的频率,而极值点数量决定了高频信号的频率。因此通过软件分别计算出高频频率和低频频率,从而实现DTMF的解码。 这里选择采样频率为8K,已知每一个信号的频率至少持续40ms的时间,我们对DTMF采样160个点,即20ms,这样总会有一个20ms的采样点全部落在40ms
5、的发送范围内,对采样的点进行6次求和取平均,去掉噪声成分,然后分别计算过零点的数目a和极值点的数目b,对应频率可以计算为: 既然可以求出DTMF信号的一组频率值,那么就可以得出对应 号码值。这种算法比较适合于单片机硬件实现,但是其抗噪声性能较差。 (3)计算接收到的DTMF信号在8个既定频率的能量,进而确定是否有DTMF信号到达以及收到的是哪一对信号,此外通过计算接收信号的总能量来防止误判。采用Geortzel算法可进一步提高计算效率,Goertzel算法实质是一个两极点的IIR滤波器,对应每一个频点有一个匹配滤波器,在抽样时刻检测。这种方法理论上属于最佳接收方法,而且算法有利于用DSP实现。
6、在本次课程设计中要求使用这种方法。DTMF解码即是在输入信号中搜索出有效的行频和列频。2.3 数字正弦波振荡器原理数字正弦波振荡器的功能是利用数字信号处理的方法产生正弦波信号的抽样序列。基本原理是:设数字正弦波振荡器要产生的波形为 (1)则其Z变换为上式的分子与分母同时乘以y(n)可以看作是一个单位冲击函数激励了一个线性系统的冲击响应。这个线性系统的传递函数就是Y(z)。由Y(z)可以写出该线性系统的差分方程:式中为数字角频率。令输入x(n)为单位冲击函数,即则可以得到下面的递推方程当n<0时,y(n)=0当n=0时,y(0)=0当n=1时,当n=2时,当n>2时, (2) 实现时
7、,首先将每个频率常数存在一个表中,用来初始化给定键的振荡器;再按照(2)进行迭代计算,就得到正弦序列的输出;将两个这样的输出叠加即可得到双音频的输出。每个数字输出的样本数取决于数字速率与采样速率。双音频中的每一个音调之后都是同样长度的无音周期,从而可以检测到按键的释放。2.4 数字匹配滤波器原理(Geortzel算法)计算接收到的DTMF信号在8个既定频率的能量,进而 确定是否有DTMF信号到达以及收到的是哪一对信号,此外通过计算接收信号的总能量来防止误判。为满足检测8个DTMF频点(偏差1.5%),需计算256点FFT,因只对8个频点感兴趣,故可以直接计算8个频点附近的DFT ,计算数字信号
8、的频谱可以采用DFT及其快速算法FFT,而在实现DTMF解码时,采用Goertzel算法要比FFT更快。通过FFT可以计算得到信号所有谱线,了解信号整个频域信息,而对于DTMF信号只用关心其8个行频/列频及其二次谐波信息即可(二次谐波的信息用于将DTMF信号与声音信号区别开)。此时Goertzel算法能更加快速地在输入信号中提取频谱信息。Goertzel算法实质是一个两极点的IIR滤波器,其算法原理框图如图5。图5 Geortzel算法信号流图对应每一个频点有一个匹配滤波器,第k个频率匹配滤波器的传递函数为其中, , 对应的前、后向差分方程为:后一个方程无需全部计算,只需要在n=N时刻,即最后
9、的输出时刻计算。如果考虑同步相位误差,也可以在n=N时刻附近计算一段时间内的输出。前向差分方程也可以改写为便于计算的递归形式:并令初始值为。在n=N时刻既可以得到所需要的X(k)。由于在DTMF检测中,输入的信号是实数序列,并不需要检测出8个行频/列频的相位,只需要计算出其幅度平方即可。因此计算|X(k)|2如下:这里分别表示状态变量在N和N-1时刻的值。在输入信号中检测DTMF信号,并将其转换为实际的数字,这一解码过程本质是连续的过程,需要在输入的数据信号流中连续地搜索DTMF信号频谱的存在。整个检测过程分两步:首先采用Goertzel算法在输入信号中提取频谱信息;接着作检测结果的有效性检查
10、。软件流程图(1) 输入键号(2) 生成DTMF信号(时域、频域显示)(3) 产生高斯噪声(时域、频域显示)(4) 信道传输(高斯白噪声信道,可选作带限滤波器信道)(5) 接收端随机延迟(30个点以内)(6) 匹配滤波接收(7) DTMF信号到达检测(8) DTMF信号识别(时域、频域显示)(9) DTMF键号识别3. 工作内容 3.1图形 拨号面板的制作利用 GUI 图形用户界面设计工具制作 拨号面板,把 DTMF 信号和 机的键盘矩阵对应起来。其中选用我们熟悉的 10 个数字键 0 9 , 2 个功能键“ * ”、“”,另四个键省略。按照图 1 机键盘矩阵的排列方式制作四行三列的按键控件。
11、每个按键可用 ( Push Button )添加。然后,为了更直观的反映对应的按键号码,可以设置一个编辑框,用于动态的显示拨号号码,模拟实际 的拨号显示窗口。编辑框可用 ( Edit Text )添加。另外,为了图形 拨号面板的简洁美观,可以添加空白区域作为背景,并用静态文本框制作文字信息。背景可用 ( Frame )添加,静态文本框可用 ( Static Text )添加。最终利用 GUI 图形用户界面设计工具生成的图形 拨号面板用于拨号音的合成产生部分,如下图所示。这里将其保存为tu1.fig文件。3.2. DTMF 信号的产生合成 现在将对上节制作的图形 拨号面板上的各控件单位
12、的动作和变化进行设置,即对 tu1.m 文件进行编辑。其主要的功能是使对应的按键,按照表 1 的对应关系产生相应的拨号音,完成对应行频及列频的叠加输出。此外,对于图形界面的需要,还要使按键的号码数字显示在拨号显示窗口中。 鉴于 CCITT 对 DTMF 信号规定的指标,这里每个数字信号取 1000 个采样点模拟按键信号,并且每两个数字之间用 100 个 0 来表示间隔来模拟静音。以便区别连续的两个按键信号。间隔的静音信号也是在按键时产生的。 以按键 0 为例,简单介绍拨号音产生的过程: % 按键 0 的响应函数 function varargout = pushbutton0_Callback
13、(h, eventdata, handles, varargin) n=1:1000; % 每个数字 1000 个采样点表示 d0=sin(0.7217*n)+sin(1.0247*n); % 对应行频列频叠加 n0=strcat(get(handles.edit1,'string'),'0'); % 获取数字号码 set(handles.edit1,'string',n0); % 显示号码 space=zeros(1,100); %100 个 0 模拟静音信号 global NUM phone=NUM,d0; NUM=phone,space;
14、% 存储连续的拨号音信号 wavplay(d0,8192); % 产生拨号音 wavplay(d11,8192); 3.3DTMF 信号的检测识别 要实现 拨号音( DTMF )信号的检测识别,可以通过直接计算付里叶变换得到输入信号的组成频率。这里采用 FFT 算法对信号进行解码分析。首先对接收到的数字信号作 FFT 分析,计算出其幅频谱,进而得到功率谱,组成输入信号的频率必定对应功率谱的峰值。对于连续的双音多频( DTMF )信号,需要把有效的数字拨号信号从静音间隔信号中分割提取出来,然后再用 FFT 算法对信号进行解码分析。 MA
15、TLAB 实现信号音的识别如下: function varargout = pushbuttonNUM_Callback(h, eventdata, handles, varargin) global NUM wavplay(NUM,8192); L=length(NUM); n=L/1100; number='' for i=1:n j=(i-1)*1100+1; d=NUM(j:j+999); % 截取出每个数字 f=fft(d,2048); % 以 N=2048 作 FFT 变换 a=abs(f); p=a.*a/10000; % 计算功率谱 num(1)=find(p(
16、1:250)=max(p(1:250); % 找行频 num(2)=300+find(p(300:380)=max(p(300:380); % 找列频 if (num(1) < 180) row=1; % 确定行数 elseif (num(1) < 200) row=2; elseif (num(1) < 220) row=3; else row=4; end if (num(2) < 320) column=1; % 确定列数 elseif (num(2) < 340) column=2; else column=3; end z=row,column; % 确定数字 if z=4,2 tel=0; elseif z=1,1 tel=1; elseif z=1,2 tel=2; elseif z=1,3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商场装修合同
- 三水杨酸胆碱镁销售合同3篇
- (翼人2024版)科学一年级上册2.5 简单工具 课件(新教材)
- 瑞典简介课件
- 安全方面培训班名称大全课件
- 理财实战课件
- 改造工程加固方案咨询(3篇)
- 安全教训培训课件
- 房屋工程规划方案(3篇)
- 地铁工程复工方案(3篇)
- 数字货币投资入门指南
- 2024年“学宪法、讲宪法”应知应会题库
- HG-T 5367.5-2022 轨道交通车辆用涂料 第5部分:防结冰涂料
- 原油加工承揽合同
- 基于人工智能的药物不良反应预测与预警系统
- QCT268-2023汽车冷冲压加工零件未注公差尺寸的极限偏差
- 【大数据“杀熟”的法律规制探究17000字(论文)】
- 队列训练齐步的行进与立定
- 初中九年级英语课件宾语从句 公开课比赛一等奖
- 患者安全和护理质量的关联
- 社区获得性肺炎诊治进展
评论
0/150
提交评论