双音多频(Dual Tone Multi Frequency, DTMF)信号是音频电话中的拨号信号,由美国AT&T贝尔公司实验室研制,并用于电话网络中。这种信号制式具有很高的拨号速度,且容易自动检测识别,很快就代替了原有的用脉冲计数方式的拨号制式。这种双音多频信号制式不仅用在电话网络中,还可以用于传输十进制数据的其他通信系统中,用于电子邮件和银行系统中。这些系统中用户可以用电话发送DTMF信号选择语音菜单进行操作。
DTMF信号系统是一个典型的小型信号处理系统,它要用数字方法产生模拟信号并进行传输,其中还用到了D/A变换器;在接收端用A/D变换器将其转换成数字信号,并进行数字信号处理。本文着重介绍了一种快速的频率检测算法——GEORTZEL算法的原理,以及该算法在双音多频拨号检测系统中的应用。并根据此算法设计出了相应的滤波器,利用MATLAB在计算机上对双音多频的信令产生及检测接收系统进行了仿真测试。
双音多频(Dual Tone Multi Frequency,DTMF)信号,由美国AT&T贝尔实验室研制,用于音频电话网络中的拨号信号。一方面这种信号具有非常高的拨号速度,另一方面它便于自动检测识别及电话业务的拓展,所以很快代替了原有的脉冲计数方式的拨号形式。
自1876年美国贝尔发明电话以来,电话交换技术发展主要经历了三个阶段:人工交换、机电交换、电子交换。早在1878年就出现了人工供电制交换机,它借助话务员进行话务连接。15年后步进制的交换机问世,这种交换机属于“直接控制”方式,用户通过话机拨号脉冲直接控制步进接续器做升降和旋转动作。从而自动完成用户间的接续。这种交换机虽然实现了自动接续,但存在着速度慢、效率低、杂音大与机械磨损严重等缺点。直到1938年发明了纵横制交换机由直接控制过渡到间接控制方式,随后又出现了电子交换机及程控交换机等。用户的拨号脉冲不再直接控制接线器动作,而先由记发器接收、存储,然后通过标志器驱动接线器,以完成用户间接续。由于标志器记取的是标识信号,所以可以不采用不稳定的脉冲计数方式,逐步发展到数字号码标识,所以快速、稳定灵活的DTMF音频拨号方式取代了脉冲计数方式。
本文主要阐述GOERTZEL算法在双音拨号系统中的应用,并利用Matlab的强大功能,用软件实现DTMF(双音多频)信号的检测。
1.2 数字信号简介
信号是反映消息的物理量,是消息的表现形式。由于非电的物理量可以通过各种传感器较容易地转换成电信号,而电信号又容易传送和控制,所以使其成为应用最广的信号。电信号是指随着时间而变化的电压或电流,因此在数学描述上可将它表示为时间的函数,并可画出其波形。信息可以通过电信号进行传送、交换、存储、提取等。
电信号的形式是多种多样的,可以从不同的角度进行分类。根据信号的随机
性可以分为确定信号和随机信号;根据信号的周期性可分为周期信号和非周期信
1
号;根据信号的连续性可以分为连续时间信号和离散信号;在电子线路中将信号分为模拟信号和数字信号。
我们每天遇到的信号,大部分都是模拟信号。离散时间信号只被定义在一种特定的时间瞬间集合上,表现为具有连续数值范围的数值序列。而数字信号在时间上和幅值上都有离散的数字。因此在实际的操作中,数字信号更容易处理。随着数字电子技术的发展,在语音处理、通信控制、图象处理等领域DSP(Digital Signal Processor 数字信号处理器 )也得到了越来越广泛的应用。
数字通信抗干扰能力强、无噪声积累,由于数字信号的幅值为有限个离散值(通常取两个幅值),在传输过程中虽然也受到噪声的干扰,但当信噪比恶化到一定程度时,即在适当的距离采用判决再生的方法,再生成没有噪声干扰的和原发送端一样的数字信号,所以可实现长距离高质量的传输。
较之传统的方法,数字信号处理系统自身有着无可比拟的优点:
(1)便于加密处理
信息传输的安全性和保密性越来越重要,数字通信的加密处理的比模拟通信容易得多,以话音信号为例,经过数字变换后的信号可用简单的数字逻辑运算进行加密、解密处理。
(2)便于存储、处理和交换
数字通信的信号形式和计算机所用信号一致,都是二进制代码,因此便于与计算机联网,也便于用计算机对数字信号进行存储、处理和交换,可使通信网的管理、维护实现自动化、智能化。
(3)设备便于集成化、微型
数字通信采用时分多路复用,不需要体积较大的滤波器。设备中大部分电路是数字电路,可用大规模和超大规模集成电路实现,因此体积小、功耗低。
(4)便于构成综合数字网和综合业务数字网
采用数字传输方式,可以通过程控数字交换设备进行数字交换,以实现传输和交换的综合。另外,电话业务和各种非话业务都可以实现数字化,构成综合业务数字网。
2
(5)占用信道频带较宽
一路模拟电话的频带为4kHz带宽,一路数字电话约占64kHz,这是模拟通信目前仍有生命力的主要原因。随着宽频带信道(光缆、数字微波)的大量利用以及数字信号处理技术的发展,数字电话的带宽问题已不是主要问题了。
下面用MATLAB程序对该系统进行模拟,程序分四段:第一段(第2~7行)设置参数,并读入8位电话号码;第二段(第9~20行)根据输入的8位电话号码产生时域离散DTMF信号,并连续发出8位号码对应的双音频声音;第三段(第22~25行)对时域离散DTMF信号进行频率检测,画出幅度谱;第四段(第26~33行)根据幅度谱的两个峰值,分别查找并确定输入的8位电话号码。程序如下:
17
% DTMF双频拨号信号的生成和检测程序:
%clear all;clc;
tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68]; % DTMF信号代表的16个数
N=205;K=[18,20,22,24,31,34,38,42]; %8个基频对应的8个k值
f1=[697,770,852,941]; % 行频率向量
f2=[1209,1336,1477,1633]; % 列频率向量
TN=input('键入8位电话号码= '); % 输入8位数字
TNr=0; %接收端电话号码初值为零
for l=1:8; %分别对每位号码数字处理:产生信号,发声,检测
d=fix(TN/10^(8-l)); %计算出第l位号码数字
TN=TN-d*10^(8-l);
for p=1:4;
for q=1:4;
if tm(p,q)==abs(d); break,end % 检测与l位号码相符的列号q
end
if tm(p,q)==abs(d); break,end % 检测与l位号码相符的行号p
end
n=0:1023; % 为了发声,加长序列
x = sin(2*pi*n*f1(p)/8000) + sin(2*pi*n*f2(q)/8000);% 构成双音频信号
sound(x,8000); % 发出声音
pause(0.1) %相邻信号响声之间加0.1秒停顿
% 接收检测端的程序
X=goertzel(x(1:N),K+1); % 用Goertzel算法计算8点DFT样本
val = abs(X); % 列出八点DFT的摸
subplot(4,2,l);
stem(K,val,'.');grid;xlabel('k');ylabel('|X(k)|') % 画出8点DFT(k)的幅度
axis([10 50 0 120])
limit = 80; %基频检测门限为80
for s=5:8;
if val(s) > limit, break, end % 查找列号
end
for r=1:4;
if val(r) > limit, break, end % 查找行号
end
18
TNr=TNr+tm(r,s-4)*10^(8-l); %将8位号码表示成一个8位数,以便显示
end
disp('接收端检测到的号码为:') % 显示接收到的8位电话号码
disp(TNr)
运行程序,根据提示输入8位电话号码12345678,回车后可以听见8位电话号码对应的DTMF信号的声音,并输出响应的频谱图,如图5-1所示。左上角的第一个图在k=18和k=31两点出现峰值,所以对应第一位号码数字1,依次类推,其他7幅图分别表示数字2,3,4,5,6,7,8对应的DTMF信号DFT的8点采样的幅度值。最后显示检测到的电话号码12345678,如图5-2所示。
图5-1 8位电话号码12345678的DTMF信号在8个近似基频点的DFT幅度