• 4

USB介面DAC理論與實際經驗

goldbingo wrote:
很有趣的是不同的介面,最終解決方案都很類似

其實只要把數位檔塞進串流機內部的 SSD, 走 PCI-E or MIMO bus, 連接到 FPGA/ESS or AKM (eversolo A6). 這樣資料輸送速度, 遠高於播放速度, 就沒有 resend + paket alignment 造成的 jitter 問題.

另外能用軟體解問題, 就盡量用軟體. roon RAAT 不需要你換機器, 只要串流機能更新認證的 RAAT 韌體, 就能連接 roon server.

2000 年時執行一個觸控平板電腦 (Thin Client) 專案, 觸控板介面是 PS/2, 用的 transmeta CPU+南僑晶片沒有 PS/2 input. HW RD 想兜一個線路來解, 而我是寫一個 pseudo PS/2 Win95 Device Driver, 把觸控板的 X,Y 座標值, 轉化成 PS/2 格式, 餵給 Win95 來解決問題.

2003 年公司接 Toshiba 筆電代工單, 臨時要求多塞一顆 US$ 30 的色彩處理器, BOM Cost 越低越好. 我看過那顆處理器規格書, 發現它是顆 RGB Palette 轉換器, 於是弄一個直接修改 NB VGA 的 RGB Curver 程式, 就解決了.

2007 年 CEO 弄到一批很便宜的 LCD 面板, 拿來做 EPC 第一代. 只不過該面板實體解析度是 800x480, 而 WINXP 只支援 800x600. 造成一些程式最下面的命令鍵沒顯示, 客服被罵到臭頭. 我翻閱 Intel VGA 紅皮書, 改出一個 800x480 全螢幕模式, 才消停下來. 後來 EPC 大賣, 一些面板大廠主動與公司合作後, 就拿到便宜又正常的面板.

所以要先找出問題的根源, 才能用不同方法去解它.
S/PDIF+光纖隔離+PLL 或 Asynchronous USB + USB光耦合隔離 + buffer + reclock,理論上都能大幅降低或完全排除來自前端的jitter和訊號/共地等雜訊干擾,這很容易懂也容易做到,看似很完美但實務上DAC仍可能(不一定)被前端的jitter干擾,為什麼? 前端還可能透過甚麼路徑干擾後端DAC?

查得到的可能原因是: Jitter carried through digital data

這點很少被提到但很有趣,簡單講就是前端的jitter一但進入DAC機後DAC相關線路就會產生與jitter相關的 "地雜訊",即使reclock的jitter很小但Clock本身是個類比訊號有上升/下降時間,當地線或轉態位準被該jitter導致的ground loop noise干擾時0/1轉態的timing就會產生變化而產生額外的jitter ..... 詳細說明請參以下連結:

https://cdn.shopify.com/s/files/1/0660/6121/files/UpTone-J.Swenson_EtherREGEN_white_paper.pdf?v=1583429386

註: much of he following information applies not just to Ethernet, but also to any digital audio data delivery system(Ethernet,USB,I2S,S/PDIF)

當然抗干擾能力越強的DAC機受Jitter carried through digital data的影響越小,獨立DAC機通常比串流DAC一體機不易被串流/DDC和網路干擾
宅男工程師

jitter 有一個原因是, 數位檔的 sample rate 44.1/48/96 kHz 不高, 造成波形微幅變形, 在靈敏度高的系統中, 比較容易聽出相位移動的模糊感.

2025-06-11 17:28
https://www.diyaudio.com/community/threads/asynchronous-i2s-fifo-project-an-ultimate-weapon-to-fight-the-jitter.192465/
PY8888 wrote:
Jitter carried through digital data...(恕刪)

這篇white paper只把故事講了一半,訊號就是能量,一定得有個地方接收感知,最後流到地去。問題是能量有多少?文章中未提及。

我無法否認有這麼個路徑,但沒有實際數據佐證影響量多少,也同樣讓我難以完全被說服。

(自己說了半天好像什麼也沒說 )
flying_fish wrote:
https:...(恕刪)

Asynchronous USB已經同樣在做這件事,電路裡會有個buffer(FIFO)。一邊由USB資料流入,另一邊用I2S的clock取出,傳送出去到DAC。

送出去的clock與data,都與送進來的USB信號jitter無關。
flying_fish

這東西就是你提到的最佳解法。

2025-06-11 12:18
goldbingo
goldbingo 樓主

[讚][拇指向上]

