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