收藏 分享(赏)

基于dsp的语音采集及滤波器设计.doc

上传人:j35w19 文档编号:7786555 上传时间:2019-05-25 格式:DOC 页数:9 大小:346KB
下载 相关 举报
基于dsp的语音采集及滤波器设计.doc_第1页
第1页 / 共9页
基于dsp的语音采集及滤波器设计.doc_第2页
第2页 / 共9页
基于dsp的语音采集及滤波器设计.doc_第3页
第3页 / 共9页
基于dsp的语音采集及滤波器设计.doc_第4页
第4页 / 共9页
基于dsp的语音采集及滤波器设计.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、基于 DSP的语音采集与 FIR滤波器的设计与实现摘 要: 介绍了一种基于 TMS320C5402的语音采集与 FIR数字滤波器的设计与实现, 采用 TLC320AD50作为语音 CODEC模块的核心器件, 简述了 FIR数字滤波器的特点,以及其在 DSP上实现的原理。利用 TMS320C5402对采集到的语音信号进行 FIR滤波, 该系统具有较强的数据处理能力和灵活的接口电路,能够满足语音信号滤波的要求, 可以扩展为语音信号处理的通用平台.关 键 词: 语音采集; FIR 滤波器; TMS320C5402数字信号处理是把数字或符号表示的序列, 通过计算机或专用处理设备, 用数字的方式去处理,

2、 以达到更符合人们要求的信号形式。而语音处理是数字信号处理最活跃的研究方向之一, 在 IP电话和多媒体通信中得到广泛应用. 一个完备的语音信号处理系统不但要具有语音信号的采集和回放功能, 还要能够进行复杂的语音信号分析和处理。通常这些信号处理算法的运算量很大, 而且又要满足实时的快速高效处理要求, 随着 DSP技术的发展, 以 DSP为内核的设备越来越多, 为语音信号的处理提供了优质可靠的平台. 软件编程的灵活性给很多设备增加不同的功能提供了方便, 利用软件在已有的硬件平台上实现不同的功能已成为一种趋势。 本文设计了一个语音处理系统, 采用定点 DSP芯片TMS320C5402作为 CPU,

3、完成对语音信号的采集和滤波处理.1 语音采集系统的设计1. 1 系统总体设计语音采集与处理系统主要包括 3个主要部分: 以 TMS320C5402 为核心的数据处理模块; 以 TLC320AD50为核心的语音采集与编解码 ( CODEC)模块; 用户根据需要扩展的存储器模块. 系统硬件结构如图 1所示.1. 1. 1 CODEC模块本设计选用 TLC320AD50( 以下简称 AD50) 完成语音信号的 A/ D转换和D/ A转换 . AD50是 TI公司生产的一款集成有 A/ D和 D/ A的音频芯片, DSP与音频 AD50连接后, 可使用一个缓冲串行口来同时实现语音信号的采集和输出, 从

4、而可以节省 DSP的硬件开销. AD50使用过采样技术提供从数字信号到模拟信号和模拟信号到数字信号的高分辨率低速信号转换. 该器件包括 2个串行的同步转换通道, 分别用于各自的数据传输. 语音信号直接从 AD50的模拟信号输入端输入, AD50对其进行采样, 并将采样后的数据传送至 DSP. DSP应用相应的算法对数据进行处理, 并将处理后的数据传送到 AD50的 D/ A输入端. AD50再对 DSP处理后的数据进行数模转换, 变为语音信号后输出到音响设备.本系统中 TLC320AD50与 TMS320C5402之间采用串行通信, 通过 DSP芯片的 MCBSP串口实现.接口电路如图 2所示

5、.1. 1. 2 MCBSP的工作原理TMS320C5402有 2个 McBSP 多通道缓存串行口. McBSP提供了全双工的通信机制, 以及双缓存的发送寄存器和三缓存的接收寄存器, 允许连续的数据流传输, 数据长度可以为 8、12、16、20、24、32; 同时还提供了 A律和 L律压扩. 数据信号经 DR和 DX引脚与外设通讯, 控制信号则由CLKX、CLKR、FSX、FSR 等 4个引脚来实现 4. CPU 和 DMA控制器可以读取 DRR 1, 2 的数据实现接收, 并且可以对 DXR 1, 2 写入数据实现发送. 串行口控制寄存器 SPCR 1, 2 和引脚控制寄存器 PCR用来配置

