做个人情 直接给楼主贴出来!!!
基于DSP的DTMF信号的检测
作者:高中秋 物理与电子信息学院 01信电1班 01063103
摘 要:双音多频DTMF(Dual Tone Multi-Frequency)信令在全世界范围内得到广泛应用,将DTMF信令的产生与检测集成到含有数字信号处理器(DSP)的系统中,是一项较有价值的工程应用。本文给出一种实现方案,阐述DTMF信令的产生与检测的基本原理:用两个二阶数字数字正弦振荡器产生DTMF信号,并通过Goertzel算法实现DTMF信号检测。本论文是在TI公司定点DSP芯片TMS320C54x系列中的实现DTMF信号的检测,采用DSP技术既增加了系统的功能、灵活性,又降低费用,克服了硬件电路实现检测的缺点。 关键词:数字信号处理器DSP 双音多频DTMF 正弦波振荡器 Goertzel算法 3.TMS320C5402中实现DTMF信号的产生与检测 3.1。 TMS320C5402中实现DTMF信号的产生 4。数据分析
5。性能分析
6。MATLAB 验证DTMF信号的产生与检测
7。结论
电话中的双音多频信号(DTMF)有两种用途:一是用于双音多频信号的拨号,去控制交换机接通被叫的用户话机;二是利用双音多频信号遥控电话机各种动作,如播放留言、语音信箱等,并可以通过附加一些电路来是实现遥控家电设备的开启关闭等智能功能。前者解决双音多频信号的发送和编码,后者是双音多频信号的接收和解码。这些东西都离不开DTMF信号的正确检测。目前,大多数的DTMF信号的检测均采用专用的发送、接收芯片,这种解码的原理都依赖于计算输入信号的过零率。但这种方法有很大的局限性,无法检测多路DTMF信号,当混有语音和噪声时,专用芯片检测往往出现误差,如果音频信号频率改变应用于别的系统时,专用的芯片就发挥不了作用。所以,用硬件实现DTMF信号的检测并不是一种很好的选择。 信息化已经成为社会发展的大趋势,信息化是以数字化为背景的,而DSP技术则是数字化最重要的基本技术之一。在过去的短短的二十来年里,DSP处理器的性能得到很大改善,软件和开发工具也得到相应的发展,价格却大幅度地下降,从而得到越来越广泛的应用。通信领域(移动通信的交换设备、基站和手机,网络的路由和交换设备,智能天线,软件无线电,IP电话等),雷达和声纳系统,巡航导弹、灵巧炸弹及各种武器系统,自动测试系统,医疗诊断设备(CT、核磁共振、B超等),计算机及其外设,消费类电子设备(VCD、DVD、HDTV、机顶盒、MP3、家庭影院系统、数字照相机和摄象机等),机器人及各种自动控制系统,等等,应用范围不胜枚举。 方案1. 硬件实现:以往的DTMF信号的产生检测一般用的是模拟硬件电路实现的。前几年DTMF编解码电路大量是使用LC或者音叉振荡电路以产生DTMF的8个音频。而解码电路过去采用的是音叉滤波,后又改进为有锁相环检测集成电路和简单的滤波器组成,但需要八路。这些电路复杂,制造和调整麻烦。电路多属于CMOS集成电路,它一般包括DTMF分组滤波器和DTMF译码器,当DTMF信号经输入电路输入时,先进入高、低频滤波器滤波,经带通滤波后,不仅滤波后,不仅滤掉了信号中的噪声干扰,而且DTMF信号的高频信号(fH )和低频信号(fL)也被区分开来,然后这两组信号分别进入过零检测,比较后,得到相应于DTMF的两路fH 、fL 信号的输出,该两路信号经译码、锁存、缓冲、恢复成对应于16种DTMF信号音频的4比特二进制码。
这种用硬件电路实现DTMF检测与软件处理数字信号比起来会有较大的缺陷。
(1) 对于一个可编程的数字系统,改变下程序就可以改变对信号处理的方式,而对模拟系统的重新配置就意味着重新设计硬件。
(2) 精度上的要求也决定了处理器的选择。
(3) 数字信号可以很容易地存储在磁介质中而不会丢失
方案2. 软件实现:曾经有人尝试用DSP构成一个数字式带通滤波器,其中心频率随着采样频率的不同而改变。用顺序扫描的方式来检查每个频率,当某个频率超过给定的门限值时,将其记录,从而确定收到的是哪一个键的信号。然而该方法有一个严重的缺点:由于在给定的时间内只能检测8个频率中的一个,而不是8个同时检测,从而使检测的速度缓慢。 因此,本文基于TMS320S54X的DTMF信号的检测,是在频域解决了上述问题,使DTMF的检测更加快捷、准确。下面详细介绍基于DSP的DTMF信号的检测。 DTM F 信令由8 个频率组成, 其中4 个行频、4 个列频。每个按键唯一地由一组行频和列 其中12 个按键是我们比较熟悉的按键, 另外由第4 列确定的按键作为保留, 为今后他用。上述标准频率的选定不是任选的,而是设计时考虑了拨号音、忙音及交流电源的杂音,这些杂音均不在上述DTMF信号的范围内。同时为了避免标准率之间的谐波干扰出现,故所列最高标准频率小于最低标准频率的三次谐波频率。 音频组合信号发送方式:有并列发送、串列发送及串并发送。 并列发送是同时发送几个频率。其特点是呼叫所需时间短,但每个频率的调制小(因为总调制量平均分给了各个频率),因此在接收信噪比受到一定影响,同时信号之间可能会产生互调,因而造成误码。所以不宜采用三个以上的频率并列发送,一般均采用双频并列发送,且选用标准频率避开谐波的影响。 串列发送是将组合的频率串行逐一发送,其特点是可以得到最大调制度(因为每个时刻只发送其中一个频率信号),则接收端的信噪比比并行高,故误码率、抗干扰能强,只发一个音频f,故不会产生互调失真。同时由于是串行发送,同样多的频率的排列组合数比并列的多,因此编码容量大。另外,由于串行发送呼叫时间长。 将并列、串列发送组合起来,这样它就吸收了并、串列发送各自的长处,弥补了各自的不足。优点是编码容量大,且呼叫时间有不长。但在串、并列组合时要特别注意的是合理选择所使用的音频频率,有效减少二次谐波所产生的寄生干扰,以减少误码。 DTM F 编解码算法在产生编码时将按键信号转换成对应音频信号并发送出去, 解码时对收到的音频信号进行检测分析有效频率组合的存在性, 并将其转换成对应的按键或数字信息。电话中的双音多频信号(DTMF)有两种作用:一是用于双音多频信号的拨号,去控制交换机接通被叫的用户电话机;二是利用双音多频信号控制电话各种动作。 DTMF双音多频信号由图A-2所示的两个二阶数字正弦振荡器产生,一个用来产生行音频信号,另一个用来产生列音频信号。图A-2中包括了两个二次谐波数字振荡器。 的2阶系统,该系统具有2个在单位圆上的复共轭极点。其中b0=Asinω0,a1=-2cosω0,a2=-1 对应的极点分别为P1、2=e±jω0其单位脉冲应为 h (n) = sin ( (n + 1) ω)* u (n) (E-2) y (n) = - a1y (n - 1) - a2y (n -2) - b0δ(n) , (E-3) 其初始条件为y (- 1) = y (- 2) = 0。为应用方便可以通过选取初值而避免将一个δ脉冲作为输出条件。我们取y(-1)=0 ; y(-2)=-Asinω0,其中ω0=2πf0/fs, f0为所需产生的频率,fs为采样频率,根据Nyquist 采样定理对于最高频率不高于4 kHz 的信号都可以完整地恢复。通过对初值的修改,得到图A-2的振荡器模型。其系统差分方程为: y (n) =a1y (n - 1) - a2y (n -2) (E-4), 其中a1=2cosω0; a2=-1。初值条件y (- 1)=0;y(-2)= Asinω0, A为输出正弦波的幅度。 根据CCITT 规定,DTMF信令每秒最多10个数字, 也就是周期为100ms, 其中DTMF信号的持续时间不少于45ms, 不大于55ms; 其余时间为静音信号, 用以区别两个DTMF数字信号。本设计输出DTMF持续时间为50ms(≥45ms,≤55ms), 根据最高频率确定400 个采样点。 Goertzel 算法执行离散傅立叶变换(Discrete Fourier Transform),这个算法较为精简,而且每个频率只需要一个实数系数就可以决定值的振幅;但是,正确计算数值振幅和相位时需要复数系数,故需要较复杂的程序,借助只计算音调频率的振幅而忽略相位的计算,我们可以简化DTMF信号的译码工作。此外,Goertzel算法只要获得任何采样就可以立刻处理,不必获得全部采样之后才处理,可明显地提高速度。Goertzel算法是DTMF信号检测的核心,它利用二极点的IIR滤波器计算离散傅立叶变换值,快速有效的提取输入信号的频谱信息。 Goertzel 算法利用了相位因子{WNk}的周期性,允许我们将DFT的计算表示为线性滤波运算,因WN-kN=1,我们可以利用该因子乘上DFT,于是,可得 注意:式(E-5)为卷积形式,的确,如果我们定义序列yk(n)为 很清楚,yk(n)是长度为N的有限时宽输入序列x(n)与滤波器的卷积,并且滤波器的冲激 当n=N时,该滤波器的输出为DFT在频率Wk=2πk/N处的值,亦即 如同将(E-5)与式(E-6)相比较就可验证一样。冲激响应为hk(n)的滤波器,他的系数函数可表示为 该滤波器在单位圆上的频率Wk=2πk/N处有一个极点。因此,通过将输入的数据组输入到N个单极点并行滤波器(谐振器)组就可计算整个N点DFT,其中,每一滤波器在响应的DFT频率上有一个极点。 我们可以利用对应于式(E-9)给定的滤波器的差分方程来递推计算yk(n),而不是按式(E-5)通过卷积来实现DFT的计算,因此我们有 yk(n)=WN-kyk(n-1)+x(n) (E-10) 所期望的输出是X(k)=yk(N),其中k=0,1,…,N-1,为了完成这一计算,我们可以一次计算并储存相位因子WN-k。 通过将具有复共轭极点的谐波器结合成对,就可以避开式(E-10)所固有的复数乘法和加法,这就产生了具有两个极点的的滤波器,其系统函数为 图A-5 用于计算DFT的两极点谐振器的直接型Ⅱ实现 对n=0,1,…,N,式(E-12)中的递推关系可迭代进行。但式(E-13)中的程序仅当n=N时计算一次,每迭代需要一次实数乘法和两次加法。因此,对实输入序列x(n),该算法通过N+1次实数乘法不仅得到X(k),而且由于对称性也得到X(N-k)的值。 当值M相对较小时,比如 ,Goertzel算法特别有吸引力,在其他情况下,FFT算法更为有效。 C54X是为实现低功耗、高性能而专门设计的定点DSP芯片,C54X的主要特点包括: (1) 先进的多总线结构(1条程序总线、3条数据总线和4条地址总线)。 (2) 40位算术逻辑单元(ALU),包括一个40位的桶式移位器和两个独立的40位累加器。 (3) 17位×17位并行乘法器和一个40位专门的加法器,用于非流水线的单周期乘法/累加器(MAC)操作。 (4) 比较、选择、储存单元(CSSU),用于维特比算子的加法/比较选择。 (5) 指数编码器E,用来在一个单周期内计算一个40位累加器中数值的指数。 (6) 两个地址产生器,包括8个辅助寄存器和2个辅助寄存器算术单元。 192字×16位可寻址的存储器空间(64K字的程序空间、64K字的数据空间和64K字的I/O),对于C548、C549、C5402、C5410和C5420 DSP,可以扩展程序空间为8MB。 (3) 具有内部振荡器或外部时钟源的片内锁相环(PLL)时钟发生器。 (4) 外部总线关控制可禁止外部数据总线、地址总线和控制信号。 (7) 端口。C54X DSP根据器件的信号不同,具有不同的配置端口数量。 l 25/20/15/12。5/10/6.25ns单周期、定点指令执行周期。 (1) 可用IDLE 1、IDLE 2和IDLE 3指令来控制功耗,以工作在节电方式。 3.TMS320C5402中实现DTMF信号的产生与检测 3.1 TMS320C5402中实现DTMF信号的产生 文章中提到DTMF信号的两种音调是由一个行音调和一个列音调的线性组合而成的,并由这种线性组合唯一确定。DTMF 编解码器在编码时将击键或数字信息转换成双音信号并发送,解码时在收到的DTMF 信号中检测击键或数字信息的存在性。电话机键盘上每一个键通过由图A-1所示的行频与列频唯一确定。DTMF的编解码方案无需过多的计算量,可以很容易的在DSP 系统里与其他任务并发执行。此外,在这个设计中,每个数字都被编程一个十六进制的形成,其范围在00H~0FH之间,这些编码数字都在图A-3中的括号中,比如数字’8’,将会在程序中被编成09H。 在DSP芯片TMS320C5402中,DTMF信号的产生是由两个正弦波的叠加而成的。其产生方法为: DSP 用软件产生两个正弦波叠加在一起后发送。正弦波的产生由查表程序获得。首先将0°~ 180°等分成128个点,存放在DSP的存储单元中;将181°~ 360°等分成128个点存放在存储器中。根据频率的不同在一个周期内间隔不同的点数,来实现产生不同频率的正弦波。保留一个存储单元用来放置按键的号码,开辟两个存储器单元分别存放行频正弦波的采样点和列频正弦波的采样点。最后将两个存储单元的数据叠加,得到所需要的DTMF信号。 由于电话公司的数据数字化频率,采样频率一般制定为8k Samples/Sec,所以大部分电路都在此采样频率下运行。根据奈氏定理(Nyquist Criterion)取信号频率至少是信号最高频率的2倍。所以,8k的采样率满足要求。AT&T规定每秒最多按10个键,即每个键时隙的最短100ms,其中音频实际持续时间至少为45ms,不大于55ms,时隙的其他时间内保持静默(静音)。因此按键产生双音多频信号时,相继的两个信号间隔一段时间;解码器利用这个间隔识别出双音多频信号,而且要识别出间隙信息。本质上来说,一组按键会被翻译成一组中间有静音间隔的,维持一定时间的双音多频信号。然后,双音多频信号被解码器识别为相应的数字。静音对正确识别连续的两个或更多相同的数字是十分必要的。因此流程包含音频任务和静音任务。总的采样时间为50ms,根据最高频率1633Hz,确定采集400个样点。
相对于DTM F 编码过程,DTM F 的解码过程复杂得多。DTM F 的解码主要完成对有效行列频率的检测以及对按键的判决。和以往模拟电路通过过零检测来检测有效频率相比, 采用DSP 可以从频域直接分析有效频率的存在。在检测DTMF信号时, 不但要检测出DTMF的基波信息, 而且还要考虑其二次谐波的信息。贝尔试验室所特意选定的这8个频率, 只在基波有较高的能量; 而在相同的基波上有较高能量的话音信号在其二次谐波上也叠加有较高的能量。因此检测二次谐波的作用就是区别DTMF起后发送,解码时DSP则采用改进的Goertzel算法,从频域搜索两个正弦波的存在。因此检测二次谐波的作用就是区别DTMF信号和话音信号。 DTMF信号的解码是基于Goertzel 算法。我们不需要计算全部频域信息, 只需要计算需要的频域的信息, 而FFT需要计算全部的频域信息。理论上证明当计算的点数小于log2N 时,Goertzel 算法比FFT 更有效。 在输入信号中检测DTMF 信号,并将其转换为实际的数字,这一解码过程本质是连续的过程,需要在输入的数据信号流中连续地搜索DTMF 信号频谱的存在。整个检测过程分两步: (1)采用Goertzel 算法在输入信号中提取频谱信息,计算出八个基频和八个二次谐波幅度的平方值。 (2)根据这些频率幅度平方值与所确定的各个门限值相比较,确定输入信号中是否是有DTMF信号并映射出双音多频信号的数字信息作检测结果的有效性检查。 Goertzel 算法实现如图A-5的算法模型,它由前向通路和后向通路组成,对应的转移函数如 所示, 其中 ;前、后向的差分方程如 所示。 考虑到实际的应用,对于式 的一阶点谐系列给出差分方程: yk(n)=WN-kyk(n-1)+x(n) 由于DSP上实现复数不方便,因此利用二阶复共轭极点滤波器代替yk(n)=WN-kyk(n-1)+x(n),对应的差分方程为: DTMF检测时只需幅度信息,不必考虑其相位,这样计算频率时可以去掉复数系数。 对于N点的输入信号,反馈通道计算N次,正向通道才计算一次平方幅度,输出一个值y(N)等同于DFT的频率,由于算法中只计算8个行列谱线以及二次谐波,其计算量比FFT小的多。 Goertzel 算法的IIR 滤波器结构, 使得可以对输入序列实时进行处理, 将输入序列分别通过8 个滤波器计算出相应的值, 和门限比较器比较, 来判断有效行频和列频。区别于以往的设计中将输入序列同时做二次谐波的检测, 在本人的设计中只对已经判断出的有效行频和列频做二次谐波的检测, 其检测方法和行、列频率的检测方法一致, 这样可以节约CPU 资源。 得到了DTMF信号的基波以及二次谐波的频谱平方信息后,需要通过一系列检测才能确定信号的有效性: (1) DTMF信号的强度是否足够大,行列频率分量平方幅度和是否高于规定的门限值。 (2) 如果DTMF信号存在,比较行列频率的最大频率分量差值,因为电话线具有低通特性,列频比行频衰减得要厉害。因此,要设置一门限值。 (3) 分别在行列频率组比较频谱分量,最强的谱线至少要比其他音频信号高一个门限值。 (5) 判断DTMF信号是否包含稳定的数字信息,只有数字信息被连续检测到两次,才认为是数字信息是稳定的。 (6) 最后要检测数字信息之后是否有停顿状态,只有这样才将当前的数字作为有效数字。
图A-5说明了程序的流程,处理器初始化以后,程序将第一个采样送至IIR滤波器中,等到所有采样都处理完后,每个滤波器的值都会变成二次方。这种操作可以求得8个DTMF基本频率中的每一个信号和DTMF频率中每一个二次谐波的振幅强度。 程序下一个工作是将这些与数据的临界值比较,这个步骤执行下列4种主要检查:
第一,首先在高频及低频的组群中找出最强的信号,以便决定是否为正确的DTMF音调。如果最大信号不高于最小值则程序不在做任何处理,并继续收集采样集合。
第二,如果找到正确的DTMF音调,则程序以转折方式(即行-tone与列-tone的振幅比率)分别检查低、高组群(行与列)的最强信号,此比率必须介于某些值之间,则DTMF音调才为有效。因为电话系统频率响应造成High-tone的衰减。由此,电话公司并不希望在接受端的高、低组的振幅会相等,即使他们以相同的强度传送,也不会有这种结果发生。
第三,这个程序为每个组群的最强信号的振幅和组群剩下的音频振幅做比较。同样,最大的音频必定非常明显。
最后,程序检查那些最大信号是否高于某一临界值,同时其相对应的二次谐波是否低于另一个临界值。检查最大谐波以确定DSP系统不至于对DTMF信号及声音产生混淆(语音具有明显的偶次谐波,DTMF信号则无)。
4。数据分析
5。性能分析
系统的设计通过软件的解决方法,利用了一个单独的DSP具有同时处理多个通道的能力将编码器和解码器都设计成多通道的实现模型。满足了骨干网应用中在不增加硬件设备的同时,实现对多路通道的处理需求,可以达到同时处理32路DTMF信号的发送、接受和识别处理。DTMF编码大约执行150万条指令,而单独的DTMF解码器大约每秒执行800万条指令。对于DTMF解码器中运行的Goertzel函数,在最快的执行速度时,同时可以有8个滤波器进行编码。增益控制避免了在Goertzel程序中对典型溢出的检测,从而提高了算法的速度。另外,只对必要的频率进行二次谐波能量的计算,进一步提高了速度。用桢的概念替代逐个样点减少了调用的开销,提高了DTMF解码器的MIPS性能。
6。MATLAB 验证DTMF信号的产生与检测
7。结论
基于以上的算法, 可以在DSP 中实现DTM F的编解码。试验测试表明基于DSP 的DTM F 编
解码具有速度快、精度高、稳定性好、易于集成以及便于灵活应用等特点, 非常适合在各种DSP 系统中应用。
参考文献:
1.彭启琮, 李玉柏. 《TMS320C54x实用教程》. 电子科技大学出版社 2000
2.彭启琮, 李玉柏, 管庆.《DSP技术的发展与应用》. 高等教育出版社 2002
3.张雄伟 ,曹铁勇 《DSP芯片的原理与开发应用(第2版)》电子下载文档 2000.9
4.Texas Instruments Incorporated TMS320UC5402 FIXED-POINT DIGITAL SIGNAL
PROCESSOR 1999
5.清源科技 《TMS320C54X DSP应用程序设计教程》机械工业出版社 2004.1
6.孙宗瀛 谢鸿琳 《DSP原理设计与应用》 清华大学出版社 2002.3
7.苏涛 张林让 《DSP实用技术》 西安电子科技大学出版社 2002.6
8.John G.Proakis Dimitris G.Manolakis 《数字信号处理:原理、算法与应用》电子工业出版社2004. 5
9.陈立万 基于DTMF解码器的DSP技术 《无线电子增刊》
10.石明卫 基于DSP的多路DTMF检测器的软件实现 《现代电子技术》 11.管庆 徐胜 双音多频DTMF技术在DSP系统中的实现 DSP专栏
|