您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

基于软件的DTMF产生器及其性能分析

时间:2007-1-20栏目:电子通信论文

摘要:简述DTMF信号产生的基本原理,提出使用SPCE061芯片的D/A端口和使用I/O端口模拟D/A产生DTMF信号的两种实现方案,并通过实验和仿真对两种实现方案进行对比分析。实验证明,由于D/A精度较高,采用D/A输出的DTMF信号质量比使用I/O电阻网络的DTMF质量好;但在采样频率足够高的情况下,使用I/O电阻网络仍然可以满足电信标准要求。
  关键词:双音多频(DTMF)sin函数计算SPCE061AMATLAB仿真
  
  在全世界范围内,双音多频DTMF(DualToneMultiFrequency)信令逐渐使用在按键式电话机上,因其提供更高的拨号速率,迅速取代了传统转盘式电话机使用的拨号脉冲信号。近年来,DTMF也应用在交互式控制中,如语言菜单、语言邮件、来电显示、电话银行和ATM终端等。在芯片内部没有内置DTMF产生器时,用普通D/A甚至于用4~5个普通I/O口和简单的电阻网络来模拟D/A实现DTMF信号的产生,将扩大DTMF在工程中的应用,具有一定的应用价值。本文主要研究以上两种用软件产品DTMF信号的方案。
  
  DTMF信号由8个频率两两组合而成。这8个频率又分为低频群和高频群两组。低频群的4个频率依次为697Hz、770Hz、852Hz、941Hz;高频群的4个频率依次为1209Hz、1336Hz、1477Hz、1336Hz。在通信领域应用中,DTMF主要用于电话机拨号信号和CID(CallerIdentification,来电显示)信号的传送。在应用于电话机的拨号信号中,按照国家电信标准,其信号持续时间和间隔时间都不小于40ms,而频率偏差不大于±1.5%。
  
  1传统的可编程硬件DTMF发生器原理
  
  传统的DTMF发生器芯片有Hotel公司的HT9200A/B、Mitel公司的MT8880等。部分MCU也内置了DTMF发生器,其DTMF信号产生原理可简述如下:
  
  将振荡器产生的高频振荡信号分别送至两个计数器,当计数器达到预设的值时,产生一次反转信号输出,形成低频方波。其中计数器寄存器可用软件设置且有自动装载功能。通过这两个计数器可设置输出的两路方波频率。软件编写控制程序时,只须将对应频率的计数值写入控制寄存器便可自动产生所需的频率信号。
  
  从以上两路输出的方波再进行信号正弦化处理和幅度控制,然后将两路信号同时送至信号混合器输出。这样,如果其中一路输出的方波频率接近DTMF低频群中的一个频率,而另一路接近DTMF高频群中的一个频率,从混合器输出的信号便是所需的DTMF信号了。
  
  2用D/A产生DTMF信号
  
  DTMF软件产生器是基于两个用软件模拟的二阶数字在弦波振荡器,一个用于产生低频,一个用于产生高频。典型的DTMF信号频率范围是697Hz~1633Hz。选取8192Hz作为采样频率,即可满足Nyquist条件。系统中信号合成的函数方程为
  
  Y(n)=a0+a1sin(2·Pi·f0·n/fs)+a2sin(2·Pi·f1·n/fs)(1)
  
  式中:a0为直流分量;f0、f1分别为DTMF中的低频和高频;fs为采样频率,在此定为8192Hz;a1、a2分别为f0、f1的振幅;n为采样点数。
  
  2.1sin函数的计算
  
  采样频率并不是DTMF的8个频率中各频率的整数倍,若采用查表法得到各采样点处理的D/A输出值,由于查表意味着输出值周期性的出现,则要求采样频率是输出频率的多个周期的整数倍。又由于输出数据表中需要包括多个周期,而且要逼近上述的整数倍,因此输出频率必须是采样频率整数倍的倍数。由此产生以下几个问题:
  
  ①多个周期的数据表较大(平均一个频率20字左右);
  
  ②数据表中各数值的计算烦杂;
  
  ③产生的信号频率存在频偏。
  
  若采用计算sin函数的方法,以上问题都将迎刃而解。只是,如何计算sin函数呢?在传统的电子计算机系统中,处理浮点数比处理整数要复杂且占用CPU较多的时间;而在郑易里片机系统中,一般对程序运行的时间都有要求。因此,本文采用了定点小数近似表示浮点数的方法,再利用线性插值法计算各点处的正弦函数值。
  
  定点小数的表示方法:将需要表示的小数空间乘上一个系数映射到整数所能所示的空间。本文使用16位的单片机SPCE061,其

[1] [2] [3] 下一页

下页更精彩:1 2 3 4 下一页