摘要: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系統的存儲的要求。
通信工程師備考資料免費領取
去領取
專注在線職業教育25年