2025-06-11 12:20
goldbingo wrote:
問題是能量有多少?文章中未提及。我無法否認有這麼個路徑,但沒有實際數據佐證影響量多少

我覺得白皮書說明已很詳細淺顯易懂,對DAC輸出影響的 "量" 與干擾大小(如jitter)和DAC機PCB layout、抗干擾能力有關,非固定也無法計算,每種組合都是個案,有理論路徑就有可能對DAC輸出有影響甚至聽出差異,就像您另樓討論網路線影響聽感,雖你我的音響系統組合DAC不受網路、交換機和網路線影響聽感,但他人的好幾個例子都會(無論高低價系統)且即使經手機錄音還能分析並聽出差異
flying_fish wrote:
這東西就是你提到的最佳解法。...(恕刪)

跟最佳解法還是有一點差距,但想做到的事相同。

最佳解:

I2S clock由DAC提供,使用Async usb的buffer(FIFO)隔開USB & DAC

您提供的這篇文章的做法:

兩頭都是I2S,應用上可能用法如下:

這篇用了一個要夠大的SRAM當FIFO,是為了解決前端Xtal與DAC的Xtal頻率差問題。一開始要先把FIFO填個半滿,然後隨著時間FIFO水位會漸漸上升/下降。長時間下,FIFO一定會空掉或滿出來。播一首歌可能還撐的住,長時間播放還不是完整的解法。

最終還是要有Asynchronous USB,對Host做流量控制,並有能力改變進FIFO資料流速度。才會完整。
Lanster Wang

觀念搞錯了!i2s是一個傳輸的介面,SPDIF or USB經DIR轉成i2s進FIFO,從FIFO到DA chip也是i2s

2025-06-14 16:33
goldbingo
goldbingo 樓主

Lanster Wang DIR是什麼呢?另外哪裡錯了可以麻煩再有圖或更細節的說明嗎?

2025-06-14 17:26
https://iancanada.ca/
主事者的購物網站,品項眾多,好diy者,可参考。幣值是新台幣,不是美元,別嚇著了。
PY8888 wrote:
對DAC輸出影響的 "量" 與干擾大小(如jitter)和DAC機PCB layout、抗干擾能力有關,非固定也無法計算,每種組合都是個案...(恕刪)

這是個好觀點,因為都是個案,所以不能給出量測資料,的確是個困擾。這些不同的變因及解決方案,到底到了自己的器材上有沒有效果,就變成了難題。

這倒是讓我想到一個點子

————— 何不自己量看看? —————

介紹一個簡易容易入門的量測方式,不用寫程式分析,就可用來觀察noise/jitter差異。只需準備一個手持錄音機,加上REW軟體操作就行了。



這方法對於同一個器材,針對電源不同、或是前一級是USB/SPDIF/…介面不同,也許會有幫助於了解是否有影響。以下舉樹莓派耳機孔為例,量測不同電源(行動電源或插座電源)的影響。使用手持錄音機錄下wav檔,最後利用REW程式進行分析。


———— 步驟 ————

1. 使用REW產生單音1kHz弦波(至少2分鐘)
以您DAC最大能力來設定,因為樹莓派是192kHz/16bit,下圖紅線及藍線部分就這麼設,時間設2分鐘。然後存檔。

若您的DAC是96k/24bit,請修改上面藍色區域。

2. 用您的DAC播放此檔案,對輸出的XLR、RCA或耳機輸出Jack錄音。不是用麥克風錄喇叭喔!請特別注意錄音方式是「先播放幾秒,然後再開始錄音」。目的是避免開頭錄到靜音的部分,會讓後續計算有誤差。結束時間就待兩分鐘播完停止。

3. 使用REW讀取此錄音檔(Import audio data)

選只輸入左聲道就好:

輸入時因為我們錄音的時間2分鐘大於REW最大處理長度,會自動截短。故意錄過長的目的就是希望截短的區間內都是有完整波形,這樣計算才會比較準確。


4. 選「Impulse」這個功能檢查波形,若是變形明顯音量過大,需要降低音量重錄。

降低音量方式若您的DAC可調,請每次實驗固定調整檔位(或旋鈕)。若不可調,請回到第一步更改弦波振幅,如下紅線位置。

若是正確無誤的話,錄到的會是漂亮的正弦波:

接下來將樹莓派換不同電源,重複以上步驟。REW中就輸入了兩個檔。

———— 結果 ————

5. 觀察頻譜,選「All SPL」這個功能


