TMS320VC5402 DSP与ISD4004语音录放芯片
ISD4004内部存储器分为2400行,每行1600列。对器件寻址即选择一行,从行首开始录放,而每行中的列不可寻址。对于8kHz采样率的ISD4004,采样间隔为125μs。器件地址分辨率可按如下计算:
(1/Fs)×1600=200ms
2.1 MAT
由于ISD4004内部可寻址多达2400行,而每行固定存储200ms语音,为了可录放、删除任意长度的语音,有必要建立MAT。MAT跟踪每一条语音的开始地址以及每一个信息碎块的开始结束地址。ISD4004共2400行,实际只需要12位地址即可完成寻址。为节省MAT存储空间,将地址最高位bit15作为语音起始点标志。建立MAT的规则如下:
(1)MAT表项值全为0(0000 0000 0000 0000):表示对应行未存储任何语音;
(2)MAT表项值的bit15为1(1XXX XXXX XXXX XXXX),表示对应的是某句语音的起始行;
(3)MAT表项值的bit15为0,其余各位是有效地址(0XXX XXXX XXXX XXXX),表示对应的行是某句语音的一行,但不是起始行;
(4)ISD的第一行总是某句语音的起始行。
同一句语音的地址在MAT中总是连续存储的。由若干行组成的句语音,它的各行地址总是从小到大,但不一定两两相连。以行地址为表项的MAT,所要求的存储空间是较大的。本例中为2400行语句,则要求MAT具有2400个表项。为了减小MAT大小,也可对语音进行分块。若8以位为一个语音块,则MAT大小减小为300个表项。经过几次录音和删除手,建立的MAT如表1所示。
表1 MAT实例
2.2 信息管理操作
放音时,DSP从MAT表头开始搜索bit15为1的表项。要播放第几条语句,则寻找第几个bit15为1的表项。由于RAC的周期和器件的行相同,且其低脉冲时间长达25ms,在播放当前行语音的同时,RAC触发DSP的INT3中断。INT3中断服务程序验证下一行bit15是否为1,若不为1则将该行地址送入ISD,则输入的地址不会立刻生效,而是在缓冲器中等待当前结束;若为1则指示下一行为新语句开始地址,DSP不送任何指令。放音遇到EOM或者OVF时产生INT中断,停止放音。
录音时,按NUM键启动录音操作,DSP首先找出MAT中的个全0行,发录音指令;在录制当前行的同时,DSP等待RAC信号触发INT3中断,中断服务程序继续寻找全0行、发带该行地址的录音指令,直到按STOP键触发INT0中断发录音停止命令为止。删除语音可通过将相应语音行全置零来完成。
《TMS320VC5402 DSP与ISD4004语音录放芯片(第3页)》