DTMF信号的产生与检测-实验报告
更新时间:2024-04-08 18:46:01 阅读量: 综合文库 文档下载
DSP课程设计实验报告
DTMF信号的产生与检测
指导老师: 申艳老师 时 间: 2014年7月18日
DTMF信号的产生与检测
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算法,从频域搜索两个正弦波的存在。
1.1 实验目的
掌握DTMF信号的产生和检测的DSP设计可使学生更加透彻的理解和应用奈奎斯特采样定理,与实际应用相结合,提高学生系统地思考问题和解决实际问题的能力。通过对DSP信号处理器及D/A和A/D转换器的编程,可以培养学生C语言编程能力以及使用DSP硬件平台实现数字信号处理算法的能力。
1.2 技术指标及设计要求
1.2.1 基本部分
1) 使用C语言编写DSP下DTMF信号的产生程序,要求循环产生0~9、*、#、A、B、C、
D对应的DTMF信号,并且符合CCITT对DTMF信号规定的指标。 2) 使用C语言编写DSP下DTMF信号的检测程序,检测到的DTMF编码在CCS调试窗口中显示,要求既不能漏检,也不能重复检出。
1
DTMF信号的产生与检测
3) DTMF信号的发送与接收分别使用不同的实验板完成。
1.2.2 发挥部分
1) 使用一个DSP工程同时实现DTMF信号的发送和检测功能。
2) 改进DTMF信号的规定指标,使每秒内可传送的DTMF编码加倍。
3)发送的DTMF信号的幅度在一定范围内可调,此时仍能完成DTMF信号的正常检测。
1.3 方案完成情况
在实现基本要求的基础上,我们又完成了发挥部分的全部要求:能够实现在一个DSP实验箱上同时实现自发自收,基本能实现无差错传输。通过改变处理信号的点数N的数值实现了DTMF信号编码加倍,能够在一秒内传送够多的数据。通过gel添加滑动条的方法实现输入信号幅度可调,并实现判决门限的自适应处理,能随着幅度的变化自动调整门限的值,进而了判决传输信号的正确性。
2 设计内容
2.1 DTMF信号的的定义
双音多频(DTMF)信号是由两个不同频率的信号叠加而成,设V(t)为DTMF信号、VH?t?和VL?t?分别为构成V(t)的两个信号,则它们应满足关系式(1)。
V(t)= VH?t?+VL?t?
(1)
根据CCITT建议,国际上采用697Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz、1633Hz8个频率,并将其分成两个群,即低频群和高频群。从低频群和高频群中任意抽出一个频率进行叠加组合,具有16种组合形式,让其代表数字和功率,如表3-1所列,则有关系式(2)。
V(t)=Asin?Ht+Bsin?Lt
(2)
其中Asin?Ht为低频群的值,Bsin?Lt为高频组的值,A、B分别为低频群和高频群样值的量化基线,具体见表2-1。
fL fH 697 770 1209 1 4 1336 2 5 1477 3 6 1633 A B
2
DTMF信号的产生与检测
852 941 7 * 8 0 表2-1 DTMF频率及其对应的键值
9 # C D 2.2 DTMF信号生成方法
2.2.1 利用math.h采用数学方法产生DTMF信号
buffer[k]= sin(2*pi*k *f0/fs)+ sin(2*pi*k *f1/fs) (式2-1)
f0为行频频率,f1为列频频率,fs为8000采样频率,k为对信号的采样。
2.2.2 利用两个二阶数字正弦波振荡器产生DTMF信号(本课程设计实际采用方法)
DTMF 编码器基于两个二阶数字正弦波振荡器,一个用于产生行频,一个用于产生列频。向DSP装入相应的系数和初始条件,就可以只用两个振荡器产生所需的八个音频信号。典型的DTMF信号频率范围是700~1700Hz,选取8000Hz 作为采样频率,即可满足Nyquist条件。由数字振荡器对的框图,可以得到该二阶系统函数的差分方程
(式2-2)
其中a1=-2cosω0,a2=1,ω0=2πf0 /fs,fs为采样频率,f0 为输出正弦波的频率,A 为输出正弦波的幅度。该式初值为y(-1)=0,y(-2)=-Asinω0。CCITT 对DTMF 信号规定的指标是,传送/ 接收率为每秒10个数字,即每个数字100ms。代表数字的音频信号必须持续至少45ms,但不超过55ms。100ms 内其他时间为静音,以便区别连续的两个按键信号。编程的流程如图1所示,由CCITT 的规定,数字之间必须有适当长度的静音,因此编码器有两个任务,其一是音频信号任务,产生双音样本,其二是静音任务,产生静音样本。每个任务结束后,启动下一个任务前(音频信号任务或静音任务),都必须复位决定其持续时间的定时器变量。在静音任务结束后,DSP 从数字缓存中调出下一个数字, 判决该数字信号所对应的行频和列频信号,并根据不同频率确定其初始化参数a1=-2cosω0 与y(-2)=-Asinω0。该流程图可采用C 语言实现,双音信号的产生则由54x汇编代码实现。整个程序作为C 5 4 x 的多通道缓冲串口(McBsp)的发射串口中断服务子程序,由外部送入的16000Hz串口时钟
触发中断,可实时处理并通过D / A 转换器输出DTMF 信令信号。
3
DTMF信号的产生与检测
图2-1 DTMF编码流程
2.3 DTMF信号的检测方法
DTMF信号的检测方法可以有多种。主要分为从信号时间域处理和从信号频率域处理两大类。
前一种方法包括:过零点位置检测法、信号峰值位置检测法、过零点位置及信号幅值检测法。其特点是实现简单,可以通过MT8880等芯片加上外围电路实现,易于集成化。缺点是易受干扰,对信噪比要求高。现在广泛应用于一般的脉冲拨号电话机。通过神经网络等辅助判别方法可以大大提高信号的识别率。
后一种方法包括:频率判断、能量判断两类。频率判断主要通过滤波器提取DTMF相应的频率信号进行比较判断,滤波器可以用窄带、低通、高通滤波器,应用方式可以有并联、级联、混合联接等方式。能量判断是直接对DTMF信号相应的能量进行计算,找出高、低频率群中最强的信号,进行判断,包括有DFT法(Discrete Fourier Transform)、FFT(Fast Fourier Transform)、Goertzel法等。
本次实验我们采用的是能量判断法,并采用了Goertzel算法。
4
DTMF信号的产生与检测
图 6-11 程序编译成功
图 6-12 将程序下载到实验箱
25
DTMF信号的产生与检测
图 6-13 程序运行
图 6-13 打开gel文件滚动条
6.2 实验结果及图像
本次实验中,我们通过一台电脑循环产生0——9、A、B、C、D、*、#,在另一台电脑上会循环显示检测到的DTMF信号,即循环显示0——9、A、B、C、D、*、#。 下面我们从时域和频域两个角度观察一下检测信号的波形:
6.2.1 使用CCS中Graph显示
发送端的时域图形参数设置及显示结果如下所示:
图 6-14 发送缓存区图形参数设置(时域及频域)
26
DTMF信号的产生与检测
图 6-15 发送缓存区时域图形显示
图 6-16 发送缓存区波形频谱显示
检测端的时域图形参数设置及显示结果如下所示:
27
DTMF信号的产生与检测
图 4-17 检测缓存区图形参数设置(时域及频域)
图 6-18 发送缓存区时域图形显示
28
DTMF信号的产生与检测
图 6-19 发送缓存区波形频谱显示
6.2. 2 使用虚拟仪器显示
图 6-20 发送端信号时域波形
29
DTMF信号的产生与检测
图 6-21 发送端信号频谱
7. 遇到的问题及解决方法
【问题一】
新建工程时头文件路径不匹配,文件编译出错。
解决方法:在菜单栏中选中Project-Build Options-Compiler-preprocessor-Include Search Path,添加正确路径即可。
【问题二】
数据类型定义不当导致cmd文件中,内存分配不足,文件编译出错。
解决方法:打开Debug中的.map文件,观察缓存溢出情况,修改cmd文件内存分配。
【问题三】
声卡抽样频率设置有误,导致虚拟仪器观察输出波形时,出现多余频谱分量。
解决方法:打开AIC23.c,更改波特率设置,即采样频率设置为8K后,输出信号频谱正常。
【问题四】
信号幅度控制与自适应阈值选取衔接有误。
解决方法:算法有误,后采取合理算法即原域值30%+0.7倍第二大频点的幅度平方值70% (thresh=thresh*0.3+0.7*(linshi[1]*0.5) ),信号检测正常。
【问题五】
阈值选取不当,无法正常检测输出信号。
解决方法:经过多次尝试并修改阈值,最终选取合理阈值,正常判决、检测以及显示结果。
30
DTMF信号的产生与检测
8. 心得体会
刘璐:
双音多频DTMF信号是在按键式电话机上广泛应用的的音频信号,由于我家里最早接触的就是固话,一开始对这个题目比较感兴趣,就选择了这个题目。
通过看课件与查阅资料逐渐懂得了DTMF信号产生与检测的原理,熟悉了利用CSS这款软件和DSK板调试的过程。刚开始只知道按部就班的把过程操作一遍,后来通过学习也渐渐知道添加的*.lib,*.h这些文件的意义所在,比如rts.lib(支持C语言运行的库)、dsk5402.lib、drv5402.lib(是使用dsk板所需的库),c5400/cgtools/include里面含有dsp通用头文件,与硬件无关,而c5400/dsk5402/include中是硬件专用头文件等等。还有关于C语言在DSP课程设计中的应用和以前大一所学习的简单常用的C语言还是很有些区别,要掌握好编程还需要学习和努力。还有一个体会就是最后几天要接到实验板实在很困难,早上起的很早可能也没法借到板子来调试。
这次实验收获很大,掌握了一些对于CCS的运用,学习了DTMF信号的产生与检测的原理,学习了C语言的编程在dsp中的应用,真正体会到了DSP芯片强大的运算和处理能力,并且这次的课程设计不仅仅让我们学会如何使用DSP芯片以及应用,更是给我们今后在实际解决或系统设计时提供了一种设计思路,可根据不同系统的设计要求采用性能要求不同的DSP处理芯片来解决实际问题,同时有效地锻炼和提高了我们的软件编程能力。
总之,此次的课程设计使我收获颇丰,不仅掌握了DTMF信号的相关知识与CCS的操作,更锻炼了我处理问题的实际能力和思考问题的方法,这也必将对日后的科研相关工作奠定积极的意义。最后感谢老师对我的耐心细致的指导,谢谢老师。
9. 参考文献
[1]高海林 钱满义编写《DSP技术及其应用》清华大学出版社 [2] 陈后金等 《信号分析与处理实验》 高等教育出版社
[3] DTMF Tone Generation and Detection:An Implementation Using the TMS320C54x. SPRA096a ,TI.Inc.2000
[4]唐达强.双音多频信号接收器的设计与实现(硕士学位论文).北京:北方交通大学.1990 [5]陈通,曹小强. 基于NDFT Goertzel滤波器的DTMF信号检测的改进方法.西南大学学报.2008
[6]李义府. 双音多频信号检测在DSP中的实现.中南大学信息科学与工程学院.2006 [7]薛曼芳.基于改进的Goertzel算法的双音多频检测器的设计.甘肃:兰州工业高等专科学校.2008
31
正在阅读:
DTMF信号的产生与检测-实验报告04-08
民事诉讼法总结03-08
吃虫的植物06-18
2012电工电子实验指导书-卓工版05-25
高考英语改错常见考点大剖析与经典习题集12-05
湖南省衡阳市2019年中考物理试卷(word版,有解析)03-11
2019年清华大学经济管理学院金融硕士考研拟录取名单 - 图文10-19
我国亲职教育的现状与未来展望01-23
感受春天作文600字06-27
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 信号
- 产生
- 检测
- 实验
- 报告
- DTMF