就可以看到使用不同電源對樹莓派耳機孔的影響了。此例子紅色是行動電源,藍色是USB插座。意外嗎?明顯藍色底噪比較低,用這部行動電源供電,底噪反而比較差。跟大家習以為常的觀念,正好有所出入。

雖然不是專業儀器有矯正及輸出精確數字,以此次實驗為例,用此方法,能看到-120dBFS(註:錄音機觀點,非DAC觀點)以下的雜訊差異。還是能看出一些端倪的!

———— 延伸 ————

以上例子只有單一變數:電源。且DAC是同一台、所以少掉不同的DAC還有輸出振幅不同的變因要處理。若有多個變數,如何判讀才正確,又是另一個要思考清楚的點。

還有進階玩法,例如量測多次取平均再比較、甚至Multi-tone IMD。只要有部錄音機加上REW程式,就能開啟很多可能。
JohnTitor

rew的訊號發生器有一項 J,-test阿,要看JITTER可以用用看

2025-06-14 23:31
JW75 wrote:
其實CD座機跟USB DAC比jitter跟雜訊都更低 ...(恕刪)

這題就我的理解也來說一下我的看法:

A. CD播放機

CD本身比較麻煩的干擾源是servo control,泛指碟片旋轉馬達、光讀取頭位置步進馬達、讀取頭鎖軌、跳軌控制。因為都是物理動作,很容易落在可聞音頻區段。要做好也有一定的難度。

最好的隔離方式仍是使用Buffer(FIFO)結構,將這些問題檔在buffer前面。假設電路隔離有做好,各區塊電源、ground夠獨立,I2S控制器以所需傳送速度需求,到buffer取出資料送出,就可以比較乾淨的送到DAC。

也許您不知道,CD由碟片送往第一級的buffer,也不一定都是連續送的。常見的做法也是一段一段送,類似封包一樣。等buffer快空了,再控制光讀取頭到碟片上次中斷的位置繼續取下一段。工作方式跟USB送資料也很像呢!

B. CD當數位訊源

跟A類似,多出來的是外面走線到DAC。有好有壞,DAC離干擾源遠一點,也許power/ground要顧好比較容易。但問題也同樣在這裡,中間走I2S(或同軸SPDIF),除了要注意從傳輸線跑進來的干擾外,還要小心ground loop問題。

那麼換成光纖SPDIF呢?光不受外界干擾,但光電轉換會引進額外jitter,真要確定沒搞砸,量測SPDIF訊號品質也不是人人都有能力做的事。

(20240616補充:謝謝PY8888大提醒,光纖SPDIF未必一定jitter會差)

Noise transfer function量測,若有錄音設備量測DAC輸出進行分析,是很有機會略窺一二。隨身錄音機並不高價,很推薦使用。用REW配合錄音分析,有很多玩法可以玩。

C. USB DAC

電腦不是專為音樂而生,因此大家也都認為USB出來的訊號不會太好,更何況還要拉線出去到USB DAC。這裡的「訊號」這個詞容易有所混淆。USB訊號本身跑到480M/2.5G/5G,還是以packet型式一個一個封包送,壓根兒就跟音訊無關。除非訊號差到連封包都出錯,不然訊號好不好跟後面I2S給DAC要輸出的值沒半點關係。

既然不影響I2S的數位資料部分,影響到的是什麼?不外乎clock, power/ground, 以及PY8888大提到過的data jitter也許會有影響。

不論是CD或是USB,雜訊一定都有。問題在於有多少跑進DAC被打出來?

廠商有沒有做好,常見的就是打正弦波測量帶了多少雜訊。請先別帶入真實波形不是正弦波這件事,因為量測的目的是量測雜訊。至於複雜波形還原得好不好,並不在這裡討論的範疇內,是另外的題目。

看了幾個常見的量測網站,還沒看到過量化量測USB DAC抵抗前端noise能力的比較。若您有看到,還請分享給大家知道。

—————— 感想 ——————

簡單來說,還沒看到在power或界面上加載noise量測DAC對noise抵抗能力的測試(例如PSRR)。理論分析中有其極限,不一定反應事實。這也是我在上一篇「簡易錄音機及REW量測分析」中想傳達的概念,自己動手去量量看,也許會有許多驚喜喔!
goldbingo
goldbingo 樓主

(20240616補充:謝謝PY8888大提醒,光纖SPDIF未必一定jitter會差)

2025-06-16 16:35
  • 4
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?