实验六-数字信号处理在双音多频拨号系统中的应用
- 格式:docx
- 大小:368.12 KB
- 文档页数:8
数字信号处理技术在音频双声道输出中的应用研究随着数字化时代的到来,数字信号处理技术越来越受到广泛关注和应用。
它在音频技术领域中也有着广泛的应用,比如在音频双声道输出技术中的应用。
本文将探讨数字信号处理技术在音频双声道输出中的应用研究。
一、数字信号处理技术简介数字信号处理技术指的是将连续的模拟信号转换为数字信号,并对数字信号进行处理和分析的技术。
它广泛应用于音频、图像、视频等各个领域。
数字信号处理技术通过对信号进行数字化处理和分析,使得信号的波形、频谱和时域特性能够被更精细地描述和分析。
二、音频双声道输出技术音频双声道输出技术是指将一个声道的声音分成两个声道输出的技术,即左声道和右声道。
双声道技术在录音、广播、影视制作等领域都有着广泛的应用。
在音频双声道输出中,数字信号处理技术发挥着重要的作用。
三、数字信号处理技术在音频双声道输出中的应用研究1.数字滤波器数字滤波器是数字信号处理技术中的重要组成部分。
数字滤波器能够对信号进行去噪、滤波等操作,使得信号的质量得到提高。
在音频双声道输出技术中,数字滤波器可以对声音进行滤波,使得声音的质量更加清晰,音质更加优秀。
2.声场重建技术声场重建技术是数字信号处理技术在音频双声道输出中的重要应用之一。
声场重建技术可以将单声道信号转换为双声道信号,进而实现左声道和右声道的分离输出。
同时,声场重建技术还能够实现音频信号的空间环绕效果,使得听众感觉到真实的立体声效果。
3.立体声扩展技术立体声扩展技术是数字信号处理技术在音频双声道输出中的重要应用之一。
立体声扩展技术能够对双声道信号进行扩充,提高声音的宽度和深度,使得听众感觉到更加丰富的音效体验。
立体声扩展技术可以通过合成、交叉谱分析、相位调节等技术实现。
4.动态压缩技术动态压缩技术是数字信号处理技术在音频双声道输出中的重要应用之一。
动态压缩技术可以对声音进行动态压缩处理,提高声音的可听性和清晰度。
同时,动态压缩技术还能够对过高或过低的音频信号进行压缩,使得音质更加均衡。
上机实验数字信号处理是一门理论和实际密切结合的课程,为深入掌握课程内容,最好在学习理论的同时,做习题和上机实验。
上机实验不仅可以帮助读者深入的理解和消化基本理论,而且能锻炼初学者的独立解决问题的能力。
本章在第二版的基础上编写了六个实验,前五个实验属基础理论实验,第六个属应用综合实验。
实验一 系统响应及系统稳定性。
实验二 时域采样与频域采样。
实验三 用FFT 对信号作频谱分析。
实验四 IIR 数字滤波器设计及软件实现。
实验五 FIR 数字滤波器设计与软件实现实验六 应用实验——数字信号处理在双音多频拨号系统中的应用任课教师根据教学进度,安排学生上机进行实验。
建议自学的读者在学习完第一章后作实验一;在学习完第三、四章后作实验二和实验三;实验四IIR 数字滤波器设计及软件实现在。
学习完第六章进行;实验五在学习完第七章后进行。
实验六综合实验在学习完第七章或者再后些进行;实验六为综合实验,在学习完本课程后再进行。
10.1 实验一: 系统响应及系统稳定性1.实验目的(1)掌握 求系统响应的方法。
(2)掌握时域离散系统的时域特性。
(3)分析、观察及检验系统的稳定性。
2.实验原理与方法在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。
已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,本实验仅在时域求解。
在计算机上适合用递推法求差分方程的解,最简单的方法是采用MATLAB 语言的工具箱函数filter 函数。
也可以用MATLAB 语言的工具箱函数conv 函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。
系统的时域特性指的是系统的线性时不变性质、因果性和稳定性。
重点分析实验系统的稳定性,包括观察系统的暂态响应和稳定响应。
系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应。
或者系统的单位脉冲响应满足绝对可和的条件。
设计目的 1. 巩固所学的数字信号处理理论知识,了解电话中双音多频信号的产生与检测原理;2. 了解数字信号处理在实际中的使用方法和重要性;3. 学习资料的收集与整理,学会撰写课程设计报告。
实验环境 1. 微型电子计算机(PC);2. 安装Windows 2000以上操作系统,MATLAB等开发工具。
任务要求 1. 研究双音多频拨号(DTMF)系统,研究电话中双音多频信号的产生与检测原理;任意送入6位和8位电话号码,打印出相应的幅度谱。
观察程序运行结果,判断程序谱分析的正确性。
2. 利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;3. 在第15周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;4. 结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。
工作进度计划序号起止日期工作内容1 2009.12.14~2009.12.14 在预设计的基础上,进一步查阅资料,完善设计方案。
2 2009.12.14~2009.12.17 设计总体方案,构建、绘制流程框图,编写代码,上机调试。
3 2009.12.17~2009.12.18 测试程序,完善功能,撰写设计报告。
4 2009.12.18 参加答辩,根据教师反馈意见,修改、完善设计报告。
摘要所谓双音多频(DTMF),就是用两个频率——行频和列频来表示电话机键盘上的一个数字。
DTMF 电话的指令正在迅速的取代脉冲指令。
除了在电话呼叫信号中使用外,DTMF 还广泛的使用在交互式控制应用,例如电话银行、电子邮件甚至家电远程控制等,用户可以从电话机发送DTMF 信号来做菜单选择。
本文基于MATLAB的双音多频拨号系统的仿真实现。
主要涉及到电话拨号音合成的基本原理及识别的主要方法,利用MATLAB 软件以及DFT 算法实现对电话通信系统中拨号音的合成与识别。
数字信号处理技术在音频系统中的应用第一章:引言随着科技的不断发展和进步,数字信号处理技术在各个领域得到了广泛的应用。
其中,音频系统是数字信号处理技术的一个重要领域。
数字信号处理技术在音频系统中的应用,不仅可以提高音频信号的质量和效果,还可以实现音频信号的处理和控制。
本文将重点介绍数字信号处理技术在音频系统中的几个主要应用。
第二章:音频数据的数字化音频系统中采用数字信号处理技术的第一个步骤是将模拟音频信号转换为数字音频信号。
这一步骤是通过模拟-数字转换器(ADC)完成的。
模拟-数字转换器将模拟音频信号进行采样和量化处理,得到对应的数字音频信号。
采样率和量化位数是决定数字音频信号质量的重要参数。
较高的采样率和量化位数可以提高数字音频信号的准确性和保真度,从而增强音频系统的性能。
第三章:音频信号的处理数字信号处理技术在音频系统中的另一个重要应用是音频信号的处理。
通过对数字音频信号进行滤波、均衡、混响等处理,可以改变音频信号的频率特性、时域特性和空间特性,从而调整音频信号的声音效果和音质。
滤波处理可以去除音频信号中的杂音和干扰,增强音频信号的清晰度;均衡处理可以通过调整音频信号的频率响应,改变音频信号的音色和声场效果;混响处理可以模拟不同的房间和场景,增加音频信号的立体感和深度感。
第四章:音频信号的编码和压缩在音频系统中,数字信号处理技术还可以应用于音频信号的编码和压缩。
通过对音频信号进行编码和压缩,可以将音频信号的数据量减小到较小的尺寸,从而方便存储和传输。
常用的音频编码和压缩算法有MP3、AAC等。
这些算法通过对音频信号进行频域分析、量化和编码处理,将音频信号的冗余信息去除,从而实现音频信号的高效编码和压缩。
第五章:音频信号的恢复和重建数字信号处理技术还可以应用于音频信号的恢复和重建。
在音频传输和存储过程中,由于信号传播和储存介质的限制,音频信号通常会受到损坏和失真。
通过使用数字信号处理技术,可以对受损的音频信号进行恢复和重建,使其恢复原来的音质和效果。
广西大学计电学院《数字信号处理》课程实验适用专业:电信和通信工程专业;实验学时:9 学时一、实验的性质、任务和基本要求(一)本实验课的性质、任务数字信号处理课程实验是数字信号处理课程的有效的补充部分,通过实验,使学生巩固和加深数字信号处理的理论知识的理解和掌握,在实验过程中了解简单但是完整的数字信号处理的工程实现方法和流程。
通过实践进一步加强学生独立分析问题和解决问题的能力、实际动手能力、综合设计及创新能力的培养。
(二)基本要求掌握数字信号处理基本理论知识和滤波器设计及应用。
(三)实验选项二、实验教学内容实验1 数字信号处理在音乐信号延时和混响处理中的应用(时域处理)-p2781、实验目的和内容掌握数字信号处理方法在音乐信号混响处理中的应用(在时域处理)。
2、实验内容按照p278的内容要求,采用MATLAB设计相应滤波器及小型应用软件APP,实现对一段音乐信号进行延时和混响处理和输出,能实现混响程度的调节。
3、实验要求1)提供MATLAB程序;2)写实验报告,对设计的思路和步骤结果进行分析和说明。
实验2 数字信号处理在音乐信号均衡处理中的应用(频域处理)-p2811、实验目的掌握数字信号处理方法在音乐信号均衡处理中的应用(在频域处理)。
2、实验内容按照p281的内容要求,采用MATLAB设计相应滤波器,及小型应用软件APP,实现对一段音乐信号进行均衡处理和输出,更高要求是能实现均衡程度的调节。
3、实验要求1)提供MATLAB程序;2)写实验报告,对设计的思路和步骤结果进行分析和说明。
实验3 双音多频(DTMF)通信设计的MATLAB仿真1、实验目的理解和掌握第十章双音多频(DTMF)拨号原理。
2、实验内容根据双音多频(DTMF)拨号原理,采用MATLAB进行DTMF信号系统拨号、检测和接收仿真设计。
采用MATLAB设计出电话机(或手机)的拨号界面和检测接收界面。
要求能显示发送(无噪声和含不同信噪比)的数字字母(串)、检测和接收到的数字(串)。
第十章 上机实验数字信号处理是一门理论和实际密切结合的课程,为深入掌握课程内容,最好在学习理论的同时,做习题和上机实验。
上机实验不仅可以帮助读者深入的理解和消化基本理论,而且能锻炼初学者的独立解决问题的能力。
本章在第二版的基础上编写了六个实验,前五个实验属基础理论实验,第六个属应用综合实验。
实验一 系统响应及系统稳定性。
实验二 时域采样与频域采样。
实验三 用FFT 对信号作频谱分析。
实验四 IIR 数字滤波器设计及软件实现。
实验五 FIR 数字滤波器设计与软件实现实验六 应用实验——数字信号处理在双音多频拨号系统中的应用任课教师根据教学进度,安排学生上机进行实验。
建议自学的读者在学习完第一章后作实验一;在学习完第三、四章后作实验二和实验三;实验四IIR 数字滤波器设计及软件实现在。
学习完第六章进行;实验五在学习完第七章后进行。
实验六综合实验在学习完第七章或者再后些进行;实验六为综合实验,在学习完本课程后再进行。
实验一: 系统响应及系统稳定性1.实验目的(1)掌握 求系统响应的方法。
(2)掌握时域离散系统的时域特性。
(3)分析、观察及检验系统的稳定性。
2.实验原理与方法在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。
已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,本实验仅在时域求解。
在计算机上适合用递推法求差分方程的解,最简单的方法是采用MA TLAB 语言的工具箱函数filter 函数。
也可以用MATLAB 语言的工具箱函数conv 函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。
系统的时域特性指的是系统的线性时不变性质、因果性和稳定性。
重点分析实验系统的稳定性,包括观察系统的暂态响应和稳定响应。
系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应。
或者系统的单位脉冲响应满足绝对可和的条件。
实验五程序代码及实验结果图:(1)运行仿真程序exp6.m,任意送入 6 位电话号码,打印出相应的幅度谱。
观察程序运行结果,判断程序谱分析的正确性。
实验程序代码及结果如下:% DTMF 双频拨号信号的生成和检测程序tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68]; % DTMF 信号代表的16 个数N=205;K=[18,20,22,24,31,34,38,42]; %采样点数f1=[697,770,852,941]; %行频率向量f2=[1209,1336,1477,1633]; %列频率向量TN=input('键入6 位电话号码= '); %输入6位数字TNr=0; %接收端电话号码初值为零for l=1:6;d=fix(TN/10^(6-l)); %通过整除依次得到六位数字TN=TN-d*10^(6-l); %得到1位数字之后,得到新的序列TNfor p=1:4; %通过查表法得到数字的行号p和列号q for q=1:4;if tm(p,q)==abs(d); break,end %检测码相符的列号qendif tm(p,q)==abs(d); break,end %检测码相符的行号pend%得到每一位数值之后,然后跳出循环,对该位进行信号调制n=0:1023; %延长序列,为了发出声音x = sin(2*pi*n*f1(p)/8000) + sin(2*pi*n*f2(q)/8000);sound(x,8000); %发出声音pause(0.1) %声音持续时间% 接收检测端的程序X=goertzel(x(1:205),K+1); %用Goertzel算法计算8点DFT样本val = abs(X); %列出8点DFT向量subplot(3,2,l);stem(K,val,'.');grid on; %绘制幅度谱xlabel('k');ylabel('|X(k)|'); %横纵坐标名称axis([10 50 0 120]); %确定坐标轴范围limit = 80; %设定门限值for s=5:8;if val(s) > limit, break, end %查找列号,找到列号大于门限的幅度谱值endfor r=1:4;if val(r) > limit, break, end %查找行号,找到行号大于门限的幅度谱值endTNr=TNr+tm(r,s-4)*10^(6-l); %合成6位电话号码enddisp('接收端检测到的号码为:'); %显示接收到的字符disp(TNr);(2)分析该仿真程序,将产生、检测和识别 6 位电话号码的程序改为能产生、检测和识别8 位电话号码的程序,并运行一次,打印出相应的幅度谱和8 位电话号码。
第十章上机实验数字信号处理是一门理论和实际密切结合的课程,为深入掌握课程内容,最好在学习理论的同时,做习题和上机实验。
上机实验不仅可以帮助读者深入的理解和消化基本理论,而且能锻炼初学者的独立解决问题的能力。
本章在第二版的基础上编写了六个实验,前五个实验属基础理论实验,第六个属应用综合实验。
实验一 系统响应及系统稳定性。
实验二 时域采样与频域采样。
实验三 用FFT 对信号作频谱分析。
实验四 IIR 数字滤波器设计及软件实现。
实验五 FIR 数字滤波器设计与软件实现 实验六 应用实验——数字信号处理在双音多频拨号系统中的应用任课教师根据教学进度,安排学生上机进行实验。
建议自学的读者在学习完第一章后作实验一;在学习完第三、四章后作实验二和实验三;实验四IIR 数字滤波器设计及软件实现在。
学习完第六章进行;实验五在学习完第七章后进行。
实验六综合实验在学习完第七章或者再后些进行;实验六为综合实验,在学习完本课程后再进行。
10.1 实验一: 系统响应及系统稳定性1.实验目的 (1)掌握 求系统响应的方法。
(2)掌握时域离散系统的时域特性。
(3)分析、观察及检验系统的稳定性。
2.实验原理与方法在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。
已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,本实验仅在时域求解。
在计算机上适合用递推法求差分方程的解,最简单的方法是采用MA TLAB 语言的工具箱函数filter 函数。
也可以用MATLAB 语言的工具箱函数conv 函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。
系统的时域特性指的是系统的线性时不变性质、因果性和稳定性。
重点分析实验系统的稳定性,包括观察系统的暂态响应和稳定响应。
系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应。
或者系统的单位脉冲响应满足绝对可和的条件。
实验一、数字信号处理在双音多频拨号系统中的应用一、实验目的1.了解双音多频信号的产生、检测、包括对双音多频信号进行DFT 时的参数选择等。
2.初步了解数字信号处理在是集中的使用方法和重要性。
3.掌握matlab 的开发环境。
二、实验原理双音多频(Dual Tone Multi Frequency, DTMF )信号是音频电话中的拨号信号.由美国AT&T 贝尔公司实验室研制.并用于电话网络中。
这种信号制式具有很高的拨号速度.且容易自动监测识别.很快就代替了原有的用脉冲计数方式的拨号制式。
这种双音多频信号制式不仅用在电话网络中.还可以用于传输十进制数据的其它通信系统中.用于电子邮件和银行系统中。
这些系统中用户可以用电话发送DTMF 信号选择语音菜单进行操作。
DTMF 信号系统是一个典型的小型信号处理系统.它要用数字方法产生模拟信号并进行传输.其中还用到了D/A 变换器;在接收端用A/D 变换器将其转换成数字信号.并进行数字信号处理与识别。
为了系统的检测速度并降低成本.还开发一种特殊的DFT 算法.称为戈泽尔(Goertzel)算法.这种算法既可以用硬件(专用芯片)实现.也可以用软件实现。
下面首先介绍双音多频信号的产生方法和检测方法.包括戈泽尔算法.最后进行模拟实验。
下面先介绍电话中的DTMF 信号的组成。
在电话中.数字0-9的中每一个都用两个不同的单音频传输.所用的8个频率分成高频带和低频带两组.低频带有四个频率:679Hz,770Hz,852Hz 和941Hz ;高频带也有四个频率:1209Hz,1336Hz,1477Hz 和1633Hz.。
每一个数字均由高、低频带中各一个频率构成.例如1用697Hz 和1209Hz 两个频率.信号用)2sin()2sin(21t f t f ππ+表示.其中Hz f 6791=.Hz f 12092=。
这样8个频率形成16种不同的双频信号。
具体号码以及符号对应的频率如表4.1所示。
数字信号处理在双音多频拨号系统中的应用张连滨 2015080111 A:八位电话号码1:程序代码程序分四段:第一段(1—7行)设置参数,并读入8位电话号码;第二段(8—20行)根据键入的8位电话号码产生时域离散DTMF信号,并连续发出8位号码对应的双音频声音;第三段(22—25行)对时域离散DTMF 信号进行频率检测,画出幅度谱;第四段(26—33行)根据幅度谱的两个峰值,分别查找并确定输入8位电话号码。
2:运行结果键入电话号码为:52113149接收端接检测的号码为:52113149对时域离散DTMF 信号进行频率检测,幅度谱图如下:实验结论:(1)输入8位号码52113149,接收端,检测到的号码是52113149,说明选取采样频率为Fs =8KHz ,序列长度为N =205是非常正确的。
(2)由DTMF 信号在8个近似基频点的DFT 幅度图可知,第一幅图低频K1=20,K2=33,由表4.2可知1f =770Hz ,2f =1336Hz,由表4.1可知对应的号码为5;第二幅图低频K1=18,K2=33,由表4.2可知1f =697Hz ,2f =1336Hz,由表4.1可知对应的号码为2;第三幅图低频K1=18,K2=31,由表4.2可知1f =697Hz ,2f =1209Hz,由表4.1可知对应的号码为1;第四幅图低频K1=18,K2=31,由表4.2可知1f =697Hz ,2f =1209Hz,由表4.1可知对应的号码为1;第五幅图低频K1=18,K2=38,由表4.2可知1f =697Hz ,2f =1477Hz,由表4.1可知对应的号码为3;第六幅图低频K1=18,K2=31,由表4.2可知1f =697Hz ,2f =1209Hz,由表4.1可知对应的号码为1;第七幅图低频K1=20,K2=31,由表4.2可知1f =770Hz ,2f =1209Hz,由表4.1可知对应的号码为4;第八幅图低频K1=22,K2=38,由表4.2可知1f =852Hz ,2f =1477Hz ,由表4.1可知对应的号码为9;即最终输出号码为52113149,与程序运行结果相同。
《数字信号处理》作业实验3 双音多频的通信双音多频是4x4按钮键盘的一种编码方法,它的原理是用一个低频正弦波和一个高频的正弦波组合成为一个按钮信号。
双音多频通常简写为DTMF。
作为一种通信手段,DTMF广泛应用在电话拨号中,作用是控制电话局的交换机快速和准确地连接通话线路;DTMF也可以用来控制爆炸,用咋爱自动取款机、信息传送等方面。
双音多频的信号产生和解调可以用模拟电路来实现,也可以用数字信号处理来实现。
下面用数字信号处理的方法,在计算机上实现双音多频的通信。
基本的双音多频MATLAB程序如下:请从数字信号处理的角度分析以上的各条指令的作用。
善用已学的知识经常会获得事半功倍的效果。
理解指令k=[18,20,22,24,31,34,38,42]的作用时,请利用频率的分辨率和离散频率的序号的关系。
理解指令t=80的作用时,观察205点长的双音频信号的频谱实验程序:%%%%键盘号码发射机%%%%DTMF=['123A';'456B';'789C';'*0#D']; %设置双音多频的键盘号码矩阵fL=[697,770,852,941];fH=[1209,1336,1477,1633]; %设置键盘的低频和高频正弦波的频率n=0:1000; %产生双音频声音信号的样本序号fs=8000; %设定声音样本的采样频率b=input('请输入按键的号码:','s'); %在MATLAB 的命令窗中输入电话键盘的号码L=length(b); %计算在命令窗中输入的号码长度for m=1:L, %将输入的号码分别与键盘的号码逐个进行对比for p=1:4, %按照键盘的行顺序进行对比for q=1:4, %按照键盘的列顺序进行对比if DTMF(p,q)==abs(b(m)),break,end; %确定与第m 个输入号码b(m)相符的键盘号码的列号endif DTMF(p,q)==abs(b(m)),break,end; %确定与第m 个输入号码b(m)相符的键盘号码的列号endx(m,:)=sin(2*pi*fL(p)*n/fs)+sin(2*pi*fH(q)*n/fs); %根据p 和q 产生对应该键盘号码的双音频正弦波信号sound(x(m,:),fs);pause(0.2); %放该键盘号码的双音频声音,暂停0.2 秒end%%%%键盘号码接收机%%%%N=205; %分析双音频信号时需要的最少样本数量k=[18,20,22,24,31,34,38,42]; %低频和高频在N点长的离散傅里叶变换中对应的最佳顺序r=80; %检测双音频信号的门槛值d=[]; %检测双音频信号对应的键盘号码的初始值for m=1:L; %检测接收的双音频信号x 的每个键盘号码信号X(m,:)=abs(x(m,1:N)*exp(-j*2*pi/N*(1:N)'*k)); %第m 个号码信号xm:的8 种频率的正弦波分量的幅度for s=1:4; %寻找该双音频信号xm:的低频正弦波分量if X(m,s)>r,break,end %如果其正弦波分量的幅度Xms大于门槛值r 就退出该循环endfor t=5:8; %寻找该双音频信号xm:的高频正弦波分量if X(m,t)>r,break,end %如果其正弦波分量的幅度Xmt大于门槛值r 就退出该循环endd=[d,DTMF(s,t-4)]; %根据xm:的低频和高频正弦波的位置形成它们的键盘号码矩阵位置end;disp(['检测得到的号码是:',d]); %显示检测双音频信号x 后得到的号码stem(k,X(1,:),'k')。
实验六双音多频检测实验一、实验目的:1、加强对用户接口信令的认识与理解2、掌握双音多频检测的基本原理3、熟悉CM8870 双音多频检测器件的性能及使用方法二、实验器件:1、 JH5001 通信原理综合实验系统一台2、 20MHz 双踪示波器一台3、数字存贮示波器一台4、电话机二部三、实验原理:用户接口上的信令又可分为线路信令与地址信令(也称之为记发器信令)。
线路信令主要反映了二线用户话机的状态:摘机或挂机,此类信令一般由SLIC 电路检测(该方面已包括在前面的实验中);地址信令主要是用户发送的号码信令,该类信令一般由双音多频检测器进行检测。
用户线上的地址信令存在两种技术标准:1、脉冲拨号方式脉冲拨号方式是按一定的断续比和速率来断、续电话线的环路来发出号码信号。
脉冲拨号主要在早期的步进制交换机中采用,其缺点是拨号速度慢、脉冲产生变异易引起交换机误动作等,随着技术的发展已逐渐被双音多频拨号方式所取代。
2、双音多频DTMF(Dual-tone Multi-frequency)DTMF 是指用两个特定的单音频信号的组合来代表数字或功能,两个单音频的频率不同,所代表的数字和功能也不同,在双音多频电话机中有16 个按键,其中有10 个数字键(0~9),6 个功能键(*、#、A、B、C、D),按照双音组合的原理,它必须有8 种不同的单音频信号,由于采用的频率有8 种,故又称之为多频,又因以8 种频率中任意抽出2 种进行组合,又称其为8 中取2 的编码方法。
根据CCITT的建议,国际上采用697HZ、770 HZ、852 HZ、941HZ、1209HZ、1336HZ、1477HZ和1633HZ,把这8 种频率分成两个群,即低频群和高频群,从低频群和高频群中任意各抽出一种频率进行组合,共有16 种不同组合,各代表16 种不同数字号码或功能,DTMF 号码组合见表6.2.1。
表6.2.1DTMF模块组成框图:四、实验内容及实验分析:1、检测在拨号时,DTMF检测的实际高、低频率是否与理论值相对应?NO.1(fl=697Hz fh=1209Hz)fl=700Hz fh=1.23kHzfl=700Hz fh=1.34kHzNO.3(fl=697Hz,fh=1477Hz)fl=200Hz, fh=1490Hzfl=760Hz fh=1230HzNO.5(fl=770Hz,fh=1336Hz)fl=760Hz fh=1350Hzfl=760Hz fh=1490HzNO.7(fl=852Hz,fh=1209Hz)fl=850Hz fh=1230Hzfl=850Hz fh=1340Hz NO.9(fl=852Hz,fh=1477Hz)fl=850Hz fh=1490Hz五、实验小结:1、分析总结各项测试结果。
双音多频拨号系统答辩问题1. 概述双音多频(DTMF)拨号系统是一种用于电话拨号的技术,通过发送两个音频频率信号的组合来实现拨号功能。
DTMF拨号系统广泛应用于电话交换机、电话银行、语音导航等领域。
本文将就DTMF拨号系统进行深入研究,探讨其原理、应用以及存在的问题。
2. DTMF拨号系统的原理DTMF拨号系统的原理是利用不同的音频频率组合来表示电话键盘上的数字、字母和特殊字符。
电话键盘上的按键被分成12个按键,其中10个按键表示数字0-9,而剩下的2个按键表示星号(*)和井号(#)。
每个按键对应两个音频频率信号,其中一个为低频音,另一个为高频音。
通过发送特定的音频频率组合,可以实现对应按键的拨号功能。
3. DTMF拨号系统的应用DTMF拨号系统在通信领域有着广泛的应用。
以下是一些常见的应用场景:3.1 电话交换机电话交换机是DTMF拨号系统最常见的应用之一。
用户通过拨号盘上的按键进行号码的输入,电话交换机接收到拨号信号后,根据信号解析出相应的号码进行呼叫转接。
3.2 语音导航系统语音导航系统使用DTMF拨号系统可以方便用户进行交互。
用户可以通过按键输入选择菜单、输入相关信息等,语音导航系统根据用户的输入提供相应的服务。
3.3 电话银行电话银行是一种通过电话进行银行业务操作的服务。
用户可以通过DTMF拨号系统输入账号、密码等信息,进行查询余额、转账等操作。
4. DTMF拨号系统的优势与挑战虽然DTMF拨号系统在通信领域有着广泛的应用,但它也存在一些优势与挑战。
4.1 优势•简单易用:DTMF拨号系统使用电话键盘上的按键进行输入,用户使用方便。
•实时性:DTMF信号可以即时传输,实现快速的拨号功能。
•成本低:DTMF拨号系统的实现成本相对较低,适用于大规模应用。
4.2 挑战•信号干扰:DTMF信号在传输过程中容易受到电磁干扰等影响,可能导致误识别。
•安全性问题:由于DTMF拨号系统采用信号传输,一些安全信息可能会被窃取,需要进行加密保护。
双音多频拨号系统DTMF的实验设计报告所谓双音多频(DTMF),就是用两个频率——行频和列频来表示机键盘上的一个数字。
DTMF 的指令正在迅速的取代脉冲指令。
除了在呼叫信号中使用外,DTMF 还广泛的使用在交互式控制应用,例如银行、电子甚至家电远程控制等,用户可以从机发送DTMF 信号来做菜单选择。
本文基于MATLAB的双音多频拨号系统的仿真实现。
主要涉及到拨号音合成的基本原理及识别的主要方法,利用 MATLAB 软件以及DFT 算法实现对通信系统中拨号音的合成与识别。
并进一步利用 MATLAB 中的图形用户界面 GUI 制作简单直观的模拟界面。
还能够利用矩阵不同的基频合成 0 - 9 不同按键的拨号音,并能够对不同的拨号音加以正确的识别,实现由拨号音解析出的过程,进一步利用 GUI 做出了简单的图形操作界面。
本文具有界面清楚,画面简洁,易于理解,操作简单的优点,从而实现对拨号音系统的简单的信号仿真。
关键词:双音多频(DTMF) MATLAB GUI 信号仿真在中,数字0~9的中每一个都用两个不同的单音频传输,所用的8个频率分成高频带和低频带两组,低频带有四个频率:679Hz,770Hz,852Hz和941Hz;高频带也有四个频率:1209Hz,1336Hz,1477Hz和1633Hz.。
每一个数字均由高、低频带中各一个频率构成,例如1用697Hz和1209Hz两个频率,信号用表示,其中,。
这样8个频率形成16种不同的双频信号。
一,利用GUI 作图(简单的界面)如下:利用 GUI 图形用户界面设计工具制作拨号面板,把 DTMF 信号和机的键盘矩阵对应起来。
其中选用我们熟悉的 10 个数字键 0 — 9 , 3 个功能键“ 回删”、“拨号”,“解码”。
按照图机键盘矩阵的排列方式制作五行三列的按键控件。
每个按键可用( Push Button )添加。
静态文本框可用( Static Text )添加,如图再加个解码键( Push Button )二,再点运行,得出与上图对应的m文件,再用鼠标右击上图的每个键,点callback导入每个键的编译程序如下:1,按键1的程序:% --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); % 把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];%每个数字1000个采样点y=sin(0.5345*n)+sin(0.9272*n);%对应行频列频时域叠加,数字1的低频697Hz和高频1209Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100);%100个0模拟静音信号global NUMphone=[NUM,y];% 循环储存NUM=[phone,space]; % 储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'1'];set(handles.text1,'string',[NoCtrl]);end2,按键2的程序:function pushbutton5_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is tooelsen=[1:1000];% 每个数字1000个采样点y=sin(0.5345*n)+sin(1.0247*n);% 对应行频列频时域叠加,数字2的低频697Hz和高频1336Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100);% 100个0模拟静音信号global NUMphone=[NUM,y]; %循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'2'];set(handles.text1,'string',[NoCtrl]);end3.按键3的程序:% --- Executes on button press in pushbutton6. function pushbutton6_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is tooelsen=[1:1000];% 每个数字1000个采样点y=sin(0.5345*n)+sin(1.1328*n);% 对应行频列频时域叠加,数字3的低频697Hz和高频1477Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100);% 100个0模拟静音信号global NUMphone=[NUM,y]; %循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'3'];set(handles.text1,'string',[NoCtrl]);end4,按键4的程序:% --- Executes on button press in pushbutton10. function pushbutton10_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is tooelsen=[1:1000];% 每个数字1000个采样点y=sin(0.5905*n)+sin(0.9272*n);% 对应行频列频时域叠加,数字4的低频770Hz和高频1209Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100);% 100个0模拟静音信号global NUMphone=[NUM,y]; %循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'4'];set(handles.text1,'string',[NoCtrl]);end5,按键5的程序:% --- Executes on button press in pushbutton9. function pushbutton9_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];%每个数字1000个采样点vy=sin(0.5905*n)+sin(1.0247*n);% 对应行频列频时域叠加,数字5的低频770Hz和高频1336Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100); %100个0模拟静音信号global NUMphone=[NUM,y];% 循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'5'];set(handles.text1,'string',[NoCtrl]);end6,按键6的程序:% --- Executes on button press in pushbutton8. function pushbutton8_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];% 每个数字1000个采样点y=sin(0.5905*n)+sin(1.1328*n);% 对应行频列频时域叠加,数字6的低频770Hz和高频1477Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100);% 100个0模拟静音信号global NUMphone=[NUM,y];% 循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'6'];set(handles.text1,'string',[NoCtrl]);end7,按键7的程序:% --- Executes on button press in pushbutton13. function pushbutton13_Callback(hObject, eventdata,handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];% 每个数字1000个采样点y=sin(0.6534*n)+sin(0.9272*n);% 对应行频列频时域叠加,数字7的低频852Hz和高频1209Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100); %100个0模拟静音信号global NUMphone=[NUM,y];% 循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'7'];set(handles.text1,'string',[NoCtrl]);end8,按键8的程序:% --- Executes on button press in pushbutton12.function pushbutton12_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];% 每个数字1000个采样点y=sin(0.6534*n)+sin(1.0247*n);% 对应行频列频时域叠加,数字8的低频852Hz和高频1336Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100);% 100个0模拟静音信号global NUMphone=[NUM,y]; %循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'8'];set(handles.text1,'string',[NoCtrl]);end% --- Executes on button press in pushbutton14. function pushbutton14_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];% 每个数字1000个采样点y=sin(0.6534*n)+sin(1.1328*n);% 对应行频列频时域叠加,数字9的低频852Hz和高频1477Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100); %100个0模拟静音信号global NUMphone=[NUM,y];% 循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'9'];set(handles.text1,'string',[NoCtrl]);end% --- Executes on button press in pushbutton17. function pushbutton17_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); %把数字显示在屏幕上if(length(x)>15)errordlg('Sorry . The number you have input is too long !','Input Error•','modal')elsen=[1:1000];每个数字1000个采样点y=sin(0.7217*n)+sin(1.0247*n);% 对应行频列频时域叠加,数字0的低频941Hz和高频1336Hz叠加wavplay(y,8192) %产生拨号音space=zeros(1,100); %100个0模拟静音信号global NUMphone=[NUM,y];% 循环储存NUM=[phone,space]; %储存连续的拨号音信号NoCtrl=x;NoCtrl=[NoCtrl,'0'];set(handles.text1,'string',[NoCtrl]);end11,按键#号程序:% --- Executes on button press in pushbutton16. function pushbutton16_Callback(hObject, eventdata, handles)set(handles.text1,'string',['']);set(handles.tbutton,'visible',['off']);set(handles.tbutton,'value',[0]);clear all12,按键*的程序:% --- Executes on button press in pushbutton18. function pushbutton18_Callback(hObject, eventdata, handles)set(handles.text1,'string',['']);set(handles.tbutton,'visible',['off']);set(handles.tbutton,'value',[0]);clear all13,回删键的程序:% --- Executes on button press in pushbutton20. function pushbutton20_Callback(hObject, eventdata, handles)x=get(handles.text1,'string');% 把数字显示在屏幕上if(isempty(x))errordlg('Please input the phone No.','Input error','modal')elsexll=length(x);x(xll)=[];%去掉末尾号在面板上的显示set(handles.text1,'string',[x]);global NUMll=length(NUM);%删除末尾在拨号音信号中的储存for i=ll-1100+1:llNUM(ll)=[];ll=length(NUM);endend14,拨号键的程序:% --- Executes on button press in pushbutton21. function pushbutton21_Callback(hObject, eventdata, handles)x=get(handles.text1,'string'); % 把数字显示在屏幕上xx=str2num(x);if(isempty(NUM))errordlg('Please input the phone No.','Input error','modal')elsewavplay(NUM,8192);msgbox('拨号成功!若需再次拨号请按#号复位!','Done','help')set(handles.tbutton,'visible',['on']);set(handles.text1,'string',['Dieling Done.']); end14,关闭键的程序:% --- Executes on button press in pushbutton22. function pushbutton22_Callback(hObject, eventdata, handles)clear allclose all15,解码的程序:% --- Executes on button press in tbotton.function tbotton_Callback(hObject, eventdata, handles)L=length(NUM);n=L/1100;number='';for i=1:nj=(i-1)*1100+1;d=NUM(j:j+999); %截取出每个数字f=fft(d,2048); %以N=2048作FFT变换a=abs(f);p=a.*a/10000; %计算功率谱num(1)=find(p(1:250)==max(p(1:250))); % 找行频通过计算得出数值围num(2)=300+find(p(300:380)==max(p(300:380))); % 找列频通过计算得出数值围if (num(1) < 180) row=1; % 确定行数elseif (num(1) < 200) row=2;elseif (num(1) < 220) row=3;else row=4;endif (num(2) < 320) column=1; %确定列数elseif (num(2) < 340) column=2;else column=3;endz=[row,column]; % 确定数字if z==[4,2] tel=0; %0在4行2列elseif z==[1,1] tel=1; %1在1行1列elseif z==[1,2] tel=2; %2在1行2列elseif z==[1,3] tel=3; %3在1行3列elseif z==[2,1] tel=4; %4在2行1列elseif z==[2,2] tel=5; %5在2行2列elseif z==[2,3] tel=6; %6在2行3列elseif z==[3,1] tel=7; %7在3行1列elseif z==[3,2] tel=8; %8在3行2列elseif z==[3,3] tel=9; %9在3行3列endt(i)=tel;c=strcat(number,int2str(tel));number=c;i=i+1;endset(handles.text1,'string',['解码中...']);h = waitbar(0,'Decoding...Please wait...'); steps = 1500;for step = 1:steps% computations take place herewaitbar(step / steps)endclose(h);set(handles.text1,'string',number);% hObject handle to tbotton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)三,运行以上程序调出如下图界面:即可以进行仿真拨号。
for q=1:4;
if tm(p,q)==abs(d); break,end % 检测码相符的列号q end
if tm(p,q)==abs(d); break,end % 检测码相符的行号p
end
n=0:1023; % 为了发声,加长序列
x = sin(2*pi*n*f1(p)/8000) + sin(2*pi*n*f2(q)/8000);% 构成双频信号
sound(x,8000); % 发出声音
pause(0.1)
% 接收检测端的程序
X=goertzel(x(1:205),K+1); % 用Goertzel算法计算八点DFT样本val = abs(X); % 列出八点DFT向量
subplot(3,2,l);
stem(K,val,'.');grid;xlabel('k');ylabel('|X(k)|') % 画出DFT(k)幅度
axis([10 50 0 120])
limit = 80; %
for s=5:8;
if val(s) > limit, break, end % 查找列号
end
for r=1:4;
if val(r) > limit, break, end % 查找行号
end
TNr=TNr+tm(r,s-4)*10^(6-l);
end
disp('接收端检测到的号码为:') % 显示接收到的字符
disp(TNr)
分析:运行程序,根据提示键入6位电话号码678012,回车后可以听见6位电话号码对应的DTMF 信号的声音,并输出相应的6幅频谱图如图1所示,左上角的第一个图在k=20和k=38两点出现峰值,所以对应第一位号码数字6。
最后显示检测到的电话号码678012。
(2)分析该仿真程序,将产生、检测和识别6位电话号码的程序改为能产生、检测和识别8位电话号码的程序,并运行一次,打印出相应的幅度谱和8位电话号码。
实验代码:
8位号码
% DTMF双频拨号信号的生成和检测程序
%clear all;clc;
tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68]; % DTMF信号代表的16个数
N=205;K=[18,20,22,24,31,34,38,42];
f1=[697,770,852,941]; % 行频率向量
f2=[1209,1336,1477,1633]; % 列频率向量
TN=input('键入8位电话号码= '); % 输入8位数字
TNr=0; %接收端电话号码初值为零
for l=1:8;
d=fix(TN/10^(8-l));
TN=TN-d*10^(8-l);
分析:运行程序,根据提示键入8位电话号码,回车后可以听见8位电话号码对应的DTMF信号的声音,并输出相应的8幅频谱图如图所示,左上角的第一个图在k=20和k=31两点出现峰值,所以对应第一位号码数字4。
最后显示检测到的电话号码。
五、思考题
简述DTMF信号的参数:采样频率、DFT的变换点数以及观测时间的确定原则。
答:
1.观测时间的确定:观察要检测的8个频率,相邻间隔最小的是第一和第二个频率,间隔是73Hz,
要求DFT最少能够分辨相隔73Hz的两个频率,即要求HzF73min=。
DFT的分辨率和对信号的观察时间Tp有关,Tpmin=1/F=1/73=13.7ms。
考虑到可靠性,留有富裕量,要求按键的时间大于40ms。
2.采样频率的确定:频谱分析的频率范围为697~3266Hz。
按照采样定理,最高频率不能超过
折叠频率,即HzFs36225.0≥,由此要求最小的采样频率应为7.24KHz。
因为数字电话总系统已经规定sF=8KHz,因此对频谱分析范围的要求是一定满足的。
3.DFT的变换点数的确定:DFT的频率采样点频率为Nkk/2πω=(k=0,1,2,---,N-1),相应的模拟
域采样点频率为NkFfsk/=(k=0,1,2,---,N-1),希望选择一个合适的N,使用该公式算出的kf能接近要检测的频率,或者用8个频率中的任一个频率'kf代入公式'/ksfFkN=中时,得到的k值最接近整数值,这样虽然用幅度最大点检测的频率有误差,但可以准确判断所对应的DTMF 频率,即可以准确判断所对应的数字或符号。
经过分析研究认为N=205是最好的。