音頻捕獲和播放正在成為許多基于微控制器 (MCU) 的應用程序的必要條件。但是,在保真度和編解碼器方面的音頻支持范圍非常廣泛。您可以使用基于簡單 8 位 MCU 的平臺托管支持音頻的應用程序,但高質(zhì)量的音頻可能需要數(shù)字信號控制器 (DSC) 或 32 位 MCU。本文將調(diào)查音頻領域的廣度,建議與不同級別的 MCU 性能相匹配的潛在應用,并指出可幫助您開始使用音頻元素的項目的現(xiàn)成評估套件。
讓我們先看看使用 8 位 MCU 可以完成什么。過去,為產(chǎn)品添加語音錄制和播放功能意味著使用數(shù)字信號處理器或?qū)S靡纛l芯片。現(xiàn)在,Microchip Technology發(fā)布了一份應用說明,重點介紹了使用自適應差分脈沖編碼調(diào)制 (ADPCM) 在 8 位PIC18F67J10 MCU 上處理簡單的語音編碼和解碼。ADPCM 編碼基于連續(xù)語音樣本高度相關的事實。該算法根據(jù)前一個樣本預測每個后續(xù)樣本,并且只對預測樣本和實際樣本之間的差異進行編碼。您當然不會使用 ADPCM 對音樂進行編碼,但該算法在語音應用中非常有效。
您會發(fā)現(xiàn)基于浮點數(shù)學和精度數(shù)據(jù)轉(zhuǎn)換器的 ADPCM 實現(xiàn)。這樣的實現(xiàn)顯然超出了 8 位 MCU 的能力。Microchip 開發(fā)了一種基于 4 位 ADPCM 數(shù)據(jù)的實現(xiàn)。8 位 MCU 可以支持 8 KHz 采樣率的單調(diào)音頻。
ADPCM 編碼 編碼
器的設計(圖 1)接受二進制補碼格式的 16 位數(shù)據(jù)流。您可以使用片上 10 位 A/D 轉(zhuǎn)換器 (ADC) 對來自麥克風的樣本進行編碼。解碼器采用 4 位 ADPCM 數(shù)據(jù)并生成 16 位二進制補碼輸出。您可以使用片上捕捉/比較/PWM (CCP) 外設將 PWM 信號驅(qū)動到輸出濾波器。
圖 1:ADPCM 編碼器框圖,其中 sp 是預測樣本,si 是線性輸入樣本,d 是差值,t 是 4 位 ADPCM 值。
有許多因素可能會限制此類應用在 8 位 MCU 上的性能,盡管 CPU 性能通常不是主要因素。例如,集成 ADC 的轉(zhuǎn)換速度和閃存的寫入速度將實現(xiàn)限制為 8 KHz 速率。事實上,Microchip 表示,語音功能可以在性能較低的 8 位PIC16 系列MCU 上實現(xiàn)。ADPCM 應用很容易適應 PIC18F67J10 MCU 的內(nèi)存占用。例如,解壓縮算法僅使用 128 KB 中的 484 字節(jié)可用于程序存儲。
Microchip 不為PIC18 系列MCU 提供以音頻為中心的開發(fā)套件,但您可以輕松地將其組合在一起。PICDEM開發(fā)板包括一個 PIC18 MCU 和一個支持dsPIC30F DSP的MCU 或數(shù)字信號控制器 (DSC)。將語音播放 PICtail Plus 子板添加到套件中,您就可以進行音頻實驗了。
如果將任務的編碼部分排除在外,那么 8 位 MCU 的音頻任務能力要強得多。例如,您可以設計一個產(chǎn)品,將預先錄制的語音片段作為語音提示播放給最終用戶。您單獨創(chuàng)建示例,只需使用 MCU 解碼數(shù)據(jù)并輸出 PWM 信號。
16 位音頻應用程序
升級到 16 位 MCU,您可能會期望您所針對的音頻應用類型會有顯著提升。然而,實際上,差異并不像您想象的那么大。正如我們剛剛討論的,數(shù)據(jù)轉(zhuǎn)換時間和內(nèi)存訪問速度等特性決定了音頻能力。您得到的是額外的免費 MCU 周期來托管手頭應用程序的其他元素。
讓我們看看瑞薩最新的 16 位 MCU 系列——RL78 系列。該 MCU 系列針對包括電池供電設備在內(nèi)的低功耗應用進行了優(yōu)化。該設計提供 41 Dhrystone MIPS (DMIPS),最大時鐘速度為 32 MHz。這種性能水平使其僅次于低端 32 位 MCU,而且實際上比某些 MCU 更快。
瑞薩電子發(fā)布了一份應用說明,重點介紹在 ADPCM 應用中使用 RL78。編碼器使用集成的 10 位 A/D 轉(zhuǎn)換器對輸入進行采樣。與我們之前討論的 Microchip 示例一樣,該實現(xiàn)以 8 KHz 采樣率創(chuàng)建 4 位 ADPCM 數(shù)據(jù)。解碼器可以以 11.025 KHz 的采樣率運行。您可以使用RSK RL78/G13開發(fā)人員套件(圖 2)
對 Renesas 的 ADPCM 應用程序進行試驗。該套件不是針對音頻的,但它確實集成了許多以音頻為中心的功能,包括單音和立體聲音頻放大器。該板還包括一個麥克風輸入和前置放大器以及一個用于數(shù)字麥克風的接口。
圖 2:用于低功耗 RL78 MCU 的 Renesas 開發(fā)套件包括單音和立體聲放大器以及麥克風輸入。
遷移到 16 位 MCU 的另一個好處是可以選擇更廣泛的編碼算法,這些算法更占用 CPU 資源,可以提供更好的音頻質(zhì)量或更高級別的壓縮,這意味著您可以在可用內(nèi)存中存儲更多音頻。
編解碼器選擇
例如,讓我們考慮 Microchip PIC24 系列MCU。對于編碼和解碼應用,Microchip 提供對 ADPCM、G.711、G.726A 和 Speex 編解碼器的支持。實際上有更多的編解碼器選擇,但列出的編解碼器是免版稅的。
G.711 是廣泛用于電話應用的 ITU(國際電信聯(lián)盟)標準。該標準規(guī)定了 8 位樣本、8 KHz 采樣率,并使用 PCM 算法。
G.726A 也是 ITU 標準,基于 ADPCM。該標準規(guī)定了 8 KHz 采樣率,但在樣本大小方面提供了靈活性,并提供了 16、24、32 或 40 Kbit/s 數(shù)據(jù)速率的選擇。
Speex 是一種開源編解碼器,專為 IP 語音 (VoIP) 應用程序而開發(fā)。編解碼器基于代碼激勵線性預測 (CELP) 算法。該編解碼器可以支持 8、16 和 32 KHz 采樣率。
通常,G.711 提供了我們討論過的選項中質(zhì)量最好的。Microchip 表示,相對于 PIC24 MCU,它需要大約 60 MIPS 才能實現(xiàn)。根據(jù)所選的編碼選項,G.726A 編解碼器可能需要 16 到 40 MIPS。Speex 編解碼器在某些情況下可以在質(zhì)量方面與 G.726A 相媲美,并且需要少于 16 MIPS。
根據(jù) Microchip 的說法,G.711 編解碼器需要 8 KB 來存儲 1 秒的語音。G.726A 編解碼器的要求范圍為 2 到 5 KB 以存儲一秒。同時,Speex 編解碼器只需要 1 KB 即可存儲一秒鐘的語音。
添加 DSP 功能
Microchip 實際上將 PCI24 系列與dsPIC33 DSC組合在一起系列(圖 3),因為這些 IC 共享相同的 CPU 架構(gòu),盡管后者增加了對 DSP 應用程序的數(shù)學支持。在音頻應用方面,通過移動到 DSC 來查看您添加的內(nèi)容很有趣。
dsPIC33 在支持的編解碼器方面并沒有增加太多,盡管您將再次釋放可用于應用程序其他方面的 CPU 周期。但是,DSC 允許您使用 Microchip 的自動增益控制庫,它會在編碼過程之前自動調(diào)整語音信號的幅度。該功能在揚聲器和麥克風之間的距離變化的應用中特別有用,例如揚聲器電話。
Microchip dsPIC33 IC 還可以使用該公司的語音和音頻快進工具。設計團隊在開發(fā)過程中使用該工具實時控制以音頻為中心的算法,例如噪聲抑制、回聲消除和均衡。先前的功能也在庫中實現(xiàn)。此外,基于 GUI 的語音工具生成可移植到 PIC33 DSC 的代碼。
Microchip 提供了一個全面的以音頻為中心的開發(fā)工具集(圖 3),用于基于 PIC24 和 dsPIC33 的設計。Explorer 16通用開發(fā)板支持這兩個 MCU 系列。您可以通過Audio PICtail Plus添加音頻支持該產(chǎn)品附帶的子卡和軟件。該組合支持 16 位和 24 位音頻,包括用于存儲音頻的 4 Mb 串行閃存,并包括一個用于解調(diào)來自 MCU 的 PWM 輸出的低通濾波器。
圖 3:對于 dsPIC MCU 系列,Microchip 提供了一組強大的以音頻為中心的庫,可以通過基于 GUI 的語音和音頻快進開發(fā)工具進行管理。
32 位和音樂
現(xiàn)在讓我們轉(zhuǎn)到 32 位空間。如您所料,音樂通過 32 位 MCU 進入畫面。通常,MCU 無法將音樂實時編碼為 MP3 或 WMA(Windows Media Audio)等格式。但是 32 位 MCU 可以處理完美的音樂解碼,以及我們之前討論的所有音頻應用。如果要實現(xiàn)編碼,則需要使用專用的編解碼器 IC。
當您進入音樂領域時,您通常會超越片上外圍設備的能力來生成所需的音頻質(zhì)量。MCU 和 DAC 的組合可以處理具有 32 到 48 KHz 采樣率的 16 到 24 位音頻。考慮 32 位空間后,您還將看到以音頻為中心的 MCU 產(chǎn)品。例如,Atmel 提供AT32UC3 系列32 位 MCU,有通用版本和音頻專用版本。該產(chǎn)品基于 AVR MCU 內(nèi)核。
音頻 MCU 的一個示例是AT32UC3A0512AU集成 512 KB 閃存和 64 KB RAM 的 MCU。音頻 MCU 帶有設備執(zhí)行許可算法(如 MP3、WMA 和 AAC 解碼器)所需的標識號。MCU 集成了便攜式音樂播放器所需的完整功能集,例如支持閃存卡和強大的 USB 堆棧。
Microchip 還在其基于 MIPS 內(nèi)核的32 位 PIC32 MCU 系列上支持音樂應用。32 位 MCU 不支持 DSPIC33 可用的增益控制庫或語音和音頻快進開發(fā)工具。但是,32 位產(chǎn)品支持我們在此討論的與 Microchip MCU 相關的所有其他編解碼器。
正如您所料,Microchip 為 32 位 MCU 提供了許多開發(fā)工具,這些工具將在音頻和音樂項目中派上用場。PIC32 音頻開發(fā)板(圖 4)將PIC32MX795F512 MCU與 512 KB 閃存和 128 KB SRAM 集成在一起。該板還包括一個可以處理實時音樂編碼和解碼的 Wolfson 編解碼器。Microchip 還支持通過開源 Helix MP3 解碼器庫在 PIC32 上解碼
圖 4:Microchip 基于 PIC32 的音頻開發(fā)板與 iPod PICtail 配對,其中包括一個用于 Apple iPod 的對接連接。
開發(fā)板包括一個與 iPod 上使用的 Apple MFi 接口兼容的連接器。Microchip 還提供名為 iPod PICtail Plus 的配套產(chǎn)品,其中包括一個用于 iPod 的基座。
如您所見,鑒于 MCU 供應商提供的工具和庫的廣泛性,向基于 MCU 的系統(tǒng)設計添加音頻功能相對簡單。您必須對給定類別的 MCU 可以支持的音頻質(zhì)量抱有現(xiàn)實的期望來處理這樣的設計。您會發(fā)現(xiàn)即使是非常低端的 MCU 也可以處理短音頻片段的播放。隨著處理能力的提高,您可以添加編碼并最終支持音樂。
評論
查看更多