基于DSP和MATLAB的语音数据采集和处理系统

发布者:cw57324588最新更新时间:2014-06-07 来源: 互联网关键字:MATLAB  语音数据采集  FLASH 手机看文章 扫描二维码
随时随地手机看文章

  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选通信号。

DSP与存储器的接口电路

  另外,由于FLASH存储器与EPROM相比有更高的性价比,而且体积小,功耗低,可电擦写,使用较方便。因此,本系统也扩展了一片FLASH存储器,图2为DSP与FLASH的接口电路。FLASH芯片为AMD公司的AM29LV400B,该芯片为单电源供电,支持整片擦除,每个分区有保护,避免意外擦除,并且使用寿命很长。

DSP与FLASH的接口电路

  2.2 TMS320C5410与TLC320AD50的接口电路

  AD转换是本系统的重要组成部分,要着重考虑转换精度和抗干扰问题。本系统所用AD和DA转换芯片为TI公司的TLC320AD50,它在一个封装中集成了两种功能,可同时进行AD和DA转换。图3为TMS320C5410和TLC320AD50的接口电路。

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-v---N/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强大的信号处理能力,完全可以达到较复杂的语音信号处理要求。而且系统的可扩展能力很强,可对软件进行修改或者添加新的快速的算法提高系统信号处理的实时性。

关键字:MATLAB  语音数据采集  FLASH 引用地址:基于DSP和MATLAB的语音数据采集和处理系统

上一篇:可扩展32位DSP架构适用于高级音频和语音应用
下一篇:一款基于DSP的频谱监测仪设计

推荐阅读最新更新时间:2024-05-02 23:05

兆易创新NOR Flash打进三星旗舰机Galaxy S9供应链
过去几年,兆易创新在NOR Flash 领域优势不断扩大,不仅市场份额节节攀升,而且还获得众多国际一线品牌订单。 据拆解网站iFixit拆解报告显示,兆易创新成功打进三星旗舰智能手机供应链,32Mb的序列式NOR Flash获三星的Galaxy S9采用。 市场关注,兆易创新NOR Flash在获得三星肯定采用后,是否会增强NOR Flash市场的竞争态势,进而影响市场秩序。 兆易创新在NOR Flash 优势明显,目前已是中国大陆最大的NOR Flash 供应商。过去一年,兆易创新抓住全球存储器供需紧张、涨价等有利因素,不断扩张产能。据业内人士透露,兆易创新获中芯国际力挺,后者承诺以每月提供2.5万片产能给兆易创新,为其代工生产
[手机便携]
库存持续升高,下半年NOR Flash恐降价
据市调机构最新调查显示,由于疫情,NOR Flash报价自年初起持续走高,但市调机构最新调查显示,在需求端库存水位持续垫高、且买方库存水位已达到相对满足阶段的背景之下,预计NOR Flash后续价格走势不容乐观,第三季度报价恐转跌... 库存水位持续垫高,NOR Flash价格下半年恐转跌 据TrendForce旗下半导体研究中心DRAMeXchange最新调查显示,NOR Flash市场自年初起,由于客户端库存偏低,加上客户忧心COVID-19疫情造成断链危机进而拉货,带动NOR Flash涨势一直持续至第二季。整体均价在第一季约有5%涨幅,第二季价格涨幅更进一步扩大,上涨幅度约10~20%。 目前买方库存水位
[嵌入式]
库存持续升高,下半年NOR <font color='red'>Flash</font>恐降价
stm32程序升级SD卡读取hex文件写入flash
日期:2019,1,14 芯片:STM32F1ZET6 参考文献: 1、了解hex文件: https://wenku.baidu.com/view/930d6583ec3a87c24028c403.html 2、stm32SD卡hex文件升级:看这位博客的【MCU实战经验】+ 通过SD卡升级HEX格式程序(附源码): https://blog.csdn.net/niepangu/article/details/50683754 【MCU实战经验】+ 通过SD卡升级HEX格式程序(附源码) 3、boot与app的切换可以了解一下正点原子的教程: www.openedv.com/posts/list/11494.htm 4、st
[单片机]
大容量NAND FLASH在ARM嵌入式系统中的设计与实现
1 引 言   随着嵌人式系统在数码相机、数字摄像机、移动电话、mp3音乐播放器等移动设备中越来越广泛的应用,FLASH存储器已经逐步取代其他半导体存储元件,成为嵌入式系统中主要数据和程序载体。FLASH存储器又称闪存,是一种可在线多次擦除的非易失性存储器,即掉电后数据不会丢失。FLASH存储器还具有体积小、功耗低、抗振性强等优点,是嵌入式系统的首选存储设备。 NAND和NOR FLASH是现在市场上两种主要的非易失闪存芯片,这两种类型的FLASH区别在于:   NOR类型FLASH可以按照字节访问,所以存放在FLASH里的程序可以直接执行,而NAND类型FLASH是串行访问的,需要先把程序读取到内存然后再从内存中运行。与NOR型
[单片机]
大容量NAND <font color='red'>FLASH</font>在ARM嵌入式系统中的设计与实现
基于单片机的FIash存储器坏块自动检测
  随着电子技术飞速发展,智能电子产品随处可见,如PC机、移动电话、PDA、数码相机、游戏机、数字电视等,而诸如此类的电子产品的核心器件往往离不开存储器。无论是从存储器的物理结构、存储容量、数据读写速度、可靠性、耐用性,还是产品的实用性方面。其种类繁多。然而由于种种原因,越来越多的电子产品采用数据传输快、容量大的NAND型Flash存储器。虽然NAND型Flash具有许多优点,但其有随机产生不可避免的坏块,如果不能很好解决该坏块将导致高故障率。因此,这里提出一种基于DSP的Flash存储器坏块自动检测系统。    1 系统设计方案   图l为Flash存储器坏块自动检测系统结构框图。   本系统设计采用AT89C51自动
