ISD5116是ISD公司最新推出的语音录放芯片。它除了具有该公司以往4000和5000系列语音芯片的特点(音质好、语音录放时间长、低功耗、信息保持时间长等)以外,更是采用了增强型的5000系列结构;它采用I2C串行总线接口,与采用MWI(微总线)接口相比,与CPU的接口减少到2条线;它增加了对数字量的存储功能,可以将诸如电话号码、系统设置、语音地址指针等参数与语音信息一起存储在芯片内部;根据应用系统的要求,通过软件设定采样频率,可使芯片录放音时间最长达到1728"。
|
一、芯片封装形式及引脚功能 |
ISD5116采用TSOP和SOIC的封装形式(见图1),还可根据需要提供BGA形式封装。芯片的引脚根据功能分为数字、模拟和电源三部分。 |
数字部分: |
SCL:I2C总线时钟信号线。 |
SCD:I2C总线数据信号线。 |
RAC:行地址时钟信号输出。 |
INT:中断信号输出端。当发生溢出(OVF)或遭遇到语音结束(EOM)标志时,该端变低并一直保持低电平状态,直至用"读状态"指令将其清除为止。 |
XCLK:外部时钟输入端。一般采用片内时钟,只需将此端与VSSD 相连;如必需外接时钟,则此端接一个4.096MHz的时钟源。 |
A0、A1:芯片I2C总线的从地址设置端。由于采用8位地址,而且最低地址位是读/写选择位(二进制形式为:1 0 0 0 0 A1 A0 ),故芯片的地址为80~87H。 |
模拟部分: |
MIC+、MIC-:麦克风信号输入端。 |
ANA OUT+、ANA OUT-:语音信号输出端(注意:不使用此端时,不要将其接地) |
ACAP:片内"自动增益控制器"电容接入端。一般接一个4.7F电容 |
SP+、SP-:外接扬声器端口。5116可以直接驱动一个8 扬声器,此时最大功率为23.5mW。 |
AUX OUT:语音信号辅助输出端。
ANA IN:语音信号输入端。
AUX IN:语音信号辅助输入端。 |
电源部分:
VCCA、VCCD:模拟和数字部分+3V电源输入端。
VSSA、VSSD:模拟和数字电源接地端。 |
NC:无需连接端。 |
二、芯片结构 |
1.内部寄存器 |
5116内部具有多个用于储存地址、芯片设置等信息的寄存器。其中两个16位的芯片"设置寄存器"(CF0、CF1)控制着芯片内部各部分的功能,如声音信号的流通路径、采样频率、各种增/减率、各功能块上电/掉电以及音量设置等等。 |
2.存储器的组织形式 |
语音信息和数字量均存储在芯片内部的闪存存储器中。5116的存储器由2048行(或页)、每行(或页)2048位共4194304位的阵列组成。
存储语音信息时,行是最小可寻址单位。总共2048个行通过11位地址选定。以8KHz采样频率为例,每行的录放音时间为256ms,因而芯片的记录时间为2048€?56(ms)=844。存储数字量时,每页的2048位被组织成32个“块”,每个块为64位,块为最小可寻址单位 |
注意:每个行(或页)要么是全部记录语音,要么是全部记录数字量,不能混合记录。 |
状态字 |
芯片进行操作前,有时需要了解其当前的状态,这一般通过读取芯片的"状态字来实现。5116的状态字是一个8位字节。 |
命令字 |
使芯片实现上电、开始或停止录音、信息查找等功能,需向其写入一"命令字。5116的命令字为一8位字节。 |
三、芯片的应用 |
1.硬件接口说明 |
由于采用I2C总线,因此5116与具备此类总线的CPU(如80C552等)的接口非常简单。 |
通过设置不同的从地址(A1、A0),可将多达4片5116同时挂到总线上,这样一来总的录放音时间最长可达69分钟。 |
由于芯片内部集成了放大、驱动和自动增益控制等电路,因此只需外接MIC和扬声器就可实现语音录放,无需其它外围器件。 |
2.软件设计要点 |
录音、放音——录音时应首先对CF0和CF1进行设置,以打开相应的通路、设置采样频率等。 |
如果是对MIC信号进行录音(假设采样频率为4.0KHz),CF0、CF1应设置为: |
CF0<15:0>=0010 0100 0010 0001B (2421H) |
CF1<15:0>=0000 0001 0100 1100B (014CH) |
如果对ANA IN信号进行录音(假设采样频率为6.4KHz),CF0、CF1则应设置为: |
CF0<15:0>=0100 0100 0000 1011B (440BH); |
CF1<15:0>=0000 0000 1100 0101B (00C5H)。 |
然后是向芯片发录音命令,可使用 RECD @ADDR命令(91H),此时应依次向芯片发送: |
芯片地址(8位)→录音命令(91H)→录音起始地址(高8位)→录音起始地址(低8位)。 |
放音时,先将CF0和CF1(假设采样频率为4.0KHz)设置为: |
CF0<15:0>=0010 0100 0010 0010B (2422H) |
CF1<15:0>=0101 1001 1101 1101B (59DDH) |
然后依据放音命令PLAY @ADDR (A9H)的要求依次向5116发: |
芯片地址(8位)→放音命令(A9H)→放音起始地址(高8位)→放音起始地址(低8位)。 |
需要指出的是,由于5116在录放语音时,只能寻址到行,因此上述关于录音和放音的起始地址只有高11位(即ADDR<15:5>)有意义。 |
写数据、读数据及擦除 —— 5116允许将其存储器的部分页用于储存数字量(页数多少可依据需要决定)。在储存数字量时(写数据)时,最小可寻址的单位是“块”(64位)。由于5116有2048页、每页有32个块,故需要16位的地址(高11位为页地址,低5位为块地址)来指定块。 |
如果页中的任意一个块已经被写入过,则在改写该块前应先擦除该页(注意:擦除是以页为单位进行的)。一般的作法是:先读取整个页并将其放在RAM中,然后更改相应块的位、擦除页,最后一步是重写整个页。 |
写数据时,可采用下列I2C命令次序: |
发芯片地址→发写命令(C9H)→地址高8位→地址低8位→数据(8位€?次)。 |
数据时,由于要先向芯片写"读数据命令,故相对写数据要复杂一些。具体可采用下列I2C命令次序: |
发芯片地址(位R/W =0)→发读命令(E1H)→地址高8位→地址低8位→发芯片地址(位R/W =1)→读数据(8位€?次)。 |