摘要:2.4语音中断服务例程嵌入式处理EP7211本身提供的外设语音录放Codec(coder/decoder)芯片可以实现语音的录入和播放功能。该模块提供2个独立的16字节长的数据发送和接缓冲区(FIFO),其为全双工模式,数字据点发速率是64kbps。芯片自身提供工作时钟、定时脉冲以及数据串/并和并/串转换功能。编程人员通过设置EP7211相应的控制寄存
2.4 语音中断服务例程
嵌入式处理EP7211本身提供的外设语音录放Codec(coder/decoder)芯片可以实现语音的录入和播放功能。该模块提供2个独立的16字节长的数据发送和接缓冲区(FIFO),其为全双工模式,数字据点发速率是64kbps。芯片自身提供工作时钟、定时脉冲以及数据串/并和并/串转换功能。编程人员通过设置EP7211相应的控制寄存器使能这些项功能,则每当数据收发缓冲区半慢或者半空时(8字节),芯片自身就会产生一次中断信号供外部处理。理论计算芯片中断速率是1ms/次。
语音播放中断服务例程主要完成的工作是,当产生语音中断时,仍然有数据需要播放,则向语音数据发送缓冲区FIFO中写入指定数据,剩下的工作由Codec芯片本身来完成。中断服务例程ISR的伪代码如下(因为具体实现代码没有通用性,故此处用伪码描述):
void IRQ_Codec_Handler(void)
{
while(检测系统状态寄存器,发现语音芯片数据发送缓冲区FIFO非满)
{
if(已经播放过的语音数据长度<给定的需要播放的语音数据长度)
{
向语音芯片发送数据缓冲区FIFO写入指定数据;
调整已经播放过的语音数据长度;
if(已经播放过的语音数据长度>=给定的需要播放的语音数据长度)//结束
{
禁止数据发送缓冲区中断;
复位各相关的全局变量;
程序返回;
}
}
else
{
向语音芯片发送数据缓冲区FIFO写入默认数据
0XFF;
}
}
}
3 试验结构和分析
由于在设计阶段充分考虑过语音合成算法的大运算量和系统的实时性要求,故我们在具体实现的时候也采取了一些措施,比较突出的有:用ARM汇编语言来实现关键性的函数代码;语音合成时提高处理器EP7211的工作频率(处理器正常工作频率是18MHz);对于一些常用的三角函数计算,采用查表的方式等来加快程序执行速度。在PDA样机测试中,单字符合成时间在650ms左右,基本上能够满足实际应用需求。数据语音库经过处理之后,占用了729560字节也能够满足本PDA系统的存储的要求。
通信工程师备考资料免费领取
去领取