如何在SoC設(shè)計(jì)中加入低開銷、低功耗的音頻處理功能
掃描二維碼
隨時(shí)隨地手機(jī)看文章
如果你打算設(shè)計(jì)一個包含數(shù)字音頻的SoC系統(tǒng),或者正在進(jìn)行這樣一個項(xiàng)目,那么花幾分鐘時(shí)間閱讀本文可以幫助你在各種技術(shù)參數(shù)之間做出更好的平衡,避免設(shè)計(jì)方向出現(xiàn)偏差,提高流片的成功率,從而節(jié)省數(shù)周的開發(fā)時(shí)間。我們將為你逐一分析設(shè)計(jì)備選方案,評估中的關(guān)鍵因素以及由此做出的決策。
消費(fèi)類音頻產(chǎn)品的歷史
消費(fèi)類音頻產(chǎn)品的歷史最早可以追溯到130年前,在開始的100年間,音頻回放只能采用模擬技術(shù)。那時(shí)采用數(shù)字技術(shù)的產(chǎn)品體積龐大,價(jià)格昂貴,對于消費(fèi)類產(chǎn)品來說也過于復(fù)雜。直到1982年,CD光盤和CD播放器的出現(xiàn)徹底改變了這種局面,黑膠唱片設(shè)備似乎一夜之間就消失了。
與此同時(shí),個人電腦的迅速普及使消費(fèi)類音頻產(chǎn)品與數(shù)字技術(shù)緊密結(jié)合在一起?;诖疟P和閃存的MP3(如iPOD)等數(shù)字音樂播放器已經(jīng)取代了磁帶設(shè)備。今后音頻產(chǎn)品的發(fā)展方向是什么呢?那就是更加真實(shí)的還原聲音。聲音還原技術(shù)一直在不斷的發(fā)展完善,從早期的單聲道到立體聲,再到用多個揚(yáng)聲器營造的3D環(huán)繞音效。短短幾年間,家庭影院系統(tǒng)已經(jīng)從5.1聲道進(jìn)化為10.1聲道。每次技術(shù)的飛躍都伴隨著更多聲道,更高的采樣位數(shù),以及更強(qiáng)的處理能力。
日趨復(fù)雜的音頻編解碼格式對性能的需求不斷增長,要求處理器的主頻也不斷提高。然而,提高主頻會給設(shè)計(jì)帶來一系列的問題,更高的主頻意味著更高的功耗,更多的發(fā)熱量,需要容量更大的電池,為了散熱而增加的風(fēng)扇也會增加產(chǎn)品成本,并會帶來令人討厭的噪音。SoC設(shè)計(jì)過程中,更高的處理器主頻同時(shí)會使時(shí)序收斂變得更困難。所有這些問題都應(yīng)該引起設(shè)計(jì)者的注意。
迄今為止,銷量最大的數(shù)字音頻播放器是移動電話。除了撥打電話的功能,現(xiàn)在的移動電話實(shí)際上都是小型的多媒體終端,既可以播放音視頻內(nèi)容,又能運(yùn)行包含了復(fù)雜音效的游戲,這些功能要求移動電話具有強(qiáng)勁的音頻處理能力,同時(shí)功耗又要盡可能的低,因?yàn)橄M(fèi)者總是希望他們購買的手機(jī)有足夠長的待機(jī)時(shí)間,同時(shí)希望MP3播放器在提供優(yōu)秀音質(zhì)的同時(shí)也能長時(shí)間播放。
伴隨著音頻的數(shù)字化,視頻也已經(jīng)完成了數(shù)字化。如今大多數(shù)的視頻播放設(shè)備都兼容多種音頻標(biāo)準(zhǔn)。在汽車音響領(lǐng)域,數(shù)字化也在如火如荼的進(jìn)行中。多年以前,CD被作為標(biāo)準(zhǔn)裝備裝入汽車,近年來,隨著高保真衛(wèi)星廣播的普及,數(shù)字收音機(jī)也進(jìn)入了汽車電子領(lǐng)域。在GPS導(dǎo)航設(shè)備中,需要文本到語音的轉(zhuǎn)換,某些GPS設(shè)備還兼具個人媒體播放器的功能。
音頻編解碼
編解碼格式是所有數(shù)字音頻應(yīng)用中的核心元素,它定義了模擬音頻信號如何數(shù)字化并被壓縮成比特流,以及比特流如何被解壓并還原為模擬音頻信號。
在消費(fèi)類產(chǎn)品領(lǐng)域最流行的壓縮算法是MP3格式,它于1991年同MPEG-1視頻標(biāo)準(zhǔn)一起推出,90年代中期,誕生了第一臺MP3播放器。隨后,廠商們不停在推廣其他可以提供更高保真度和更低比特率的算法格式,但MP3仍然在音頻標(biāo)準(zhǔn)中占有重要地位,當(dāng)前幾乎所有的消費(fèi)類產(chǎn)品都支持MP3格式。
大多數(shù)的音頻編解碼算法都采用有損壓縮來降低所需的比特率。有損壓縮可以減小數(shù)據(jù)交換和存儲的帶寬需求,從而降低成本,這也是廠商們采用有損壓縮的原因。然而,有損壓縮也會降低音頻的質(zhì)量,質(zhì)量下降的程度與壓縮算法有關(guān)。只要有足夠強(qiáng)大的處理能力,就可以將聲音損失控制在人耳無法分辨的水平,因此壓縮算法研究人員依然在不斷改進(jìn)他們的算法。不同的應(yīng)用需要根據(jù)自身特點(diǎn)在音頻質(zhì)量和帶寬需求之間作出平衡,造成了多種數(shù)字音頻編解碼格式并存的局面。
當(dāng)你開始考慮如何實(shí)現(xiàn)一種音頻編解碼算法時(shí),你實(shí)際上有4種備選方案
1. 在通用處理器上依靠軟件實(shí)現(xiàn)音頻編解碼。例如在PC上運(yùn)行的MP3播放器程序。
2. 利用專用的硬件實(shí)現(xiàn)音頻編解碼,早期的便攜MP3播放器采用這種方案。
3. 在DSP處理器上依靠軟件實(shí)現(xiàn)音頻編解碼。
4. 在基于通用處理器進(jìn)行擴(kuò)展的音頻專用處理器上用軟件實(shí)現(xiàn)音頻編解碼。
方案1,用一個通用處理器來實(shí)現(xiàn)所有系統(tǒng)功能,包括用戶界面,I/O和數(shù)字音頻編解碼。這個方案有以下幾個優(yōu)點(diǎn)。首先,音頻編解碼只是通用處理器上運(yùn)行的一段軟件程序,唯一的硬件開銷也許只是增加少量的指令內(nèi)存。其次,由于采用了軟件實(shí)現(xiàn)編解碼,可以實(shí)現(xiàn)多種編解碼算法。最后,當(dāng)出現(xiàn)新的編解碼算法時(shí),只需要升級軟件就可以支持。
這種方案也的缺點(diǎn)也很明顯。數(shù)字音頻對于暫時(shí)失靈很敏感,因?yàn)槿硕梢圆蹲降椒浅<?xì)小的錯誤。在這一點(diǎn)上音頻應(yīng)用比視頻應(yīng)用的要求更苛刻。在視頻應(yīng)用中,一個錯誤的像素往往不會被注意到,而音頻應(yīng)用中則不然。采用通用處理器來進(jìn)行音頻編解碼,由于處理器還會執(zhí)行其他的任務(wù),其帶寬并非音頻專用,這樣增加了音頻編解碼暫時(shí)失靈的概率。
除此以外,大多數(shù)的通用處理器沒有音頻專用指令,不能高效的執(zhí)行音頻編解碼程序,從而不得不提高處理器的主頻,在單位時(shí)間里執(zhí)行更多的指令來達(dá)到性能要求。
硬件實(shí)現(xiàn)編解碼
方案2,采用一顆性能相對較低的處理器搭配專門的音頻處理硬件,所有的音頻處理任務(wù)都由專用硬件來完成。通常,這塊硬件作為外設(shè)掛在系統(tǒng)總線上。音頻采樣由處理器通過總線送給編解碼硬件,或者由編解碼硬件通過DMA直接從內(nèi)存中讀取。在這種方案中系統(tǒng)總線也是共享的。
使用專用編解碼硬件的優(yōu)點(diǎn)在于針對某種特定的編解碼格式,它的面積和功耗與其他方案比較是最優(yōu)的。因此90年代中期的MP3播放器都采用這種方案。它的缺點(diǎn)是每種編解碼格式都要增加硬件模塊來支持。如圖1的設(shè)計(jì)中,為了支持3種編解碼格式,就必須在設(shè)計(jì)中增加3塊硬件邏輯。因此,在需要多格式音頻的設(shè)計(jì)中,這種方案就不再具有優(yōu)勢,而幾乎當(dāng)前所有的SoC設(shè)計(jì)都需要支持多格式音頻編解碼。其次,如果編解碼算法進(jìn)行了升級或者出現(xiàn)了bug,為了修復(fù)問題,整個SOC芯片就必須重新流片,而不可能通過軟件升級來修正錯誤。此外,實(shí)現(xiàn)新的編解碼算法時(shí),必須要設(shè)計(jì)新的硬件模塊,將它集成到系統(tǒng)設(shè)計(jì)中,并重新流片。
方案3,在通用DSP處理器上通過軟件來實(shí)現(xiàn)音頻編解碼,系統(tǒng)中同時(shí)包括一顆用來作控制的主處理器(這里的通用DSP處理器是指沒有專門針對音頻處理做過優(yōu)化的DSP處理器)。采用DSP處理器的方案有很多優(yōu)點(diǎn)。首先,DSP處理器中都有硬件乘法器,可以極大提高音頻編解碼程序的執(zhí)行效率。其次,因?yàn)椴捎密浖绞綄?shí)現(xiàn),只增加少量的存儲器開銷就可以支持多格式音頻編解碼。實(shí)現(xiàn)新的編解碼算法也僅僅需要編寫新的軟件,不必重新流片,從而延長產(chǎn)品的生命周期。
采用DSP的方案也有缺點(diǎn)。大多數(shù)DSP的C編譯器效率都比較低,所以一般不用DSP來做控制。系統(tǒng)的控制需要通用處理器來完成。而且,16或32位的DSP處理器對音頻處理來說并不是最理想的。雖然當(dāng)前大多數(shù)編解碼算法采用16位采樣,但在運(yùn)算的中間過程中為了避免舍入錯誤,需要留有一定余量。所以16位DSP處理器在實(shí)現(xiàn)復(fù)雜音頻算法時(shí)會帶來問題。使用雙精度整數(shù)計(jì)算可以避免問題,但效率又不夠高導(dǎo)致需要更高的處理器主頻。反過來,32位DSP處理器又不能被充分利用。實(shí)際上,對于音頻算法而言,24位DSP處理器是最適合的。
音頻專用RISC處理器
基于上述考慮,我們提出了第4種方案,即采用音頻專用處理器。基于通用處理器進(jìn)行音頻處理的擴(kuò)展,使處理器在高效執(zhí)行音頻編解碼程序的同時(shí),保持C編譯器的效率。圖2所示就是一個采用音頻專用處理器進(jìn)行編解碼的系統(tǒng)。
圖2:采用音頻專用處理器進(jìn)行編解碼的系統(tǒng)
這種設(shè)計(jì)方案有很多優(yōu)點(diǎn)。首先,音頻專用擴(kuò)展使處理器更加高效的執(zhí)行音頻算法,在較低的主頻下提供算法所需的性能,從而顯著降低系統(tǒng)功耗。與基于DSP的方案一樣,此方案便于實(shí)現(xiàn)多格式的音頻編解碼,也可以通過升級軟件來支持新的編解碼算法。它的不足之處在于大家對于音頻專用處理器的概念還很陌生,下面我們就來介紹一下音頻專用處理器。
Tensilica Hi-Fi2音頻處理引擎是基于32位Tensilica Xtensa RISC處理器經(jīng)過配置和擴(kuò)展得到的,它可以非常高效的完成音頻處理任務(wù)。顧名思義,Hi-Fi2音頻處理引擎是Tensilica第二代音頻處理器。Hi-Fi2音頻處理引擎中最關(guān)鍵的擴(kuò)展就是增加了兩個24位的硬件乘法器,它們可以大大提高音頻計(jì)算的速度。
然而,乘法器本身并不會減少執(zhí)行音頻算法需要的周期數(shù),周期數(shù)減少是因?yàn)?/SPAN>Hi-Fi2音頻處理引擎每個周期可以執(zhí)行1到2條指令。48位或56位寬的寄存器可以存放2個24位的采樣值。利用這些寄存器文件可以高效的處理立體聲音頻數(shù)據(jù)。Tensilica總共在Xtensa RISC處理器上添加了300條音頻專用指令,創(chuàng)建了一個靈活高效的音頻算法處理引擎。
一套優(yōu)秀的音頻SOC解決方案不僅限于高性能的硬件,還需要有編解碼軟件,而由于時(shí)間的原因,你可能并不打算自己編寫程序。雖然從互聯(lián)網(wǎng)上可以找到一些音頻處理程序,但是這些程序并沒有經(jīng)過優(yōu)化,執(zhí)行起來效率不高。其次,像Dolby音頻編解碼這樣需要授權(quán)的程序是很難在互聯(lián)網(wǎng)上找到的。目前流行的音頻編解碼算法都已經(jīng)移植到了Tensilica的Hi-Fi2音頻處理引擎上,而且支持的格式還在不斷增加,如圖3所示,所有這些編解碼程序都是用C語言編寫的。處理器的RISC基本指令和音頻擴(kuò)展指令都允許程序員繼續(xù)用C語言來編程,在保證性能的前提下,提高了軟件的可維護(hù)性。
圖3:目前流行的音頻編解碼算法都已經(jīng)移植到了Tensilica的Hi-Fi2音頻處理引擎上
Hi-Fi2音頻處理引擎是采用Tensilica可配置技術(shù),針對Xtensa LX2處理器的一套擴(kuò)展指令。Tensilica利用這些擴(kuò)展指令,配置出了Diamond 330Hi-Fi音頻處理器,因此在330Hi-Fi處理器上可以運(yùn)行所有基于Hi-Fi2音頻處理引擎的編解碼程序。Tensilica的Hi-Fi音頻處理引擎應(yīng)用于多項(xiàng)產(chǎn)品,在不同的工藝下得到了驗(yàn)證,出貨量已經(jīng)達(dá)到千萬。當(dāng)前的最主要的應(yīng)用還在移動電話領(lǐng)域,今后產(chǎn)品的應(yīng)用將會擴(kuò)展到視頻產(chǎn)品,消費(fèi)類廣播,超便攜PC等領(lǐng)域。