6、串行口; 接收控制寄存器 RCR 1, 2 和发送控制寄存器 XCR 1, 2用来设置接收通道和发送通道的参数; 采样率发生器寄存器 SRGR 1, 2 用来设置采样率. TMS320C5402芯片串口控制寄存器功能强大, 用户通过编程不但可以设置时钟信号的极性及输入输出方向, 还可以设置同步信号的极性及输入输出方向.1. 1. 3 AD50与 DSP的同步通信在应用中, 将 TLC320AD50C接至 DSP的同步串口, 并将 TLC320AD50设置在主动工作模式下, 即由 TLC320AD50 提供帧同步信号和移位时钟,TMS320C5402的管脚电压为 3. 3V, 可以与 AD50直

7、接相连. 串口的移位时钟 SCLK由 AD发出, 串行数据在 SCLK的驱动下经 DIN、DOUT 移进、移出, 在 SCLK的下降沿采样DIN数据, 在 SCLK下降沿送出数据到 DOUT. XF控制首次或二次通信, XF为低时是 AD50的首次通信, 是正常的 AD、DA 的数据; XF为高时是 AD50的二次通信, 这时可以读写 AD50的 4个寄存器. 进入二次通信有软件的方法, 即把AD50设为 15+1位数据模式, 最后一位标记下一个数据是否为二次通信数据, 1表示是, 0 表示否.一次通信格式的 16位都用来传输数据. DAC的数据长度由寄存器 1的 D0位决定. 启动和复位时,

8、 默认值为 15+ 1模式, 最后一位要求二次通信. 如果工作在 16位传输模式下, 则必须由 FC产生二次通信请求. 二次通信格式则用来初始化和修改 TLC320AD50C内部寄存器的值. 在二次通信中可通过向 DIN写数据来完成初始化.二次通信格式如图 3所示, D13= 1表示读 DIN的数据, D13= 0表示向 DIN写数据.系统复位后, 必须通过 DSP 的 DX接口向 TLC320AD50C的 DIN 写数据, 因为采用一片TLC320AD50C, 只需初始化寄存器 1、寄存器 2、寄存器 4. 由于通信数据长度为 16位, 初始化是应通过 RCR1和 XCR1设置 McBSP的

9、传输数据长度为 16.2 语音采集语音信号的采集, 是通过话筒经模拟放大输入到 AD50, AD50作相应的低频滤波并进行 A/ D转化, 再通过 MCBSP通道输入 DSP芯片. 语音信号采集程序包括以下几个部分:( 1) DSP初始化. 对 DSP的寄存器以及缓冲串口进行初始化.( 2) AD50初始化. 通过 DSP的缓冲串口和 XF引脚对 AD50进行初始化, 再设置 AD50的 4个控制寄存器; 确定 AD50的 4个控制寄存器设置正确后,AD50才能开始采集数据. 此时, 可以用示波器检测 AD50的 DOUT引脚, 能发现引脚是否有连续的信号输出.( 3) 设置 DSP的中断,

10、从缓冲串口读取数据. 如果此时在缓冲串口连续读取数据, 就可以在仿真软件 CCS中查看读取的数据是否正确.( 4) DSP存放数据. 可以将缓冲串口读取的数据存放到 DSP的 RAM单元, 连续存放, 可通过 CCS的图形显示功能判断 AD50采样的数据是否正确.3 语音滤波语音去噪在语音信号上应用较多, 在实质上和普通的数字信号去噪没有什么区别, 使用滤波器和各种算法均可以实现语音信号的去噪, 使得含有噪声的信号更加清晰. 但语音信号的去噪和一般的数字信号去噪又存在着很大的差别, 因为语音信号的频谱覆盖在 100Hz3. 4kHz, 较为丰富的信号主要集中在 1kHz附近, 所以一般的滤波去

