基于USB HOST音頻解碼器的數(shù)字音頻系統(tǒng)設(shè)計
以往在設(shè)計數(shù)字音頻系統(tǒng)時,需要工程師具備相關(guān)的知識和經(jīng)驗,并且在軟件開發(fā)方面也要花費大量的時間和精力。ROHM公司的USB HOST音頻解碼器大大簡化了設(shè)計流程,軟件解碼都由芯片內(nèi)部實現(xiàn),設(shè)計者可以很輕松地構(gòu)建數(shù)字音頻系統(tǒng)。
傳統(tǒng)的CD播放系統(tǒng)、MP3播放器的設(shè)計通常需要存儲器控制器、解碼器、DAC、系統(tǒng)控制器等,這些模塊分散在各個IC中,硬件和軟件設(shè)計都比較復(fù)雜。而USB HOST音頻解碼器將這些功能集成于單芯片中,外部僅需少量的晶振和阻容元件,大大降低了成本,而且可靠性提高。
芯片功能
ROHM公司的USB HOST音頻解碼器中所有的解碼工作都是由硬件自動完成的,不同于其它內(nèi)嵌CPU的設(shè)計方案,減少了軟件編程的復(fù)雜度。內(nèi)部集成了USB和SD卡控制器,可以直接訪問存儲器中的文件。芯片按Unicode編碼對存儲器內(nèi)的音樂文件排序,并按順序播放。內(nèi)置了FAT文件系統(tǒng),可以自動區(qū)分音樂文件和非音樂文件。芯片還可以自動跳讀損壞文件,來防止產(chǎn)生噪音。芯片內(nèi)置了鍵盤控制器,可以外接4 X 3按鍵矩陣。音頻輸出支持模擬輸出和數(shù)字輸出。模擬輸出時可直接連接揚聲器放大器,并且內(nèi)置了7種音效均衡器,在輸出時可以通過I2C總線來選擇。數(shù)字輸出支持高通用性的I2S BUS和SPDIF,可以很方便地連接到下一級數(shù)字信號處理電路中。芯片內(nèi)置了一個I2C總線接口,可以與微型控制器進行通訊。USB HOST音頻解碼器的功能框圖見圖1。
圖1: USB HOST音頻解碼器功能框圖。
芯片可執(zhí)行的音樂文件操作包括:播放、暫停、停止、快進/快退、跳到下一曲/上一曲、重復(fù)播放、隨機播放、音量調(diào)節(jié)、文件瀏覽、讀取ID3信息等。
該芯片具有三種工作模式,可通過功能引腳來選擇:
模式1也叫“獨立模式”。芯片工作時不需要外接微型控制器,可以作為主機直接播放存儲器中的音樂文件,通過內(nèi)置的鍵盤控制器讀取外部的按鍵操作來選擇播放模式。芯片還內(nèi)置了7個LED驅(qū)動接口,通過LED豐富的表現(xiàn),可以清楚地了解到其工作模式。在該模式下芯片還支持自動播放功能,上電后會自動讀取和播放存儲器中的音樂文件,不需要外部干預(yù)。
模式2和模式3稱為“從動模式”。芯片需要外接微型控制器,通過I2C總線傳輸指令,設(shè)計人員需要編寫相應(yīng)的控制軟件。這兩種模式的實現(xiàn)相對于模式1復(fù)雜一些,但可以構(gòu)建更高性能的系統(tǒng)。其中,模式2的工作流程類似于模式1的按鍵輸入,需要通過接收微型控制器發(fā)出的指令執(zhí)行"PLAY"、"PAUSE"等操作。在模式3中,芯片通過I2C總線將存儲器中的音樂文件的位置發(fā)送給微型控制器,然后控制器通過指定文件的位置來選擇播放。播放時,芯片會每隔100ms讀取播放時間,通過LCD可以將曲目的播放時間、曲名等信息顯示出來。在這兩種模式中,芯片還具有RESUME功能,在下次播放時可從上次停止的地方繼續(xù)播放。
設(shè)計實現(xiàn)
本文將介紹使用ROHM的USB HOST音頻解碼器BU9437AKV和NEC的16位單片機uPD1166組成的數(shù)字音頻系統(tǒng)的設(shè)計實例。BU9437支持MP3和WMA文件解碼,具有上面所述的USB HOST音頻解碼芯片的所有功能。
1.硬件設(shè)計
硬件電路主要參考BU9437的從動模式來設(shè)計,通過I2C總線接收MCU發(fā)來的控制信息,實現(xiàn)模式2和模式3的功能。
BU9437配置了SD卡和USB接口,同時為了保護USB設(shè)備在熱插拔的過程中不受到損壞,我們還設(shè)計了USB保護開關(guān),使用的也是ROHM的USB High Side Switch芯片。音頻輸出使用的是模擬立體聲輸出,外接了一個耳機功放,可以通過耳機或有源音箱來收聽聲音。MCU外接了一個五向的開關(guān),可以方便地進行菜單的選擇。LCD為16 X 2的字符型點陣液晶,可以顯示功能菜單、文件信息等簡單畫面。芯片通過I2C總線與MCU通訊。硬件系統(tǒng)框圖見圖2,BU9437應(yīng)用電路見圖3。
圖2:USB HOST數(shù)字音頻系統(tǒng)框圖[!--empirenews.page--]
圖3:U9437應(yīng)用電路圖
2.軟件設(shè)計
軟件的設(shè)計是利用MCU的鍵盤中斷來判斷并識別鍵值,主程序循環(huán)查詢鍵值及BU9437的狀態(tài),根據(jù)鍵值向BU9437發(fā)送不同的命令,同時在LCD上顯示BU9437的工作狀態(tài)等信息。主程序流程圖見圖5。
圖5:軟件流程圖。
導(dǎo)航鍵的操作使用中斷來處理,當(dāng)有任何一個按鍵被按下時產(chǎn)生按鍵中斷,在中斷程序中除了防抖之外還要判斷按鍵的優(yōu)先級,中斷程序中將直接得到按鍵的鍵值。
液晶顯示模組有8位數(shù)據(jù)線,編寫了專用的子程序用來發(fā)送顯示數(shù)據(jù)。
USB HOST 芯片的控制是通過I2C總線來實現(xiàn)的,軟件還設(shè)計了相應(yīng)的I2C通訊程序,使其滿足I2C總線的通訊協(xié)議,通訊時序見圖4。
圖4:I2C總線通訊時序。
3. 設(shè)計注意事項
1. USB HOST芯片需要外接一個16.9344MHz的晶振,如果使用無源晶振應(yīng)注意該晶振的起振條件,選擇合適的震蕩電路,保證芯片上電后晶振能正常工作。
2. 選擇模擬音頻作為輸出時,在PCB設(shè)計時最好將模擬地和數(shù)字地分開,并且在電源輸入時加大容量的濾波電容或鉭電容,可以很好地抑制噪音。
3. 為了增加軟件的可靠性,當(dāng)讀取寄存器的值時,讀取到的第一個字節(jié)都是系統(tǒng)的忙閑狀態(tài),每次讀取時軟件都要處理此字節(jié)。
本文小結(jié)
ROHM公司的USB HOST音頻解碼芯片不僅適合于車載級應(yīng)用,還能用于衛(wèi)生間、保健設(shè)備等通常與音樂無關(guān)的設(shè)備,可以簡單地播放出治療音樂、自然環(huán)境音等。另外,還可以用于娛樂設(shè)備的音樂、效果音的播放,以及公共交通的車內(nèi)廣播等語音發(fā)聲。這種情況下,語音數(shù)據(jù)保存在USB存儲器、SD存儲卡中,因此需要更新語音數(shù)據(jù)時,即快速又方便。