DTMF信号的产生与识别

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DTMF 信号的产生与识别 实验报告
1、 DTMF信号的产生 DTMF 编码器基于两个二阶数字正弦波振荡器,一个 用于产生行频,一个用于 产生列频。向 DSP 装入相应的系数 和初始条件,就可以只用两个振荡器产生 所需的八个音频信 号。典型的 DTMF信号频率范围是700~1700Hz,选 取 8000Hz 作为采 样频率,即可满足 Nyquist条件。DTMF双音频信号由两个二阶 数字正弦振荡器产生,一个用来产生行音频信号,另个一产生列音频信号。其系 统函数为:
当持续时间没有完毕时,时间变量减 1,然后产生静音样本再返回。
DTMF 信号的产生与识别 实验报告
while(timer!=0)
{ while(1)
{if(i>127) break;
/* 将 data[i]输出到 D/A */ while (!MCBSP_XRDY(HANDSET_CODEC)) {}; /* write sample to handset codec */ *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data[i++]; } timer=timer-1;} 当持续时间完毕时,持续时间变量复位,然后切换任务标志为 1,装入下一 个数字,初始化新数字的振荡器系数与初始化条件,最后返回。 while(timer==0)
{ task=1; a=find1(n);
b=find2(n); y1=find3(n); y2=find4(n); timer=45;
} } 当进行任务判决时,如果任务标志不是零则进行双音任务。设计程序如下: while(task==1)
{ buf1[0]=y1; buf2[0]=y2; buf1[1]=(a*y1)*2; buf2[1]=(b*y2)*2; data[0]=buf1[0]/2+buf2[0]/2; data[1]=buf1[1]/2+buf2[1]/2; for(i=2;i<128;i++) { buf1[i]=(a*buf1[i-1])*2-buf1[i-2]; buf2[i]=(b*buf2[i-1])*2-buf2[i-2]; data[i]=buf1[i]/2+buf2[i]/2; }
双音多频 DTMF(Dual Tone Multi-Frequency)信 令,逐渐在全世界范围内 使用在按键式电话机上,因其提供更高的拨号速率,迅速取代了传统转盘式电话 机使用的拨号脉冲信令。近年来 DTMF 也应用在交互式控制中,诸如语言菜单、 语言邮件、电话银行和 ATM 终端等。将 DTMF 信令的产生与检测集成到任一 含有数字信号处理器(DSP)的系统中是一项较有价值的工程应用。
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;
由 CCITT(国际电报电话咨询委员会)的规定,数字之间必须有适当长度 的静音,因此编码器有两个任务,其一是音频信号任务,产生双音样本,其二是 静音任务,产生静音样本。 每个任务结束后,启动下一个任务前(音频信号任 务或静音 任务),都必须复位决定其持续时间的定时器变量。在静音任务结束后, DSP 从数字缓存中调出下一个数字, 判决该数字。信号所对应的行频和列频信 号,并根据不同频率确定其初始化参数 a =-2cosω 与 y(-2)=-Asinω。我们这里
三、 硬件需求 算法所基于的硬件平台的特点,其运算能力能否满足算法的精度及时间的要 求,进行相应的分析。
四、 程序说明 包括程序实现的流程图、关键程序的注释等。
五、 程序的调试及结果 程序运行的调试过程、结果以及结论。
六、 程序清单 工程中的各个源文件的清单。
七、 总结 设计中的体会心得以及建议。
八、 参考文献 列出设计过程中所使用的参考书目、文章及其出处。
如图 DTMF数字振荡器对 DTMF信号产生流程 CCITT规定每秒最多按10个键,即每个键时隙最短为100MS,其中音频实际持续 时间至少为45MS,不大于55MS,时隙的其他时间内保持静默,因此按键产生双 音频信号时,相继的两个信号间隔一段时间;解码器利用这个时间识别出双音频 信号,并转换成对应的数字信息,而且要识别出间隙信息。因此流程包含音频任 务和静默任务,前者是产生双音频采样值,后者产生静默采样值,每个任务结束 时,要重置定时器和下一个任务。其中静默任务还要加上一个任务:从数字缓冲 区取出数字并解包。解包就是将数字映射为对应的行列音频特性,装载指针指向 振荡器特征表对应的正确位置。两个任务轮流执行。
现在利用Goertzel 算法来识别DTMF信号 Goertzel 算法 直接计算 ,需要很多复系数,即使只算一点的 也需要 个系数。采用数字信
号处理中的
算法,则可明显的提高速度,
算法是 信号检测的核心,
它利用二极点的 滤波器计算离散傅立叶变化值,快速有效的提取输入信号的频谱信息。
长度为 的 定义为:
其中,b = Asin ω0 , a1 =-2cosω0 , a2 =1, ω0 =2π f0 / fa , f0 为正弦波频率, fa 为抽 样频率, ω0 为归一化数字频率。 对应的差分方程为:
振荡器对应的单位取样响应力为:
DTMF 信号的产生与识别 实验报告
即给定脉冲输入时,二阶系统输出一个纯净的正弦波。
DTMF ( 双 音 多 频) 技 术 是 DSP 技 术 中的一种。DTMF 信号是音频 电话的拨号信号。有美国 ATT 贝尔实验室开发。这种拨号方法取代了脉冲拨号, 每一个号码由两个音频信号组成,该双音频由按键所在的行和列对应的频率决 定。电话中的双音多频信号有两种作用:一是用于双音多频信号的拨号,去控制 交换机接同被叫的用户电话机;二是利用双音多频信号控制电话机各种动作。这 些功能的实现离不来 DTMF 信号的正确的产生和识别,专用数字处理信号芯片 (DSP)的出现,使这个问题得到轻松的解决,这里给出的是基于 TMS3205402 产生和识别 DTMF 信号的方法。
}
对八个频谱分别计算
程序设计: for (j=0;j<14;j++)
{ y[1]=data[1]/1024+2*d[j]*y[0]; for(i=2;i<128;i++)
{ y[i]=data[i]/1024+2*d[j]*y[i-1]-y[i-2]; } 通过上述程序求出 y[127]、y[126]。 利用公式算出幅度的平方
DTMF 信号的产生与识别 实验报告
i=0;
当持续时间没有完毕时,时间变量减 1,然后产生双音样本再返回 while(timer!=0)
{while(1)
{if(i>127) break;
/* 将 dacdata[i]输出到 D/A */ while (!MCBSP_XRDY(HANDSET_CODEC)) {}; /* write sample to handset codec */ *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data[i++]; } timer=timer-1; } 当持续时间完毕时,持续时间变量复位,然后切换任务标志为 0,然后返回。 while(timer==0) {task=0; timer=45; } } 2、DTMF 信号的识别
采用CODEC的ADC和DAC实现数据的发送和接收。将DSP产生的数字信号 通过ADC发送,将产生的DTMF信号通过DAC送入DSP,进行检测。
TI公司的TMS320C5402系列的DSP芯片非常适合于快速运算,DTMF的产 生和检测计算复杂程度不高,采用Goertzel 算法使软件检测速度快、精度高,并 可以灵活的修改参数。能满足算法的精度及时间的要求。
DTMF 信号的产生与识别 实验报告
采样: i=0; while (1)
{if(i>127) break; /*采到 128 个样点后跳出采样*/
/* Wait for sample from handset */ while (!MCBSP_RRDY(HANDSET_CODEC)) {};
/* Read sample from and write back to handset codec */ data[i++] = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC); /*采 样 128 个样点*/
四、 程序说明
1、DTMF信号的产生
DTMF 信号的产生与识别 实验报告
首先进行任务判决,判断任务标志是否为零,如果是零则进行静音任务。程 序设计如下: for(j=0;j<12;j++)
{ n=m[j];
while(task==0) { for(i=0;i<128;i++) {buf1[i]=0; buf2[i]=0; data[i]=0;} i=0;
采用算法检测DTMF信号,DSP使用十六个滤波器快速运算,与此同时在运 算之前加上增益控制,使得Goertzel 算法不用检查溢出,提供了效率。其缺点是 增加了存储需求,因为它不是一个一个的输入采样,而是达到一定的数量的采样 后才进行处理。
三、硬件需求
算法所基于的硬件平台的特点,其运算能力能否满足算法的精度及时间 要 求及相应的分析。软件部分完成了对DTMF信号的产生和识别。
程序设计: a[j]=(y[127]/2)*(y[127]/4)+(y[126]/2)*(y[126]/4)-2*d[j]*(y[127]/2)*(y[126]/4); 中间变量清零程序设计 : for(j=0;j<128;j++) y[j]=0; /*清零*/ 峰值检测程序设计:
for(m=0;m<3;m++) {
DTMF 信号的产生及识别都要以相关算法为基础。在此我们提出采用 Goertzel 算法来实现 DTMF 信号的产生及检测 ,并详细推导了利用该算法实现 滤波器组的方法及用仿真软件进行模拟设计的过程。
二、算法原理以及软件仿真
DTMF
DTMF (Double Tone Multi frequency) 技术主要用于在电话频段内传送简单的 操作信号。在 DTMF 通信系统中共有8个频率,分为4个高频音和4个低频音。用1 个高频音和1个低频音的组合来表示一个信号。这样,共能提供16种组合,分别代 表 16 种信号。
A取 213 。
2、DTMF信号的识别 DTMF信号包含两组音频信号,解码器的任务是通过数学变换把它从时域转
化到频域,然后得出对应的数字信息。由于芯片处理的是数字信号,所以必须把 输入信号数字化,再用DSP芯片处理。频率检测时,检测出DTMF信号的基波及
DTMF 信号的产生与识别 实验报告
二次谐波,DTMF信号只在基波上有较高的能量,而话音信号则是在基波上叠加 有较强的二次谐波,检测二次谐波的作用是用来区分DTMF信号与语言和音乐信 号。
Goertzel 算法的实现图如下:
对应的传递函数为:
对八个频谱分别计算
DTMF 信号的产生与识别 实验报告
由于在 DTMF 检测中,输入的信号是实数序列,并不需 要检测出 8 个行 频 / 列频的相位,只需要计算出其幅度平方 即可。对于实序列x(n), Goertzel 算法所需的内部变量v (n)k化参数 a =-2cosω 与 y(-2)=-Asinω 。也为实数。因 此计算如下:
DTMF 信号的产生与识别 实验报告
一、概述
随着 DSP 芯片及相关技术的发展,DSP 得到了人们的日益关注和越来越广 泛的应用。德州仪器(TI)公司推出的 TMS320VC54x 系列具有高性能、低功耗 等优良性能,受到用户的欢迎,已广泛地应用于有线和无线通讯、仪器仪表、雷 达、图像处理、工业控制、语音处理等领域。
DTMF 信号的产生与识别 实验报告
DSP技术课程设计
DTMF信号产生与识别
院 系: 电子信息工程学院
班 级:
通信0312班
电 话:
51681709
合 作 者:
唐宇希 03211346 、
邝佳菲 03211362
DTMF 信号的产生与识别 实验报告


一、 概述 说明选题的意义和要实现的目标。
二、 算法原理以及软件仿真 说明设计题目所使用的算法及理论基础。如有必要Βιβλιοθήκη Baidu可以在MATLAB平台上 进行相应的仿真。
相关文档
最新文档