11、噪时必须考虑语音信号的自身特征.本系统中应用的 AD50内置了低通滤波器, 可以通过设置来有效滤除信号中混杂的高频干扰信号, 而对于低于 100Hz的干扰信号 , 则无能为力. 因此, 要用 DSP进行编程设计一个软件可实现高通滤波器, 由处理器来完成信号的去噪, 采用 FIR滤波.3.1 FIR滤波器的基本结构及特点有限冲激响应( FIR)滤波器的基本结构是一个分节的延时线, 把每一节的输出加权累加, 得到滤波器的输出. 数学上表示为y(n) =EN-1n=0h(n)x(n-m), (0 n N- 1) (1)对(1)式进行 Z变换, 整理后可得出 FIR滤波器的传递函数为H(z) = EN

12、-1n=0h(n)z-n, (0 n N- 1) (2)由( 2)式可知 FIR滤波器的一般结构如图 1所示.图 1 FIR数字滤波器直接实现形式3.2 FIR滤波器的 DSP实现原理由( 1)式可知, FIR滤波器的冲激响应为 h(0), h(1), , h(N- 1). x(n)表示滤波器在 n时刻的输入, 则 n时刻的输出为 y(n) = h(0)x(n) +h(1)x(n- 1) + ,+ h(N- 1)x n- (N- 1) ,这是一个乘、加的过程 , 可以使用 DSP中的MAC指令实现该运算. 图 2说明了使用循环寻址实现 FIR滤波器的方法. 为了能正确使用循环寻址, 必须先初始

