音頻系統(tǒng)芯片選擇多項(xiàng)性能參數(shù)詳解
產(chǎn)品最終贏在細(xì)節(jié),嘗試了種種帶硬傷的產(chǎn)品之后,我們最后不得不放棄了國(guó)產(chǎn)芯片,選擇了國(guó)外A廠家的產(chǎn)品。從A廠家的硬件系統(tǒng)看,可以得出的結(jié)果就是其硬件細(xì)節(jié)做得相當(dāng)好。我們測(cè)試其芯片發(fā)現(xiàn),其一致性很高,同時(shí)系統(tǒng)余量設(shè)計(jì)得很好。標(biāo)稱(chēng)375MHz的芯片,在非最高核心電壓情況下基本都可以穩(wěn)定超頻到572MHz,高出標(biāo)稱(chēng)頻率的50%,同時(shí)DDR2時(shí)鐘超頻60%,性能不俗。從寄存器設(shè)計(jì)來(lái)說(shuō),不少都是根據(jù)Linux系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的,因此只要熟悉軟件就很容易熟悉其硬件。
在大規(guī)模數(shù)據(jù)吞吐的部分,A廠家使用了鏈接DMA,這個(gè)細(xì)節(jié)完美保證輸出數(shù)據(jù)流的連續(xù),最大限度保證了最重要的I2S數(shù)據(jù)輸出不會(huì)丟幀。我們測(cè)試的時(shí)候一邊解碼一邊通過(guò)SD卡進(jìn)行本地?cái)?shù)據(jù)解壓,在CPU滿負(fù)荷的情況下都沒(méi)有出現(xiàn)丟幀,可見(jiàn)A廠家硬件的功力之強(qiáng)。
在此我們分析一下,為什么會(huì)丟幀。其實(shí)大部分系統(tǒng)都是完成數(shù)據(jù)流的一個(gè)傳輸,音頻解碼的數(shù)據(jù)流向就是從SD卡等媒體讀出原始碼流,然后經(jīng)CPU解碼之后送I2S輸出,這個(gè)過(guò)程有涉及到重要數(shù)據(jù)傳輸?shù)木褪敲襟w到RAM,再?gòu)腞AM到I2S的過(guò)程,這些數(shù)據(jù)流都是DMA完成的,而瓶頸就在DMA切換的過(guò)程。Linux的文件系統(tǒng)由系統(tǒng)進(jìn)行緩存,對(duì)時(shí)序的要求不高,而I2S要求連續(xù)的數(shù)據(jù),就和I2S的FIFO有密切的關(guān)系,如果不是系統(tǒng)自動(dòng)切換緩沖區(qū)的話,就要求CPU介入切換,而CPU的中斷響應(yīng)時(shí)間就會(huì)嚴(yán)重影響數(shù)據(jù)的連續(xù)性。比如I2S的FIFO是32個(gè)數(shù)據(jù),如果I2S的LRCK是192kHz,那么能夠給CPU的中斷時(shí)間最長(zhǎng)就是32/2/192kHz=83µs,而且根據(jù)中斷機(jī)制,一般是FIFO剩下一半的時(shí)候申請(qǐng)中斷,那么時(shí)間就只有不到50µs,這個(gè)速度在普通Linux系統(tǒng)基本無(wú)法滿足需求,因此丟幀就是必然。IC廠家設(shè)計(jì)的時(shí)候指標(biāo)都是按96kHz的硬件指標(biāo)來(lái)設(shè)計(jì),當(dāng)然無(wú)法滿足高端系統(tǒng)的要求了。A廠家的自動(dòng)DMA鏈不需要CPU進(jìn)行數(shù)據(jù)的切換,而通過(guò)軟件劃分2塊或以上的數(shù)據(jù)(Ping pong buffer)讓DMA自動(dòng)切換,如此就完美保證了輸出數(shù)據(jù)的連續(xù)性。對(duì)音響系統(tǒng)而言,只要I2S出現(xiàn)丟幀馬上就會(huì)被察覺(jué),更無(wú)法通過(guò)儀器的檢測(cè),所以這個(gè)細(xì)節(jié)如果做不到位是無(wú)法走向市場(chǎng)的。
另外A廠家的硬件包含了SATA接口以及兼容性和速度都無(wú)可挑剔的USB 2.0 host/SD卡支持,更出色的地方是,小小一個(gè)ARM9芯片還帶了EMAC,同時(shí)帶了兩個(gè)小單片機(jī),每個(gè)的速度是系統(tǒng)時(shí)鐘速度的一半,這個(gè)小單片機(jī)可以實(shí)現(xiàn)的功能遠(yuǎn)比普通MCU的功能多。如果嫌CPU速度不夠,還可以選擇引腳兼容的帶浮點(diǎn)DSP的片子,這個(gè)DSP的運(yùn)算能力相當(dāng)于同等ARM9在2G以上的運(yùn)算速度,這對(duì)數(shù)據(jù)后端處理有著至關(guān)重要的性能提升。A廠家的片子還提供TF卡啟動(dòng)功能,這樣的話可以完美地避開(kāi)NAND發(fā)展所帶來(lái)的問(wèn)題,同時(shí)解決Linux在NAND建立的文件系統(tǒng)的啟動(dòng)速度問(wèn)題。
這里再說(shuō)說(shuō)時(shí)鐘電路。由于需要支持32K~192K采樣率,因此必須能夠生成對(duì)應(yīng)的時(shí)鐘,同時(shí)要求jitter低于50ps(處理器內(nèi)置PLL時(shí)鐘一般在200ps以上)。而對(duì)于DAC,很多國(guó)產(chǎn)芯片都因?yàn)榧傻某杀镜投鴮AC集成到CPU里面,但這樣做使得性能無(wú)法提高,比如THD+N最高只能到90dB左右,而目前世界頂級(jí)的DAC其THD+N達(dá)到驚人的-120dB,同時(shí)提供135dB的動(dòng)態(tài)范圍。這樣高的性能對(duì)整個(gè)系統(tǒng)設(shè)計(jì)都有極其嚴(yán)格的要求,因此國(guó)外同類(lèi)產(chǎn)品售價(jià)都不低于4,000美元。另外硬件系統(tǒng)設(shè)計(jì)最后的一個(gè)關(guān)鍵點(diǎn)就是PCB走線。
在軟件方面,系統(tǒng)需要覆蓋數(shù)十種優(yōu)化過(guò)的音頻解碼器,解碼輸出數(shù)字信號(hào)要經(jīng)過(guò)DSP后處理,另外還涉及到FPGA Verilog軟件編程、網(wǎng)絡(luò)UPNP協(xié)議控制、文件共享、遠(yuǎn)程播放/控制等多種協(xié)議,涵蓋范圍相當(dāng)廣泛,目前國(guó)內(nèi)基本上還沒(méi)有供應(yīng)商能進(jìn)行相關(guān)的設(shè)計(jì)和制作。
小結(jié)
音頻系統(tǒng)屬于典型的低頻模擬信號(hào)和高頻數(shù)字信號(hào)結(jié)合的系統(tǒng),因此能做好的廠家國(guó)際上都是屈指可數(shù),國(guó)內(nèi)更是罕見(jiàn)。經(jīng)過(guò)我們?nèi)甓嗟难邪l(fā),系統(tǒng)終于達(dá)到了國(guó)際中上游水平,產(chǎn)品聽(tīng)感和國(guó)際一線品牌Linn Akurate DS相當(dāng),由于系統(tǒng)設(shè)計(jì)合理得當(dāng),在嚴(yán)格的聽(tīng)音環(huán)境通過(guò)監(jiān)聽(tīng)音箱和與市場(chǎng)價(jià)格在12,000元左右某知名歐洲品牌的DAC A/B對(duì)比,聽(tīng)感更勝一籌。
評(píng)論