双音多频 DTMF 技术的 DSP 实现
摘 要 本课程设计的目标是双音多频 DTMF 技术的 DSP 实现,即用 DSP 实现双音多频
DTMF 的拨号产生和解码。在设计过程中,利用 CCS 软件在 TI 公司定点 DSP 芯片
TMS320C54x 系列中的实现 DTMF 信号的检测,采用 DSP 技术既增加了系统的功能、
灵活性,又降低费用,克服了硬件电路实现检测的缺点。
关键字 双音多频 DTMF;DSP ;CCS;
1 前言
双音多频 DTMF(Dual Tone Multi Frequency)信令,逐渐在全世界范围内使用在按
键式电话机上,因其提供更高的拨号速率,迅速取代了传统转盘式电话机使用的拨号脉
冲信令。近年来 DTMF 也应用在交互式控制中,诸如语言菜单、语言邮件、电话银行和
ATM 终端等。通过软件产生与检测 DTMF 信令,是一项较有价值的工程应用。这是一
种技术,就是现在的电话机和交换机之间通讯时采用的,简称 DTMF,就是电话机上的
一个按键按下去时,电话机向交换机同时发送两个频率的信号,告诉交换机按的是哪个
按键,以前采用脉冲方式,速度慢,一共有 8 个频率的音频信号,分为 2 组,每组 4 个,
两两组合共可以代表 16 个按键,分别代表 0-9 、#、*等按键[1]。
这是一种技术,就是现在的电话机和交换机之间通讯时采用的,简称 DTMF,就是
电话机上的一个按键按下去时,电话机向交换机同时发送两个频率的信号,告诉交换机
按的是哪个按键,以前采用脉冲方式,速度慢,一共有 8 个频率的音频信号,分为 2 组,
每组 4 个,两两组合共可以代表 16 个按键,分别代表 0-9 、#、*等按键。
电话中的双音多频信号(DTMF)有两种用途:一是用于双音多频信号的拨号,去
控制交换机接通被叫的用户话机;二是利用双音多频信号遥控电话机各种动作,如播放
留言、语音信箱等,并可以通过附加一些电路来是实现遥控家电设备的开启关闭等智能
功能。前者解决双音多频信号的发送和编码,后者是双音多频信号的接收和解码。这些
东西都离不开DTMF信号的正确检测。目前,大多数的DTMF信号的检测均采用专用的
发送、接收芯片,这种解码的原理都依赖于计算输入信号的过零率。但这种方法有很大
的局限性,无法检测多路DTMF信号,当混有语音和噪声时,专用芯片检测往往出现误
差,如果音频信号频率改变应用于别的系统时,专用的芯片就发挥不了作用。所以,用
硬件实现DTMF信号的检测并不是一种很好的选择。
信息化已经成为社会发展的大趋势,信息化是以数字化为背景的,而DSP技术则是
数字化最重要的基本技术之一。在过去的短短的二十来年里,DSP处理器的性能得到很
大改善,软件和开发工具也得到相应的发展,价格却大幅度地下降,从而得到越来越广
泛的应用。通信领域(移动通信的交换设备、基站和手机,网络的路由和交换设备,智
能天线,软件无线电,IP电话等),雷达和声纳系统,巡航导弹、灵巧炸弹及各种武器
系统,自动测试系统,医疗诊断设备(CT、核磁共振、B超等),计算机及其外设,消
费类电子设备(VCD、DVD、HDTV、机顶盒、MP3、家庭影院系统、数字照相机和摄
象机等),机器人及各种自动控制系统,等等,应用范围不胜枚举。
2 开发环境介绍
2.1 CCS 简介
Code Composer Studio,英文缩写 CCS,中文译名: 代码调式器,代码设计套件,
提供强健、成熟的核心功能与简便易用的配置和图形可视化工具,使系统设计更
快的集成开发环境。CCS 提供了环境配置、源文件编辑、程序调试、跟踪和分析
等工具,可以帮助用户在一个软件环境下完成编辑、编译链接、调试和数据分析
等工作。使用 CCS 开发应用程序的一般步骤(如图 2-1)为:
(1)打开或创建一个工程文件。工程文件中包括源程序(C 或汇编)、目标
文件、库文件、连接命令文件和包含文件。
(2)使用 CCS 集成编辑环境,编辑各类文件。如头文件(.h 文件),命令文
件(.cmd 文件)和源程序(.c,.asm 文件)等。
(3)对工程进行编译。如果有语法错误,将在构建(Build)窗口中显示出来。
用户可以根据显示的信息定位错误位置,更改错误。
(4)排除程序的语法错误后,用户可以对计算结果或者输出数据进行分析,
评估算法性能。CCS 提供了探针、图形显示、性能测试等工具来分析数据、评估
性能。
CCS 一般工作在两种模式下:软件仿真器与硬件开发板相结合的在线编程。
前者可以脱离 DSP 芯片,在 PC 机上模拟 DSP 的指令集与工作机制,主要用于前
期算法实现和调试。后者实时运行在 DSP 芯片上。可以在线编制和调试应用程序。
一般地,一种 CCS 只适用于一种系列的 DSP 芯片。
设计
概念性规划
编程和编译
创建工程文件、
编写源程序和配
置文件
调试
语法检查、探
测点设置和日
志保存等
分析
实时调试、统
计和跟踪
图 2-1 CCS 编程的流程图
利用 CCS 可以在一个软件环境下一次性完成编程、编译、调试和数据分析等工作,
充分利用 CCS 所提供的功能,可以帮助我们高效地开发 DSP 应用系统。
2.2 DSP 简介
DSP 数字信号处理(Digital Signal Processing,简称 DSP)是一门涉及许多学科
而又广泛应用于许多领域的新兴学科。20 世纪 60 年代以来,随着计算机和信息技
术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是
一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号
由数字序列表示。在过去的二十多年时间里,数字信号处理已经在通信等领域得
到极为广泛的应用。
DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的
器件。其工作原理是接收模拟信号,转换为 0 或 1 的数字信号,再对数字信号进行修改、删
除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可
编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,
是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得
称道的两大特色。
DSP 芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,
其主要应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP 芯片
一般具有如下主要特点:
(1)在一个指令周期内可完成一次乘法和一次加法;
(2)程序和数据空间分开,可以同时访问指令和数据;
(3)片内具有快速 RAM,通常可通过独立的数据总线在两块中同时访问;
(4)具有低开销或无开销循环及跳转的硬件支持;
(5)快速的中断处理和硬件 I/O 支持;
(6)具有在单周期内操作的多个硬件地址产生器;
(7)可以并行执行多个操作;
(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。
(9)与通用微处理器相比,DSP 芯片的其他通用功能相对较弱些。
3 相关原理分析
3.1 双音多频(DTMF)信号
双音多频(DTMF)是电话中最常用的信号音。如图 3-1 所示,电话机的每一个按
键分别代表一个双音频信息,该双音频由按键所在的行和列对应的频率决定[2]。
DTMF 编解码器在编码时将击键或数字信息转换成双音信号并发送,解码时在收到
的 DTMF 信号中检测击键或数字信息的存在性。一个 DTMF 信号由两个频率的音频信
号叠加构成。这两个音频信号的频率来自两组预分配的频率组:行频组或列频组。每一
对这样的音频信号唯一表示一个数字或符号。电话机中通常有 16 个按键,其中有 10 个
数字键 0~9 和 6 个功能键*、#、A、B、C、D。由于按照组合原理,一般应有 8 种不同
的单音频信号。因此可采用的频率也有 8 种,故称之为多频,又因它采用从 8 种频率中
任意抽出 2 种进行组合来进行编码,所以又称之为“8 中取 2”的编码技术。根据 CCITT
的建议,国际上采用的多种频率为 687Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、
1477Hz 和 1633Hz 等 8 种。用这 8 种频率可形成 16 种不同的组合,从而代表 16 种不同
的数字或功能键。
图 3-1 电话按键对应的双音频示意图
其中12 个按键是我们比较熟悉的按键, 另外由第4 列确定的按键作为保留, 为今
后他用。上述标准频率的选定不是任选的,而是设计时考虑了拨号音、忙音及交流电源
的杂音,这些杂音均不在上述DTMF信号的范围内。同时为了避免标准率之间的谐波干
扰出现,故所列最高标准频率小于最低标准频率的三次谐波频率。
音频组合信号发送方式:有并列发送、串列发送及串并发送。
(1)并列发送
并列发送是同时发送几个频率。其特点是呼叫所需时间短,但每个频率的调制小
(因为总调制量平均分给了各个频率),因此在接收信噪比受到一定影响,同时信号之
间可能会产生互调,因而造成误码。所以不宜采用三个以上的频率并列发送,一般均采
用双频并列发送,且选用标准频率避开谐波的影响。
(2)串列发送
串列发送是将组合的频率串行逐一发送,其特点是可以得到最大调制度(因为每
个时刻只发送其中一个频率信号),则接收端的信噪比比并行高,故误码率、抗干扰能
强,只发一个音频f,故不会产生互调失真。同时由于是串行发送,同样多的频率的排
列组合数比并列的多,因此编码容量大。另外,由于串行发送呼叫时间长。
(3)串、并组合发送
将并列、串列发送组合起来,这样它就吸收了并、串列发送各自的长处,弥补了
各自的不足。优点是编码容量大,且呼叫时间有不长。但在串、并列组合时要特别注意
的是合理选择所使用的音频频率,有效减少二次谐波所产生的寄生干扰,以减少误码。
DTMF 编解码算法在产生编码时将按键信号转换成对应音频信号并发送出去, 解
码时对收到的音频信号进行检测分析有效频率组合的存在性, 并将其转换成对应的按键
或数字信息。电话中的双音多频信号(DTMF)有两种作用:一是用于双音多频信号的
拨号,去控制交换机接通被叫的用户电话机;二是利用双音多频信号控制电话各种动作。
DTMF 双音频可以由两个可编程的 2 阶数字正弦振荡器产生,其中一个用于产生行
音频,另一个用于产生列音频。由于 DTMF 频率范围在 697~1633 之间,根据 Nyquist
定理可知,以 8kHz 速率抽样对 DTMF 信号没有影响。图 3-2 给出了一对数字振荡器的
方框图,表 3-1 给出了产生 DTMF 信号所需的初始条件和有关系数[3]。
图 3-2 数字正弦震荡器方框图
表 3-1 正弦振荡器系数和初始值
频率/Hz
697
770
852
941
1209
1336
1477
1633
a1
0.85382
0.82263
0.78433
0.73911
0.58206
0.49820
0.39932
0.28424
y(-1)
0
0
0
0
0
0
0
0
y(-2)/A
-0.52047
-0.56857
-0.62033
-0.67358
-0.81314
-0.86706
-0.91680
-0.95874
数字正弦振荡器通常可以视为复共轭极点位于单位圆上的 2 阶振荡器。2 阶极点的
系统函数可表示为
( )
H z
b
0
1
2
a z
2
1
a z
1
其中,
b
0
A
0
sin
a
1
2cos
0
a
2
1
共轭极点位
p
1,2
j
e
0
其离散时域脉冲响应为
( )
h n
A
sin[(
n
1)
0
( )
u n
]
(3-1)
(3-2)
(3-3)
由上式可知,对于给定的脉冲输入,2 阶系统将输出一个纯净的正弦波。在实际应用中,我们
常常将系统用差分方程形式来描述
( )
y n
(
a y n
1
1)
(
a y n
2
2)
( )
b
n
0
(3-4)
这里, ( 1) 0
y , ( 2) 0
y 。注意到作用于系统的脉冲的目的是开始一个正弦震荡,如果
系统无阻尼且稳定,那么随后正弦振荡将一直持续下去。为方便起见,不将脉冲作为输入,而是
改变 ( 2)
y 的初始值,使其满足系统振荡的初始条件,这样差分方程可改写为
( )
y n
2cos
0
(
y n
1)
(
y n
2)
(3-5)
这里, ( 1) 0
y
y
(2)
A
0
sin
2
0
f
0
/
f
s
sf 是抽样速率, 0f 为正弦波频率,A 为正弦波幅度。可以从式 3-5 中发现, ( 2)
y 单独决定
了正弦波的幅度。
3.2 奈奎斯特定理
要从抽样信号中无失真地恢复原信号,抽样频率应大于 2 倍信号最高频率。
抽样频率小于 2 倍频谱最高频率时,信号的频谱有混叠。抽样频率大于 2 倍频谱
最高频率时,信号的频谱无混叠。
连续时间信号变为离散时间信号是由“抽样”这一过程完成的。抽样是将模拟信号数
字化的第一个环节。它是利用周期性抽样脉冲序列(常用 p(t)表示)从连续信号中抽取一
系列的离散值来得到抽样信号的。抽样过程可以看成脉冲调幅:连续信号即为调制信号,
载波是周期为 T 的周期性脉冲串。根据每个脉冲宽度的不同,可将抽样分为理想抽样和
实际抽样两种。
由图 3-3 可见,理想抽样的抽样脉冲序列为宽度趋于 0 的周期冲激序列,抽样频率
小于 2 倍频谱最高频率时,信号的频谱有混叠,抽样频率大于 2 倍频谱最高频率时,信
号的频谱无混叠;实际抽样的抽样脉冲序列为有一定宽度的矩形周期脉冲序列。其频谱
在幅度上受 sin(Ωτ/2)/(Ωτ/2)(τ是脉冲宽度)加权,抽样频率小于 2 倍频谱最高频率时,信
号的频谱有混叠,抽样频率大于 2 倍频谱最高频率时,信号的频谱无混叠。综上所述,
要从抽样信号中无失真的恢复原信号,抽样频率应大于 2 倍信号最高频率。
图 3-3 奈奎斯特原理图