




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第八章工程问题的工程问题的DSP实现实现DTMF的编解码的编解码用用DSP实现双音多频(实现双音多频(DTMF)的拨)的拨号产生和解码号产生和解码。DTMFDual-Tone Multiple Frequency实现步骤v对象分析对象分析v算法设计算法设计vDSP选择选择v系统设计系统设计v系统实现系统实现v系统调试系统调试对象分析 对所要开发的系统的功能、对所要开发的系统的功能、性能要有深入的了解和分析性能要有深入的了解和分析,尤其对技术指标,要作透,尤其对技术指标,要作透彻的理解和把握。彻的理解和把握。 DTMF用一对频率(行频用一对频率(行频/列列频)来表示一个符号(电话键盘频)来表示
2、一个符号(电话键盘上的上的09,AD,*,#,共,共16个个符号)符号) 一次按键的时间是一次按键的时间是100ms,其中,其中,频率对存在的时间是,频率对存在的时间是45ms,不允许超过不允许超过55ms,其余的时间,其余的时间是静音。是静音。 050100150200250-202M(采 样 点 )05001000150020002500300035004000012x 104f(Hz)12345678012x 104你 输 入 的 号 码 是 1k050100150200250-202M(采 样 点 )050010001500200025003000350040000500010000f
3、(Hz)123456780500010000你 输 入 的 号 码 是 2k050100150200250-202M(采 样 点 )050010001500200025003000350040000500010000f(Hz)123456780500010000你 输 入 的 号 码 是 3k050100150200250-202M(采 样 点 )05001000150020002500300035004000012x 104f(Hz)12345678012x 104你 输 入 的 号 码 是 4k050100150200250-202M(采 样 点 )05001000150020002500
4、3000350040000500010000f(Hz)123456780500010000你 输 入 的 号 码 是 5k050100150200250-202M(采 样 点 )050010001500200025003000350040000500010000f(Hz)123456780500010000你 输 入 的 号 码 是 6k050100150200250-202M(采 样 点 )05001000150020002500300035004000012x 104f(Hz)12345678012x 104你 输 入 的 号 码 是 7k050100150200250-202M(采 样
5、点 )050010001500200025003000350040000500010000f(Hz)123456780500010000你 输 入 的 号 码 是 9k050100150200250-202M(采 样 点 )050010001500200025003000350040000500010000f(Hz)123456780500010000你 输 入 的 号 码 是 9k050100150200250-202M(采 样 点 )05001000150020002500300035004000012x 104f(Hz)12345678012x 104你 输 入 的 号 码 是 *k05
6、0100150200250-202M(采 样 点 )050010001500200025003000350040000500010000f(Hz)123456780500010000你 输 入 的 号 码 是 #k050100150200250-202M(采 样 点 )05001000150020002500300035004000012x 104f(Hz)12345678012x 104你 输 入 的 号 码 是 0kCCITT关于关于DTMF的指标的指标vLow band: 697、770、852、941(Hz)RBW3.5%vHigh band: 1209、1336、1477、1633(
7、Hz)RBW4dB REV 8dBvDYN RANGE: 25dBvGUARD TIME: MIN TONE TIME 45msvSNR:NOISE -24dBV算法设计算法设计 算法设计是非常关键的步骤算法设计是非常关键的步骤,因为算法决定运算量和存,因为算法决定运算量和存储器的大小,从而决定储器的大小,从而决定DSP的的选择,进而决定系统的设计选择,进而决定系统的设计,包括硬件和软件的设计。,包括硬件和软件的设计。DTMF拨号的产生拨号的产生 基于基于DSP的的DTMF的音频信号的音频信号发生器,使用两个二阶的数字正发生器,使用两个二阶的数字正弦波振荡器,一个产生行频,一弦波振荡器,一个产
8、生行频,一个产生列频。个产生列频。221101)(zazabzH1,cos2,sin20100aaAb共轭极点:共轭极点:02, 1jep)2() 1(cos2)(0nynyny0( 1)0, ( 2)sinyyA sff /200 1z1zDTMF发生器的系数和初始条件发生器的系数和初始条件DTMF发生器的信号流程发生器的信号流程音频检测音频检测vGoertzel算法是算法是DTMF解码器的解码器的基础,实际上是一个两极点的基础,实际上是一个两极点的IIR滤波器。滤波器。vDFT或或FFT需要在处理之前准备需要在处理之前准备好一个数据块,而好一个数据块,而Goertzel算法算法是一个递归的
9、结构,就每个输入是一个递归的结构,就每个输入的样本进行计算。的样本进行计算。Goertzel算法(算法(1)2211()00( )( ) ( )( )Nnjkmjk n mNNkemmX kx m eynx m e( )( )( )kekynx nh n可以看作是与与的卷积。2 ,01,0( ),( )0,0,0,0jknNekx nnNenx nh nnnNn表达式相同。的与时,当DFTnxNyNnk)()(Goertzel算法(算法(2)21( )( )1ekjkNXzY zez2( )(1)( ),0jkNkkyneynx nnN211( )1kjkNHzez( )kHz将分母系数有理化
10、Goertzel算法(算法(3)21212111( )212cos()1jkNkjkNezHzkzzezN2( )2cos()(1)(2)( )( 1)0,( 2)0,0kkkkkv nk v nv nx nNvvnN2( )()()(1)jkNkkkX kyNvNevNGoertzel算法(算法(4)Goertzel算法(算法(5)Goertzel算法的特点算法的特点vGoertzel算法的算法的IIR滤波器结构涉及两个滤波器结构涉及两个复共轭极点,但对于实际的复共轭极点,但对于实际的DTMF音频音频检测,只要有幅度信息就够了(实际上检测,只要有幅度信息就够了(实际上使用幅度平方),从而简化
11、为只需要一使用幅度平方),从而简化为只需要一个实系数参与计算。个实系数参与计算。v Goertzel算法要比算法要比FFT快得多,因为只快得多,因为只需要提供需要提供8个行个行/列频和它们的二次谐波列频和它们的二次谐波的信息(二次谐波的信息用于将的信息(二次谐波的信息用于将DTMF与话音或音乐区别开来)。与话音或音乐区别开来)。行频行频/ /列频及相应的系数列频及相应的系数有效性检查有效性检查v信号强度 DTMF行频、列频信号之和行频、列频信号之和的强度是否达到一定的门限值的强度是否达到一定的门限值有效性检查有效性检查v扭曲度 标准扭曲:标准扭曲: 行频峰值行频峰值 列频峰值列频峰值 4dB
12、反向扭曲:反向扭曲: 列频峰值列频峰值 行频峰值行频峰值 8dB有效性检查有效性检查v二次谐波强度 以便将以便将DTMF信号与其他语信号与其他语音信号、音乐信号等区别开来音信号、音乐信号等区别开来。有效性检查有效性检查v数字信息的稳定性 如果一个数字成功地检测到如果一个数字成功地检测到两次,认为该数字是稳定的两次,认为该数字是稳定的有效性检查有效性检查v数字信息的有效性 检测到的数字前面必须是静音检测到的数字前面必须是静音符时,该数字才是有效的,以便符时,该数字才是有效的,以便将各次击键区别开来将各次击键区别开来 编码器对速度和存储器的要求编码器对速度和存储器的要求解码器对速度和存储器的要求解
13、码器对速度和存储器的要求DSPDSP芯片选择芯片选择v算法对算法对DSP芯片计算速度的要求芯片计算速度的要求v系统的管理(如任务管理、进程管系统的管理(如任务管理、进程管理、存储器管理、理、存储器管理、I/O管理等)对管理等)对DSP的要求的要求v片内存储器和片外存储器的要求(片内存储器和片外存储器的要求(包括容量的要求和速度的要求)包括容量的要求和速度的要求)DSPDSP芯片选择芯片选择v对外设(如串口、并口、定时器、对外设(如串口、并口、定时器、总线宽度、等待状态等)的要求总线宽度、等待状态等)的要求vDSP封装对印制板的设计影响甚大封装对印制板的设计影响甚大v开发环境开发环境v技术支持技
14、术支持v性能价格比性能价格比DSPDSP芯片的速度芯片的速度DSPDSP的片内存储器的片内存储器DSP的外设的外设BGA(BALL GRID ARRAY)PLCC(PLASTIC J-LEADED CHIP CARRIER)PQFP(PLASTIC QUAD FLAT PACK)PDLP(PLASTIC DUAL-IN-LINE PACKAGE)LCCC(LEADLESS CERAMIC CHIP CARRIER)系统设计v硬件系统设计硬件系统设计v软件系统设计软件系统设计工作软件工作软件测试软件测试软件功能框图(指标分配)功能框图(指标分配)电原理图电原理图印制板(数字与模拟电路,接地,印制
15、板(数字与模拟电路,接地,电源,多层板)电源,多层板)系统的实现系统的实现v从从C C程序作起程序作起 用用C Compiler将将C源程序编译源程序编译成为汇编语言源程序,然后汇编成为汇编语言源程序,然后汇编、连接后输出可执行代码;也可、连接后输出可执行代码;也可以使用以使用shell程序,将编译、汇编程序,将编译、汇编、连接一齐完成、连接一齐完成 源程序分析器源程序分析器 输入是输入是C源文件。读入源语源文件。读入源语句,检查语法和语意错误,写出句,检查语法和语意错误,写出一个中间文件(一个中间文件(.if)优化器优化器 可选择项。其输入是分析器产生可选择项。其输入是分析器产生的中间文件(
16、的中间文件(.if)。当运行优化器)。当运行优化器时,用户可以选择优化的层次。产时,用户可以选择优化的层次。产生一个与中间文件格式相同的高效生一个与中间文件格式相同的高效率版本。率版本。代码生成器代码生成器 输入是分析器或优化器产生的输入是分析器或优化器产生的中间文件(中间文件(.if或或.opt文件),产文件),产生一个汇编语言源文件生一个汇编语言源文件内部列表公用程序内部列表公用程序 输入是输入是C编译器产生的汇编语编译器产生的汇编语言源程序和言源程序和C源程序。产生的是源程序。产生的是按按C文件的语句展开的汇编语言文件的语句展开的汇编语言源文件源文件汇编器和连接器汇编器和连接器v汇编器的
17、输入是代码生成器产生的汇编器的输入是代码生成器产生的汇编语言文件,产生汇编语言文件,产生COFF目标文件目标文件 v连接器的输入是汇编器产生的连接器的输入是汇编器产生的COFF目标文件,产生可执行的目标文件目标文件,产生可执行的目标文件运行运行C编译器编译器cl500 -options filenames -z link_options object filescl500调用编译器和汇编器的命令。调用编译器和汇编器的命令。-options 影响编译器处理输入文件的途径影响编译器处理输入文件的途径filenames 一个或多个一个或多个C源文件、汇编语言源源文件、汇编语言源文件,或目标文件。文件
18、,或目标文件。-z 运行连接器的选择项。运行连接器的选择项。link_options 影响连接器处理输入文件的途径影响连接器处理输入文件的途径object files 命名编译器产生的目标文件命名编译器产生的目标文件cl500 -q symtab file seek.asm z 编译文件编译文件symtab和和file,汇编,汇编第三个文件第三个文件seek.asm,连接这三,连接这三个文件,并使用个文件,并使用quiet选择项,抑选择项,抑制输出处理信息制输出处理信息如果不使用如果不使用-q选择项,就会输出以下选择项,就会输出以下处理信息:处理信息:symtabTMS320C54x ANSI
19、 C Compiler Version x.xxCopyright (c) 1997 Texas Instruments Incorporated“symtab.c”= main“symtab.c”= lookupTMS320C54x ANSI C Codegen Version x.xxCopyright (c) 1997 Texas Instruments Incorporated“symtab.c” = main“symtab.c” = lookup TMS320C54x COFF Assembler version x.xxCopyright 1997 Texas Instrument
20、s IncorporatedPASS 1PASS 2No Errors, No Warnings连接器连接器-m-m选择项建立映射列表文件选择项建立映射列表文件-m filename该连接器映射列表描述:该连接器映射列表描述:存储器划分存储器划分输入与输出段的位置输入与输出段的位置 外部符号重新定位后的地址外部符号重新定位后的地址 当没有发现错误时,连接器就建立一当没有发现错误时,连接器就建立一个输出模块,省缺名为个输出模块,省缺名为a.out。也可以使。也可以使用用-o选择项,将输出模块写入另外的文选择项,将输出模块写入另外的文件:件:-o filename其中的文件名就是新的输出模块的文件
21、名其中的文件名就是新的输出模块的文件名lnk500 o run.out file1.obj file2.obj 将将file1.obj 和和 file2.obj 连接起来连接起来,建立一个名为,建立一个名为run.out 的输出模块的输出模块可以将上述文件名及选择项,再加上注释写入一个命令文件link.cmd :a.obj /* First input filename */b.obj /* Second input filename */-o prog.out /* Option to specify output file */-m prog.map /* Option to specif
22、y map file */并用该命令文件来调用连接器:lnk500 link.cmd包含连接器伪指令的命令文件包含连接器伪指令的命令文件:a.obj b.obj c.obj /* Input filenames */-o prog.out -m prog.map /* Options */MEMORY /* MEMORY directive */RAM: origin = 100h length = 0100hROM: origin = 01000h length = 0100h SECTIONS /* SECTIONS directive */.text: ROM.data: ROM.bss: RAMMEMORYPAGE 0 : name 1 (attr) : origin = constant , length = constant;PAGE n : name n (attr) : origin = constant , length = cons
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论