适于语音处理的SDA80D51芯片及其数字录放音系统

发布者:rockstar7最新更新时间:2007-03-09 手机看文章 扫描二维码
随时随地手机看文章
摘要:SDA80D51 UNISPEECH是Infineon公司新推出的具有DSP和单片机双核的芯片。介绍了该芯片的组成框图及各功能模块,并且用该芯片完成一个硬件系统,实现了语音的G.723.1编码存储和解码放音。 关键词:G.723.1 Sigma-Delta调制 前后台 目前市场上有很多语音录放系统,如录放音玩具、录音笔等,大多采用了单片机控制一个语音芯片,再接一个FLASH存储器的结构。由于语音芯片都是固定的编码算法,使得系统用途单一,不利于进一步改进,缺乏灵活性,如日本OKI公司的MSM6588只能完成ADPCM编码。 用SDA80D51芯片实现的语音录放音系统,系统硬件简单、工作可靠。所有的编解码算法都由软件来完成,设计者可以编制自己的软件,完成不同的功能。它既可以作为简单的数字录放音系统,也可以通过改变程序做语音识别、语音合成等多种系统。用途灵活、功能强大。该系统选用G.723.1语音编解码算法来完成语音的录放。 1 SDA80D51芯片介绍 SDA80D51芯片是德国Infineon公司生产的适合语音处理的芯片,它采用0.18μm工艺,核的工作电压为1.8V,I/O电压为3.3V,模拟Codec部分电压2.5V,功耗是150mW。该芯片相当于一个片上系统(SOC),内部集成了许多功能模块,如图1所示。由于它集成了许多功能模块,如图1所示。由于它集成了许多功能块,几乎只需要一片芯片就能完成语音处理和系统控制。 该芯片含有两个处理器,分别是16位DSP(OAK)和8位MCU(M8051 E-Warp)。M8051 E-Warp核由美国Mentor Graphics公司设计,它是与一般8051兼容的MCU,具有很多的增强功能,最高工作速度可达50MIPS(Million Instruction per Second),是目前为止最快的增强8051。传统8051的一个机器周期是12个时钟周期,而这个核心只需2个时钟周期,速度传统8051的6倍。许多指令都能在一个机器周期内完成。由于指令与8051兼容,使得程序员不用花许多时间学习新指令,而直接采用传统的8051编程方式就行。芯片集成有JTAG口,用Mentor Graphics公司的FS2(First Silicon Solutions)仿真器就可以实现在线仿真。 OAK核是美国DSP Group公司设计的16位低功耗、低电压和高速定点DSP。采用双金属CMOS,在0.6μm或0.5μm以下工艺生产。工作电压范围在2.7V~5.5V。在5V 80MHz工作条件下,消耗电流38mA;在3.3V 80MHz条件下,消耗电流25mA。该核采用Harvard总线结构,工作速度可达100MIPS。 Codec部分由I2S、ADC和DAC组成。I2S口可用来外接一些通用的模/数芯片。两路的12位8kHz采样率的ADC,可接峰峰值为1.03V的差分电压。片内有数字AGC,可放大0到42dB(8档,6dB步长);模/数转换采用Sigma-Delta调制技术并经过一度的换算,得到16bit的PCM码流,送往处理器。两路11位8kHz采样率的DAC可软件调节增益,可放大0到-18dB(-6dB步长)。所有Codec部分可通过ASI接口连到OAK或M8051上。 SDA80D51芯片还有I2C、SPI和PWM接口模块,可以通过M8051来控制。另外在不同版本的芯片上还有多达50到250之间的GPIO(通用的输入输出口),这可以保证系统控制的灵活性。 该芯片最有特点的功能模块是存储器管理单元MMU(Memory Manage Unit),它可以管理两个核的存储区映射。物理存储器(RAM或ROM)被看成由多个块组成,每个块的大小在不同版本的芯片上定义是不同的,本系统中,块的大小是16K字节(或8K节)。MMU既可以把块(8K字)映射给OAK的程序区或数据区,也可以把块(16K字节)映射给M8051的程序区或数据区。这些完全由写M8051的特殊功能寄存器来完成。存储空间的自由挂接使得完成两个核之间的数据转换变得非常容易。此外,程序装载和启动也需要MMU的控制。 整个芯片的工作方式是M8051作为主控制芯片,完成对各种接口的控制和系统的配置。OAK作为协处理器,完成语音编解码算法等计算。两个核之间还有两个64字深的FIFO。它们用于双核通信。 2 G.723.1语音编解码 语音编解码算法一般分为三类:波形编码、参数编码(声码器)和混合编码。波形编码技术是在不建立语音模型的情况下,直接对语音波形用编码方式逼近,可有时域的脉冲编码调制和变换域编码;参数编码是在一定的语音模型基础上,在编码端分析出该模型参数,并选择适当的方式对其进行高效率的编码,而在解码端利用这些参数和语音模型,用合适的激励源(excitation)重新合成语音;混合编码则保留了参数编码的语音模型的假定,又利用了波形编码的准则优化激励信号。 G.723.1算法属于混合编码。语音模型是基于线性预测理论的全极点模型。输入是16bit的PCM码流,然后采用合成分析、矢量量化等方法,以感觉加权后的语音基音残差信号能量最小为准则进行编码。有两种类型编码方式,一种是6.3kb/s多脉冲最大似然量化方法(压缩率20:1),另一种是5.3kb/s代数码本激励线性预测ACELP(压缩率24:1)。后者的压缩率高,编码速率低,这可以降低系统存储语音时所需存储器的容量。而且解码算法简单,回放语音时不会有延迟感,语音清晰。 3 语音录放音系统硬件设计 语音录放音系统硬件电路的系统框图如图2所示。由于芯片内(虚线内)集成了许多功能模块,使得电路的结构变得非常简单。 SDA80D51的RS232串行口通过MAX3222匹配电压后,连接到计算机。 芯片的启动支持SPI、I2C和RS232串口三种方式。本系统采用I2C启动方式,选用ATMEL公司的24C64。上电后,片内固化在ROM上的程序会从选定的I2C芯片拷贝256字节客户启动程序到片内程序区ff00h~ffffh处,最后把程序指针指向ff00h,开始执行。 系统程序存在SST28LF040中,由启动芯片中的用户启动程序把系统程序装载到芯片内部的RAM里,然后处理器会执行RAM中的程序指令。 语音经过编码压缩后存储在三星公司的KM29U128T(16M%26;#215;8bit)内。它的寻址采用串行方式,即8根数据线既作地址线也作数据线,先输入地址,再传送数据。这样,用很少的SDA80D51地址线就可寻址很大的空间,记录大量的语音数据很方便。 用8根GPIO线实现一个4%26;#215;4的小键盘,可用来作为控制接口。在录放音时,可以通过对键盘的扫描来决定下一步骤。 4 软件设计 由于要对芯片内的功能模块、系统控制和编解码算法进行编程,这使得软件设计量比较大。考虑到本文的篇幅,这里只介绍总程序结构和录放音的控制部分。 总程序框架采用前后台的工作方式。前台轮寻各个任务引擎,判断是否有任务需要处理。若有,切换状态并执行该任务;若没有,就继续查询。后台主要完成对硬件的接口、中断处理程序以及缓冲硬件数据。前台和后台的通讯是靠共享缓冲区来完成的。这种前后台的工作方式可处理多任务,每个任务只占用一个时间片。 数字录放音程序在整个软件设计中只有一个任务,它提供一个任务引警程序,由前台来调用。具体工作过程是OAK接CODEC模块,负责采集数据、编码和解码算法以及语音的回放;M8051负责配置系统工作寄存器和对FLASH的读写。两个核之间通过FIFO发消息,消息的定义格式(C语言)如下: typedef union tag_FIFO_MESSAGE { struct { struct { BYTE bIdSource://发送方ID BYTE bIdDest: //接收方ID WORD wMsgType; //发送消息类型 WORD wDataLen; //数据长度 WORD wSeq; //消息序号 }uHead;//消息头 WORD wData[27]; //消息数据内容 WORD wCRC; //校验 }uForm; WORD wBuf[32]; }FIFO_MESSAGE; 两个核的任务引擎程序分别用C语言编写,程序结构基本相同,都采用状态跳转的方式,即每个子程序模块都是一个状态,满足一定条件就跳到下一状态;若都不满足,就退回到前台轮寻程序。由前台程序在下一时间片继续调用停留在当前状态的程序。 如图3所示,每个圆圈都是一个状态,两个核之间的横向的箭头表示消息,向下的箭头表示状态的跳转。 在录音时,M8051的“录音初始化状态”先做初始化并发送START消息,表明录音开始,然后跳到“存语音数据状态”,等待OAK的消息。OAK的“录音初始化状态”接收到START消息后,先做初始化,然后跳到“语音采集编码状态”,在这里会不停地采集语音并用G.723.1编码,采满8K字后,向M8051发送STORE消息。M8051收到消息后,用存储器切换程序,拷贝数据到M8051的RAM区,并存到FLASH里,这由“存语音数据状态”来完成。若FLASH存满,M8051会发送STOP消息,然后OAK和M8051都进入“录音结束状态”。OAK结束后还会给M8051发送DONE消息,表明录音结束。 在放音时,M8051的“放音初始化状态”打开FLASH的文件系统并发送START消息。OAK收到后,发送INIT消息,请求M8051传送第一个数据包。M8051的“初始化确认状态”收到INIT消息后,从FLASH读取一个数据包,传送给OAK,若正确就发送ACK消息并跳转到“读语音数据状态”。要是失败的话,就发送STOP消息,这样OAK和M8051都会结束语音。当OAK收到ACK消息和一个语音数据包时,会跳到“解码放音状态”,在这里不停的把数据解码并发送给DAC。若放完这个语音数据包,就发LOAO消息,申请下一个,不停循环。同时M8051会准备语音数据包,并传送给OAK,若没有数据或按停止键,M8051会发STOP消息,结束发音。然后OAK会发FINISH消息,表明所有录音结束。接着M8051的“放音结束状态”会关闭文件系统,清空缓冲区。 由上面的描述可看出,整个数字录放音的工作流程是M8051作主控制器,OAK作从控制器。M8051发起开始信号,收尾数字录放音,而OAK主要负责编解码。这种工作方式灵活可靠,程序很容易扩展,例如状态数的增加和消息类型的扩展都很容易。 该系统的主要特点是充分利用SDA80D51的强大的功能集成,完成语音处理系统。完成一个大系统,几乎只需要一个芯片。相信该芯片在语音及相关领域一定会有很好的应用前景。
引用地址:适于语音处理的SDA80D51芯片及其数字录放音系统

上一篇:TMS320C5402 在电视数字传输复用器中的应用
下一篇:基于MPEG-2算法的列车语音记录设备

热门资源推荐
热门放大器推荐
    Error

    An error occurred.

    Sorry, the page you are looking for is currently unavailable.
    Please try again later.

    If you are the system administrator of this resource then you should check the error log for details.

    Faithfully yours, OpenResty.

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