ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:355.52KB ,
资源ID:26433223      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26433223.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DSPDTMF信号的产生于检测概述.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DSPDTMF信号的产生于检测概述.docx

1、DSPDTMF信号的产生于检测概述DSP课程设计实 验 报 告DTMF信号的产生及检测院(系): 电子工程信息学院设计人员: 黄 炜 学号:07291039 曹 磊 07211193成绩:工程设计50报告20答辩30总分评语:指导教师签字: 日期:一、设计任务书1二、设计内容5三、设计方案、算法原理说明10四、程序设计、调试与结果分析15 五、设计(安装)与调试的体会25 六、参考文献26一、实验目的:(1) 熟悉CCS的编程环境和基本试验调试流程和方法; (2) 了解并掌握DTMF信号的产生和检测远离核试验流程;(3) 编写C语言程序,并在CCS集成开发环境下调试通过;(4) 熟练使用软件C

2、CS5000对程序的完整调试过程。二、实验内容: 1) 利用DTMF信号产生的原理合成数字信号并分析其时域波形和频谱; 2) 生成各个按键信号; 3) 分析09,AD,*、#几个拨号信息的频谱,观察频谱图中的峰值点的幅值以及它们出现的位置。根据谱峰的幅值和位置,识别各DTMF信号所对应对应的数字; 4) 编写Goertzel算法的程序,识别各DTMF信号所对应对应的数字。 5) 生成一串拨号音,例如8位电话号码,进行识别;三、实验原理及程序设计:1、DTMF(双音多频)信号简介双音多频DTMF(Dual Tone MultiFrequency)信号在全世界范围内得到广泛应用,将DTMF信号的产

3、生与检测集成到含有数字信号处理器(DSP)的系统中,是一项较有价值的工程应用。双音多频DTMF(Dual Tone MultiFrequency)信号,逐渐在全世界范围内使用在按键式电话机上,因其提供更高的拨号速率,迅速取代了传统转盘式电话机使用的拨号脉冲信号。近年来DTMF也应用在交互式控制中,诸如语言菜单、语言邮件、电话银行和ATM终端等。将DTMF信号的产生与检测集成到任一含有数字信号处理器(DSP)的系统中,是一项较有价值的工程应用。CCITT(国际电报电话咨询委员会)建议, 国际上采用697Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz、1633H

4、z 12个频率, 并将其分成两个群, 即低频群和高频群。从低频群和高频群中任意抽出一个频率进行叠加组合, 具有16种组合形式, 让其代表数字和功率, 如下图电话机键盘的频率矩阵所列。 本实验的目的是使用TMS320C52来制作DTMF发生器和检测器。DTMF信号是音频电话的拨号信号,这种拨号方法取代了脉冲拨号,每一个号码由两个音频信号组成,该双音频由按键所在的行和列对应的频率决定(如图所示)。 电话中的双音多频信号(DTMF)有两种作用:一是用于双音多频信号的拨号,去控制交换机接通被叫的用户电话机;二是利用双音多频信号控制电话机各种动作,如播放留言、语言信箱等。这些功能的实现离不开DTMF信号

5、的正确产生和检测,专用数字处理信号芯片(DSP)的出现,使这个问题得到轻松的解决。2、DTMF的产生DTMF的产生原理DTMF发生器基于两个二阶数字正弦振荡器,一个用于产生行频,一个用于产生列频。DSP只要装载相应的系数和初始条件,就可以只用两个振荡器产生所需的八种音频信号。典型的DTMF信号频率范围是7001700Hz,选取8000Hz作为采样频率,即可满足奈奎斯特定理。设xk为DTMF信号,产生方式为: xk=Asin(k)+ Bsin(k) 式中=2*pi*/和=2*pi*/分别表示高频和低频频率,A 、B 分别为低频群和高频群样值的量化基线。振荡器实现过程中,首先将每个频率的常数存在一

6、个表中,用来初始化给定键的振荡器;再按照上式的算法迭代计算,就得到正弦序列的输出;将两个这样的输出叠加即可得到双音频的输出。每一个数字抢出的样本数取决于数字速率与采样速率.双音频中的每一个音调之后是同样长度的无音周期,从而可以检测到按键的释放。CCITT对DTMF 信号规定的指标是,传送/ 接收率为每秒10个数字,即每个数字100ms 。代表数字的音频信号必须持续至少45ms,但不超过55ms。100ms 内其他时间为静音(无信号),以便区别连续的两个按键信号。下图为DTMF频率及其对应的键值3、DTMF信号的识别常用的多频信号检测手段主要有FFT变换、滤波器组和线性滤波法三种。DTMF解码即

7、是在输入信号中搜索出有效的行频和列频。计算数字信号的频谱可以采用DFT 及其快速算法FFT,而在实现DTMF 解码时,采用Goertzel 算法要比FFT 更快。Goertzel算法属于线性滤波法,它可从DTFT和DFT中推导。通过FFT 可以计算得到信号所有谱线,了解信号整个频域信息,而对于DTMF 信号只用关心其8 个行频/ 列频及其二次谐波信息即可(二次谐波的信息用于将DTMF 信号与声音信号区别开)。此时Goertzel算法能更加快速的在输入信号中提取频谱信息。Goertzel 算法实质是一个两极点的IIR 滤波器。如图知,DFT 计算可以等价为:在实际的DTMF检测中,只需DFT的幅

