系統(tǒng)設(shè)計是一個復(fù)雜的過程,不僅僅是有IC拿來用就可以了,還有很多細(xì)節(jié)需要考慮。本文以高保真音樂重放系統(tǒng)為例介紹如何進(jìn)行芯片選型,以構(gòu)建符合市場需求的系統(tǒng)。
現(xiàn)代集成電路產(chǎn)業(yè)一直嚴(yán)格遵循著“摩爾定律”高速發(fā)展,芯片發(fā)展得越快、速度越高,對軟件系統(tǒng)的要求就越低。現(xiàn)在速度就是一切,無論是芯片運行速度、軟件開發(fā)速度,還是產(chǎn)品上市速度。但是有了芯片是否就足夠了呢?下面我們試著從一個相對比較簡單的高保真音樂重放設(shè)備入手,看看我們需要怎么利用市面流通的IC實現(xiàn)一個這樣的系統(tǒng)。
從信號處理和芯片設(shè)計的角度上看,音頻系統(tǒng)原理并不復(fù)雜,因此很多半導(dǎo)體廠商似乎都看不上音頻產(chǎn)品,而去追逐一些量大或者像高清視頻處理等高技術(shù)含量有技術(shù)門檻的產(chǎn)品。筆者在設(shè)計這個高保真音樂重放系統(tǒng)的時候曾經(jīng)和不同的國內(nèi)IC設(shè)計公司的設(shè)計部門溝通過,結(jié)果得到的答復(fù)都是以“很簡單沒問題”之類的回復(fù)搪塞過去,然而事實上到系統(tǒng)做出來后卻往往發(fā)現(xiàn)效果不盡如人意。可以說我們在開發(fā)這個系統(tǒng)的幾年時間里面由于芯片選型的問題,在硬件性能瓶頸上吃盡了苦頭。
以下是我們對處理器芯片的具體要求:1. 速度要在400MHz以上,最好能解碼APE C4000的碼率;2. 需要能支持USB 2.0 Host/SATA/SD卡;3. 需要支持網(wǎng)絡(luò);4. 具有128MB以上的RAM,越大越好;5. 具有256MB或以上的NAND Flash;6. 支持I2S多路輸出并可以支持Slave時鐘,支持最高768KHz采樣率,以及最高32位輸出;7. 最好有音頻數(shù)據(jù)后期處理能力;8. 有性能優(yōu)異的時鐘電路和DAC。
芯片能運行的核心速度對解碼效率有至關(guān)重要的影響,比如音頻無損壓縮APE C5000解碼方式對處理器的要求就很高,以英特爾ATOM 1.6G上網(wǎng)本為例,其解碼192k/C5000兩聲道音樂尚且無法連續(xù)播放,何況普通嵌入式系統(tǒng)?因此只能處理較低的碼率。無損壓縮和MP3不一樣,需要還原完全一致的數(shù)據(jù)流,處理器性能決定了解碼的效率,所以太低的核心頻率無法勝任此工作。
USB 2.0對硬件的要求相當(dāng)高,PHY兼容性是一個很大的問題,數(shù)據(jù)流的效率還是其次。同樣,SD卡接口兼容性也是目前國產(chǎn)芯片一個很頭疼的問題。SATA的需求把處理器周邊外設(shè)速度提到了一個較高的位置,畢竟不是誰都能夠做1.5G/3G PHY的。
系統(tǒng)運行要依存于NAND Flash中存儲的程序,但是NAND Flash發(fā)展速度卻比處理器發(fā)展的速度快。當(dāng)年定義NAND Flash的時候把ECC設(shè)計在外面,讓處理器永遠(yuǎn)落后NAND Flash一段時間,因此NAND Flash轉(zhuǎn)型的時候廠商會因為市場上購買不到芯片而無法出貨或者需要高價搶貨。另一方面,隨著RAM的改進(jìn)其成本越來越低,致使高成本SDRAM逐漸減產(chǎn),因此使用老內(nèi)存的處理器先天不足,其系統(tǒng)BOM成本比使用新RAM的系統(tǒng)成本高。所以處理器需要支持多種啟動方式而不僅限于NAND Flash,同時RAM應(yīng)順應(yīng)目前電腦主流,使用DDR2/DDR3等內(nèi)存,這樣的話更能達(dá)到低成本高收益。
最后一個最重要的問題就是音頻系統(tǒng)的出口I2S。不管什么數(shù)據(jù)流從哪里流入,都需要從I2S輸出,而這個數(shù)據(jù)流在任何情況下都不允許有任何數(shù)據(jù)的錯誤和流失,除非是處理器速度不夠。同時,處理器內(nèi)部的PLL無法產(chǎn)生我們所需要的I2S時鐘,因此外置時鐘成為必然,Slave I2S接口也是必不可少的。事實上,I2S在我們開發(fā)過程中碰到的問題最多,比如同步不準(zhǔn)確、開始播放時左右聲道反轉(zhuǎn)、播放過程中不定期左右聲道反轉(zhuǎn)、數(shù)據(jù)輸出丟幀等情況,都嚴(yán)重影響輸出的技術(shù)參數(shù),以致無法達(dá)到設(shè)計要求。
我們在這幾年產(chǎn)品設(shè)計過程中,走的彎路就是因為芯片細(xì)節(jié)了解不到位而造成的。因為任何廠家的開發(fā)系統(tǒng)都沒有直接說明是否能支持高清音樂格式,最高支持多少采樣率的音樂輸出,也無法直接評估其平臺是否能夠達(dá)到我們所需的性能指標(biāo),所以都必須根據(jù)我們的需求對I2S輸出電路進(jìn)行調(diào)整。為評估系統(tǒng),我們不得不做了大量的設(shè)計工作(包括軟硬件)之后才能開展評估工作。
芯片選擇需衡量多項性能參數(shù)
在設(shè)計過程中我們選擇過三星的芯片,也選擇過國產(chǎn)芯片,但是都因為種種問題不得不放棄,最后才定了目前的方案。三星的芯片I2S輸出位數(shù)不夠,支持的NAND Flash種類有限,SDRAM單位成本較高,USB host直到其ARM11產(chǎn)品都無法跟上所要求的速度,因此我們在第一批選型之后就放棄了。后來選擇了國產(chǎn)平臺,也是因為I2S FIFO深度不夠,造成了丟幀,另外由于USB PHY的問題,對閃存盤兼容性很差,其升級平臺也沒有解決,SD卡因為軟件的問題兼容性也不好,更致命的問題是因為系統(tǒng)不穩(wěn)定,處理器無法正常復(fù)位,或者運行一段時間之后出現(xiàn)NAND Flash無故丟失數(shù)據(jù)等問題,最后也無法使用。
產(chǎn)品最終贏在細(xì)節(jié),嘗試了種種帶硬傷的產(chǎn)品之后,我們最后不得不放棄了國產(chǎn)芯片,選擇了國外A廠家的產(chǎn)品。從A廠家的硬件系統(tǒng)看,可以得出的結(jié)果就是其硬件細(xì)節(jié)做得相當(dāng)好。我們測試其芯片發(fā)現(xiàn),其一致性很高,同時系統(tǒng)余量設(shè)計得很好。標(biāo)稱375MHz的芯片,在非最高核心電壓情況下基本都可以穩(wěn)定超頻到572MHz,高出標(biāo)稱頻率的50%,同時DDR2時鐘超頻60%,性能不俗。從寄存器設(shè)計來說,不少都是根據(jù)Linux系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)設(shè)計的,因此只要熟悉軟件就很容易熟悉其硬件。
在大規(guī)模數(shù)據(jù)吞吐的部分,A廠家使用了鏈接DMA,這個細(xì)節(jié)完美保證輸出數(shù)據(jù)流的連續(xù),最大限度保證了最重要的I2S數(shù)據(jù)輸出不會丟幀。我們測試的時候一邊解碼一邊通過SD卡進(jìn)行本地數(shù)據(jù)解壓,在CPU滿負(fù)荷的情況下都沒有出現(xiàn)丟幀,可見A廠家硬件的功力之強。
在此我們分析一下,為什么會丟幀。其實大部分系統(tǒng)都是完成數(shù)據(jù)流的一個傳輸,音頻解碼的數(shù)據(jù)流向就是從SD卡等媒體讀出原始碼流,然后經(jīng)CPU解碼之后送I2S輸出,這個過程有涉及到重要數(shù)據(jù)傳輸?shù)木褪敲襟w到RAM,再從RAM到I2S的過程,這些數(shù)據(jù)流都是DMA完成的,而瓶頸就在DMA切換的過程。Linux的文件系統(tǒng)由系統(tǒng)進(jìn)行緩存,對時序的要求不高,而I2S要求連續(xù)的數(shù)據(jù),就和I2S的FIFO有密切的關(guān)系,如果不是系統(tǒng)自動切換緩沖區(qū)的話,就要求CPU介入切換,而CPU的中斷響應(yīng)時間就會嚴(yán)重影響數(shù)據(jù)的連續(xù)性。比如I2S的FIFO是32個數(shù)據(jù),如果I2S的LRCK是192kHz,那么能夠給CPU的中斷時間最長就是32/2/192kHz=83μs,而且根據(jù)中斷機(jī)制,一般是FIFO剩下一半的時候申請中斷,那么時間就只有不到50μs,這個速度在普通Linux系統(tǒng)基本無法滿足需求,因此丟幀就是必然。IC廠家設(shè)計的時候指標(biāo)都是按96kHz的硬件指標(biāo)來設(shè)計,當(dāng)然無法滿足高端系統(tǒng)的要求了。A廠家的自動DMA鏈不需要CPU進(jìn)行數(shù)據(jù)的切換,而通過軟件劃分2塊或以上的數(shù)據(jù)(Ping pong buffer)讓DMA自動切換,如此就完美保證了輸出數(shù)據(jù)的連續(xù)性。對音響系統(tǒng)而言,只要I2S出現(xiàn)丟幀馬上就會被察覺,更無法通過儀器的檢測,所以這個細(xì)節(jié)如果做不到位是無法走向市場的。
另外A廠家的硬件包含了SATA接口以及兼容性和速度都無可挑剔的USB 2.0 host/SD卡支持,更出色的地方是,小小一個ARM9芯片還帶了EMAC,同時帶了兩個小單片機(jī),每個的速度是系統(tǒng)時鐘速度的一半,這個小單片機(jī)可以實現(xiàn)的功能遠(yuǎn)比普通MCU的功能多。如果嫌CPU速度不夠,還可以選擇引腳兼容的帶浮點DSP的片子,這個DSP的運算能力相當(dāng)于同等ARM9在2G以上的運算速度,這對數(shù)據(jù)后端處理有著至關(guān)重要的性能提升。A廠家的片子還提供TF卡啟動功能,這樣的話可以完美地避開NAND發(fā)展所帶來的問題,同時解決Linux在NAND建立的文件系統(tǒng)的啟動速度問題。
這里再說說時鐘電路。由于需要支持32K~192K采樣率,因此必須能夠生成對應(yīng)的時鐘,同時要求jitter低于50ps(處理器內(nèi)置PLL時鐘一般在200ps以上)。而對于DAC,很多國產(chǎn)芯片都因為集成的成本低而將DAC集成到CPU里面,但這樣做使得性能無法提高,比如THD+N最高只能到90dB左右,而目前世界頂級的DAC其THD+N達(dá)到驚人的-120dB,同時提供135dB的動態(tài)范圍。這樣高的性能對整個系統(tǒng)設(shè)計都有極其嚴(yán)格的要求,因此國外同類產(chǎn)品售價都不低于4,000美元。另外硬件系統(tǒng)設(shè)計最后的一個關(guān)鍵點就是PCB走線。
在軟件方面,系統(tǒng)需要覆蓋數(shù)十種優(yōu)化過的音頻解碼器,解碼輸出數(shù)字信號要經(jīng)過DSP后處理,另外還涉及到FPGA Verilog軟件編程、網(wǎng)絡(luò)UPNP協(xié)議控制、文件共享、遠(yuǎn)程播放/控制等多種協(xié)議,涵蓋范圍相當(dāng)廣泛,目前國內(nèi)基本上還沒有供應(yīng)商能進(jìn)行相關(guān)的設(shè)計和制作。
小結(jié)
音頻系統(tǒng)屬于典型的低頻模擬信號和高頻數(shù)字信號結(jié)合的系統(tǒng),因此能做好的廠家國際上都是屈指可數(shù),國內(nèi)更是罕見。經(jīng)過我們?nèi)甓嗟难邪l(fā),系統(tǒng)終于達(dá)到了國際中上游水平,產(chǎn)品聽感和國際一線品牌Linn Akurate DS相當(dāng),由于系統(tǒng)設(shè)計合理得當(dāng),在嚴(yán)格的聽音環(huán)境通過監(jiān)聽音箱和與市場價格在12,000元左右某知名歐洲品牌的DAC A/B對比,聽感更勝一籌。
評論
查看更多