双音多频 DTMF原理

双音多频 DTMF(Dual Tone Multi Frequency),双音多频,由高频群和低频群组成,高低频群各包含4个频率。一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字。DTMF信令有16个编码。利用DTMF信令可选择呼叫相应的对讲机 

双音多频信号(DTMF),电话系统中电话机与交换机之间的一种用户信令,通常用于发送被叫号码。 

在使用双音多频信号之前,电话系统中使用一连串的断续脉冲来传送被叫号码,称为脉冲拨号。脉冲拨号需要电信局中的操作员手工完成长途接续。 

双音多频信号是贝尔实验室发明的,其目的是为了自动完成长途呼叫。 

双音多频的拨号键盘是4×4的矩阵,每一行代表一个低频,每一列代表一个高频。每按一个键就发送一个高频和低频的正弦信号组合,比如'1'相当于697和1209赫兹(Hz)。交换机可以解码这些频率组合并确定所对应的按键。 

DTMF编解码器在编码时将击键或数字信息转换成双音信号并发送,解码时在收到的DTMF信号中检测击键或数字信息的存在性。一个DTMF信号由两个频率 的音频信号叠加构成。这两个音频信号的频率来自两组预分配的频率组:行频组或列频组。每一对这样的音频信号唯一表示一个数字或符号。电话机中通常有16个 按键,其中有10个数字键0~9和6个功能键*、#、A、B、C、D。由于按照组合原理,一般应有8种不同的单音频信号。因此可采用的频率也有8种,故称 之为多频,又因它采用从8种频率中任意抽出2种进行组合来进行编码,所以又称之为“8中取2”的编码技术。根据CCITT的建议,国际上采用的多种频率为 687Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz和1633Hz等8种。用这8种频率可形成16种不同的组 合,从而代表16种不同的数字或功能键,具体组合见表1。


在很多应用中都要求进行音调检测,例如:双音多频信号 (DTMF)解码,呼叫过程(拨号音、忙音等)解码,频率响应测试(发送一个音调,同时将结果读回)。在频率响应测试中,如果在一定频率范围内进行测量, 那么得到的频响曲线中可能会包含丰富的信息,例如从电话线的频响曲线可以知道线上是否有负载线圈(电感)。
尽管针对以上应用均有专用IC,但采用软件来实现这些芯片的功能时所需成本比采用专用芯片低很多。然而,很多嵌入式系统都不具备进行连续实时FFT处理的能力,这时就适合采用Goertzel算法。本文将对Goertzel基本算法和Goertzel优化算法进行讨论。
采 用Goertzel基本算法能得出与常规离散傅立叶变换(DFT)或FFT相同的频率实部和虚部。如果需要的话,还可以从该频率实部和虚部中算出幅度和相 位信息。Goertzel优化算法则比Goertzel基本算法更快也更简单,但Goertzel优化算法并不给出频率实部和虚部分量,它只能给出相关的 幅度平方。如果需要幅度信息,可通过对该结果开方得到,但该方法无法得到相位信息。

Goertzel基本算法
Goertzel 基本算法在每次采样后立即进行处理,在每个第N次采样进行一次音调检测。在采用FFT算法时,我们要对成块的采样进行处理,但这并不意味着必须按块来处理 数据。数字处理的时间很短,因此如果每次采样都存在一次中断,那么这些数字处理完全可以在中断服务程序(ISR)内完成。或者,如果系统中存在采样缓存, 那么可以持续采样,然后进行批处理。
在真正运行Goertzel算法之前,必须进行下面的初步计算:
1. 决定采样率; 
2. 选择块大小,即N; 
3. 预先进行一次余弦和正弦计算; 
4. 预先计算一个系数。 
这些计算均可以预先完成,然后硬编码到程序中,从而节省RAM和ROM空间,也可以动态方式计算。 

选择合适的采样率 
实际上,采样率可能已经由应用本身决定了。例如,在电信应用中普遍采用8kHz的采样率,即每秒8,000个采样。又如,模数转换器(或编解码器)的工作频率可能是由一个我们无法控制的外部时钟或外部晶振决定。 
但如果我们可以选择采样率,那么就必须遵循奈奎斯特采样定理:采样率至少不低于最高信号频率的两倍。这是是因为如果我们要检测多个频率,那么采用更高的采样率可能会得到更好的结果。而且我们都希望采样率与每一个感兴趣的频率之间均呈整数倍关系。 

块大小的设置 
Goertzel算法中的块大小N与相应的FFT中的点数类似,它控制了频率分辨率的大小。例如,若采样率为8kHz,而N为100个采样,那么频率分辨率就是80Hz。 
这就可能使我们为了获取最大的频率分辨率而尽量将N取高。然而N越大,检测到每个音调所需的时间就越多,因为我们必须等所有这N个采样都完成后才能开始处理。例如,采样率为8kHz时,累积800个采样需要100ms。若想缩短检测音调的时间,就必须适当调整N的值。 
影响N的选择的另一个因素是采样率和目标频率之间的关系。比较理想情况是目标频率在相应的频率分辨率的中点范围内,也就是说,我们希望目标频率是sample_rate/N比值的整数倍。值得庆幸的是,Goertzel算法中的N与FFT中不同,不必是2的整数次幂。 

