电工电子教学基地
DSP课程设计
实
验
报
告
实验名称:DTMF信号的产生及检测
DTMF信号的产生及检测
一、实验设计内容
基本部分:
,可以通过键盘的输入产生0~9对应的DTMF信号,ITT对DTMF信号规定的指标。
,检测到的DTMF编码在屏幕上显示。
发挥部分:
利用DTMF信号完成数据通讯的功能,并试改进DTMF信号的规定指标,使每秒内传送的DTMF编码越多越好。
二、实验目的
了解、掌握DTMF的性质作用。
掌握DTMF的产生和检测的思想和方法。
了解Goertzel算法优化运算过程。
熟练运用C语言进行编程实现DTMF的产生与检测。
S5402的操作方法和调试检验方式。
三、实验器材
S软件环境
四、实验原理
双音多频DTMF(Dual Tone Multi-Frequency)信令,逐渐在全世界范围内使用在按键式电话机上,因其提供更高的拨号速率,迅速取代了传统转盘式电话机使用的拨号脉冲信令。近年来DTMF也应用在交互式控制中,诸如语言菜单、语言邮件、电话银行和ATM终端等。将DTMF信令的产生与检测集成到任一含有数字信号处理器(DSP)的系统中,是一项较有价值的工程应用。
DTMF编解码器在编码时将击键或数字信息转换成双音信号并发送,解码时在收到的DTMF信号中检测击键或数字信息的存在性。电话机键盘上每一个键通过由图1所示的行频与列频唯一确定。DTMF的编解码方案无需过多的计算量,可以很容易的在DSP系统里与其他任务并发执行。一个DTMF 信号由两个频率的音频信号叠加构成。这两个音频信号的频率分别来自两组预定义的频率组:行频组和列频组。每组分别包括4 个频率,分别抽出一个频率进行组合就可以组成16 种DTMF 编码,分别记作0~9、*、#、A、B、C、D。
1、 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发送出去。
2、 DTMF信号的检测
在输入信号中检测DTMF信号,并将其转换为实际的数字,这一解码过程本质是连续的过程,需要在输入的数据信号流中连续地搜索DTMF信号频谱的存在。整个检测过程分两步:首先采用Goertzel算法在输入信号中提取频谱信息;接着作检测结果的有效性检查。
Goertzel算法
DTMF解码即是在输入信号中搜索出有效的行频和列频。计算数字信号的频谱可以采用DFT及其快速算法FFT,而在实现DTMF解码时,采用Goertzel算法要比FFT更快。通过FFT可以计算得到信号所有谱线,了解信号整个频域信息,而对于DTMF信号只用关心其8个行频/列频及其二次谐波信息即可(二次谐波的信息用于将DTMF信号与声音信号区别开)。此时Goertzel算法能更加快速的在输入信号中提取频谱信息。G直接计算DFT,需要很多复系数,,则可明显地提高速度。
利用二阶复共轭极点可以得到只有一个实系数的差分方程:
1st Harmonics
(N = 205) fs = 8 ksps
2nd Harmonics
(N=201) fs = 8 ksps
k
frequency
(k/N)fs/Hz
coefficient
cos(2pi k/N)
k
frequency
(k/N)fs/Hz
coefficient
cos(2pi k/N)
18
702
35
1393
20
780
39
1552
22
858
43
1711
24
936
47
1871
31
1210
DTMF信号的产生及检测 来自淘豆网m.daumloan.com转载请标明出处.