13、化 BK, 块长为 N. 同时, 数据缓冲区和冲激响应( FIR 滤波器的系数)的开始地址必须是大于 N的 2的最小幂的倍数. 例如, 当 N= 11时, 大于 N的最小 2的幂为 16, 则数据缓冲区的第一位地址应该是 16的倍数, 因此数据缓冲区起始地址的最低 4位必须是 0.在图 2中, 滤波系数指针初始化时指向 h(N- 1), 经过一次 FIR滤波计算后, 在循环寻址的作用下,仍然指向 h(N- 1). 而数据缓冲区指针指向的是需要更新的数据, 如 x(n). 在写入新数据并完成 FIR运算后, 该指针指向 x(n- (N- 1) , 所以, 使用循环寻址可以方便地完成滤波窗口数据的

14、自动更新.4 FIR滤波器设计实例给定 FIR数字带通滤波器的技术指标为: 2个通带截止频率分别为 4kHz和6kHz, 2个阻带截止频率分别为 3kHz和 7kHz, 采样频率均为 25kHz. 输入为一个混合信号f = cos(2000Pt) + cos(10000Pt) + cos(20000Pt) /6,利用 Matlab设计 FIR带通滤波器的系数, 将得到的滤波器系数乘以32768(即 215)后舍尾取整可得 DSP中滤波器系数列表. 用. word汇编命令将各滤波器系数直接输入到 DSP程序中; 模拟输入数据由 C语言程序实现, 然后用. copy命令将 C语言程序生成的数据文件

15、 firinput拷贝到 DSP程序中. DSP程序实现读入数据、滤波、显示波形等方面的任务. 完成 FIR滤波器的程序框图如图 3所示, 可知 FIR滤波器的 DSP实现主要由以下 4方面的内容组成.4.1 模拟输入数据的生成 用 C语言程序生成输入数据, 通过. copy汇编命令将生成的数据文件拷贝到汇编程序中, 作为 FIR滤波器的输入数据. C语言程序运行后所生成的数据文件名为 firinpu,t 生成 firinput数据文件的 C语言程序如下所示:#include“stdio. h“#include“math. h“main( )int ;idouble f 256;FILE*fp

16、;if( ( fp= fopen( “e: firinput“, “wt“) ) = =NULL)printf( “canct openfile! n“);for( i=0; i =255; i+ )f i =( cos( 2* 3. 14159265* *i 1000/25000) + cos( 2* 3. 14159265* *i 5000/25000) +cos( 2* 3. 14159265* *i 10000/25000) ) /6;fprintf( fp, “ . word %ldn“, ( long) ( f i* 32768) );fclose( fp);4.2 DSP初始化程

17、序 DSP初始化程序包括了对堆栈指针 ( SP)、软件等待状态寄存器( SWWSR)、中断寄存器( IFR)、中断屏蔽寄存器( IMR)以及处理器工作状态寄存器( PMST)的初始化; 另外还对各变量赋值, 具体的程序如下:. def _c_int00. mmregsswcr . set 2bh t_ar2 . set 066ht_ar3 . set 067hout_wave_buf . set 0d00hdata_in . set 0f00hN . set 51fir_coef_buf . set 100hfir_data . set 200h. textrs b_c_int00_c_int

18、00:stm#2020h, pmstssbx intmssbx sxmssbx frctstm #10h, 26hstm #10h, 36hstm #0ffh, spld #0, dpstm #0ffffh, ifrstm #20h, imrstm #02492h, swwsrstm #0, swcr可看出, FIR滤波器的系数列表将存在 100h开始的单元中, 输入数据将存在 200h开始的单元中, 而输出数据将存在 0d00h开始的单元中.4.3 滤波系数以及输入数据的调入 由于滤波器系数一开始是存在程序存储器中, 输入数据则是存在程序外的文件中, 程序对这 2组数据进行处理时, 需要把两

19、者都调到数据存储器中, 具体实现程序如下:stm #fir_data, ar6rpt #255mvpd #inpu,t*ar6+stm #fir_coef_bu,f ar6rpt #N-1mvpdfir_coe,f*ar6+stm #fir_coef_bu,f t_ar2stm #fir_data, t_ar3这段程序实现的是把输入数据调到以 200h开始的单元, 而把滤波系数调到从 100h开始的单元.4.4 滤波子程序 一次滤波的过程实质上就是对 2组数进行有规律的乘加计算, 具体程序如下:fir:mvdm #t_ar2, ar2 ; 将起始滤波系数地址100h赋给 ar2mvdm #t_

20、ar3, ar5 ; 将起始输入数据地址200h赋给 ar5stm #data_in, ar3 ; ar3=0f00hstm #255, brc ; 定义块循环次数rptbdloop-1 ; 定义块循环结束地址stm #N, bk ; 定义循环缓冲器大小ld *ar5+, a ; 将新数据读到累加器 a中stl a,*ar3+% ; 将新数据读入栈顶rptz a, #(N-1) ; 定义循环次数, 之前先将a累加器清 0mac *ar2+0%,*ar3+0%, a ; a=ar2*ar3+a, 每完成一次计算 ar2、ar3 ; 指针所对应地址+1sth a, * ar6+ ; 将计算结果保存

21、输出loop这个程序段将重复执行 256次, 从而实现对于数据的读入、处理、输出等功能.5 结 语本文介绍了一个实时数据采集处理系统的设计和实现, 系统以 DSP芯片和TLC320AD50芯片为核心,有很强的数据处理能力和灵活的外围接口电路, 实验证明, 可较好地实现语音的滤波. 该系统可扩展为 3G手机语音识别系统, 也可以作为语音信号处理算法研究和实时实现的通用平台参考文献: : 1 邹彦. DSP 原理及应用 M. 北京:电子工业出版社, 2005.2 乔瑞萍, 崔涛,张芳娟. TMS320C54x原理及应用M.西安: 西安电子科技大学出版社, 2005.3 黄海波, 蒋伟荣. 通用语音处理系统的 DSP实现 J . 微计算机信息, 2006,22( 5) :173- 175.4 张勇, 曾炽祥,周好斌. TMS320C5000系列 DSP汇编语言程序设计M. 西安:西安电子科技大学出版社, 2004. 5 卢山, 田野,郭黎利 . 利用 DSP技术实现 FIR滤波器 J. 应用科技, 2002, 29( 11): 19-21. 6 张伟利, 朱煜. FIR滤波器在 TMS320C5402中的实现 J.微处理机, 2005( 2): 4- 6.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报