下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于软件的DTMF产生器及其性能分析摘要:简述DTMF信号产生的基本原理,提出使用SPCE061芯片的D/A端口和使用I/O端口模拟D/A产生DTMF信号的两种实现方案,并通过实验和仿真对两种实现方案进行对比分析。实验证明,由于D/A精度较高,采用D/A输出的DTMF信号质量比使用I/O电阻网络的DTMF质量好;但在采样频率足够高的情况下,使用I/O电阻网络仍然可以满足电信标准要求。 关键词:双音多频(DTMF) sin函数计算 SPCE061A MATLAB仿真 在全世界范围内,双音多频DTMF(Dual Tone Multi Frequency)信令逐渐使用在按键式电话机上,因其提供更高的
2、拨号速率,迅速取代了传统转盘式电话机使用的拨号脉冲信号。近年来,DTMF也应用在交互式控制中,如语言菜单、语言邮件、来电显示、电话银行和ATM终端等。在芯片内部没有内置DTMF产生器时,用普通D/A甚至于用45个普通I/O口和简单的电阻网络来模拟D/A实现DTMF信号的产生,将扩大DTMF在工程中的应用,具有一定的应用价值。本文主要研究以上两种用软件产品 DTMF信号的方案。 DTMF信号由8个频率两两组合而成。这8个频率又分为低频群和高频群两组。低频群的4个频率依次为697Hz、770Hz、852Hz、941Hz;高频群的4个频率依次为1209Hz、1336Hz、1477Hz、1336Hz。
3、在通信领域应用中,DTMF主要用于电话机拨号信号和CID(Caller Identification,来电显示)信号的传送。在应用于电话机的拨号信号中,按照国家电信标准,其信号持续时间和间隔时间都不小于40ms,而频率偏差不大于1.5%。1 传统的可编程硬件DTMF发生器原理 传统的DTMF发生器芯片有Hotel公司的HT9200A/B、Mitel公司的MT8880等。部分MCU也内置了DTMF发生器,其DTMF信号产生原理可简述如下: 将振荡器产生的高频振荡信号分别送至两个计数器,当计数器达到预设的值时,产生一次反转信号输出,形成低频方波。其中计数器寄存器可用软件设置且有自动装载功能。通过这
4、两个计数器可设置输出的两路方波频率。软件编写控制程序时,只须将对应频率的计数值写入控制寄存器便可自动产生所需的频率信号。 从以上两路输出的方波再进行信号正弦化处理和幅度控制,然后将两路信号同时送至信号混合器输出。这样,如果其中一路输出的方波频率接近DTMF低频群中的一个频率,而另一路接近DTMF高频群中的一个频率,从混合器输出的信号便是所需的DTMF信号了。2 用D/A产生DTMF信号 DTMF软件产生器是基于两个用软件模拟的二阶数字在弦波振荡器,一个用于产生低频,一个用于产生高频。典型的DTMF信号频率范围是697Hz1633Hz。选取8192Hz作为采样频率,即可满足Nyquist条件。系
5、统中信号合成的函数方程为Y(n)=a0+a1sin(2Pif0n/fs)+a2sin(2Pif1n/fs) (1) 式中:a0为直流分量;f0、f1分别为DTMF中的低频和高频;fs为采样频率,在此定为8192Hz;a1、a2分别为f0、f1的振幅;n为采样点数。21 sin函数的计算 采样频率并不是DTMF的8个频率中各频率的整数倍,若采用查表法得到各采样点处理的D/A输出值,由于查表意味着输出值周期性的出现,则要求采样频率是输出频率的多个周期的整数倍。又由于输出数据表中需要包括多个周期,而且要逼近上述的整数倍,因此输出频率必须是采样频率整数倍的倍数。由此产生以下几个问题:多个周期的数据表较
6、大(平均一个频率20字左右);数据表中各数值的计算烦杂;产生的信号频率存在频偏。 若采用计算sin函数的方法,以上问题都将迎刃而解。只是,如何计算sin函数呢?在传统的电子计算机系统中,处理浮点数比处理整数要复杂且占用CPU较多的时间;而在郑易里片机系统中,一般对程序运行的时间都有要求。因此,本文采用了定点小数近似表示浮点数的方法,再利用线性插值法计算各点处的正弦函数值。 定点小数的表示方法:将需要表示的小数空间乘上一个系数映射到整数所能所示的空间。本文使用16位的单片机SPCE061,其D/A的精度为10位,DAC输出寄存器为16位数据的高10位;sin函数的值域为-1,+1,取整数域0x0
7、000,0x03ff映射sin函数值中的0,+1,取补数映射sin函数值中的负值,即可满足DTMF输出精度要求。要求将1映射为0x03ff,因此,当函数值为正时,应乘以0x03ff即1023,经取整后作为计算sin函数子程序的输出;当函数值为负时,只须将对应的正时的函数值取补便可得到。 计算sin函数时,将02映射为整数域的0x0000,0x4000,因此,可通过整数域的第13和12位获得象限信息。查表时只计算第一象限0, /2的正弦值,其它象限的函数仁政由三角函数公式计算得到。第一象限sin函数的计算:0/2被映射到整数域的0x0000,0x1000,将其分为16等分,将分割点上的函数值建立
8、数据表,即将0、0x0100、0x0200等17个点处对应的正弦值列表,若弧度值x介于两分割点x1与x2之间,则通过查表获得sin(x1)与sin(x2),则有:sin(x)=sin(x1)+sin(x2)-sin(x1)(x2-x1)/256其它象限可根据三角函数公式获得类似的计算公式。22 DTMF信号的软件合成 由于在DTMF的传输过程中,高频在线路中的传输损耗比低频高,为了保证信号到达交换机时高、低频信号电平基本相当,在DTMF信号产生器中,标准规定频率组合中高频分量电平应比低频分量电平高21dB。在DTMF硬件产生器中,这一处理是在高、低频信号混合器之间的低频通道中加适当的衰减电路完
9、成的;而在用D/A产生DTMF信号的过程中,高、低频信号的混合也是由软件完成的。因此,必须在高、低频信号的产生过程中就考虑使低频信号的振幅略低于高频信号,这样才能从输出的信号中获得所需的电平差。由2.1中所描述的sin函数计算得的函数值,为实际函数值的1023倍。式(1)中,取y(n)的电压范围为05V,直流分量a0为2V;令高频信号的电平为Sh,低频信号的电平为S1,单位为dBm,则有Sh=-20lg(Vh/V0) S1=-20lg(V1/V0) 1Sh-S12 取Vh/V1=6/5,则Sh-S11.6dB,即取a1为5,a2为6,即可得到高、低频的电平差为1.6dB的信号。将y(n)映射为
10、SPCE061的D/A输出值0x0000,0xffc0,则DAC的输出为(0xffc0/5)y(n),公式如下:设 A=1023sin(2Pif0n/fs)B=1023sin(2f1n/fs)(n=0,1,2)DAC(n)=(0xffc0/5) y(n)=12.8(1023a0+a1A+a2B)=26189+5A+6B (2) 式(2)中的A和B都由计算sin的子程序求得。由于2在量化为整数时为0x4000,即16384,而fs=8192Hz,实际的sin函数子程序自变量便简化为(2nf0和0x3fff),这对于单片机的处理是相当容易的。由上述公式求得的DAC值,已将计算结果数据移到了高10位
11、,可直接输出到D/A寄存器。3 用I/O口模拟D/A产生DTMF信号 在某些应用中,所使用的MCU比较简单,如8051;或者因为对成本控制的要求而不能使用带D/A的MCU,但又需要用这些MCU产生DTMF信号,其替代方案是用多个I/O口和电阻网络来模拟D/A。当然,这样的电路产生的DTMF,其输出精度会比由D/A产生的低,噪声也会比较大,但在某些应用中已经可以满足DTMF输出的要求了。 图1中的4个I/O口可以表示16种状态。经过列表计算这16种状态下的等价上拉电阻和下拉电阻,可得出各状态下的分压值。以VCC为5V为例,则模拟D/A输出的精度为0.3086V,只相当于一个精度很低的D/A。经过
12、实验测试,用4个I/O口、8192Hz的采样频率输出DTMF信号时,必须用5个I/O口输出才能达到普通电话机拨号器的要求;若采用4个I/O口输出,则要求采样频率大于12kHz。本文介绍的方案中,采用了4个I/O口、16384Hz作为采样频率,利用输出信号与地之间的电容充放电来平滑用I/O口输出的阶梯波形,这样可减小失真,使输出的DTMF信号更接近标准的正弦波叠加。4 用MATLAB仿真的实验结果 MATLAB是一种功能相当强大的数字运算、仿真的软件,用其作数字信号处理也是相当简单的事件。下面的实验就是利用SPCE061A芯片通过其D/A和4个I/O口产生DTMF信号,将其耦合输出到声卡的LIN
13、E IN输入口,采样获得DTMF信号的数据,再将信号数据转化到MATLAB软件中进行离散FFT分析,获得具频率域的信息。图2是用D/A输出的DTMF信号“1”的波形;图3是用D/A输出的DTMF信号频谱;图4是用4个I/O口模拟产生的DTMF信号“1”的波形;图5是用4个I/O口模拟输出的DTMF信号频谱。图3和图5是用MATLAB软件仿真的结果。从图25可看出:所产生的DTMF信号,其频率完全集中的规定的两个频率上。两种方案下产生的DTMF波形,通过MATLAB分析计算得到的能量最大值出现的频率都为1206Hz和次大值频率689Hz,频偏分别为0.25%和1.14%,都在DTMF信号规定的范
14、围之内。频率的偏差是由于信号及离散傅里叶变换的量化误差引起的。 图2和图4信号波形的横坐标为时间,约12ms;纵坐标为声卡采样量化电压值,声卡采样精度为16位,采样频率为44.1kHz;图3和图5中的横坐标为频率;纵坐标为离散FFT分析结果(用复数表示的频率域信息)的模。图3中,除了DTMF的两个频率外,其它频率没有出现大的毛刺,波形非常漂亮,信号失真度低。 图5中,除DTMF的两个频率外,其它频率有多处出现了毛刺,信号失真度比图3所显示的大。5 总结 本文论述了用D/A产生DTMF的一般方法及其性能,并提出了用普通I/O模拟D/A产生DTMF的方法。在没有DTMF硬件产生器的单片机应用中,可
15、以根据实际情况选用上述两种软件产生的DMTF的方案。建议选择具有D/A的MCU。用D/A产生DTMF比用I/O口模拟产生双音多频信号有以下几个优点:D/A精度较高(普通D/A都有8位或8位以上),产生的信号失真度小;采样频率要求较低,能满足尼奎斯特条件即可,软件产生信号时用中断定时输出,中断频率也就比较低,从而占用CPU时间较少;用D/A输出DTMF信号,不需要电阻网络,外围电路简单。用D/A输出DTMF信号的缺点是:要求MCU具有D/A输出,在应用中存在局限性;在某些低端的应用中,带D/A的MCU的其它资源也较多,成本相对比较高。用多个I/O口来模拟D/A就没有上述局限性,只需要4个以上的I/O口,1.5MIPS左右的指令执行速度(上述实验中采用的MCU主频为6.144MHz,大部分指令执行时间为38个机器周期)。这两个要求是大部分低档、低档成本的MCU(包括部分51系列芯片)都具有的,故由
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水风光一体化资源勘测与评估实施细则方案
- 证明材料副本管理归还规范
- 模具保养周期匹配生产节奏指导书
- 家政员出勤考评标准结果记录规范
- 商户租赁合同管理实务
- 制程关键控制点监测推行制度
- 幼犬首次洗澡注意手册
- 新冠肺炎医院感染预防控制管理规定
- 眼科青光眼治疗措施考核
- 预防手术部位感染控制方案
- 物流运输突发事件应急预案
- 叙事护理在住院患者健康教育中的应用
- 【数学 北京版】2025年高考招生统一考试高考真题数学试卷(真题+答案)
- 人员资格报审表模板
- T/CIMA 0070-2023交流电能表用隧道磁阻电流传感器
- 2025具身智能行业发展研究报告
- 河北省唐山市2025届高三下学期第二次模拟演练数学试卷(含答案)
- IPC-A-610F-2014 电子组件的可接受性
- 中外航海文化知到课后答案智慧树章节测试答案2025年春中国人民解放军海军大连舰艇学院
- 2025年中医骨伤科学试题及答案
- 大学美育 课程标准
评论
0/150
提交评论