基于EP7211實現(xiàn)傳呼信息實時語音合成和播放原理及設計
2.3 PDA系統(tǒng)的體系結構
PDA系統(tǒng)中嵌入式處理器EP7211進行數(shù)據(jù)處理,傳呼解碼芯接收傳呼信息并進行解碼,LCD提供數(shù)據(jù)輸出顯示,觸摸屏提供用戶輸入接口,F(xiàn)lash用來存儲應用程序和數(shù)據(jù),SRAM為程序運行提供內存空間,電源電路為嵌入式處理器和外圍設備提供所需要工作電壓。
嵌入式處理器EP7211是Cirrus Logic公司專門為低成本、超低功耗的嵌入式應用設計的,包含ARM7TDMI處理器內核和豐富的外圍接口。外圍接口有CODEC音頻接口、SPI串行A/D接口、單色LCD接口、DRAM接口、紅外接口、2個PWM接口、實時時鐘RTC以及電源檢測接口。EP7211的內核電路工作在2.5V,而外圍電路工作在3.3V;可根據(jù)具體情況對內核的時鐘進行動態(tài)編程控制,可工作在18、36、49和74MHz。另外EP7211還有3種基本供電模式:正常操作(operating)、空閑(idle)和等待(standby)。在等待模式,主時鐘被關斷,整個CPU及相關外圍(除中斷和RTC)也關斷,但可通過中斷或按鈕來喚醒。
系統(tǒng)軟件開發(fā)平臺采用了我們自主開發(fā)研制的、專門面向嵌入式應用系統(tǒng)開發(fā)的XGW平臺。XGW開發(fā)平臺采用消息驅動機制,是C語言開發(fā)。它功能強大、模塊化設計、擴展性強、產品升級容易,總體框架如圖5所示。
圖5全面反應了XGW開發(fā)平臺的體系結構,包括事件消息驅動機制、內存管理、字符和圖形顯示輸出、圖形組件庫等。圖形組件庫中的編輯框、列表框、按鈕等為用戶應用程序開發(fā)提供系統(tǒng)應用編程接口API。不過,XGW平臺對于系統(tǒng)硬件的中斷響應沒有提供統(tǒng)一的入口和出口,需要開發(fā)人員單獨處理。XGW開發(fā)平臺的消息分為鼠標消息、鍵盤消息和定時器消息等3類。
2.4 語音中斷服務例程
嵌入式處理EP7211本身提供的外設語音錄放Codec(coder/decoder)芯片可以實現(xiàn)語音的錄入和播放功能。該模塊提供2個獨立的16字節(jié)長的數(shù)據(jù)發(fā)送和接緩沖區(qū)(FIFO),其為全雙工模式,數(shù)字據(jù)點發(fā)速率是64kbps。芯片自身提供工作時鐘、定時脈沖以及數(shù)據(jù)串/并和并/串轉換功能。編程人員通過設置EP7211相應的控制寄存器使能這些項功能,則每當數(shù)據(jù)收發(fā)緩沖區(qū)半慢或者半空時(8字節(jié)),芯片自身就會產生一次中斷信號供外部處理。理論計算芯片中斷速率是1ms/次。
語音播放中斷服務例程主要完成的工作是,當產生語音中斷時,仍然有數(shù)據(jù)需要播放,則向語音數(shù)據(jù)發(fā)送緩沖區(qū)FIFO中寫入指定數(shù)據(jù),剩下的工作由Codec芯片本身來完成。中斷服務例程ISR的偽代碼如下(因為具體實現(xiàn)代碼沒有通用性,故此處用偽碼描述):
void IRQ_Codec_Handler(void)
{
while(檢測系統(tǒng)狀態(tài)寄存器,發(fā)現(xiàn)語音芯片數(shù)據(jù)發(fā)送緩沖區(qū)FIFO非滿)
{
if(已經播放過的語音數(shù)據(jù)長度給定的需要播放的語音數(shù)據(jù)長度)
{
向語音芯片發(fā)送數(shù)據(jù)緩沖區(qū)FIFO寫入指定數(shù)據(jù);
調整已經播放過的語音數(shù)據(jù)長度;
if(已經播放過的語音數(shù)據(jù)長度>=給定的需要播放的語音數(shù)據(jù)長度)//結束
{
禁止數(shù)據(jù)發(fā)送緩沖區(qū)中斷;
復位各相關的全局變量;
程序返回;
}
}
else
{
向語音芯片發(fā)送數(shù)據(jù)緩沖區(qū)FIFO寫入默認數(shù)據(jù)
0XFF;
}
}
}
3 試驗結構和分析
由于在設計階段充分考慮過語音合成算法的大運算量和系統(tǒng)的實時性要求,故我們在具體實現(xiàn)的時候也采取了一些措施,比較突出的有:用ARM匯編語言來實現(xiàn)關鍵性的函數(shù)代碼;語音合成時提高處理器EP7211的工作頻率(處理器正常工作頻率是18MHz);對于一些常用的三角函數(shù)計算,采用查表的方式等來加快程序執(zhí)行速度。在PDA樣機測試中,單字符合成時間在650ms左右,基本上能夠滿足實際應用需求。數(shù)據(jù)語音庫經過處理之后,占用了729 560字節(jié)也能夠滿足本PDA系統(tǒng)的存儲的要求。
當PDA系統(tǒng)收到1條個人傳呼信息時,在語音庫的支持下,立刻啟動語音合成算法,逐個進行字符語音合成。當?shù)?個字節(jié)語音合成結束后,立刻啟動語音中斷服務例程進行語音播放。這樣收到的個人傳呼信息,前臺逐個字符解碼時,其后臺語音播放也在進行。根據(jù)實際測試參數(shù),基本上滿足了系統(tǒng)的實時性要求。
從一定角度看,單字符650 ms的語音合成時間基本能夠滿足實際應用需要,但還是希望能夠進一步減小這個值。這由于我們對ARM算是器的使用還處在研究階段。ARM本身提供了16位的Thumb指令集和32位的ARM指令集,而且兩者在某些方面表現(xiàn)出較大差別。一般來講,Thumb代碼長度是ARM代碼長度的65%,而執(zhí)行效率要經后者高出60%。但在某些方面,32位ARM指令集也會表現(xiàn)出其優(yōu)于16位Thumb指令集的強大功能;同時該處理器系統(tǒng)支持ARM指令庥和Thumb指令集混合編程模式。隨著對二者差別和各自優(yōu)勢的深入理解,結合本系統(tǒng)的硬件體系結構,采用有效的指令集混合編程模式將會使程序執(zhí)行效率進一步提高,從而使實時性得到進一步加強。
評論