当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]双音多频DTMF(Dual Tone Multi-Frequency)信令,逐渐在全世界范围内使用在按键式电话机上,因其提供更高的拨号速率,迅速取代了传统转盘式电话机使用的拨号脉冲信令。近年

双音多频DTMF(Dual Tone Multi-Frequency)信令,逐渐在全世界范围内使用在按键式电话机上,因其提供更高的拨号速率,迅速取代了传统转盘式电话机使用的拨号脉冲信令。近年来DTMF也应用在交互式控制中,诸如语言菜单、语言邮件、电话银行和ATM终端等。将DTMF信令的产生与检测集成到任一含有数字信号处理器 (DSP)的系统中,是一项较有价值的工程应用。

DTMF编解码器在编码时将击键或数字信息转换成双音信号并发送,解码时在收到的DTMF信号中检测击键或数字信息的存在性。电话机键盘上每一个键通过由图1所示的行频与列频唯一确定。DTMF的编解码方案无需过多的计算量,可以很容易的在DSP系统里与其他任务并发执行。

 

图 1

由图1可知,一个DTMF信号由两个频率的音频信号叠加构成。这两个音频信号的频率来自两组预分配的频率组:行频组或列频组。每一对这样的音频信号唯一表示一个数字或符号。为了产生DTMF信号,DSP用软件产生两个正弦波叠加在一起后发送,解码时DSP则采用改进的Goertzel算法,从频域搜索两个正弦波的存在。本文即讨论DTMF编解码在TI公司定点DSP芯片TMS320C54x(以下简称为C54x)系列上的实现。

1、 DTMF信号的产生

DTMF编码器基于两个二阶数字正弦波振荡器,一个用于产生行频,一个用于产生列频。向DSP装入相应的系数和初始条件,就可以只用两个振荡器产生所需的八个音频信号。典型的DTMF信号频率范围是700~1700Hz,选取8000Hz作为采样频率,即可满足Nyquist条件。

 

图 2

由图2数字振荡器对的框图,可以得到该二阶系统函数的差分方程为:

y(n) = -a1y(n-1) - a2y(n-2) (1)

其中a1=-2cosω0,a2=1,ω0=2πf0 /fs,fs为采样频率,f0为输出正弦波的频率,A为输出正弦波的幅度。该式初值为y(-1)=0,y(-2)=-Asinω0。

CCITT对DTMF信号规定的指标是,传送/接收率为每秒10个数字,即每个数字100ms。代表数字的音频信号必须持续至少45ms,但不超过55ms。100ms内其他时间为静音,以便区别连续的两个按键信号。

 


图 3

编程的流程如图3所示,由CCITT的规定,数字之间必须有适当长度的静音,因此编码器有两个任务,其一是音频信号任务,产生双音样本,其二是静音任务,产生静音样本。每个任务结束后,启动下一个任务前(音频信号任务或静音任务),都必须复位决定其持续时间的定时器变量。在静音任务结束后,DSP从数字缓存中调出下一个数字,判决该数字信号所对应的行频和列频信号,并根据不同频率确定其初始化参数a1=-2cosω0与y(-2)=-Asinω0。

该流程图可采用C语言实现,双音信号的产生则由54x汇编代码实现。整个程序作为C54x的多通道缓冲串口(McBsp)的发射串口中断服务子程序,由外部送入的8000Hz串口时钟触发中断,可实时处理并通过D/A转换器输出DTMF信令信号。

2 DTMF信号的检测

在输入信号中检测DTMF信号,并将其转换为实际的数字,这一解码过程本质是连续的过程,需要在输入的数据信号流中连续地搜索DTMF信号频谱的存在。整个检测过程分两步:首先采用Goertzel算法在输入信号中提取频谱信息;接着作检测结果的有效性检查。

2.1 Goertzel算法

DTMF解码即是在输入信号中搜索出有效的行频和列频。计算数字信号的频谱可以采用DFT及其快速算法FFT,而在实现DTMF解码时,采用 Goertzel算法要比FFT更快。通过FFT可以计算得到信号所有谱线,了解信号整个频域信息,而对于DTMF信号只用关心其8个行频/列频及其二次谐波信息即可(二次谐波的信息用于将DTMF信号与声音信号区别开)。此时Goertzel算法能更加快速的在输入信号中提取频谱信息。

 

图 4

Goertzel算法实质是一个两极点的IIR滤波器,其算法原理框图如图4。由于在DTMF检测中,输入的信号是实数序列,并不需要检测出8个行频/列频的相位,只需要计算出其幅度平方即可。

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

为增进大家对嵌入式的认识,本文将对嵌入式开发以及学习嵌入式需要注意的事项予以介绍。

关键字: 嵌入式 指数 嵌入式开发

中国上海,2025年4月7日 — 全球领先的嵌入式系统开发软件解决方案供应商IAR正式发布全新云就绪平台,为嵌入式开发团队提供企业级的可扩展性、安全性和自动化能力。该平台于在德国纽伦堡举办的embedded world...

关键字: 自动化 嵌入式开发 RISC-V

在嵌入式系统开发领域,VS Code(Visual Studio Code)作为一款轻量级但功能强大的代码编辑器,正逐渐成为开发者的首选工具。本文将详细介绍如何在VS Code上搭建嵌入式开发环境,并分享一些调试技巧。

关键字: VS Code 嵌入式开发

随着汽车电子化、智能化程度的不断提高,车载以太网(Automotive Ethernet)作为新一代车载网络通信技术,正逐渐成为汽车内部通信的主干网络。它以其高带宽、低延迟和强抗干扰能力,为汽车提供了更加高效、可靠的数据...

关键字: 车载以太网 嵌入式开发

随着物联网技术的飞速发展,嵌入式系统对实时性、低功耗和可扩展性的要求越来越高。Zephyr RTOS(实时操作系统)作为一款专为资源受限设备设计的开源RTOS,凭借其轻量级、模块化和高可扩展性,在嵌入式开发领域得到了广泛...

关键字: 嵌入式开发 Zephyr RTOS 物联网

嵌入式开发,作为电子工程和计算机科学交叉领域的重要分支,对于构建稳定、高效的软件系统提出了独特挑战。本文将深入探讨嵌入式开发的可靠方法论,结合实例与代码,为开发者提供一套系统化的指导原则。

关键字: 嵌入式开发 计算机科学

嵌入式开发,作为电子工程和计算机科学的交汇点,对软件系统的稳定性和效率提出了极高的要求。本文将结合具体案例,深入探讨嵌入式开发中的可靠方法论,为开发者提供一套系统化的指导原则。

关键字: 嵌入式开发 智能家居

在科技日新月异的今天,嵌入式开发作为连接硬件与软件的桥梁,在物联网、智能设备、工业自动化等领域扮演着至关重要的角色。对于许多技术爱好者而言,自学嵌入式开发既是一个充满魅力的挑战,也是一条通往创新实践的必由之路。然而,这条...

关键字: 嵌入式开发 物联网

在科技日新月异的今天,嵌入式开发与Java开发作为软件开发领域的两大重要分支,各自展现出了独特的发展轨迹和市场前景。近年来,关于嵌入式开发是否会像Java开发一样“卷”的讨论日益增多,这背后既反映了市场对技术趋势的敏锐洞...

关键字: 嵌入式开发 Java开发

现在在嵌入式开发MCU中,八块MCU仍占据三分之一以上的份额,在工业控制,安全,物联网,消费电子等诸多领域,八块MCU依然随处可见。

关键字: 嵌入式开发 MCU
关闭