用单片机实现DTMF信号译码
从表2看出:由于时域无限长DTMF信号被截断所引起的泄漏效应,如“2”、“3”号键对应的DTMF信号虽然不含有频率为1209 Hz和941 Hz的信号成份,可是|X(17)|、|X(13)|不为零,理想时应为零,也就是说存在一定的幅值密度误差。但对于含有f=1209 Hz高频组信号的DTMF信号(如“1”、“4”、“7”、“*”键),其|X(17)|值远大于不含f=1209 Hz高频组信号的DTMF信号的|X(17)|值。同样,对于含有f=941 Hz低频组信号的DTMF信号的|X(13)|值远大于不含f=941Hz低频组信号的DTMF信号的|X(13)|值,这样就为实际DTMF信号译码识别提供了必要的条件。
因在实际DTMF信号译码应用时,任一键号所对应的DTMF信号的译码过程为:
(1)分别采样DTMF信号计算出谱线为697Hz、770Hz、852Hz、941Hz的幅值密度|X(k)|。
(2)从中排序找到低频组频率fL对应幅值密度|X(k)|最大的值。
(3)同法计算,谱线为1209Hz、1336Hz、1467Hz、1633Hz的幅值密度|X(k)|。
(4)从中排序找到高频组频率fH对应幅值密度|X(k)|最大的值。
(5)根据fL、fH查表1,即可得到其所表征的键号。
2、整形后DTMF信号的幅值密度及其实验数据误差分析
为了把DTMF信号送入单片机进行DTMF信号译码,还必须要对DTMF信号进行整形,见图2所示。DTMF信号经比较限幅,整形为方波后。从DFT变换定义式看出:式中x(nT)的值只能为0或者1,因此计算|X(k)|的运算量大大降低,表3即为通过整形后DTMF信号采用计算机仿真计算出的幅值密度。
图2 DTMF信号比较限幅示意图
表3 整形后DTMF信号的幅值密度表
对比表3和表2可以发现,整形为方波后的DTFM信号泄漏谱线的幅值密度有所增大,而有效谱线的幅值密度也相应变小。例如7号指令键产生的泄漏谱线的幅值密度其值从14.09增大到22.38,而有效幅值密度其值从127.9减小到107.26。造成此类问题的主要原因是:
(1)由于N,T只能选择整数,1/f不可能被N×T所整除,所以这必然会带来栅栏效应,此时计算所得的有效谱线的幅值密度必然 小 于 实 际 值 。同 时 ,由于采样时间Tp=NT有限长而引起的泄漏效应,也必然会导致泄漏谱线的幅值密度增大。
(2)DTMF信号经整形为方波后会产生了十分丰富的谐波干扰,这些干扰信号的频率如果接近泄漏谱线的频率,也会使泄漏谱线的幅值密度增大。
因此在译码过程中,如果有效谱线的幅值密度值变小,而泄漏谱线的幅值密度增大,当泄漏谱线的幅值密度大于有效谱线的幅值密度时,就会引起错译和漏译现象。所以在N×T值选择过小,或者与待测周期的整数倍相差过大,再加上整形为方波后谐波干扰,将有可能引起错译和漏译。
但是从表3中可见泄漏谱线的幅值密度最大值为22.38,而有效谱线的幅值密度最小值为87.92两者相差近4倍,还存在较大的冗余量。例如:对于含有f=1209 Hz高频组信号的DTMF信号(如“1”、“4”、“7”、“*”键),其|X(17)|值仍远大于不含f=1209 Hz高频组信号的DTMF信号的|X(17)|值。同样,对于含有f=941 Hz低频组信号的DTMF信号的|X(13)|值也远大于不含f=941Hz低频组信号的DTMF信号的|X(13)|值,二者仍可在排序中明显区分出来,所以对DTMF信号整形后产生的一定幅值密度误差增大,完全可以忽略不计,只要译码应用程序设计得当,合理选取N、T值,不会出现错译和漏译现象。
评论