预计算常数 

在采样率和块大小确定之后,只须通过下面5个简单的计算来得出处理时所需要的常数: 

k = (N*target_freq)/sample_tate
w = (2*π/N)*k
cosine = cos w
sine = sin w
coeff = 2 * cosine

每一次采样处理中都需要3个变量,我们称其为Q0'、Q1'和Q2。Q1是前一次采样处理的Q0值,Q2是在两次采样前的Q0值(或Q1在本次采样前的值)。 
在每个采样块的开始时,都必须将Q1和Q2初始化为0。每个采样都需要按照下面三个等式进行计算: 

Q0 = coeff * Q1 - Q2 + sample
Q2 = Q1
Q1 = Q0

在进行N次预采样计算之后,可以检测到音调是否存在。

real = (Q1 - Q2 * cosine)
imag = (Q2 * sine)
magnitude2 = real2 + imag2 

这时只需进行一次简单的幅度门限测试就可以判断出是否有音调存在。之后,将Q2和Q1复位到0,开始下一个块的处理。 

Goertzel优化算法 

Goertzel优化算法比Goertzel基本算法所需的计算量小,但这是以损失相位信息为代价。 
在 Goertzel优化算法中每个采样处理完全一样,但处理的结果与Goertzel基本算法不同。在Goertzel基本算法中,通常需要计算信号的实部 和虚部,然后将实部和虚部的计算结果转换为相应的幅度平方。而在优化Goertzel算法中则不需计算实部和虚部,直接计算下式: 
magnitude2 = Q12 + Q22-Q1*Q2*coeff

转载:http://blog.chinaunix.net/uid-23023613-id-3034718.html
### 回答1: 双音多频DTMF)是一种电话通信系统中常用的信号编码方法,它使用一组特定的音频频率来表示数字、字母和符号。DTMF通信设计仿真是通过计算机软件模拟DTMF通信系统的工作原理和性能。 在DTMF通信设计仿真中,首先需要确定通信系统的基本参数和目标,包括通信频率范围、信号波形和协议等。然后利用仿真软件,如MATLAB或Simulink,搭建DTMF通信系统的模型。 模型中应包括DTMF信号的产生、传输、接收和解码等过程。首先,模型需要生成DTMF信号,即根据输入的数字或字母生成对应的音频频率组合。然后,模拟信号经过传输信道,可能存在信号失真、噪声干扰等情况。接下来,模型需要对接收到的信号进行解码,将频率组合转换为原始的数字、字母或符号。 在设计过程中,可以根据需要对模型进行调整和优化,例如改变信号的采样率、增加信号处理算法、添加信道模型等。通过仿真,可以评估系统的性能,如信号传输的准确性、抗干扰性和误码率等。 最后,根据仿真结果,可以对DTMF通信系统的设计进行改进和优化,以提高系统的可靠性和性能。 总而言之,DTMF通信设计仿真是利用计算机模拟软件建立DTMF通信系统的工作原理和性能,通过对系统的模拟和分析,优化系统设计,以提高系统的性能和可靠性。 ### 回答2: 双音多频DTMF)通信设计仿真是指利用计算机仿真技术来模拟和测试DTMF通信系统的设计和性能。DTMF通信技术是一种通过拨号键盘的按键产生两个频率信号的方式进行音频传输的技术。 在进行DTMF通信设计仿真时,首先需要建立一个仿真模型。这个模型可以包括拨号键盘、发射器、信道模型和接收器等组成部分。通过对这些部分进行参数设置和信号处理算法的优化,可以模拟实际通信环境中的各种因素,如噪声、干扰和信道衰落等。 在进行仿真测试时,可以使用不同类型的信号进行输入,模拟不同按键的拨号信号。这些信号将经过发射器进行编码和调制,然后通过信道模型进行传输,最后由接收器进行解调和解码。通过比较接收到的信号与输入信号的差异,可以评估系统的误码率和传输质量。 仿真测试还可以用来评估系统对于不同信道条件的适应性和鲁棒性。通过模拟不同噪声水平、干扰源和信道衰落等环境条件,可以验证系统在恶劣环境下的性能,并进行相应的优化和改进。 此外,仿真还可以用来分析和优化DTMF通信系统的设计参数。通过调整发射器、接收器和信道模型的参数,可以对系统的灵敏度、带宽利用率和传输速率等进行优化。 总之,利用计算机仿真技术进行DTMF通信设计仿真可以帮助我们评估和改进系统的性能,提高通信质量和可靠性。同时,它还可以节省时间和成本,避免实际测试中可能遇到的困难和风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值