DSP_DTMF信号的产生于检测.doc

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

DSP课程设计 实 验 报 告 DTMF信号的产生及检测 院(系):电子信息工程学院 设计人员:李国玮 学号设计人员:宋弘 学号成绩: 工程设计50 报告20 答辩30 总分 评语: 指导教师签字: 日期: 目 录 一、设计任务书……………………………………………………………1 二、设计内容………………………………………………………………5 三、设计方案、算法原理说明……………………………………………10 四、程序设计、调试与结果分析…………………………………………15 五、设计(安装)与调试的体会…………………………………………25 六、参考文献………………………………………………………………26 设计任务书 要求完成的任务: (1)编写C语言程序,并在CCS集成开发环境下调试通过。 (2)实现设计所要求的各项功能。 (3)按要求撰写设计报告。 要求达到的目的: (1) 熟悉CCS的编程环境和基本试验调试流程和方法; (2) 熟悉并掌握使用C语言编写较为复杂的程序并用CCS实现; (3) 了解并掌握DTMF信号的产生和检测远离核试验流程; (4) 熟练使用软件CCS5000对程序的完整调试过程。 二、设计内容 基本部分: (1)使用C语言编写DTMF信号的发生程序,要求循环产生0~9、*、#、A、B、C、D对应的DTMF信号,并且符合CCITT对DTMF信号规定的指标。 (2)使用C语言编写DTMF信号的检测程序,检测到的DTMF编码在屏幕上显示。 发挥部分: 通过修改程序模拟电话通讯的过程。 三、设计方案、算法原理说明 双音多频DTMF(Dual Tone Multi Frequency)是在按键式电话机上得到广泛应用的音频拨号信令,一个DTMF 信号由两个频率的音频信号叠加构成。这两个音频信号的频率分别来自两组预定义的频率组:行频组和列频组。每组分别包括4 个频率,分别抽出一个频率进行组合就可以组成16 种DTMF 编码,分别记作0~9、*、#、A、B、C、D。如右图所示。 要用DSP 产生DTMF 信号,只要产生两个正弦波叠加在一起即可;DTMF 检测时采用改进的Goertzel 算法,从频域搜索两个正弦波的存在。 (一)DTMF信号的产生 DTMF编码器基于两个二阶数字正弦波振荡器,一个用于产生行频,一个用于产生列频。向DSP装入相应的系数和初始条件,就可以只用两个振荡器产生所需的八个音频信号。典型的DTMF信号频率范围是700~1700Hz,选取8000Hz作为采样频率,即可满足Nyquist条件。 正弦波是任何波形构成的基本单元,产生正弦波的方法一般有:采样回放法、查表法、泰勒级数展开法、数字正弦振荡器法。 我们用的是sin函数产生离散的正弦值,因为这种方法我们比较熟悉而且通过查阅资料这种方法的也能达到误差要求,生成DTMF的公式为:buffer[t]=sin(t*2*pi*f1/fs)+sin(t*2*pi*f1/fs),其中t为采样序数,由0开始递增;f1,f2为生成DTMF信号的两个正弦波的频率;fs为采样频率;buffer[t]为序数t时的得出的采样值。将这些数据转换为Q15格式然后通过codec发送出去。   CCITT对DTMF信/接收率10个数字,即每个数字100ms。代表45ms,但不超55ms。100msms,另外400个存0值,即静音信号。 (二)DTMF信号的检测 DTMF检测是对进入解码端的信号进行检测,并把双音频信号转换成对应的数字信息。它是一个比DTMF产生更加复杂过程。由于数据流是连续的,为了保证DTMF检测的实时性,因此要求检测过程必须是实时连续的。 在输入信号中检测DTMF 信号,需要在输入的数据信号流中连续地搜索DTMF 信号频谱的存在。整个检测过程分两步:首先采用Goertzel 算法在输入信号中提取频谱信息;接着作检测结果的有效性检查。 DTMF 解码时在输入信号中搜索出有效的行频和列频。计算数字信号的频谱可以采用DFT 及其快速算法FFT,而在实现DTMF 解码时,采用Goertzel 算法要比FFT 更快。通过FFT 可以计算得到信号所有谱线,了解信号整个频域信息,而对于DTMF 信号只需关心其8 个行频/列频及其二次谐波信息即可,二次谐波的信息用于将DTMF 信号与声音信号区别开。此时Goertzel 算法能更加快速的在输入信号中提取频谱信息。Goertzel 算法实质是一个两极点的IIR 滤波器。 Goertzel算法简介 DTMF检测器的核心是Goertzel算法。该算法利用二极点的IIR滤波器计算离

文档评论(0)

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

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

1亿VIP精品文档

相关文档