利用现场可编程门阵列实现DTMF信号接收及判别电路系统的设计

可编程逻辑

1364人已加入

描述

DTMF的介绍

1.1 DTMF接受的频率标准

DTMF(双音多频)信号是电话网中常用的信令。DTMF拨号和解码在通信系统及其它方面有着广泛的应用。无论是家用电话、移动电话还是程控交换机上,多采用DTMF信号发送接收号码。DTMF技术还可以用于电力线载波通信等场合。

DTMF使用两个频率在电话系统中传输信息,表一中显示了使用频率和电话键盘的关系。

FPGA

1.2 DTMF接受的时间序列标准

根据ITU-T Q.24建议,DTMF信号的技术指标是:传送/接收率为每秒10个号码,或每个号码100ms。每个号码传送过程中,信号存在时间至少45ms,且不多于55ms,100ms的其余时间是静音。在每个频率点上允许有不超过±1.5%的频率误差。任何超过给定频率 ±3.5%的信号,均被认为是无效的,拒绝承认接收。另外,在最坏的检测条件下,信噪比不得低于15dB。

2 DTMF整体设计思想和方法

要设计一个能够完成DTMF信号的接收及判别电路系统,可以考虑的方案有很多,可以选择利用MCU编程实现,利用DSP编程实现,但是为了实现较好的性能,以及合理的电路结构,设计采用了纯数字电路的实现方法。设计的主要功能是完成经A/D采样的数字信号的滤波和频率判断,检测整个信号的时序并完成接口控制。整体设计如图一所示。其中:

1)high_tone滤波和low_tone滤波完成数字信号的滤波(利用FIR设计BPF模块完成)。

2)high_tone过零检测和low_tone过零检测根据过零率大小来检测信号的频率。

3)decode结果输出部分完成译码并同时采用LED进行显示。

FPGA

从上面的整体设计框图中可以看出,整个设计的核心部分在于完成输入DTMF信号的带通滤波,在完成信号的AD变化后,能够有效的滤除带外的噪声,同时输出反映DTMF信号的过零率的数字信号,便于后续的模块完成频率判断和时间序列的判别。下面分别介绍一下BPF滤波器,过零检测和时间序列判断的详细设计过程。

3 有限冲击响应来实现BPF滤波器的设计

3.1 BPF设计原理

带通滤波器主要是用FIR(Finite Impulse Response有限冲击响应)来实现了两个带通滤波器(HIGN_TONE_BPF ,LOW_TONE_BPF),主要功能为完成两组带通频率1100hz-1700hz,500-1000hz,分别来滤波DTMF信号的高频率组和低频率组信号。高组信号的频率为1209,1336,1447,16633hz,低组信号的频率为697,770,852,941hz。BPF的采样频率为13982.6hz(同AD变化的频率一致)。通过将输入采样频率为13.98Khz,10位A/D采样后的数字信号滤波,使有效的DTMF信号通过,将输入信号的噪声滤除,输出反映输入信号正负的过零信号,以供接下来的信号检测部分用于频率判断和时序判断。BPF处于整个设计的位置在图一中为high_tone滤波和 low_tone滤波。其设计要求的主要期望特性如表二和表三所示。

FPGA

3.2 BPF设计实现

BPF模块是通过横截型FIR来完成带通滤波的。FIR滤波器的单位冲击响应是一个有限长序

FPGA

模块的振幅和相位特性如图二所示,设计中使用的FIR的系数是通过MATLABLE来设计完成的,主要是使用了MATLABLE中的FIR1这个TOOLBOX。BPF 顶层图如图三所示。

FPGA

FPGA

3.3 BPF动作的主要时序和工作过程

为了比较好的描述BPF动作的主要时序,把图三中用到的一些主要信号定义介绍一下。

BPFPRS :整个设计数字电路工作的基本时钟

ADCROUT :A/D 采样结果输出,为10bit

TRANSGUID:A/D变化点

RAMWRBASE:RAM写信号,保持一个时钟周期

BASEPOINT:FIR计算起始点,每一个新的A/D结果增加1

BPFACT:BPF计算容许信号,容许进行FIR计算

RAMOUT1:RAM输出,依次输出前200个A/D结果

ROMZ1:FIRROM系数表1,为low_tone_bpf参数

ROMZ2:FIRROM系数表2,为high_tone_bpf参数

ZRAMPA1:RAM地址,每一个时钟递减1

ZROMPA:FIRROM系数表地址,每一个时钟递加1

工作过程描述如下:BASEPOINT记录了进行FIR计算的现在时刻,即差分方程 的I,然后在RAMWRBASE下写入RAM,ZRAMPA1每一个时钟递减1,ZROMPA每一个时钟递加1,将H(I),X(N-I)输入,在BPF_MAIN模块中完成FIR的计算。FIR计算的具体过程描述如下:1)读出RAM的A/D结果和BPF_VROM中的FIR系数 2)取出RAM和FIR系数的幅度和正负3)完成RAM和FIR系数幅度的乘法4)由RAM和FIR系数的正负,将乘法结果进行补码变化5)完成所有乘法结果的加法6)在下一个A/D到来完成时,将上一次的计算结果输出。典型的FIR的时间序图如图四所示。图四中表示了BASEPOINT=0和1两种情况下FIR计算时序。

FPGA

4 过零检测的设计和时间序列的判断

通过带通滤波器后,实际输出为反映DTMF信号的数字信号,为此可以采用非常简单的,同时利用数字电路非常容易实现的非相干解调。非相干解调算法有过零检测法和包络检测法:过零检测法的基本原理是根据频键控信号过零率的大小来检测已调信号中频率的变化。 输入已调信号经过限幅,滤波等形成与频率变化相应的一定宽度的矩形波,然后进行抽样判决,即可得到原始的调制信号。过零检测法用硬件电路来实现。这个检测电路模块的主要功能包括1)判断通过BPF滤波输出的高频率段和低频率段信号,判断输入的DTMF信号的频率是否在容许的误差范围内,如果输入的频率超过容许范围,不进行判断。2)同时通过设计不同的数字计数器完成时间序列的检查,将满足时序要求的信号结果译码;如果不满足ITU-TQ.24的要求的序列,不输出结果。3)完成译码结果并同时采用LED进行显示。所以整个模块就是在输入信号的幅度满足电话传输要求,输入信号频率在容许的偏移内,在规定的输入信噪比下,能够正确的接受和判读输入信号,并译码进行显示。

5 总结

整个电路设计都采用的是纯数字方式,采用VHDL (Very high speed integrated circuit Hardware Description Language硬件描述语言)编写了整个数字电路的实现,同时在MAXPLUSII平台下进行了仿真,证明了电路的功能达到了预期的目的。同时利用 FPGA (Field Programmable Gate Array现场可编程门阵列)实现了整个电路。在实际的测试中,达到了ITU-T Q.24所要求的“For the codes 0-9,*, # A-D, 1 false/1500 calls”的设计指标。

本文创新点在于整个设计采用了纯数字方式,实现简单。同时由于在设计中采用了硬件描述语言编写了整个数字电路,所以整个电路便于移植,在使用时可以作为一个单独的模块,也可以作为其他设计中的一部分,非常灵活。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分