DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1093|回复: 0
打印 上一主题 下一主题

[待整理] DSP与MATLAB的语音数据采集和处理系统

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-10 08:21:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1 引言
目前迅速发展的数字信号处理器已在数据采集、通信及多媒体等领域中得到广泛的应用。本系统采用TI公司16位定点高速芯片TMS320C5410和专用语音采集芯片TLC320AD50进行数据采集和相关滤波、压缩处理,并将最终的数据流经串口送入计算机。在计算机中使用MATLAB控制串口接收数据并完成解压、回放、编码、通信仿真等处理。
2 硬件接口电路

2.1 TMS320C5410外部扩展电路
TMS320C5410是TI公司于1996年推出的定点数字信号处理器。它运行速度快,单周期定点指令执行时间10ns或8.3ns,远大于语音采集和处理的要求。另外它采用修正的哈佛结构,程序与数据分开存放,内部具有8条高度并行性的总线。其中,一组程序总线,三组16位数据总线和四组地址总线。允许数据存放在程序存储器中,并被算术指令直接使用,大大提高了运行速度和灵活性。CPU具有40位算术逻辑单元,两个独立的40位累加器,17×17位并行乘法器,一个40位桶形移位寄存器、8个辅助寄存器、2个辅助寄存器算术逻辑单元。最大可有8M字可寻址程序存储空间,可访问的数据存储空间有64K字,I/O存储器空间有64KB。其中片内64KB的RAM包括两块2KB的DARAM,七块8KB的SARAM以及片内16KB的ROM配置位程序存储器。片上集成一个16位定时器、软件可编程等待状态发生器、六通道直接存储器访问(DMA)控制器、三个多通道缓冲串口(McBSP)以及一个8位增强型主机接口(HPI8)。
图1为DSP与存储器的接口电路,其中PS、DS、IS分别为程序、数据和I/O空间选择信号。MSTRB、IOSTRB分别为存储器和I/O选通信号。
另外,由于FLASH存储器与EPROM相比有更高的性价比,而且体积小,功耗低,可电擦写,使用较方便。因此,本系统也扩展了一片FLASH存储器,图2为DSP与FLASH的接口电路。FLASH芯片为AMD公司的AM29LV400B,该芯片为单电源供电,支持整片擦除,每个分区有保护,避免意外擦除,并且使用寿命很长。


2.2 TMS320C5410与TLC320AD50的接口电路
AD转换是本系统的重要组成部分,要着重考虑转换精度和抗干扰问题。本系统所用AD和DA转换芯片为TI公司的TLC320AD50,它在一个封装中集成了两种功能,可同时进行AD和DA转换。图3为TMS320C5410和TLC320AD50的接口电路。
AD50采用16位过采样sigma-delta技术,以8K的采样率对输入的语音信号进行采样、量化,按同步串行方式传给5410进行处理。AD50向CPU发出帧同步和移位时钟信号来控制数据的串行传输。在此需说明一下,本系统主要用来将语音信号通过AD转换采集进来,然后串行发送给PC,在PC中用MATLAB接收信号并进行处理。整个过程中DA转换并不在信号处理的主要流程中,DA转换只是用来验证采集数据时所用到的滤波、压缩算法的正确性与合理性。所以,在编写系统软件时并没有将DA转换写入。此外,把DA转换加进来也是为了丰富系统硬件资源利于今后进行功能扩展。
2.3 TMS320C5410与PC机的串口通信
本系统采用MAX232E构成5410与PC间的通信接口。MAXIM公司的MAX232E采用单5V电源供电,使用时只需外接4个电容就能完成TTL与RS232间的电平和逻辑关系的转换。经过DSP系统处理的语音信号通过串口以9600b/s的速率送入计算机,在计算机中通过MATLAB控制串口接收数据,并且利用MATLAB强大的数据处理能力对语音信号进行处理。
3 软件实现