[单片机]
大容量NOR Flash 量产,兆易创新半年度净利同比增长31%
    8月24日,兆易创新发布半年报。报告显示,2018 年上半年,公司实现营业收入 11.07 亿元,比去年同期增长 17.88%;归属于上市公司股东的净利润 2.35 亿元,比去年同期增长 30.99%。 兆易创新主要产品分为闪存芯片产品及微控制器产品。是目前中国大陆领先的闪存芯片设计企业。基于良好的市场需求和公司产品结构的优化布局,兆易创新业绩稳定增长。此外,受人民币汇率波动,以及整体供应链各环节成本增加的影响,兆易创新产品整体成本有增加趋势。 据公告显示,兆易创新的经营情况如下:  1、 优化产品结构,丰富产品线。 2018年,兆易创新继续优化产品结构,不断进行技术升级和新产品开发,丰富公司产品线。  Flash 持续开
[手机便携]
MSP430 flash的操作
今天顺便研究了一下msp430的flash操作,很多人也许看了我的博客,会发现网站上有很多的人总结得比我要好,这点我承认,因为自己能力有限,但是,从这篇博客起,我会参照以前大神们写的博客,添加大神们写过的博客链接,分享给大家,注明:本人从不抄袭他人博客,博客只是个人技术的一个总结~~~,下面进入今天的正题 msp430F149有60k的flash,这个对于51来说,是相当的惊人的了,在涉及到flash的操作的时候,往往涉及到三个寄存器,FCTL1,FCTL2,FCTL3。突然间发现msp430的寄存器都有CTL这个字样,这对于记住不同的寄存器操作很有必要,这里我们要明白各个寄存器的用途 FCTL1是控制如何进行操作,比如读写,
[单片机]
为什么STM32的Flash地址要设置到0x08000000
我们言简意赅的普及下这个知识点,争取让大家不伤脑细胞 一、背景知识: M3,M4内核芯片上电复位后,要固定从0x0000 0000地址读取中断向量表,获取复位中断服务程序的入口地址后,进入复位中断服务程序,其中0x0000 0000是栈顶地址,0x0000 0004存的是复位中断服务程序地址。 ARM官方回复: Documentation – Arm Developer 二、引出问题: 既然ARM规定了M3,M4内核要从地址0x0000 0000读取中断向量表,而STM32设置Flash地址到0x0800 0000怎么办? STM32支持了个内存重映射功能,将地址0x0800 0000开始的内容重映射
[单片机]
为什么STM32的<font color='red'>Flash</font>地址要设置到0x08000000
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved