网站大量收购闲置独家精品文档,联系QQ:2885784924

专题七_DSP应用举例-DTMF的产生和解码v1.0讲述.ppt

专题七_DSP应用举例-DTMF的产生和解码v1.0讲述.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
专题七_DSP应用举例-DTMF的产生和解码v1.0讲述

DTMF在C5400下的实现 主要内容 DTMF码的基本原理 DTMF码的产生 DTMF码的检测 在DSP/BIOS环境下实现DTMF的产生和解码 DTMF产生和解码演示 DSP解决方案案例--DTMF 双音多频DTMF(Dual Tone Multi Frequency)信令,逐渐在全世界范围内使用在按键式电话机上,因其提供更高的拨号速率,迅速取代了传统转盘式电话机使用的拨号脉冲信令。 近年来DTMF也应用在交互式控制中,诸如语音菜单、语音邮件、电话银行和ATM终端等。 DTMF原理 DTMF编码器:基于两个二阶数字正弦波振荡器,一个用于产生行频,一个用于产生列频, DSP用软件产生两个正弦波叠加在一起后发送。 DTMF解码器:本质是连续的过程,需要在输入的数据信号流中连续地搜索DTMF信号频谱的存在。采用Goertzel算法,这是一种在输入信号中提取频谱信息的快速有效方法 。 DTMF信号的产生 DTMF编码器基于两个二阶数字正弦波振荡器,一个用于产生行频,一个用于产生列频。 DTMF信号的产生 H(Z)含有位于单位圆上的复共扼极点。另外,冲击响应函数为: 二阶系统函数的差分方程为 其中, DTMF信号的产生 CCITT对DTMF信号规定的指标是,传送/接收率为每秒10个数字,即每个数字100ms。 代表数字的音频信号必须持续至少45ms,但不超过55ms。100ms中的其他时间为静音,以便区别连续的两个按键信号。 数字之间必须有适当长度的静音,因此编码器有两个任务,其一是音频信号任务,产生双音样本,其二是静音任务,产生静音样本。 DTMF信号的产生 启动下一个任务前(音频信号任务或静音任务),都必须复位定时器变量。 因为音频信号任务和静音任务都通过定时器变量,决定音频或静音的持续时间。 在静音任务结束后,从数字缓存中调出下一个数字,判决该数字信号所对应的行频和列频信号,并根据不同频率确定其初始化参数 整个程序可以置于DSP发射串口中断服务子程序里,由外部送入的8000Hz串口时钟触发中断,即可实时处理和恒定样本输出。 DTMF信号的检测 在输入信号中检测DTMF信号,并将其转换为实际的数字,这一解码过程本质是连续的过程,需要在输入的数据信号流中连续地搜索DTMF信号频谱的存在。 整个检测过程首先要确定检测算法,这是最重要的一步。采用Goertzel算法,这是一种在输入信号中提取频谱信息的快速有效方法。 其次作检测结果的有效性检查。 收集频谱信息 DTMF解码即是在输入信号中搜索出有效的行频和列频。 计算数字信号的频谱可以采用DFT及其快速算法FFT,而在实现DTMF解码时,采用Goertzel算法要比FFT更快。 通过FFT计算可以得到信号所有谱线,可以了解信号整个频域信息,而对于DTMF信号只用关心其8个行频/列频及其二次谐波信息即可(二次谐波的信息用于将DTMF信号与声音信号区别开)。 此时Goertzel算法则具有更优的运算效率。 (P425) 收集频谱信息 Goertzel算法原理框图 收集频谱信息 DFT计算可以等价为 另外,在DTMF检测中,对于输入的实数序列并不需要检测出8个行频/列频的相位,只需要计算出其幅度平方即可。 有效性检查 确认可能的DTMF信号对是否有足够的强度。程序计算出的行频/列频成分高于一定的门限 因为语音信号总会含有明显的8个行频/列频的偶次谐波。如果行频/列频成分二次谐波和基波成分之比低于一定门限,即可肯定检测到了代表一个数字信息的有效DTMF信号对 将检测到的数字与前面最后一个数字比较,只有当数字之间是一段静音信号时,才可判决当前的数字为有效数字,区分开两次按键。 DTMF 在DSP/BIOS下的实现 已经在CCS下完成DTMF码的产生和解调。 分析实现过程,主要有以下几个任务: DSP/BIOS下线程考虑 拨号任务:定义周期性模块(PRD)每5秒运行一次FXN_Dial_Number()函数。 该函数将需要拨出的号码缓冲设置好,初始化全局计数变量和指针,并开启串口发送中断,开始拨号。 拨号缓冲中的数字为拨出的号码,0xff表示静音期,当遇到0xffff时,拨号结束,关闭串口发送中断 。 注意:FXN_Dial_Number将反复运行 ! 拨号任务相关函数 接收任务的考虑 将整个de_dtmf()函数定义为一个TSK对象(_FXN_TSK_de_dtmf)。 该任务线程由McBSP的接收中断每收到一个新的数据就发出一个旗语(semaphore)(SEM_New_Sample)触发。 同时在中断服务程序内对收到数据计数,并使用全局变量IsNew_N,决定是否判断输出一个收到的号码。 接收相关函数 初始化AC01的考虑 初始化A

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档