图7 |
图6和图7中红色虚线表示非线性环节的门限。由此可以看出,系统判断出输入信号中含有941Hz/1209Hz的信号,不含697/770/852/1336/1477/1633Hz信号,从而实现"*"键号码的正确解码。
当输入DTMF信号为其他频率组合时的情况与上述结果类似,都能正确解码。其他仿真结果表明它在信噪比为-3dB以下仍能准确检测。
五、工程应用方案设计
采用上述基于改进的ADALINE神经网络的DTMF检测算法,在TMS320C5402 DSP和TLV320AIC10 AIC上实现DTMF信号检测器硬件结构如图8所示。
TMS320C5402是一款性价比很高的16位定点DSP[9],采用改进的哈佛结构,速度达100MIPS,并具有丰富的片上外设资源,非常适合于语音信号处理,有线或无线通信等通信类应用场合。TLV320AIC10是一款模拟接口芯片(AIC) [10],具有一对采用Sigma-Delta调制技术的16位采样频率达22KHz的ADC/DAC,还内含相关的滤波与增益控制等电路。TLV320AIC10能与TMS320C5402实现无缝接口,配合使用。
需要说明的是:DTMF解码功能通常只是由DSP与AIC组成的通信处理系统的一部分。TMS320C5402强大的处理能力与DSP/AIC丰富的片上资源再配以外围电路足以实现系统所需的其他功能。本文只谈及DTMF解码功能。
TLV320AIC10设置为采样频率8KHz,Master模式,帧同步为Pulse模式。如图8所示,来自电话线的信号经过接口预处理电路后送入AIC的ADC进行模数转换,然后通过McBSP串口与TMS320C5402通信,把采样数据送入DSP,同时进行A律扩展,以备后续处理。
图8 |
对每个样点逐个计算8个神经网络单元的输出值并按照LMS算法更新网络参数,然后等待下一个新样点的到来。经过20ms周期即180个样点处理,可以得到8个网络单元的输出幅值,它定义为从12ms到20ms之间的输出值平均。
当8个网络单元的输出幅值计算出来后,还要进行DTMF有效性检验,以判定是否为有效的DTMF信号。有效性检验包括以下几项内容:(1)高、低频段的最大幅值都必须大于某个门限值,而且二者之和也要大于某个门限值。(2)高、低频段的最大幅值与各自频段其它三个幅值相比,其差值必须大于某个门限值。(3)逆向绞度检验即低频段最大幅值不得超过高频段最大幅值8dB,标准绞度检验即高频段最大幅值不得超过低频段最大幅值4dB。(4)高、低频段最大幅值之和与其它6个幅值之和之比,必须大于某个门限值。
若上述检验通过,判定当前周期DTMF信号有效,根据频率组合可确定是对应哪个号码。但要确认接收到一个有效的号码,还要满足两个条件,一是要有两个以上连续周期的有效且相同的DTMF信号,以保证信号持续时间,二是前面有足够的静音时间,以避免重复识别。由于每个周期是20ms信号,可以保证一位号码能接收到两个完整的DTMF信号周期。程序流程图如图9所示。
图9 |
六、结语
传统DTMF信号的解码方法有两种:滤波器组法和Goertzel/DFT算法。针对传统DTMF信号检测方法抗干扰能力不足的问题,本文提出了一种新的基于改进的ADALINE神经网络的DTMF信号检测算法,并介绍了在TMS320C5402 DSP和TLV320AIC10 AIC上采用此算法的DTMF信号检测器工程应用方案设计。仿真结果和实际工程实验均表明它比传统方法具有更强的抗干扰能力,该方案具有一定的实用和参考价值。