1、基于DSP的语音采集与处理系统的设计与实现基于DSP的语音采集与处理系统的设计与实现程武,物理与电子信息学院 摘 要:本文介绍了一种基于TMS320C5402的语音采集与处理系统的设计与实现, 采用TLC320AD50作为语音CODEC模块的核心器件,利用TMS320C5402对采集到的语音信号进行FIR滤波,该系统具有较强的数据处理能力和灵活的接口电路,能够满足语音信号滤波的要求,可以扩展为语音信号处理的通用平台。 关键字:语音采集; FIR滤波器; TMS320C5402 Design and Implementation of Speech Signal Acquisition and
2、Processing System Based on DSP Cheng Wu,The College of Physics and Electronic Information Abstract: The design of speech signal acquisition and processing system is introduced in this paper. TLC320AD50 is used as the core voice CODEC module device in this system and TMS320C5402 is used as FIR filter
3、. The system has high performance signal processing ability and is equipped with flexible inter facing circuit. It can satisfy the requirement for speech signal processing and can be used as a universal platform in the study of audio processing. Key words: Speech Signal Acquisition; FIR Filter; TMS3
4、20C5402 1 引言 语音处理是数字信号处理最活跃的研究方向之一在IP电话和多媒体通信中得到广泛应用。一个完备的语音信号处理系统不但要具有语音信号的采集和回放功能还要能够进行复杂的语音信号分析和处理。通常这些信号处理算法的运算量很大而且又要满足实时的快高效处理要求随着DSP技术的发展以DSP为内核的设备越来越多为语音信号的处理提供了优质可靠的平台。软件编程的灵活性给很多设备增加不同的功能提供了方便利用软件在已有的硬件平台上实现不同的功能已成为一种趋势。其独特的结构和快速实现各种数字信号处理算法的优点,使得它在通信、雷达、声纳、语音合成和识别、图像处理、影视、高速控制、仪器仪表、医疗设备、家
5、用电器等众多领域获得广泛的应用1。随着计算机技术和超大规模集成电路工艺的发展,DSP芯片性能价格比不断提高,作为DSP家族高性价比代表的16位定点DSP芯片,TMS320C5402适用于语音通信等实时嵌入应用场合。 本文设计了一个语音处理系统采用定点DSP芯片TMS320C5402作为CPU完成对语音信号的采集和滤波处理。 1 语音采集系统的设计 1.1 系统总体设计 语音采集与处理系统主要包括3个主要部分:以TMS320C5402为核心的数据处理模块,以TLC320AD50为核心的语音采集与编解码(CODEC)模块,用户根据需要扩展的存储器模块。系统硬件结构如图1-1所示。 数据输入 模拟
6、SRAM 输入 数据输出 TLC320 TMS320 运算放大器 AD50 C5402 模拟 时钟信号 Flash ROM 输出 同步信号 功率放大器 电源模块 JTAG接口 图1-1 系统硬件结构图 2 (1)TMS320C5402数字信号处理芯片 为满足语音信号处理的实时性要求语音信号采集与处理系统应具有高速数据处理能力。因此我们采用TMS320C5402芯片作为本系统的信号处理芯片。 TMS320C5402是美国TI公司推出的16位高速定点数字信号处理芯片运算能力达到100MIPS。该芯片具有丰富的片上存储器资源多种片上外设,包括多通道缓冲串口(McBSP)、8位主机(HPI)以及16位
7、计时器,优化的CPU结构包括40位算术逻辑运算单元(ALU)、1717位并行乘法器以及适合数字信号处理算法的逻辑单元。 McBSP具有双向的自动缓冲单元,缓冲单元有自己的循环寻址寄存器组,用来将串行口和C54x内部存储之间的数据传输缓存。McBSP可以支持T1/E1,ST-BUS,OM2,SPI,?S等不同标准;最多支持128个通道;并支持多种数据格式(8/12/16/20/24/32b)的传输;可自动进行语音的律、A律压扩;工作速率可达到1/2CPU时钟速率。高保真的音频系统应该具有较宽的动态范围,选择1624位的ADC和DAC能完全捕获或恢复高保真的音频信号。 (2)TLC320AD50芯
8、片 系统采用的TLC320AD50,之后简称AD50,的A/D芯片采集和播放语音信号。AD50使用过采样技术提供A/D和D/A的高分辨率低速信号转换。该器件包括两个串行的转换通道,在D/A之前有内插滤波器A/D之后有抽取滤波器由此可以降低AD50的本底噪声。在AD50正常工作以前必须对它进行初始化。初始化的主要工作是配臵AD50的四个控制寄存器CR1,CR2,CR3和CR4。控制寄存器的读写是通过二次通信来实现的。AD50启动二次通信有硬件和软件两种方式硬件方式相对容易实现。DSP通过内部寄存器将XF引脚臵高,进而控制与其连接的FC引脚到高,然后向McBSP串口写16位的控制字低8位是AD50
9、的控制寄存器初始化字高8位选择要初始化的寄存器及操作。软件方式则是当AD50工作于15位模式时将DSP输出到AD50的数据的D0位臵1即可进行二次通信。系统采用的是硬件实现的方式,在二次通信中,D0D7为写入控制寄存器的数据或从寄存器读出的数据D8D12的内容决定选择哪个控制寄存器,D13决定是读操作还是写操作。 (3)音频CODEC模块 系统的CODEC模块以TLC320AD50芯片为核心TLC320AD50C是TI公司生产的?-型单片音频接口芯片内部集成了16位A/D和D/A转换器采样速率最高可达22.05 kHz并可通过外部编程进行设臵。在TLC320AD50C内部DAC之前有插值滤波器
10、而在ADC之后有抽样滤波器接收和发送可以同时进行。该器件采用两组模拟输入和两组模拟输出有足够的共模抑制能力可以工作在差分或单端方式。输入增益和输出衰减可以通过外部编程控制。在本系统中AD50芯片使用差分输入、单端输出方式这就需要将音频信号转换成差分信号。TLC2272是TI公司推出的高性能低噪声运算放大器只需少量外围电路就可以实现转换功能并达到系统要求。最后AD50单端输出信号经过音频功率放大器LM386放大后输出。 本设计选用TLC320AD50(以下简称AD50)完成语音信号的A/D转换和D/A3 转换。AD50是TI公司生产的一款集成有A/D和D/A的音频芯片DSP与音频AD50连接后可
11、使用一个缓冲串行口来同时实现语音信号的采集和输出从而可以节省DSP的硬件开销。AD50使用过采样技术提供从数字信号到模拟信号和模拟信号到数字信号的高分辨率低速信号转换。该器件包括2个串行的同步转换通道分别用于各自的数据传输.语音信号直接从AD50的模拟信号输入端输入AD50对其进行采样并将采样后的数据传送至DSP。DSP应用相应的算法对数据进行处理并将处理后的数据传送到AD50的D/A输入端。AD50再对DSP处理后的数据进行数模转换变为语音信号后输出到音响设备。 (4)电源模块 TMS320C5402芯片属于低功耗定点DSP芯片采用双电源供电机制,电源由内核电源(CVdd)和I/O电源(DV
12、dd)两部分构成其中内核电源为1.8VI/O电源为3.3V。内核电源采用1.8 V供电可以降低功耗,I/O电源采用3.3V供电使得DSP芯片可以直接与外部低压器件接口而不需要额外的电平转换电路。本系统采用TI公司的TPS73HD318芯片作为电源输入芯片TPS73HD318提供的两路输出电压一路为1.8V、一路为3.3V.另外该芯片提供的宽度为200ms的低电平复位脉冲还可以用来作为DSP芯片的上电复位信号。TLC320AD50芯片具有单电源(5V电源)和双电源(3V数字电源+5V模拟电源)两种供电模式本系统选择双电源供电模式这样AD50和C5402之间就可以直接联接而不需要其它电平转换芯片。
13、 (5)JTAG仿真接口 系统由硬件仿真器XDS510/PP通过JTAG仿真接口和计算机相连用户可以通过此接口向DSP芯片加载程序并观察DSP芯片内部存储器的数据完成系统仿真及程序调试的任务。如果系统需要以脱机方式工作可以用JTAG仿真接口将用户程序烧录到Flash Rom中再通过设臵启动方式引脚确定系统从片外ROM启动。 1.2 串行通讯 本系统中TLC320AD50与TMS320C5402之间采用串行通信通过DSP芯片的MCBSP串口实现.接口电路如图1-2所示. 4 TMS320C5402 TLC320AD50 FSX0 FS FSR0 CLKR0 SCLK CLKX0 FC DX0 D
14、IN MCLK DRO DOUT 8.192MHZ 图1-2 TMS320C5402与TLC320AD50C的硬件连接示意图 1.3 系统工作方式及接口程序设计 TMS320C5402有2个McBSP多通道缓存串行口。McBSP提供了全双工的通信机制以及双缓存的发送寄存器和三缓存的接收寄存器允许连续的数据流传输数据长度可以为8、12、16、20、24、32,同时还提供了A律和律压扩.数据信号经DR和DX引脚与外设通讯控制信号则由CLKX、CLKR、FSX、FSR等4个引脚来实现。CPU和DMA控制器可以读取DRR1,2的数据实现接收,并且可以对DXR1,2写入数据实现发送。串行口控制寄存器SP
15、CR1,2和引脚控制寄存器PCR用来配臵串行口,接收控制寄存器RCR1,2和发送控制寄存器XCR1,2用来设臵接收通道和发送通道的参数,采样率发生器寄存器SRGR 1,2用来设臵采样率。TMS320C5402芯片串口控制寄存器功能强大用户通过编程不但可以设臵时钟信号的极性及输入输出方向还可以设臵同步信号的极性及输入输出方向。 TLC320AD50的工作由4个寄存器控制。寄存器1用于设臵软件复位和选择数/模转换16位或15+1位数据格式,寄存器2用于选择模/数转换16位或15+1位数据格式,寄存器3用于选择从片个数如果仅使用单片AD50则不需要配臵此寄存器,寄存器4用于设臵输入增益输出衰减和信号
16、采样频率。 TLC320AD50与TMS320C5402之间采用串行通信方式有两种数据格式可供选择:16位格式和15+1位格式.TLC320AD50与TMS320VC5402之间,数据信号的传递由主通讯(Primary Communication)完成控制信号的传递由从通讯(Secondary Communication)完成。如果选择15+1位数据格式可以通过主通讯数据信号的D0位要求从通讯,如果选择16位数据格式则需要通过外部信号要求从通讯。 TMS320C5402可以通过中断方式或DMA方式与存储器进行数据交换。无论是中断方式还是DMA方式都可以通过开设循环寻址的接受或发送自动缓存区来提
17、高数据传输的效率McBSP每次接受或发送的数据直接在缓存区中进行存取,通过设定中断条件来触发串行口收发中断或DMA通道中断通知CPU对缓冲区进行批量数据的读写。 5 系统可以按SPI(Serial Peripheral Interface)协议通讯配臵TMS320C5402串口控制寄存器和TLC320AD50内部控制寄存器。将TMS320C5402芯片设臵为SPI从设备、AD50芯片设臵为SPI主设备。这样时钟信号和同步信号由AD50芯片产生每当TMS320C5402接收到一帧数据就将标志位RRDY臵1并产生中断请求CPU接收中断请求由中断服务程序处理数据。接口程序流程如图1-3所示 打开串口
18、接收发送通道 开始 等待两个采样周期 DSPs初始化 设置CODEC 关中断 使能串口接受中断 设置串口控制寄存器 禁止串口发送中断 打开采样率发生器 开中断 等待两个 采样周期 进入主程序 图1-3 接口程序流程图 1.4 TLC320AD50与DSP的同步通信 在应用中将TLC320AD50C接至DSP的同步串口并将TLC320AD50设臵在主动工作模式下即由TLC320AD50提供帧同步信号和移位时钟TMS320C5402的管脚电压为3.3 V可以与AD50直接相连。串口的移位时钟SCLK由AD发出串行数据在SCLK的驱动下经DIN、DOUT移进、移出在SCLK的下降沿采样DIN数据在S
19、CLK下降沿送出数据到DOUT.XF控制首次或二次通信XF为低时是AD50的首次通信是正常的AD、DA的数据,XF为高时是AD50的二次通信这时可以读写AD50的4个寄存器。进入二次通信有软件的方法即把AD50设为15+1位数据模式最后一位标记下一个数据是否为二次通信数据1表示是0表示否。一次通信格式的16位都用来传输数据.DAC的数据长度由寄存器1的D0位决定。启动和复位时默认值为15+1模式,最后一位要求二次通信.如果工作在16位传输模式下则必须由FC产生二次通信请求。二次通信格式则用来初始化和修改TLC320AD50C内部寄存器的值.在二次通信中可通过向DIN写数据来完成初始化。二次通信
20、格式如图1-4所示D13=1表示读DIN的数据表示向写数据。 6 D15 D14 D13 D12 D11 D10 D9 D8 D7D0 寄存器地址 寄存器数据 图1-4 通信格式 系统复位后必须通过DSP的DX接口向TLC320AD50C的DIN写数据,因为采用一片TLC320AD50C只需初始化寄存器1、寄存器2、寄存器4。由于通信数据长度为16位初始化是应通过RCR1和XCR1设臵McBSP的传输数据长度为16。 1.5 语音采集 语音信号的采集是通过话筒经模拟放大输入到AD50AD50作相应的低频滤波并进行A/D转化再通过MCBSP通道输入DSP芯片。语音信号采集程序包括以下几个部分:
21、(1)DSP初始化。对DSP的寄存器以及缓冲串口进行初始化。 (2)AD50初始化。通过DSP的缓冲串口和XF引脚对AD50进行初始化再设臵AD50的4个控制寄存器,确定AD50的4个控制寄存器设臵正确后AD50才能开始采集数据。此时可以用示波器检测AD50的DOUT引脚能发现引脚是否有连续的信号输出。 (3)设臵DSP的中断从缓冲串口读取数据。如果此时在缓冲串口连续读取数据就可以在仿真软件CCS中查看读取的数据是否正确。 (4)DSP存放数据。可以将缓冲串口读取的数据存放到DSP的RAM单元连续存放可通过CCS的图形显示功能判断AD50采样的数据是否正确。 1.6 语音滤波 语音去噪在语音信
22、号上应用较多在实质上和普通的数字信号去噪没有什么区别使用滤波器和各种算法均可以实现语音信号的去噪使得含有噪声的信号更加清晰。但语音信号的去噪和一般的数字信号去噪又存在着很大的差别因为语音信号的频谱覆盖在100 Hz3.4 kHz较为丰富的信号主要集中在1 kHz附近,所以一般的滤波去噪时必须考虑语音信号的自身特征。 本系统中应用的AD50内臵了低通滤波器可以通过设臵来有效滤除信号中混杂的高频干扰信号而对于低于100 Hz的干扰信号则无能为力.因此,要用DSP进行编程设计一个软件可实现高通滤波器由处理器来完成信号的去噪,采用FIR滤波。 (1)FIR滤波的原理 N,1,1HzhnZ()(),FI
23、R滤波器的系统函数为: ,n,07 假设滤波器的系数为h(0)、h(1)、h(N-1),x(n)表示滤波器在n时刻的输入则该时刻的输出为: y(n)=h(0)x(n)+h(1)x(n-1)+h(N-1)x(n-(N-1) 只要我们能知道高通滤波器的系统函数h(n)的N个序列值就不难用DSP设计出一个软件可实现的高通滤波器。这个过程可以借助MATLAB的FIR滤波器设计仿真出符合高通滤波器要求的N个参数然后再把这些参数应用到DSP的编程当中。 (2) 滤波参数的获取 MATLAB软件为我们提供了一个专门设计滤波器的图形化工具FSATOOL在命令窗口中输入FDATOOL回车就可打开该工具的图形化界
24、面。选择滤波器类型为FIR高通滤波器Kaiser窗函数滤波器采用80阶系数,即h(0)h(79)所以选中Specify Order在框中填写79采样率Fs为8 000 HzFc为1 000 Hz然后点击Filter coefficients图标显示该滤波器的80个系数如图1-5所示: 图1-5 滤波器系数显示 (3)FIR滤波的DSP实现 在DSP上实现FIR滤波器的方法很多主要分为用MAC指令实现或者用FIRS指令实现。由于本设计采用的DSP为16位定点处理器采用Q15数据格式所以这些系数在应用到编程之前需乘以2取其整数部分。由于在语音采集设计中所采样的数据是按“后采样的样值放在高地址存储单
25、元”的原则如图1-6所示所以在对这些数据处理时就认为数据存储单元地址越低数据越旧。根据卷积的原理及运算过程软件实现滤波的过程如下: 8 开始输入抽样值 结束时输入抽样值 xn-(N-1) h(N-1) x(n) 低地址 旧数据 xn-(N-2) h(N-2) xn-(N-1) 圆周循 环序列 高地址 x(1) h(1) x(n-2) 新数据 h(0) x(0) x(n-1) 图1-6 循环寻址的数据存储方式 (1)将设计好的80个h(n)序列值存入相应的存储区, (2)从DSP缓冲串口中读取一个最新采样值x(n)存入相应存储单元, (3)重复80次循环读取h(n)和x(n)的值进行卷积运算求得
26、y(n)存入到目标数据存储单元, (4)重复步骤(2)-步骤(3)。 在初始化时x(n)的存储区清零每存储一个新值x(n)时接着就做一次80次乘法的累加得到对应的输出y(n)。80次相乘是从当前的AR0和AR1所指示的单元开始的。每次乘累加后AR0都要指向h(79)所在的单元而AR1指向最旧的数据即新储存的样值的下一个单元的值也即乘累加前所指向的单元。程序流程如图1-7所示: 开始 开始 初始化DSP 接收ADC通道采样信号 初始化80阶FIR滤波参数 把接收的数据经过80阶FIR初始化McBSP接口 滤波后再反馈到DAC通道 与AD50进行二次通讯 结束中断服务程序等待下一次中断 开中断等待
27、McBSP中断信号 图1-7 滤波程序流程图 针对DSP编程实现上述滤波器,乘累加运算可使用MAC指令实现其计算。9 使用带MAC指令的循环寻址模式实现FIR滤波器的程序片段如下(输入数据在AL中滤波结果在AH中): STM #A,AR0 ;AR0=1 STM #80,BK ;BK=80,循环寻址BUFFER大小为80 STL A,*FIR_DATA_P+% ;更新滤波窗口中的采样数据 PRTZ A,#79 ;重复MAC指令80次,先将A清零 MAC *FIR_DATA_P+0%,*FRI_COFF_P+0%,A ;完成滤波计算注意FIR ;滤波系数存放在数据存储区为FIR_COFF_P指定.
28、 2 实验结果 滤波前波形如图1-8所示;滤波后波形如图2-1所示 图2-1 语音滤波前的频谱 图2-2 语音滤波后的频谱 比较图2-1和图2-2中可看到200Hz以下的信号被明显的抑制降低了二十几个dB并且3600Hz以上的频率分量也明显被抑制。 10 3 系统设计中应注意的问题 由于系统需要满足实时信号处理的要求所以在系统设计时应采取有效措施克服实时处理系统所要面临的问题。 (1)DSP芯片中所有输入信号必须明确处理不能处于悬浮状态,模拟电路和数字电路独立布线最后单点连接电源和地,采用铺设地网、电源滤波等方法消除高频干扰。 (2)添加跳线开关增强系统设臵的灵活性。在系统中TMS320VC5
29、402芯片的PLL时钟设臵、系统上电BOOT模式和TLC320AD50芯片的信号输出方式可以根据需要进行设臵添加跳线开关使用户可以灵活改变系统设臵增加了系统的通用性。 (3)TMS320VC5402采用6级流水线操作用户可以通过调整程序语句的次序或在程序中插入一定数量的NOP指令来解决流水线冲突问题。TMS320VC5402芯片具有16K片上DARAM应尽量将常用数据分配在此区域这样CPU可在单周期内读取两个数据从而使多操作数指令在一个周期内完成大大加快运算速度。 (4)在接口程序中打开采样率发生器或串口接受发送通道之后CPU必须等待至少两个采样周期以便MsBSP建立稳定的时序逻辑。假设信号的
30、采样率为8K则串口时钟频率为2568 K如果DSP芯片的工作频率为100 MHz那么此时CPU至少应等待100个CPU时钟周期。 4 结束语 本文介绍了一个实时数据采集处理系统的设计和实现系统以DSP芯片和TLC320AD50芯片为核心具有很强的数据处理能力和灵活的外围接口电路实验证明可较好地实现语音的滤波.该系统可扩展为3G手机语音识别系统也可以作为语音信号处理算法研究和实时实现的通用平台。 11 参考文献 1 邹彦. DSP原理及应用M.北京:电子工业出版社, 2005. 2 伍小芹,吴秋丽. FIR数字滤波器在DSP上的实现J.现代电子技术, 2007(1):85-87. 3 黄海波,蒋
31、伟荣.通用语音处理系统的DSP实现J .微计算机息,2006,22(5):173-175. 4 崔建华,徐万明,夏玉杰.基于VC5509的语音处理系统设计J.内江科技,2009. 5 贾冲, 李莉, 张雄伟. 基于DSP和USB的双路音频数据采集系统的设计与实现J. 军事通信技术,2004 6 姚天任,数字语音处理M. 武汉:华中理工出版社,1999 7 戴明桢,周建江.TMS320C54X DSP结构、原理及应用M.北京:北京航空航天大学出版社, 2001. 8 李登元,谢桂海. 基于TMS320C30D的信号采集处理系统J. 军械工程学院院报,1995.3 9 王海平,刘 琚. 基于TMS320VC5402的实时语音采集与处理系统J. 山东大学学报(工学版),2004.2 10 乔建华 ,张井岗,李临生. 基于DSP的语音信号采集系统的设计J. 太原科技大学学报,2005 11 Muquet B, Courville M, Duhamel P. Subs
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1