本系统的软件由上位机部分和下位机部分组成。其中,下位机部分主要是针对DSP编程完成语音信号的采样、量化、滤波、压缩编码、以及与PC的串行通信。上位机部分主要是采用MATLAB语言编程进行串口数据接收、解压缩、以文件的形式存储数据并且最终将该数据文件送入本人用MATLAB语言完成的一个通信信号处理系统进行进一步处理。
3.1 下位机部分
整个下位机部分的程序流程图如图4所示,其中滤波部分为一个FIR高通滤波算法。这是因为主要采集的对象为语音信号,而TLC320AD50内部只有一个低通滤波器,可以用于滤除高于3.4kHz的干扰信号,但是对于低于300Hz的干扰则无能为力,所以针对DSP编程设计一个FIR高通滤波器滤除低频干扰。FIR滤波器在数学上可表示为:

式(1)中x(n)为最近的输入信号,x(n-k)为延时了k个取样周期的输入信号,y(n)为时刻t=nT的滤波器输出信号,N为滤波器的阶数。h(k)是第k个延时节的加权值,既滤波器系数,可由MATLAB的kaiserord函数和fir1函数共同算得。从计算结果可以看出,一个N(设N为偶数)阶的FIR滤波器具有系数对称性,从而其输出方程可进一步简写为:
y(n)=h0[x(k)+x(k-N+1)]+h1[x
(k-1)+x(k-N+2)]+Λ+
nH/2-1[x(k-N/2+1)+x(k-
vN/2)] (2)
根据(2)式可以编写相应程序完成FIR高通滤波。
语音压缩部分采用的是非失真的压缩算法。具体为:当有两个以上连续相等的数据时,可以用3字节表示,即前2字节相等表示被压缩的数据值,后1字节表示被重复次数。由于语音信号自身的特点,即冗余度大,这就为此种压缩提供了可能。同样,在解压时,程序读入数据流,当遇到两个相等数据时则重复此数,重复次数由后一个数据决定。
3.2 上位机部分
本次设计中比较新颖的地方就是上位机部分采用MATLAB控制串口接收并处理数据。比起VC或者VB,用MATLAB作上位机程序有其独特的优势。MATLAB自带很庞大的函数库,控制串口有serial等函数,语音的回放有wavread函数,至于信号处理更是MATLAB的强项,它自带的信号处理工具箱函数大大的缩短了系统软件开发的周期。另外,MATLAB作人机交互界面也很方便,其自带的GUI工具包使整个过程快捷、流畅,比起VB也逊色不了多少。
3.1.1 MATLAB的人机交互软件设计

用MATLAB控制串口接收数据有以下几步:
1. 先进行串口的初始化操作,然后打开串口,用到的函数为:serial和open。
2. 设定MATLAB和DSP的握手方式,可通过串口目标的FlowControl属性设定。
3. 接收和发送数据,用到fread和fwrite函数。
界面如图5所示,调试时注意MATLAB本身的GUI环境下设计的软件界面不能使用全局变量,若是使用会出现函数使用错误。另外,接收和发送数据之前要清PC的数据缓冲区,以免接收到或发送的数据不是当前数据。最后,接收到的数据应以文件的形式存储下来,以便后续的系统处理。
3.1.2 信号处理系统设计
上位机的信号处理系统的设计思路是这样的,信号首先以文件的形式输入处理系统进行频谱分析,观察信号是否被噪声污染。若其频谱含有噪声谱则马上进入滤波器模块进行滤波,以滤除信号中的噪声。然后,再将滤波后的信号送入编解码模块进行编码或解码(在这里用户可以选择不同的编解码方式)。最后将信号送入通信仿真模块进行各种调制或解调处理及相应波形的显示。
结束语
TMS320C5410作为高速数字信号处理器具有快速的运算能力,结合MATLAB强大的信号处理能力,完全可以达到较复杂的语音信号处理要求。而且系统的可扩展能力很强,可对软件进行修改或者添加新的快速的算法提高系统信号处理的实时性
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-28 02:49 , 耗时 0.202861 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表