程控用户DTMF号码识别仿真实验模板
实验3双音多频(DTMF)接收与检测单元实验
实验3双音多频(DTMF)接收与检测单元实验一、实验目的1.了解电话号码双音多频信号在程控交换系统中的发送和接收方法。
2.熟悉该电路的组成及工作过程。
二、预习要求1.认真预习有关双音多频方面的相关内容。
三、实验仪器仪表1.现代程控交换实验系统一台2.电话机四部3.20MHz 示波器一台四、实验电路工作过程(一)双音多频拨号和脉冲拨号简单介绍在电话机中,有两种拔号方式,即脉冲拨号和双音多频拔号。
双音多频拨号方式中的双音多频是指用两个特定的单音频信号的组合来代表数字或功能,两个单音频的频率不同,所代表的数字和功能也不同,在双音多频电话机中有 16 个按键,其中有 10 个数字键 0-9,6 个功能键*、#、A、 B、C、D,按照组合的原理,它必须有 8 种不同的单音频信号,由于采用的频率有 8 种,故称之为多频,又因为 8 种频率中任意抽出 2 种进行组合。
又称其为 8 中取 2 的编码方法。
表 5-1双音多频,简写 DTMF(DTMF=Dual Tone Multifrequency)图 5-1 一个典型的 DTMF 发送电路原理框图DTMF 发送器的原理与构成如图 5-1 所示,它主要包括:(1) 晶体振荡器——外接晶体(通常采用 3.58MHz)与片内电路构成振荡器,经分频产生参考信号。
(2) 键控可变时钟产生电路——它是一种可控分频比的分频器,通常由 n 级移位寄存器与键控反馈逻辑单元组成。
(3) 正弦波产生电路——它是由正弦波编码器与 D/A 变换器构成,通常,可变速时钟信号先经 5 位寄存器,产生一组 5 位移位代码,再由可编程逻辑阵列(PLA)将其转换成二进制代码,加到 D/A 变换器形成台阶型正弦波。
显然台阶的宽度等于时钟频率的倒数,这样形成的正弦波信号频率必然对应于时钟的速率和按键的号码。
(4) 混合电路——将键盘所对应的行、列正弦波信号(即低、高群 fL 、 fH )相加、混合成双音信号输出。
DTMF信号辨识实验报告(北航电子信息工程学院dsp实验)(精)
DTMF 信号辨识实验报告班级:xxxxxxxx 学号:11111111姓名:xx一、实验目的熟悉双音频信号的产生、分析与检测原理熟悉MATLAB 工具箱的使用二、实验原理及要求双音多频(DTMF是按键电话通信的德国名称,它等效于贝尔系统中所用的接触音频系统。
在DTMF 通信系统中,高频音与低频音的一个组合表示表示一个特定的数字或者字符(*和#。
8个频率按以下矩阵图提供给16个字符或数字。
其中12个(数字和*、#)分配如图示,其他4个保留备用。
拿起电话听筒放在耳边会听到拔号音,若按下重拔(Redial键,则电话机会自动重拔上次所拔电话号码,对双音多频电话机,此时会在耳边听到代表不同数字的声音,每个数字都由二个不同频率的信号组成。
从.wav 文件中提取频谱的方法:你可以用matlab 函数wavread(具体用法请参阅matlab help 把数据从.wav 文件中读出来(这些数据是时域上的的采样数据,采样率可以从wavread 函数的返回值中获得),并采用一定手段设定一个阈值,当数据的幅值大于这个阈值时就确定此时为数字按键声音数据的开始,然后从此向后取一定数量的采样数据(如512点),并对它进行fft 变换,得到这些数据对应的频谱,从而确定该声音文件对应的数字键。
该实验中已经提供给你一些录好的加有背景噪音的电话数字按键的声音文件(.wav文件,这些文件中包括了一些电话号码(如82317216,013671367249,它们的位数不一定相同)。
请你应用上面提供的方法,识别出这些电话号码。
你所编写的处理程序要能达到如此程度:以一个包含拔号信号的数据文件为输入,其输出就是电话号码,处理过程中不需要人工干预(可以采用display 函数显示这些数字键)。
三、实验内容及结果:以所给定的第一个双音频信号(1.mat )为例。
1、读取双音频信号文件:fh = [1209 1336 1477 1633]; fl = [697 770 852 841];K=[31,34,38,42,18,20,22,24];M = 20; z1=input('信号='; plot(z1生成双音频信号波形如下图所示:2、加滑动平均窗,对信号采样实现该功能的程序如下: L = length(z1; for j = 1:Lz2(1,j = z1(1,j^2; endfor r = 1:L-My(1,r=sum( [z2(r:r+M]/M; end figure; plot(y(1,:;经滑窗处理后的波形如下图所示:0200040006000800010000120000200040006000800010000120003、提取部分信号进行频率变换实现该功能代码如下:ami=max(y/2; thup=1.05; flag=0;d=1;for f=1:size(z1,2if flag==0 && (y(1,f/ami>thup e(d=f;flag=1; endif flag==1 && (y(1,f/ami<0.3 d=d+1;flag=0; end if d>8 break; end end figure; forg=1:8 for l = 1:205h=e(g; z3(1,l = z1(1,l+h-1; endsubplot(2,4,g; plot(z3; N=205; fori=1:8 v(1=z3(1;v(2=2*cos(2*pi*K(i/N*v(1+z3(2; for n=3:205v(n=2*cos(2*pi*K(i/N*v(n-1-v(n-2+z3(n; endtemp=v(N^2+v(N-1^2-2*cos(2*pi*K(i/N*v(N*v(N-1; w(i = sqrt(temp; w1(g,i = w(i; end频谱变换前的信号波形:频谱变换后的离散频谱分布:4、根据频谱判断输入的号码实现该功能的代码如下: limit=15; for t=5:8 ifw(t>limit break; end endfor s=1:4 if w(s>limit02004000200400020040002004000200400020040002004000200400510 051015202551005101520250510152025510152025DTMF 信号辨识实验报告 break; end end if t==5 Numout=s; elseif t==6 Numout=s+3; elseif t==7 Numout=t-1+s; else Numout=0; end result(g=Numout; end figure; forplotnumber = 1:8 subplot(2,4,plotnumber; stem(w1(plotnumber,:; end disp('检测到的电话号码是'; disp(result; 第一个双音频文件的运行结果如下: 2012 年 12 月根据 1.mat 检测出所拨的电话号码为:64593718. 同理,将其余 5 个.mat 文件进行同样的操作,可得如下电话号码: 2.mat 检测到电话号码为:6 3.mat 检测到电话号码为:8 4.mat 检测到电话号码为:8 5.mat 检测到电话号码为:8 6.mat 检测到电话号码为:6 4 2 2 2 4 5 3 3 3 5 9 1 1 1 9 3 7 7 7 3 7 2 2 2 7 1 4 4 4 1 8 3 3 3 8 四、实验感想通过本次实验,将离散时间进好处理的理论用于实践,我们真正感觉到了离散时间信号处理技术的魅力,将拨电话号码的声音,通过对其频率的检测,从而得出所拨打的电话号码,正如老师上课开玩笑所说,学会了这项技术,我们拥有了当特工的最基本的能力。
程控交换实验报告
北京联合大学课程名称:程控交换实验报告学院:信息学院专业:通信工程班级: 0908030403 学号: 20090803040330 姓名:沈亮2011年11 月20 日实验一程控交换原理实验系统及控制单元实验一、实验目的1.熟悉程控交换原理实验系统的系统的整体结构。
2.体会程控交换原理实验系统进行电话通信时的工作过程。
二、预习要求预习《程控数字交换原理与应用》和《单片微型计算机原理与接口技术》中的有关内容。
三、实验仪器1.程控交换实验箱一台2.万用表一块3.电话单机两个四、实验原理1.实验箱简介程控交换原理实验箱是由北京联合大学和北京掌宇集电科技有限公司联合研制的一款实验箱。
该实验箱以FPGA芯片为主体,可完成电话程控交换技术的各类实验。
该实验箱由四个用户模块和一个外线模块(暂缺)。
用户一的默认电话号码为1234,用户二的默认电话号码为2345,用户三的默认电话号码3456,用户四的默认电话号码4567。
图1-1系统实物图图1-1是该实验系统的原理框图,图1-2是该实验系统的方框图。
(1)用户模块电路:主要完成BORSCHT七种功能,它由下列电路组成:①用户线接口电路②二\四线变换器③ PCM编译码电路(2)FPGA交换网络系统:主要完成时分交换的功能,时隙信号产生,双音多频DTMF 接收检测电路,它由下列电路组成:①时分交换网络系统②时隙产生电路③多种信号音电路(主要完成各种信号音的产生与发送),它由下列电路组成:1) 450Hz数字拨号音电路2)忙音发生电路3)回铃音发生电路4) 25Hz振铃信号电路④双音多频DTMF接收检测电路(3)显示及数据存储模块主要完成对系统电路的各种控制,输出显示信息等各种功能:①液晶显示电路:显示主叫方电话号码及状态监控。
②中继电路③和PC机通信电路。
(4)系统工作电源主要完成系统所需要的各种电源,本实验系统中有+5V,-5V,+12V,-12V,-48V,-24V等6组电源,由下列电路组成:①内置工作电源:-48V,-12V,+5V,+12V②稳压电源:-24V,-5V2.工作过程:以下是CPU中央集中控制处理系统的主要工作过程,要全面实现上述工作过程,则要有软件支持,该软件程序流程图见图1-3。
DTMF信号的产生与识别
DTMF 信号的产生与识别 实验报告
一、概述
随着 DSP 芯片及相关技术的发展,DSP 得到了人们的日益关注和越来越广 泛的应用。德州仪器(TI)公司推出的 TMS320VC54x 系列具有高性能、低功耗 等优良性能,受到用户的欢迎,已广泛地应用于有线和无线通讯、仪器仪表、雷 达、图像处理、工业控制、语音处理等领域。
for(n=0;n<4;n++) {k1=2*n; k2=k1+1; k3=(m+4)*2; k4=k3+1; z[0]=a[k1]>3500; z[1]=a[k2]<200;
现在利用Goertzel 算法来识别DTMF信号 Goertzel 算法 直接计算 ,需要很多复系数,即使只算一点的 也需要 个系数。采用数字信
号处理中的
算法,则可它利用二极点的 滤波器计算离散傅立叶变化值,快速有效的提取输入信号的频谱信息。
长度为 的 定义为:
其中,b = Asin ω0 , a1 =-2cosω0 , a2 =1, ω0 =2π f0 / fa , f0 为正弦波频率, fa 为抽 样频率, ω0 为归一化数字频率。 对应的差分方程为:
振荡器对应的单位取样响应力为:
DTMF 信号的产生与识别 实验报告
即给定脉冲输入时,二阶系统输出一个纯净的正弦波。
DTMF 信号的产生及识别都要以相关算法为基础。在此我们提出采用 Goertzel 算法来实现 DTMF 信号的产生及检测 ,并详细推导了利用该算法实现 滤波器组的方法及用仿真软件进行模拟设计的过程。
二、算法原理以及软件仿真
DTMF
DTMF (Double Tone Multi frequency) 技术主要用于在电话频段内传送简单的 操作信号。在 DTMF 通信系统中共有8个频率,分为4个高频音和4个低频音。用1 个高频音和1个低频音的组合来表示一个信号。这样,共能提供16种组合,分别代 表 16 种信号。
双音多频(DTMF)接收与检测实验
实验4 双音多频(DTMF )接收与检测实验一、实验目的1.观测电话机发送的DT M F 信号波形;2.了解电话号码双音多频信号在程控交换系统中的接收和检测方法; 3.熟悉该电路的组成结构及工作过程。
二、实验电路工作过程DTMF 接收器包括D T MF 分组滤波器和D T MF 译码器,其基本原理如图4-1所示。
DTMF 接收器先经高、低群带通滤器进行fL / f H 区分,然后过零检测、比较,得到相应于D T MF 的两路f L 、fH 信号输出。
该两路信号经译码、锁存、缓冲,恢复成对应于16种D T MF 信号音对的4比特二进制码(D 1~D4)。
图4-1 典型DTM F 接收器原理框图图4-2 MT8870芯片管脚排列在本实验系统电路中,DTMF 接收器采用的是M T8870芯片。
图4-2为管脚排列图。
1.电路的基本特性(1)提供DTM F 信号分离滤波和译码功能,输出相应16种DTM F 频率组合的4位 并行二进制码。
(2)可外接3.5795M H z 晶体,与内含振荡器产生基准频率信号。
(3)具有抑制拨号音和模拟信号输入增益可调的能力。
(4)二进制码为三态输出。
18VDDD1 D2 D3 D4(4)提供基准电压(VDD\2)输出。
(5)电源+5V(6)功耗15mw(7)工艺CMOS(8)封装18引线双列直插2.管脚简要说明IN+ ,IN-运放同、反相输入端,模拟信号或D T MF信号从此端输入。
FB 运放输出端,外接反馈电阻可调节输入放大器的增益。
VREF 基准电压输出。
IC 内部连接端,应接地。
OSC1,OSC0振荡器输入、输出端,两端外接3.5795MH z晶体。
EN 数据输出允许端,若为高电平输入,即允许D01~D04输出,若为低电平输入,则禁止D01~D04输出。
DTMF信号产生与检测-实验报告
DTMF信号产生与检测-实验报告DSP 课程设计实验报告DTMF 信号的产生与检测指导老师:申艳老师时时间:2014 年年 7 月月 18 日1设计任务书双音多频 DTMF(Dual Tone Multi Frequency)信号是在按键式电话机上得到广泛应用的音频拨号信令,一个 DTMF 信号由两个频率的音频信号叠加构成。
这两个音频信号的频率分别来自两组预定义的频率组:行频组和列频组。
每组分别包括 4 个频率,据 CCITT 的建议,国际上采用的这些频率为 697Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz和 1633Hz 等 8 种。
在每组频率中分别抽出一个频率进行组合就可以组成 16 种 DTMF 编码,从而代表16 种不同的数字或功能键,分别记作 0~9、*、#、A、B、C、D。
如下图所示。
图 1-1 双音多频信号编码示意图要用 DSP 产生 DTMF 信号,只要产生两个正弦波叠加在一起即可;DTMF 检测时采用改进的 Goertzel 算法,从频域搜索两个正弦波的存在。
实验目的掌握 DTMF 信号的产生和检测的 DSP 设计可使学生更加透彻的理解和应用奈奎斯特采样定理,与实际应用相结合,提高学生系统地思考问题和解决实际问题的能力。
通过对 DSP信号处理器及 D/A 和 A/D 转换器的编程,可以培养学生 C 语言编程能力以及使用 DSP 硬件平台实现数字信号处理算法的能力。
技术指标及设计要求基本部分 1) 使用C语言编写DSP下DTMF信号的产生程序,要求循环产生0~9、*、#、A、B、C、D对应的DTMF信号,并且符合CCITT对DTMF信号规定的指标。
2) 使用C语言编写DSP下DTMF信号的检测程序,检测到的DTMF编码在CCS调试窗口中显示,要求既不能漏检,也不能重复检出。
3) DTMF信号的发送与接收分别使用不同的实验板完成。
发挥部分 1)使用一个DSP工程同时实现DTMF信号的发送和检测功能。
双音多频(DTMF)接收与检测实验
实验4 双音多频(DTMF)接收与检测实验一、实验目的1.观测电话机发送的DTMF信号波形;2.了解电话号码双音多频信号在程控交换系统中的接收和检测方法;3.熟悉该电路的组成结构及工作过程。
二、实验电路工作过程DTMF接收器包括DTMF分组滤波器和DTMF译码器,其基本原理如图4-1所示。
DTMF接收器先经高、低群带通滤器进行f L / f H区分,然后过零检测、比较,得到相应于DTMF的两路f L、f H信号输出。
该两路信号经译码、锁存、缓冲,恢复成对应于16种DTMF信号音对的4比特二进制码(D1~D4)。
图4-1 典型DTMF接收器原理框图18 VDD图4-2 MT8870芯片管脚排列在本实验系统电路中,DTMF接收器采用的是MT8870芯片。
图4-2为管脚排列图。
1.电路的基本特性(1)提供DTMF信号分离滤波和译码功能,输出相应16种DTMF频率组合的4位并行二进制码。
(2)可外接3.5795MHz晶体,与内含振荡器产生基准频率信号。
(3)具有抑制拨号音和模拟信号输入增益可调的能力。
(4)二进制码为三态输出。
(4)提供基准电压(VDD\2)输出。
(5)电源+5V(6)功耗15mw(7)工艺CMOS(8)封装18引线双列直插2.管脚简要说明IN+ ,IN-运放同、反相输入端,模拟信号或DTMF信号从此端输入。
FB 运放输出端,外接反馈电阻可调节输入放大器的增益。
VREF 基准电压输出。
IC 内部连接端,应接地。
OSC1,OSC0振荡器输入、输出端,两端外接3.5795MHz晶体。
EN 数据输出允许端,若为高电平输入,即允许D01~D04输出,若为低电平输入,则禁止D01 ~D04输出。
D01~D04 数据输出,它是相应于16种DTMF信号(高,低单音组合)的4位二进制并行码,为三态缓冲输出。
CI\GT 控制输入,若此输入电压高于门限值VTSt,则电路将接收DTMF单音对,并锁存相应码字于输出,若输入电压低于VTSt,则电路不接收新的单音对。
DTMF实验报告
DTMF信号的产生及检测实验报告--------在MATLAB环境下的仿真实现学号:20072121016 专业:07电子信息工程姓名:黎天送一、实验目的:DTMF(Double Tone Multi Frequency,双音多频)作为实现电话号码快速可靠传输的一种技术,它具有很强的抗干扰能力和较高的传输速度,因此,可广泛用于电话通信系统中。
但绝大部分是用作电话的音频拨号。
另外,它也可以在数据通信系统中广泛地用来实现各种数据流和语音等信息的远程传输。
此次的目的是研究其在MATLAB下的仿真。
二、实验内容:1、DTMF的原理DTMF是用两个特定的单音频组合信号来代表数字信号以实现其功能的一种编码技术。
两个单音频的频率不同,代表的数字或实现的功能也不同。
这种电话机中通常有16个按键,其中有10个数字键0~9和6个功能键*、#、A、B、C、D。
由于按照组合原理,一般应有8种不同的单音频信号。
因此可采用的频率也有8种,故称之为多频,又因它采用从8种频率中任意抽出2种进行组合来进行编码,所以又称之为“8中取2”的编码技术。
根据CCITT的建议,国际上采用的多种频率为687Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz和1633Hz等8种。
用这8种频率可形成16种不同的组合,从而代表16种当按下一个数据键,例如“5”时,则产生频率为770HZ 和1336HZ 的两个正弦波,并叠加。
在用MATLAB 仿真时,用查表法先建立拨号数字的表矩阵,以求出数字键对应的频率。
在处理数字信号时,为了不使信号失真,取样频率要求大于或等于原信号频率的2 倍,对于电话音频信号的取样频率一般定为8kHz 。
DTMF 的解码用傅里叶变换( FFT),首先对接收到的数字信号作FFT分析, 计算出其幅频谱,取样频率fs =8kHz ,源程序:Fs=8000;t=(0:2000)/Fs;pit=2*pi*t;fc1=697;fc2=770;fc3=852;fc4=941;fr1=1209;fr2=1336;fr3=1477;fr4=1663;x=sin(fcn*pit);y=sin(frn*pit); --fcn,frn为上面所列的频率值z=x+y;subplot(1,2,2)f=fft(z,1024);f1=fftshift(f);w1=513:1024;w=4000*(w1-512)/512;F=abs(f1(513:1024));plot(w,F)axis([0,2000,-50,600]);gridsound(z)接收端所检测到的信号源程序:function lts(f1,f2)%f1=770;%f2=1209;fs=8000;t=(0:800-1)/8000;b=sin(t*2*pi*f1)+sin(t*2*pi*f2);tm=[49,50,51,65;52,53,54,66;55,56,57,67;42,48,35,68];N=205;k=[18,20,22,24,31,34,38,42];X=goertzel(b(1:N),k+1);val=abs(X);limit=70;for r=1:4if val(r)>limit;break,endendfor s=5:8if val(s)>limit;break,endenddisp('接收端检测到的号码为:');y=setstr(tm(r,s-4));disp(y);例如:当点击B时 f1=770khz,f2=1663khz检测到的号码为:。
双音多频拨号系统DTMF的实验报告
双音多频拨号系统DTMF的实验设计报告所谓双音多频(DTMF),就是用两个频率——行频和列频来表示机键盘上的一个数字。
DTMF 的指令正在迅速的取代脉冲指令。
除了在呼叫信号中使用外,DTMF 还广泛的使用在交互式控制应用,例如银行、电子甚至家电远程控制等,用户可以从机发送DTMF 信号来做菜单选择。
本文基于MATLAB的双音多频拨号系统的仿真实现。
主要涉及到拨号音合成的基本原理及识别的主要方法,利用 MATLAB 软件以及DFT 算法实现对通信系统中拨号音的合成与识别。
并进一步利用 MATLAB 中的图形用户界面 GUI 制作简单直观的模拟界面。
还能够利用矩阵不同的基频合成 0 - 9 不同按键的拨号音,并能够对不同的拨号音加以正确的识别,实现由拨号音解析出的过程,进一步利用 GUI 做出了简单的图形操作界面。
本文具有界面清楚,画面简洁,易于理解,操作简单的优点,从而实现对拨号音系统的简单的信号仿真。
关键词:双音多频(DTMF) MATLAB GUI 信号仿真在中,数字0~9的中每一个都用两个不同的单音频传输,所用的8个频率分成高频带和低频带两组,低频带有四个频率:679Hz,770Hz,852Hz和941Hz;高频带也有四个频率:1209Hz,1336Hz,1477Hz和1633Hz.。
每一个数字均由高、低频带中各一个频率构成,例如1用697Hz和1209Hz两个频率,信号用表示,其中,。
这样8个频率形成16种不同的双频信号。
一,利用GUI 作图(简单的界面)如下:利用 GUI 图形用户界面设计工具制作拨号面板,把 DTMF 信号和机的键盘矩阵对应起来。
其中选用我们熟悉的 10 个数字键 0 — 9 , 3 个功能键“ 回删”、“拨号”,“解码”。
按照图机键盘矩阵的排列方式制作五行三列的按键控件。
每个按键可用( Push Button )添加。
静态文本框可用( Static Text )添加,如图再加个解码键( Push Button )二,再点运行,得出与上图对应的m文件,再用鼠标右击上图的每个键,点callback导入每个键的编译程序如下:1,按键1的程序:% --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); % 把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];%每个数字1000个采样点y=sin(0.5345*n)+sin(0.9272*n);%对应行频列频时域叠加,数字1的低频697Hz和高频1209Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100);%100个0模拟静音信号global NUMphone=[NUM,y];% 循环储存NUM=[phone,space]; % 储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'1'];set(handles.text1,'string',[NoCtrl]);end2,按键2的程序:function pushbutton5_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is tooelsen=[1:1000];% 每个数字1000个采样点y=sin(0.5345*n)+sin(1.0247*n);% 对应行频列频时域叠加,数字2的低频697Hz和高频1336Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100);% 100个0模拟静音信号global NUMphone=[NUM,y]; %循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'2'];set(handles.text1,'string',[NoCtrl]);end3.按键3的程序:% --- Executes on button press in pushbutton6. function pushbutton6_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is tooelsen=[1:1000];% 每个数字1000个采样点y=sin(0.5345*n)+sin(1.1328*n);% 对应行频列频时域叠加,数字3的低频697Hz和高频1477Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100);% 100个0模拟静音信号global NUMphone=[NUM,y]; %循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'3'];set(handles.text1,'string',[NoCtrl]);end4,按键4的程序:% --- Executes on button press in pushbutton10. function pushbutton10_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is tooelsen=[1:1000];% 每个数字1000个采样点y=sin(0.5905*n)+sin(0.9272*n);% 对应行频列频时域叠加,数字4的低频770Hz和高频1209Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100);% 100个0模拟静音信号global NUMphone=[NUM,y]; %循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'4'];set(handles.text1,'string',[NoCtrl]);end5,按键5的程序:% --- Executes on button press in pushbutton9. function pushbutton9_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];%每个数字1000个采样点vy=sin(0.5905*n)+sin(1.0247*n);% 对应行频列频时域叠加,数字5的低频770Hz和高频1336Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100); %100个0模拟静音信号global NUMphone=[NUM,y];% 循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'5'];set(handles.text1,'string',[NoCtrl]);end6,按键6的程序:% --- Executes on button press in pushbutton8. function pushbutton8_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];% 每个数字1000个采样点y=sin(0.5905*n)+sin(1.1328*n);% 对应行频列频时域叠加,数字6的低频770Hz和高频1477Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100);% 100个0模拟静音信号global NUMphone=[NUM,y];% 循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'6'];set(handles.text1,'string',[NoCtrl]);end7,按键7的程序:% --- Executes on button press in pushbutton13. function pushbutton13_Callback(hObject, eventdata,handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];% 每个数字1000个采样点y=sin(0.6534*n)+sin(0.9272*n);% 对应行频列频时域叠加,数字7的低频852Hz和高频1209Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100); %100个0模拟静音信号global NUMphone=[NUM,y];% 循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'7'];set(handles.text1,'string',[NoCtrl]);end8,按键8的程序:% --- Executes on button press in pushbutton12.function pushbutton12_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];% 每个数字1000个采样点y=sin(0.6534*n)+sin(1.0247*n);% 对应行频列频时域叠加,数字8的低频852Hz和高频1336Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100);% 100个0模拟静音信号global NUMphone=[NUM,y]; %循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'8'];set(handles.text1,'string',[NoCtrl]);end% --- Executes on button press in pushbutton14. function pushbutton14_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];% 每个数字1000个采样点y=sin(0.6534*n)+sin(1.1328*n);% 对应行频列频时域叠加,数字9的低频852Hz和高频1477Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100); %100个0模拟静音信号global NUMphone=[NUM,y];% 循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'9'];set(handles.text1,'string',[NoCtrl]);end% --- Executes on button press in pushbutton17. function pushbutton17_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];每个数字1000个采样点y=sin(0.7217*n)+sin(1.0247*n);% 对应行频列频时域叠加,数字0的低频941Hz和高频1336Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100); %100个0模拟静音信号global NUMphone=[NUM,y];% 循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'0'];set(handles.text1,'string',[NoCtrl]);end11,按键#号程序:% --- Executes on button press in pushbutton16. function pushbutton16_Callback(hObject, eventdata, handles)set(handles.text1,'string',['']);set(handles.tbutton,'visible',['off']);set(handles.tbutton,'value',[0]);clear all12,按键*的程序:% --- Executes on button press in pushbutton18. function pushbutton18_Callback(hObject, eventdata, handles)set(handles.text1,'string',['']);set(handles.tbutton,'visible',['off']);set(handles.tbutton,'value',[0]);clear all13,回删键的程序:% --- Executes on button press in pushbutton20. function pushbutton20_Callback(hObject, eventdata, handles)x=get(handles.text1,'string');% 把数字显示在屏幕上if(isempty(x))errordlg('Please input the phone No.','Input error','modal')elsexll=length(x);x(xll)=[];%去掉末尾号在面板上的显示set(handles.text1,'string',[x]);global NUMll=length(NUM);%删除末尾在拨号音信号中的储存for i=ll-1100+1:llNUM(ll)=[];ll=length(NUM);endend14,拨号键的程序:% --- Executes on button press in pushbutton21. function pushbutton21_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); % 把数字显示在屏幕上xx=str2num(x);if(isempty(NUM))errordlg('Please input the phone No.','Input error','modal')elsewavplay(NUM,8192);msgbox('拨号成功!若需再次拨号请按#号复位!','Done','help')set(handles.tbutton,'visible',['on']);set(handles.text1,'string',['Dieling Done.']); end14,关闭键的程序:% --- Executes on button press in pushbutton22. function pushbutton22_Callback(hObject, eventdata, handles)clear allclose all15,解码的程序:% --- Executes on button press in tbotton.function tbotton_Callback(hObject, eventdata, handles)L=length(NUM);n=L/1100;number='';for i=1:nj=(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(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;endif (num(2) < 320) column=1; %确定列数elseif (num(2) < 340) column=2;else column=3;endz=[row,column]; % 确定数字if z==[4,2] tel=0; %0在4行2列elseif z==[1,1] tel=1; %1在1行1列elseif z==[1,2] tel=2; %2在1行2列elseif z==[1,3] tel=3; %3在1行3列elseif z==[2,1] tel=4; %4在2行1列elseif z==[2,2] tel=5; %5在2行2列elseif z==[2,3] tel=6; %6在2行3列elseif z==[3,1] tel=7; %7在3行1列elseif z==[3,2] tel=8; %8在3行2列elseif z==[3,3] tel=9; %9在3行3列endt(i)=tel;c=strcat(number,int2str(tel));number=c;i=i+1;endset(handles.text1,'string',['解码中...']);h = waitbar(0,'Decoding...Please wait...'); steps = 1500;for step = 1:steps% computations take place herewaitbar(step / steps)endclose(h);set(handles.text1,'string',number);% hObject handle to tbotton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)三,运行以上程序调出如下图界面:即可以进行仿真拨号。
EPON中关于DTMF测试用例
●测试用例:DTMF-1方为INFO,1方为RFC2833测试步骤如下:1.分别在页面上设置A,B的DTMF分别为INFO和RFC2833。
2.如果A拨打B,A和B通话,双方按键,A的二次按键的DTMF信号是携带在SIP Info消息的消息体内发送出去的,并且B能清晰的听见对端的按键声音,而B按键,B是通过透传方式传送出去的,A能清晰的听见对端的按键声音。
3.如果B拨打A,A和B通话,双方按键,B是能够识别出二次拨号号码,并将号码信息封装在2833 方式的RTP 包中,发送到对端,A能够清晰的听到对端按键音;A按键同样并将号码信息封装在2833 方式的RTP 包中,发送到对端,B能够清晰的听到对端按键音。
●测试用例:DTMF-1方均为INFO,1方为Inband测试步骤如下:1.ONU1,ONU2注册到软交换,ONU1,ONU2分别接话机A,B.2.在Web页面上设置ONU1的DTMF方式为SIP INFO,ONU2的DTMF方式为Inband.3.用户A呼叫用户B,B振铃接通用户A4. 通话中,A按0-9*#,A按键传送1234567890,观察用户二次按键的DTMF信号是否携带在SIP Info消息的消息体内发送出去的.5.用户B呼叫用户A,A振铃接通用户B。
6.通话中,通话中,一方按0-9*#,观察对端是否听到清晰的按键音●测试用例:DTMF-1方为Inband,1方为RFC2833且PT值一致测试步骤如下:1.ONU1,ONU2注册到软交换,ONU1,ONU2分别接话机A,B.2.在Web页面上设置ONU1的DTMF方式为RFC2833,ONU2的DTMF方式为Inband.3.用户A呼叫用户B,B振铃接通用户A4. 通话中,A按0-9*#,观察ONU1是否能够识别出二次拨号号码,并将号码信息封装在2833 方式的RTP 包中,发送到对端,ONU2收到2833 方式的RTP 包后,应具备恢复生成DTMF 音的功能.5.用户B呼叫用户A,A振铃接通用户B。
DTMF信号的产生与识别
目录一、实验背景------------------------------------3二、实验目的------------------------------------3三、实验内容------------------------------------3四、实验原理----------------------------------3五、实验程序及注释------------------------------5六、CCS5000程序调试-----------------------------91、编译过程、工程架构、编译环境设置2、程序运行结果(图形显示、数据显示)七、实验总结及感想----------------------------DTMF信号的产生与识别一、实验背景:双音多频DTMF(Dual Tone Multi-Frequency)信令,逐渐在全世界范围内使用在按键式电话机上,因其提供更高的拨号速率,迅速取代了传统转盘式电话机使用的拨号脉冲信令。
作为实现电话号码快速可靠传输的一种技术,它具有很强的抗干扰能力和较高的传输速度,因此,可广泛用于电话通信系统中。
但绝大部分是用作电话的音频拨号。
另外,它也可以在数据通信系统中广泛地用来实现各种数据流和语音等信息的远程传输。
近年来DTMF也应用在交互式控制中,诸如语言菜单、语言邮件、电话银行和ATM 终端等。
将DTMF信令的产生与检测集成到任一含有数字信号处理器(DSP)的系统中,是一项较有价值的工程应用。
二、实验目的:(1)熟悉DSP5402的体系结构、指令系统、汇编语言程序的编写;(2)了解DTMF的基础知识;(3)学习用c语言对DTMF的编程方法;(4)掌握DTMF的信号产生及信号检验;(5)在CCS环境下,最终完成程序的调试三、实验内容:(1)利用DTMF信号产生的原理合成数字1,其合成公式是分析其时域波形和频谱;(2)生成各个按键信号;(3)利用fft分析0~9十个数字拨号信息的频谱,观察频谱图中的峰值点的幅值以及它们出现的位置。
DTMF电话中的拨号信号发生与检测系统仿真设计说明
燕山大学课程设计说明书题目:DTMF中的拨号信号发生与检测系统仿真设计学院(系):电气工程学院年级专业: 09级仪表(2)班学号: 4学生:吴季哲指导教师:平吴晓光教师职称:教授讲师燕山大学课程设计(论文)任务书院(系):电气工程学院基层教学单位:自动化仪表系说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。
2012年6 月20 日燕山大学课程设计评审意见表摘要双音多频(Dual Tone Multi Frequency, DTMF)信号是音频中的拨号信号,由美国AT&T贝尔公司实验室研制,并用于网络中。
这种信号制式具有很高的拨号速度,且容易自动检测识别,很快就代替了原有的用脉冲计数方式的拨号制式。
这种双音多频信号制式不仅用在网络中,还可以用于传输十进制数据的其他通信系统中,用于电子和银行系统中。
这些系统中用户可以用发送DTMF信号选择语音菜单进行操作。
DTMF信号系统是一个典型的小型信号处理系统,它要用数字方法产生模拟信号并进行传输,其中还用到了D/A变换器;在接收端用A/D变换器将其转换成数字信号,并进行数字信号处理。
本文主要介绍用MATLAB在计算机上对双音多频的信令产生与检测接收系统进行了仿真测试。
关键词:双音多频,数字信号处理,傅里叶变换;目录摘要 (2)1.绪论 (4)1.1 引言 (4)1.2 数字信号简介 (4)1.3 数字滤波器 (6)1.4 频率分析 (7)1.4.1 傅里叶级数与傅里叶变换 (7)1.4.2 Z变换与系统函数 (8)1.4.3 离散系统傅里叶变换(DFT) (9)2.双音多频(DTMF)通信系统 (6)2.1 双音多频(DTMF)信号简介 (10)2.2 双音多频(DTMF)信号的产生 (10)2.3 双音多频(DTMF)信号的检测 (11)5.双音多频(DTMF)系统的Matlab实现 (16)5.1 Matlab简介 (16)5.2 GUI界面介绍 (17)5.3 双音多频(DTMF)系统的仿真 (19)第4章学习心得 (20)参考文献 (21)程序清单 (22)1 绪论1.1 引言双音多频(Dual Tone Multi Frequency,DTMF)信号,由美国AT&T贝尔实验室研制,用于音频网络中的拨号信号。
实验15 心电信号的DTMF编码与识别
实验15 心电信号的DTMF编码及识别仿真实验一实验目的1 学习使用MIT-BIH标准心电数据库。
2 心电数据按照制定的DTMF编码规则进行编码。
3 对编码后的心电信号进行识别。
二原理与步骤1.DTMF原理DTMF信号由两个频群组成——高频群和低频群,每个群各包含4个频率。
一个高频信号与一个低频信号叠加组成一个组合信号,代表一个数字或“*#”或“ABCD”,对应固定电话上的16个按键。
其对应关系如图1所示。
图1 DTMF键盘如上图,若输入“3”,则为697HZ和1477HZ信号的叠加,以此类推。
我们选定两个频率f1 和f2 后很容易得到这种信号的数学表达式:x(t)=sin(2πf1t )+sin(2πf2t)DTMF编码器基于两个二阶数字正弦波振荡器,一个用于产生行频,一个用于产生列频。
典型的DTMF 信号频率范围是700~1700Hz,选取8000Hz 作为采样频率,即可满足奈奎斯特条件: x(t)=sin(2πf1tn/8000 )+sin(2πf2n/8000)。
DTMF信号可采用Mtalab编程实现。
图2所示为六个代表键位的双音波形。
1010020030040050060020100200300400500600*0100200300400500600#A0100200300400500600B图2 六个代表键位的双音波形我们用一个合适的采样频率对这个信号进行A/D 转换,计算出每一个采样点的A/D 值,将这些采样值形成一张表,用同样的采样频率将这张表中的数值用D/A转换器输出,就形成了双音频信号。
这就是DTMF信号的产生原理。
2.识别和仿真算法DTMF的识别和仿真算法通常使用Goertzel算法来进行离散傅立叶变换(Discrete Fourier Transform)较为精简,并且每个频率只需要一个实数系数就可以决定值的振幅;但是,正确计算数值振幅和相位时需要复数系数,故需要较复杂的程序,借助只计算音调频率的振幅而忽略相位的计算,我们可以简化DTMF信号的译码工作。
毕业设计(论文)-dtmf的检测与识别[管理资料]
摘要本课题针对DTMF双音多频信号的检测与识别,着力分析研究了DTMF信号编解码电路以及语音芯片的工作原理和开发应用。
研究过程中通过查阅相关文献资料,对实现方案进行了分析设计,并基于设计方案对DTMF编解码芯片及语音芯片进行了分析选型和电路设计调试。
本文首先介绍了DTMF技术和常用的DTMF信号编解码芯片,经过选型,设计了本系统DTMF信号的收发方案。
同时,针对目前常用的语音芯片,我们着重分析了ISD系列语音芯片1420的工作原理和分段原理,根据研究分析结果,设计了该芯片的录放音方案。
结合MT8870译码显示电路和ISD1420录放音电路的工作原理,实现了系统的按键译码显示和按键播报功能。
文章给出了用电路图绘制工具Protel 99SE绘制的系统实现电路。
本文最后对系统实现方案作了进一步探讨设想,以拓展和优化系统设计。
关键词TP5087 MT8870 MT8888ISD1420语音芯片DTMF双音多频信号直接模拟存储技术目录第1章引言 (1)设计要求 (1)课题意义 (1)第2章DTMF技术 (2)自动电话的制式 (2)DTMF 技术 (3)第3章DTMF信号收发方案分析 (5)TP5087双音多频编码器 (5)MT8870双音多频解码器 (7)引脚排列与功能 (7)内部结构 (8)内部原理分析 (9)应用电路 (9)MT8888双音多频编解码器 (12)引脚排列与功能 (12)内部结构 (13)寄存器与控制 (13)应用电路 (15)DTMF信号收发的两种方案 (15)第4章ISD110/ISD1420系列语音芯片简介 (16)ISD110/ISD1420系列语音芯片概述 (16)ISD1420语音芯片功能描述 (17)ISD1420操作模式 (20)ISD1420应用电路和时序 (21)第5章设计实现 (23)DTMF信号的发送 (23)DTMF信号的接收和按键显示 (24)模块电路和功能 (24)Protel 99SE绘制的功能实现电路 (25)按键播报 (26)ISD1420分段原理 (26)录放音实现 (29)Protel 99SE绘制的总体实现电路 (30)第6章结束语 (32)参考文献 (33)致谢 (34)附录1 所需器件与设备 (35)附录2 芯片资料 (36)第1章引言设计要求本课题要求将电话机的按键拨号信息DTMF(Double Tone Multi Frequency,双音多频)信号正确接收解码,在数码管上逐位显示,并通过语音芯片将电话按键号码播报出来。
DTMF信号产生的Matlab仿真
DTMF信号产生的Matlab仿真DTMF信号产生的Matlab仿真1、DTMF相关原理介绍DTMF(Dual Tone Multi Frequency,双音多频)由高频组和低频组组成,高低频组各包含4个频率。
一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字。
DTMF信号有16个编码。
利用DTMF信令可选择呼叫相应的对讲机,因而作为电话系统中电话机与交换机之间的一种用户信令。
双音多频的拨号键是4*4的矩阵,每一行代Array表一个低频,每一列代表一个高频(如图)。
在双音多频电话机中,有16个按键,其中10个数字键(0---9),6个功能键(*、#、a、b、c、d)。
没按一个键就发送一个高频和低频的正弦信号组合,比如1相当于697和1209HZ。
交换机可以解码这些频率组合并确定相应的按键。
2、DTMF信号实现方法由于语音频率范围为300—3400Hz,根据奈奎斯特取样定理,取样频率fs应大于或等于原信号最高频率fc的两倍,即fs》=2fc才能保证取样后信号不失真,此处FC通常取为4KHZ,所以电话音频信号在数字信号处理时,取样频率FS为2*FC=8KHZ。
CCITT规定每秒最多接10个键,即每个键时隙最短为100MS,其中音频实际持续时间至少为45MS,不大于55MS,时隙的其他时间内保持静默,因此按键产生双音频信号时,相继的两个信号间隔一段时间;而解码器则是利用这个时间识别出双音频信号,并转换成对应的数字信息。
这里,每个数字信号持续时间为100MS,后面加上100MS的间隔时间(用0表示)DTMF的编译码定义可用式F(t)=Asin(2*pi*fh*i/fs)+Bsin(2*pi*f1*i/fs)表示,式中两项分别表示i时刻高低音频的幅值,AB 分别表示高音群和低音群的样化量值曲线,而且两者幅值之比为K=B/A(0.7<k<0.9)。
因此,上述dtmf信号产生的方法可描述为:< p="">(1)建立拨号数字的表矩阵,用查表法求用户所按数字键对应的高低音频。
双音多频DTMF接收实验报告
11电信1 罗耀宇2011914124实验四双音多频DTMF接收实验一、实验目的1、了解电话号码双音多频信号在程控交换系统中的发送和接收方法。
2、熟悉该电路的组成及工作过程。
二、实验仪器仪表1、程控交换实验箱一台2、电话单机两台3、20MHz示波器一台三、实验内容1、用示波器观察并测量发送DTMF信号的波形。
2、用示波器观察并测量DTMF信号接收的波形。
四、实验步骤及现象1.接上交流电源线。
2.先打开“交流开关”,指示发光二极管亮后,再分别按下直流输出开关J1、J2,此时实验箱上的五组电源已供电,各自发光二极管亮。
3.按“复位”键进行一次上电复位,此时,CPU已对系统进行初始化处理,液晶显示“欢迎使用众友科技程控交换实验系统”,即可进行实验。
4.用户1、用户3接上电话单机。
5.用户1摘机,开始拨打号码,即按电话单机上的任意键,用示波器的直流档对以下测量点进行观察并记录波形:1)TPDTMF:当有键按下时有双音多频信号,无键按下时无信号。
有按键:无按键时:2)TPSDT:当有键按下时该点是低电平,无键按下时该点为高电平。
低电平:高电平3)TP11:开始收号前有拨号音的波形,当有按键后停拨号音,同时按住键有双音多频信号,无键按下时无信号。
拨号音:6.按不同的键时,其双音多频信号的波形不一样,要仔细观察。
按键1::按键2:按键3:按键4按键5按键6按键7按键8按键9按键07.在按键过程中观察发光二极管D35~D32与所按键值的关系:(显示二极管是在该按键抬起的瞬间发生改变的)对应的是8421码,如接下的键值为5时,对应的码字为0101,发光二极管D102,D100发光。
在按键的过程中观察所按键值与发光二极管是否满足上述对应关系。
答:据我所观察完全符合上述;当按下8时,对应的灯亮是D35。
所以此实验的证。
dtmf实验报告
DTMF信号检测系统设计(实验报告)报告分三部分Part1:实验过程描述Part2:g算法的matlab仿真Part3:g算法的verilog实现,及下载到de2上的效果Part 1实验过程描述Dtmf信号检测,即双频信号检测。
系统设计中,采用Goertzel算法。
N取205.实验步骤:ⅰGoertzel算法的matlab仿真,产生双频信号。
用于存入设计系统的.mif文件,来初始化系统中的存储器。
ⅱGoertzel算法的verilog实现,主要包括存储器数据读取模块,g 算法模块,幅度判决模块。
ⅲ系统quartus仿真及de2实现,用数码管显示存入的双频信号对应的电话拨号Part 2 g 算法的matlab 仿真举例f1=770,f2=1477 对应的电话拨号:650100150200250-20-1001020-4000-3000-2000-10000100020003000400001000200030004000Frequency (Hz)0-Centered PeriodogramDtmf Signal&fft5Square of xkPart 3 verilog实现Verilog代码生成的RTL_view仿真结果图:一个算法周期后输出0000_010对应号码6要继续的工作:利用nios软核搭建dtmf信号检测系统。
实现软硬协同的系统搭建过程。
另外去尝试利用wm8731实现实时检测。
主要参考文献:[1] 戈今朝,张禄林,钱玉美.一种新的基于Goertzel算法的信号检测方法.通信技术.2002,(9):16-18[2] altera databook.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级 姓名 学号
实验三 程控交换DTMF 号码的识别仿真实验
一、实验目的
(1) 掌握DTMF 号码的识别方法。
(2) 熟悉MATLAB 仿真软件的使用。
二、实验内容
(1) 编写MATLAB 程序仿真DTMF 号码的识别。
(2) 观察)LM SCN (⊕波形变化。
(3) 观察S CN )LM S CN (∧⊕变化。
(4) 分析仿真中观察的数据,撰写实验报告。
三、实验原理
DTMF 号码的识别要经历DTMF 信号接收、运算和译码过程。
其中,接收和运算过程如图所示。
首先,CPU 读状态信息标志(SP),扫描监视程序按16 ms 的扫描周期读本次扫描结果和前次扫描结果,然后比较本次扫描结果和前次扫描结果是否有变化,根据变化值进行逻辑运算。
逻辑运算式为
若式成立,则说明识别到了双音频信号,接下来需译出该双音频信号所代表的是一位什么号码。
译码可由DTMF 收号器硬件电路实现。
四、实验步骤
(1) 预习DTMF 号码的识别原理。
(2) 画出接收和运算过程图。
(3) 编写MATLAB 程序并上机调试。
(4) 观察并分析各阶段波形、数据。
(5) 修改相关参数,观察波形变化。
(6) 撰写实验报告。
1S CN )LM S CN (=∧⊕。