8、度(本算法为平方幅度)信息就足够了。对于实序列x(n), Goertzel算法所需的内部变量vk(n)也为实数。因此计算如下在识别DTMF信号时,要求确定抽样点数N,国际上通用N=205点或N=125点。下表列出了N=205点时,各个频率所对应的DFT结果Xm中的序号m。N=205时频率对应的抽样信息基频 准确值 m最近的整数m值 两点的绝对误差 697 17.861 18 0.139 770 19.731 20 0.269 852 21.833 22 0.167 941 24.113 24 0.113 1209 30.981 31 0.019 1336 34.235 34 0.235 147

9、7 37.848 38 0.152 由于k的舍入误差反映的是频率的偏移,因此必须选择k舍入误差小的N值。同时还要兼顾每个频率,每个频率k舍入误差都比较小,或者尽可能的都取“舍”或者都取“入”,这样就会使偏移比较小或者都向同一个方向偏移。4、 DTMF检测C54x的MCBSP接收DTMF信号,每采到一个新样点,样点值代入式,迭代计算8个行频/列频的中间变量 (k为8个行频/列频分别对应的数字频率),直到采到N205个样点(在8kHz采样频率下,约为25ms)。此时再按式子计算8个行频/列频的幅度平方 。接下来将 与门限作比较,判决出有效的音频信号。四、实验程序及注释:#include stdio

10、.h / 头文件#include math.h#include type.h#include board.h/函数原型 void delay(int period); / 定义延时子程序void generate(float dtmf16*800,int start,int num10,int m); / 定义DTMF信号产生子程序void detect(float dtmf16*800 ,int start); / 定义DTMF检测子程序int data;float freq162=941,1336,697,1209,697,1336,697,1447, 770,1209,770,1336,

11、770,1447,852,1209, 852,1336,852,1447,697,1633,770,1633, 852,1633,941,1633,941,1209,941,1477; /按顺序,每一行代表09,AD,*,#对应的数字频率float pi=3.1415926; int n;int num10;s16 cnt=2;/-主程序-void main() int i; int num10=0,0,0,0,0,0,0,0,0,0; /初始化数组num10 float dtmf16*800; char ch22; /-dsk板的初始化- if (brd_init(100) return;

12、while ( cnt- ) /循环闪灯 brd_led_toggle(BRD_LED0); delay(1000); brd_led_toggle(BRD_LED1); delay(1000); brd_led_toggle(BRD_LED2); delay(1000); /- printf(请输入要输入字符的位数,要求小于等于8rn); scanf(%d,&n); printf(请输入n个字符,0-9或A、B、C或D,或*,或#rn); n=2*n; for(i=0;in;i+) /输入字符存放在数组ch22中 scanf(%c,&chi);for (i=1;in;i+,i+) /将输入转

13、化成相应的数字存放在数组num10中, if(chi=*) num(i-1)/2=14; else if(chi=#) /14代表信号*,15代表信号# num(i-1)/2=15; else if(chi=0) num(i-1)/2=(int)(chi)-48; / 09代表信号09 else if(chi=A) num(i-1)/2=(int)(chi)-65+10; /1013代表信号AD for(i=0;i(n/2);i+) /循环产生所输入字符的双音信号 generate(dtmf,i*800,num,i); for(i=0;i(n/2);i+) detect(dtmf,800*i)

14、; /信号的识别检测 return;/-延迟子程序-void delay(int period) int i, j; for(i=0; iperiod; i+) for(j=0; j1; j+); /-双音信号产生子程序-void generate(float dtmf,int start,int num,int m) float x=0,y=0,z=0; int j; /模拟数字频率的转换。 x=freqnumm0/8000*2*pi; /低频音与采样频率之比。 y=freqnumm1/8000*2*pi; /高频音与采样频率之比。 for(j=1;j=400;j+) /设产生信号的持续时间

15、为100ms,所以j为400。 z=sin(x*j)+sin(y*j); /DTMF信号为一个高频音和一个低频音的组合。 dtmfstart+j-1=z; /采样值的装入,前四百个点为双音信号采样值, dtmfstart+j-1+400=0; /后四百个点为0(即静音信号)。 /-信号识别子程序-void detect(float dtmf,int start)int i,j,x,y;char ch;float w8,b83,result8; w0=2*cos(2*pi*18/205); w1=2*cos(2*pi*20/205); w2=2*cos(2*pi*22/205); w3=2*co

16、s(2*pi*24/205); w4=2*cos(2*pi*31/205); w5=2*cos(2*pi*34/205); w6=2*cos(2*pi*37/205); w7=2*cos(2*pi*42/205); for(i=0;i8;i+) / i表示有8个频率点。 bi0=0; bi1=0; for(j=1;j=205;j+) bi2=wi*bi1-bi0+dtmfstart+j-1; /DFT在8个频率点的值 bi0=bi1; /迭代算法 bi1=bi2; resulti=bi1*bi1+bi0*bi0-wi*bi1*bi0; /每一段的8个频率点 的幅度平方值 j=0;for(i=0

17、;i300) /对result中的值进行检测,与300比较 /当超过300时,判断此频率点上信号存在 j+; printf(dtmf%d:%frn,i,resulti); if(j=1) /j=1时i的值赋给x,代表低频的信息 x=i; else if(j=2) /j=2时i的值赋给y,代表高频的信息 y=i; ch=e; if(j=2) if(x=0 & y=4) /若x=0,y=4,则表示低频为697Hz,高频为1209Hz ch=1; /这两个频率所对应的数为1 else if(x=0 & y=5) /若x=0,y=5,则表示低频为697Hz,高频为1336Hz ch=2; /这两个频率

18、所对应的数为2 else if(x=0 & y=6) /以下都依次类推 ch=3; else if(x=1 & y=4) ch=4; else if(x=1 & y=5) ch=5; else if(x=1 & y=6) ch=6; else if(x=2 & y=4) ch=7; else if(x=2 & y=5) ch=8; else if(x=2 & y=6) ch=9; else if(x=3 & y=5) ch=0; else if(x=3 & y=4) ch=*; else if(x=3 & y=6) ch=#; else if(x=0 & y=7) ch=A; else if(

19、x=1 & y=7) ch=B; else if(x=2 & y=7) ch=C; else if(x=3 & y=7) ch=D; if(ch!=e) /满足以上一种情况,则输出检测的信号 printf(The DTMF signal is %c.rn,ch); else /以上情况都不满足,则输出错误信息提示 printf(The number inputted in is wrong!n); 五、CCS5000程序调试1、编译过程、工程架构、编译环境设置1)创建新的工程2)向工程中添加文件从Project/Add Files to Project,分别选择 DTMF.c ,5402.cm

