??? 摘? 要: 在分析了ISD語(yǔ)音處理器件的工作機(jī)制的基礎(chǔ)上,介紹了用單片機(jī)跟蹤各語(yǔ)音段的地址變化和記錄各段起止地址以及根據(jù)各段的地址進(jìn)行隨機(jī)組合放音的方法。提出了通用的硬件設(shè)計(jì)方案,給出了實(shí)際應(yīng)用的電路圖和軟件流程??偨Y(jié)了使用ISD器件的注意事項(xiàng)。?
??? 關(guān)鍵詞: ISD語(yǔ)音處理器件? 信息段? 單片機(jī)? 定時(shí)器? 中斷
?
??? 對(duì)一些語(yǔ)音內(nèi)容不固定并要求現(xiàn)場(chǎng)錄音和放音的系統(tǒng),采用一般語(yǔ)音芯片實(shí)現(xiàn),錄放音的質(zhì)量難以控制。美國(guó)ISD(Information Storage Devices)公司的ISD系列芯片采用直接模擬存儲(chǔ)專(zhuān)利技術(shù),把語(yǔ)音信號(hào)以原始的模擬形式直接存儲(chǔ)在片內(nèi)EEPROM存儲(chǔ)器中,無(wú)需進(jìn)行A/D轉(zhuǎn)換和壓縮處理等,從而減少了失真、大大提高了錄放音質(zhì)量,并具有抗斷電、音質(zhì)好、使用方便、可反復(fù)錄放、無(wú)需專(zhuān)用的語(yǔ)音開(kāi)發(fā)工具、能隨意更改內(nèi)容和耗電省等優(yōu)點(diǎn),很適合于現(xiàn)場(chǎng)錄放音系統(tǒng)。?
??? 但是ISD器件只有地址輸入線(xiàn),在分段錄放音時(shí),其內(nèi)部各語(yǔ)音段的地址無(wú)法直接讀出。雖然通過(guò)專(zhuān)用的ISD開(kāi)發(fā)設(shè)備可以讀出地址,但無(wú)法實(shí)現(xiàn)現(xiàn)場(chǎng)多次重復(fù)的錄放音操作,不具有實(shí)時(shí)性。我們?cè)趯?shí)踐中,通過(guò)分析ISD的工作原理和內(nèi)部特性,用單片機(jī)的定時(shí)中斷來(lái)計(jì)算各段的時(shí)長(zhǎng)和起始地址,從而實(shí)現(xiàn)了分段錄音與組合放音。該方法已應(yīng)用在電纜故障自動(dòng)定位儀中。?
1 ISD 2500系列芯片簡(jiǎn)介?
??? ISD公司的2500系列芯片,按錄放時(shí)間60秒、75秒、90秒和120秒分成ISD2560、2575、2590和25120四個(gè)型號(hào)。ISD器件設(shè)有OVF(溢出)端,便于多個(gè)器件級(jí)聯(lián)。?
??? ISD2500系列片內(nèi)EEPROM容量都為480K,最多能分600段。四個(gè)型號(hào)的不同錄放時(shí)間是靠不同的輸入采樣率來(lái)實(shí)現(xiàn)的,它們分別為:8.0、6.4、5.3、4.0kHz。?
??? DIP器件封裝為28腳,各引腳功能如下:?
??? 1~7 A0/M0~A6/M6 地址/模式選擇?
??? 8~10 A7~A9 輸入地址線(xiàn)?
??? 11 AUX? IN 輔助輸入?
??? 12、13 VSSD、VSSA 數(shù)字地和模擬地?
??? 14、15 SP+、SP-? 揚(yáng)聲器輸出?
??? 16 VCCA 模擬信號(hào)電源正極?
??? 17、18 MIC、MIC REF 麥克風(fēng)輸入端和輸入?yún)⒖级?/P>
??? 19 AGC? 自動(dòng)增益控制?
??? 20、21 ANA IN、ANA OUT 模擬信號(hào)輸入和輸出?
??? 22? 溢出?
??? 23? 片選(低電平允許芯片工作)?? ?
??? 24 PD 芯片低功耗狀態(tài)控制?
??? 25? 錄放音結(jié)束信號(hào)輸出?
??? 26 XCLK 外部時(shí)鐘?
??? 27?? 錄/放控制選擇?
??? 28 VCCD 數(shù)字信號(hào)電源正極?
2 工作原理?
??? 2500系列有10個(gè)地址輸入端A0~A9,尋址能力可達(dá)1024位,地址空間為0~1023。其分配情況是:地址0~599作為分段用,地址600~767未使用,地址768~1023為工作模式選擇(即A8、A9均為高)。2500系列的地址線(xiàn)有兩種用途,一是作為工作模式控制,二是作為分段錄放音的起始段地址。當(dāng)最高位地址(MSB)A8、A9都為高電平時(shí)(即地址768~1023),地址端A0~A6就作為工作模式選擇端M0~M6,對(duì)應(yīng)7種工作模式。當(dāng)A8、A9任一位為低或都為低時(shí)(即地址0~599),只要在分段錄/放音操作前(不少于300ns)給地址A0~A9賦值,操作就從該地址開(kāi)始。?
??? 2500系列語(yǔ)音芯片將480K的EEPROM分為600個(gè)信息段,每段800個(gè)字節(jié)。作為一個(gè)整體單位進(jìn)行尋址和控制,應(yīng)給每個(gè)信息段分配一個(gè)供外部控制的地址,而不是對(duì)每個(gè)字節(jié)進(jìn)行尋址,否則至少需要19個(gè)地址端口。這樣,大大減少了信息檢索所需要的地址線(xiàn)。對(duì)較長(zhǎng)的語(yǔ)音信號(hào)可以跨越多個(gè)信息段進(jìn)行錄音,不受內(nèi)部存儲(chǔ)信息段的限制,且內(nèi)部的信息段地址會(huì)自動(dòng)增加。在每個(gè)語(yǔ)音段的尾部自動(dòng)增加一個(gè)結(jié)束標(biāo)志EOM,組合放音時(shí),通過(guò)檢測(cè)EOM來(lái)控制各語(yǔ)音段的結(jié)束和下一段的開(kāi)始。?
??? 每個(gè)信息段的錄放音時(shí)間等于總時(shí)間除以600。如ISD2560的總時(shí)間為60s,則每個(gè)信息段的錄放音時(shí)間為100ms;ISD25120的總時(shí)間為120s,則每個(gè)信息段的時(shí)間為200ms。因此可以利用該時(shí)間長(zhǎng)度作為一個(gè)段地址,通過(guò)單片機(jī)定時(shí)器的計(jì)時(shí)平行地映射信息段的地址,從而得到每段錄音的起始地址。這樣,就需要設(shè)置一個(gè)地址計(jì)數(shù)器。一般錄音從0地址開(kāi)始,首先通過(guò)CPU將它賦給A0~A9,然后通過(guò)單片機(jī)控制ISD啟動(dòng)錄音,同時(shí)啟動(dòng)單片機(jī)的定時(shí)器開(kāi)始計(jì)時(shí),每到一個(gè)信息段的時(shí)間,就給地址計(jì)數(shù)器加1。當(dāng)單片機(jī)停止控制ISD錄音時(shí),同時(shí)停止定時(shí)器計(jì)時(shí)。此時(shí)地址計(jì)數(shù)器的值即為該段語(yǔ)音的末地址,加1即為下一段語(yǔ)音的首地址,并將它存入EEPROM中,為下一將放音提供的地址信息。通過(guò)CPU將該地址賦給A0~A9,即可錄制下一段語(yǔ)音。依次下去,即可在錄制完所有語(yǔ)音段的同時(shí)得到各段的起始地址。如果不是從0地址開(kāi)始的語(yǔ)音段,只需將初始地址賦給A0~A9,加上地址計(jì)數(shù)器的值,即可得到語(yǔ)音段的末地址。這里不用同時(shí)保存各語(yǔ)音段的起始地址和結(jié)束地址,因?yàn)楦鱾€(gè)段是相鄰的,前一段的末地址加1即是本段的起始地址,且每個(gè)語(yǔ)音段的結(jié)尾均有EOM標(biāo)志,并可發(fā)出中斷。放音時(shí)利用它和保存在EEPROM中各語(yǔ)音段的起始地址即可按任意順序組合各個(gè)語(yǔ)音段。?
3 硬件電路設(shè)計(jì)?
??? 系統(tǒng)硬件電路框圖如圖1所示。ISD器件選用錄音時(shí)間為120s的ISD25120器件,以單片機(jī)為處理機(jī),外接控制每個(gè)語(yǔ)音段錄音開(kāi)始與停止的按鍵,外部存儲(chǔ)器EEPROM用于保存每個(gè)語(yǔ)音段首地址。ISD的外圍電路及其與單片機(jī)連接的硬件電路如圖2所示。
?
?
?
??? ISD與89C51的接口部分包含輸入地址線(xiàn)A0~A9、片選(=0選中ISD芯片)、芯片低功耗狀態(tài)控制PD、錄放音控制選擇(=0為錄音;=1為放音)、錄放音結(jié)束信號(hào)輸出,將它作為89C51外部中斷0的輸入信號(hào),放音時(shí)通過(guò)它告知本語(yǔ)音段結(jié)束,便于單片機(jī)立即播放另一個(gè)語(yǔ)音段;我們需要的語(yǔ)音總時(shí)間小于120s,溢出端未用;若需要總時(shí)間大于120s,可以級(jí)聯(lián)多個(gè)ISD25120,此時(shí)需要使用溢出端。ISD25120一共需要11根控制線(xiàn)和一個(gè)外部中斷口,這里11根控制線(xiàn)使用89C51的P1和P3的部分端口,若系統(tǒng)中其它電路占用了部分P1,則可使用其它I/O口擴(kuò)展器件(如82C55、373等)的擴(kuò)展I/O口來(lái)控制ISD25120。ISD25120的其它管腳所連電路為典型外圍器件配置,用于模擬語(yǔ)音的輸入輸出。?
4 軟件設(shè)計(jì)?
??? 按照前面的分析和硬件原理圖,軟件部分主要涉及啟動(dòng)錄音和停止錄音、啟動(dòng)放音和停止放音、檢測(cè)EOM信號(hào)的外部中斷0、定時(shí)中斷等六個(gè)子程序模塊。播放語(yǔ)音時(shí),語(yǔ)音段尾的信號(hào)觸發(fā)外部中斷0,進(jìn)入服務(wù)子程序。首先停止語(yǔ)音播放,然后設(shè)置下一段語(yǔ)音播放標(biāo)志。各個(gè)語(yǔ)音段的組合播放順序由主程序根據(jù)外部情況或設(shè)置情況自動(dòng)變動(dòng),如在電纜故障自動(dòng)定位儀中,測(cè)試出故障點(diǎn)后,根據(jù)故障點(diǎn)的距離組合存放數(shù)字的各個(gè)語(yǔ)音段進(jìn)行播放。定時(shí)中斷采用工作方式2,定時(shí)周期為5ms。為產(chǎn)生ISD25120每個(gè)信息段的200ms時(shí)間,設(shè)置一個(gè)定時(shí)計(jì)數(shù)器,計(jì)滿(mǎn)40次定時(shí)周期即得到200ms的時(shí)間,產(chǎn)生一次中斷。六個(gè)子程序模塊的軟件流程如圖3~圖8所示。?
?
?
?
?
?? ?? ??
?
5 本方法的特點(diǎn)?
??? (1)能進(jìn)行在系統(tǒng)現(xiàn)場(chǎng)錄音,隨錄隨放,修改語(yǔ)音方便。?
??? (2)修改錄音內(nèi)容時(shí),可以從其中任意一段開(kāi)始,修改其后的所有錄音內(nèi)容,不必從第一段開(kāi)始全部修改。這對(duì)一些需要廠(chǎng)家固定一些語(yǔ)音段的系統(tǒng)很有好處,將固定的語(yǔ)音段放置在前面的段落中,允許用戶(hù)錄制的放在后面,用戶(hù)修改錄音內(nèi)容時(shí)只需修改后面的語(yǔ)音段即可,不影響廠(chǎng)家錄制的語(yǔ)音。?
??? (3)分段靈活。單片ISD可分1~600個(gè)段,若多片級(jí)聯(lián)還可更多;各個(gè)錄音段的長(zhǎng)度任意,只要總錄音時(shí)間在所用器件的總時(shí)間之內(nèi)即可。?
??? (4)價(jià)格便宜。錄制語(yǔ)音時(shí),只需用軟件立即可得到各段的地址進(jìn)行錄音,不需專(zhuān)用的設(shè)備。?
6 使用ISD器件應(yīng)注意的幾個(gè)問(wèn)題?
??? (1)ISD語(yǔ)音段尾的EOM標(biāo)志并不是器件檢測(cè)到語(yǔ)音結(jié)束時(shí)自動(dòng)產(chǎn)生,實(shí)際是通過(guò)控制器件的工作方式來(lái)停止錄音而產(chǎn)生的。在錄音狀態(tài)下將和PD置高時(shí),則停止錄音,在語(yǔ)音段尾產(chǎn)生EOM標(biāo)志;同時(shí)ISD器件在播放時(shí)遇到段尾的EOM時(shí)也并不自動(dòng)停止播放,必須用中斷捕捉它后,再用軟件停止播放。?
??? (2)ISD器件的音頻信號(hào)輸出功率很小,并不能直接驅(qū)動(dòng)揚(yáng)聲器,需要加音頻功放,如LM386。同時(shí)ISD送出的信號(hào)有直流分量,直接加在LM386上,會(huì)使它處于飽和狀態(tài),無(wú)聲音輸出,需要通過(guò)電容耦合送入LM386,隔斷直流。?
??? (3)ISD的、、PD在接控制信號(hào)時(shí),一定要保證復(fù)位時(shí)為高電平。否則上電或復(fù)位時(shí)全為低,恰好處于錄音狀態(tài),會(huì)沖掉芯片中原來(lái)的錄音。?
參考文獻(xiàn)?
1 ISD(R),Single-Chip Voice Record/Playback Devices.ISD2560/75/90/120 Products,1999(WWW.isb.com)?
2 何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).北京:北京航空航天大學(xué)出版社,1992