首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 基于PSoC的嵌入式DTMF解码器实现方案
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于PSoC的嵌入式DTMF解码器实现方案
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2015-6-28 22:20
|
只看该作者
基于PSoC的嵌入式DTMF解码器实现方案
程控交换机
,
有限公司
,
微处理器
,
报警系统
,
移动电话
引言 DTMF (双音多频)信号是电话网中常用的信令,无论是家用电话、移动电话还是程控交换机上,多采用DTMF信号发送接收号码。DTMF技术广泛地应用于电话机,远程家用电器产品的控制,语音信箱,报警系统等领域。可见,DTMF拨号和解码在通信系统及其它方面有着广泛的应用。通常DTMF信号的检测采用专用芯片,DSP,16位或更高档的MCU来实现,但其成本较高。本文介绍 了一种低成本的基于赛普拉斯的8位PSoC芯片的DTMF解码器实现方案。
PSoC 简述
PSoC是Cypress半导体有限公司生产的的可编程片上系统芯片。它主要由8位微处理器,可编程模拟模块和数字模块,外加硬件乘法累加器,I2C,Flash,SRAM等周边外围模块组成,如图2所示。
因此,PSoC除了能实现一般MCU的功能外,还可通过可编程模拟和数字模块灵活地实现嵌入式系统所需的模拟与数字外围功能。为了方便用户简单而快速地实现模拟数字外围功能的设计,Cypress基于可编程数字模拟模块构建了大量的用户模块,如可编程运算放大器,比较器,6至14位的模数和数模转换器,滤波器,8/16 /24/32位定时器/计数器,脉宽调制器,触摸感应等模块。这些用户模块将PSoC内部的寄存器配置,数字模块和模拟模块之间的内部连线,底层API(Application Program Interface, 应用程序接口)函数都已设计好了。当用户需要某个数字模拟外围功能时,只需要简单地调用相应的用户模块即可实现。
DTMF信号
DTMF信号是将拨号盘上的0~9、A~D及*/E、#/F共16个字符,用音频范围的8个频率来表示的一种编码方式。8个频率分为高频群和低频群两组,分别作为列频和行频。每个字符的信号由来自列频和行频的两个频率的正弦信号叠加而成。频率组合方式如图1所示。
根据CCITT Q.23建议,DTMF信号的技术指标是:传送/接收率为每秒10个号码,或每个号码100ms。每个号码传送过程中,信号存在时间至少45ms,且不多 于55ms,100ms的其余时间是静音。在每个频率点上允许有不超过±1.5%的频率误差。任何超过给定频率 ±3.5%的信号,均被认为是无效的,拒绝承认接收。另外,在最坏的检测条件下,信噪比不得低于15dB。
DTMF解码
采用软件方式进行DTMF解码,首先要将模拟信号转换成数字信号,然后再送入CPU处理。利用PSoC的可编程模拟运算放大器和8位ADC用户模块,加上简单的接口就可以实现DTMF信号的模数转换,ADC接口电路如图3所示。 可编程模拟运算放大器用户模块主要用来实现DTMF输入信号的自动增益控制功能。
DTMF解码可以通过计算所接收到的信号在8个既定频率点的频谱值来确定是否为有效的DTMF信号及接收到的是哪个号码。另外,需要通过一系列的有效性检验以防止误判。
FFT可用来计算N点频率处的频谱值,但不适合于此处应用。因为它计算了许多不需要的值,计算量太大;而且为保证频率分辨率,FFT的点数较大。另外,它不能按逐个样点的方式处理,不利于实时实现。
由于只需要知道8个特定点的频谱值,采用一种称为Goertzel算法的DFT算法可以有效地提高计算效率。它相当于一个含两个极点的IIR滤波器,8个频点对应各自相匹配的滤波器,其传递函数为:
然而Goertzel算法还是有一个缺点,那就是它计算的是频率fk=kfs/N处的频谱值,而精确的频率值fi通常只能对应某个近似的整数k,为了达到要求的分辨率,就需要较大的样点数N。改进的方法是:修改传递函数,不计算角频率处的频谱值,而计算精确角频率处的频谱值。这样分辨率能达到数据自然加窗(矩形窗)的分辨率。它的传递函数为
改进的Goertzel算法运算步骤如下:
1. 对每个采样点递归计算(n=0,1,…,N)
Si(n)=2cos(2πfi/fs)× Si(n-1)- Si(n-2)+x[n]
其初始条件是Si[-1]= Si[-2]=0。
2. 当N个样点采集并计算完成后,计算8个频谱值:
|Y(i)|2=Si2[N]+ Si2[N-1]- 2cos(2πfi/fs)× Si[N] × Si[N-1]
在选定采样频率为7.8125Khz基础上,选取N=84个样点即可达到所需的频率分辨率。这对应约11ms信号的采样时间,这足以保证PSOC在100mS的信号码传输周期里的非采样时间里完成DTMF解码和用户应用系统的其它功能。
当8 个频谱值计算出来后,还要进行DTMF有效性检验,以判定是否为有效的DTMF信号。有效性检验包括以下几项内容:(1)高、低频段的最大幅值都必须大于 某个门限值,而且二者之和也要大于某个门限值。(2)高、低频段的最大幅值与各自频段其它三个幅值相比,其差值必须大于某个门限值。(3)逆向绞度检验即 低频段最大幅值不得超过高频段最大幅值8dB,标准绞度检验即高频段最大幅值不得超过低频段最大幅值4dB。
若上述检验通过,判定当前周期DTMF信号有效,根据频率组合可确定是对应哪个号码。为了避免重复识别,还需进行静音检测。
DTMF解码程序流程图如图4所示。
解码时需要大量的乘法运算,可以通过PSoC内部的8位有符号硬件乘法器完成,从而实现DTMF的实时解码要求。
结语
该方案所需PSoC的软硬件资源少,性能可靠,可方便地集成于基于PSOC的单片系统产品实现低成本的远程控制功能。
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议