20、d(这个文件将片段映射到存储器中),rts.lib(这个库提供目标DSP 运行时间支持(runtime-support))等文件。.h文件将出现在Project View窗中的Libraries文件夹。头文件不能手动添加,自动到:当前目录(源文件所在)或预编译器的“include Search Path(-i)”option所指定的位置。显示头文件:Projectshow Dependencies. 右击dtmf.pjt,选择Scan All Dependencies.3)编译与运行程序选择Project/Rebuild All或单击(Rebuild All)菜单条按钮,CCS重新进行编辑、汇

21、编、连接工程里的所有文件。得到结果:选择File/Load Program.选中dtmf.out,并按Open。CCS将程序装载到目标DSP上,打开显示程序仿汇编指令的Disassembly窗口。选择Debug/Go Main。从主程序开始执行程序执行过程需输入数据2、程序运行结果及图像:观察信号时域图观察信号频域图信号检测输出六、实验总结及感想:通过此次DSP课程设计,使我对上课学过的知识有了进一步的认识。DTMF信号是我们日常生活中经常接触到的,即电话拨号信令。在做课程设计时,参考了图书馆的一些书籍以及网上查的资料,从而对双音多频的产生与检测机理有了初步的掌握,然后在CCS编程调试过程中不

22、断实践,改进程序。在调试程序的过程中,遇到了很多困难,请教了同学以及大四的学长,最后终于成功了。本实验主要是DTMF双音多频信号的产生与识别,按键信号是由相应两个频率的正弦信号相加而成,通过公式x=freqnum0/8000*2*pi以及公式y=freqnum1/8000*2*pi,实现对模拟行频和列频向数字的转换,对产生的正弦信号进行400点抽样,存入dtmf数组中,以便检测时调用。本实验是通过Goertzel算法实现对信号的检测。通过对迭代方程的计算,得出信号幅值的平方,在八个频率点处与已知常数进行比较,检测出符合条件的频率组合,并输出数值,完成识别过程。当然,在实验过程中,遇到了很多困难

23、,比如说,程序文件5402.cmd文件,刚开始直接调用,编译时出现错误,根据提示,在一系列的修改尝试后,补加了段sysmem SCRATCH PAGE 1,产生了8个信号。通过此次实验,我们对DTMF的基础知识有了较深刻的了解,掌握了DTMF的信号产生及信号检验的原理及方法,并熟悉了用C语言对DTMF的编程的方法,通过程序的调用及调式,我们熟悉了DSP5402的体系结构、指令系统等。我们定会总结实验方法,掌握理论知识,汲取经验教训,为进一步掌握DSP的设计、CCS的使用打下基础。参考文献(1) 高海林、钱满义DSP技术及其应用讲义 (2) TMS320C54x DSP Reference Set Volume 1: CPU and PeripheralsSPRU131G Texas Instrument Inc,2001(3) DTMF Tone Generation and Detection:An Implementation Using the TMS320C54x. SPRA096a ,TI.Inc.2000(4) 基于TMS320LF2407A的DTMF产生与检测实验系统设计.pdf(5) 基于DSP的DTMF信号检测.nh(6) 在DSP上实现PCM_FSK_DTMF信号变换.kdh

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1