看板 Audiophile 關於我們 聯絡資訊
本篇可能對非電資科系的朋友上會有閱讀困難, 在此致歉. 結論於最尾端. Tosca兄提出的網站http://www.jitter.de/english/engc_navfr.html 其中參考一篇Paper: http://www.jitter.de/pdfextern/jitter92.pdf 這篇是1992年AES Convention的Paper, 確實詳細的說明了許多Jitter 的來源與數學模型. 然而1992年沒有USB. 當時大多也沒有超過48kHz/16bit, 因此 不需要很高的傳輸速度, 然而到了現在, USB 2.0由於需要以高速 來傳輸數據, 其訊號在線中的波長已經不會遠大於線的長度, 因此需要用所謂的傳輸線模型(Transmission Line Model), 也就是該Paper中提到更複雜的模型. 當然, 我們仍然可以照Paper中的數學模型去分析, 取得 一個大致上準確的結果, 作為參考, 這個模型會大致準確 的原因是USB下我們有做到阻抗匹配, 因此不會有很大的住波. 首先我們考慮一個一階線路, 作為USB傳輸線路的模型: R Vin ---/\/\/\/\---+----Vout | --- --- C | V (偷懶一下, 用V代替三角形接地符號) 對於一個Step Function輸入: Vin = 0 for t < 0 V0 for t >= 0 Vout = (1-e^(-t/(RC)))*Vo 其中, R = 45 Ω [1], 為USB訊號驅動線路的輸出組抗. C <= 10 pF [2], 為線路與接收傳輸晶片的電容. V0 = 400mV [1], 為USB 2.0 High Speed的高態訊號, 由於 低態為-400mV, 所以總共差距為800mV. 一條最好的線, 根據該論文的模型, C該為最小, = 0, 因此, 這種情況下, Vin = Vout, 所以完全沒有Jitter. 然而考慮一條C = 10pF, 勉強符合USB標準的線, 對於 上一個波時間為1/(480MHz), 與時間趨近於無限大, 的 狀況的反應. 這種狀況是能產生最大Jitter的情況. 時間為: 1/(480MHz) Vinitial = (800mV * e^(-(1/(480*10^6))/(R*C))) ~= 7.806698116174247 mV => V0' = 800mV - Vinitial ~= 792.1933018838257 mV => Vout = ( 1 - e^(-t/(RC)) ) * V0' + Vinitial 求解輸出電壓為400mV (中間值)之時間, Vout = 400mV = ( 1 - e^(-t/(RC)) ) * V0' + Vinitial => t ~= 3.16373*10^-10 s 時間趨近無限大: Vout = 400mV = ( 1 - e^(-t/(RC)) ) * V0 => t ~= 3.11916*10^-10 s 相减其差距為Jitter: ΔTusb ~= 4.45654*10^-12 s = 4.45654 ps 現在考慮, 假設DAC運作於Asynchronous Mode, 那這時Jitter不影響, 因為USB的Clock跟DAC的Clock完全沒有關係. 所以我們假設DAC運作於Synchrounous Mode, DAC的Clock由USB的 1kHz Frame導出, 因此DAC受USB影響. 此時, 由於我們只考慮 與線有關的Jitter ( Line Induced Jitter ), 所以我們在 考慮兩個1kHz Frame之間的Jitter時, 我們要考慮, 開始與結束 的兩個bit的Jitter加總. Jitter = (ΔTusb * 2 )/(1/(1kHz)) = ( 4.45654 ps * 2 ) / ( 1ms ) = 8.91307 * 10^-9 = 8.91307 ppb ( parts per billion ) 考慮DAC輸出48kHz, 每個Sample之間的Jitter為: ΔTdac = (1/(48kHz)) * 8.91307 ppb ~= 1.85689*10^-13 s = 0.185689 ps 這已經遠小於你的石英震盪器的Jitter, 因此不會造成影響. ----------------------------------------------------------- 由於在1992, 大多數位音訊傳輸方式都是透過Synchronous的方式. (註: 這裡的Synchrounous不是USB的那個) 也就是說有一個Clock, 所有訊號都是在這個Clock的Transition 進入目標IC的, 這種狀況Clock訊號線的Jitter當然會顯相當 重要. ( SPDIF屬於這類 ) 然而USB不是這樣的架構, 因此 這樣的模型對於USB不是很適用, 反而1kHz Jitter造成的 大多來源是系統Scheduling無法在正確時間給出Frame. 對於USB線的Jitter Modeling, 我個人認為從阻抗不匹配 還有▽ε != 0 ( Poisson's Equation的前提 )著手計算 會比較正確. 不過這部分我還沒做詳細的分析. 原因是如剛剛所說的, USB的Jitter大多來自一個封包 在不正確的時間被傳送, 而不是一個位元傳送時間不正確. 前者來自電腦作業系統Scheduler的缺陷, 後者來自 電路的Line Induced Jitter以及Transciever Jitter ( 也就是上一段沒有仔細分析的項目 ) 但, 其中USB有規範後者的容許值, 約在15% of UI [3]. 這些種種Jitter都是USB的, 這些Jitter要影響到 DAC的運作的前提是, USB的Clock要與DAC的Clock 有關聯, 其中Synchronous與Self Adaptive是有這樣 的關聯的. Synchronous的上面已經解釋了, Self Adaptive 的Clock是透過觀察電腦傳輸資料的速度作為Clock, 因此 受影響. 而對於Asynchronous來說, USB的Jitter一點 都沒有影響, 就好像同一張CD是空運還是海運來台不影響 音質. ----------------------------------------------------- 推 ultimatevic:好奇如果USB真的是在資料傳送上有差異...那外接硬碟.. 04/03 20:07 → ultimatevic:傳一次檔案就少一點資料...多傳幾次就... 04/03 20:08 好問題, 我最愛好問題了. 首先, 任何電子設備都會有錯誤, 寫1到記憶體, 他有一定 的機率會變成0, 這機率很小, 小於10^-12 [4]. 這樣來說, 如果你沒有一秒幾十萬MB上下的話, 你恐怕沒有幸運到 會碰到一個這樣的錯誤. 當然剛剛那是說記憶體錯誤, 然而USB硬碟跟DAC 也會有這種問題, 只是他們的機率更大, 所以你更 容易遇到. 這你知, 我知, USB的開發者也知, 因此他們在傳送的封包中做了偵錯的動作[5], 降低了錯誤的機率. 如果所有USB封包都做了偵錯, 那就好了, 不過沒有. 我們都知道, USB有: Control, Bulk, Isochronous, Interrupt, 四種傳輸方式, 其中USB Audio是使用Isochronous, 硬碟是使用 Bulk. Isochronous傳輸*沒有*偵錯, Bulk有. 所以, USB Audio的錯誤率會比USB硬碟的錯誤率高. 我是沒看到USB的Spec跟我Quote說那錯誤率是多少, 不過他們說不用擔心, 不會造成任何問題[6]. 這與我的觀察相符, 我個人USB用到現在沒遇過 他Retry (至少沒被我觀察到). 如果擔心的話, 建議還是全部用Bulk, 甚至自己加偵錯碼. ( 假設USB DAC你是自己DIY的 ) ---------------------------------------------------------- 結論: USB線的更換是不該造成任何差別的, 如果有差別, 造成的原因應該如下: 1. 非Asynchronous Mode的DAC. 2. 環境雜訊太多. 所以我建議, 如果你有聽到任何USB線的 差別, 你應該: 1. ABX測試確認不是心理作用. 2. 升級你的DAC, 使用Asynchronous DAC 3. 改寫你的DAC的韌體與驅動, 採用Bulk傳輸模式與額外的偵錯碼. 4. 把所有沒有FCC標誌的電子產品丟出窗外. 謝謝配合. 至於USB線影響傳輸速率, 那很明顯是那條線 不符合USB的標準, 所以去換一條符合USB標準的即可. [1] USB-IF, USB 2.0 Specification, 7.1.1.3 Pg 129 [2] USB-IF, USB 2.0 Specification, 7.1.6.2 Pg 144 [3] USB-IF, USB 2.0 Specification, 7.1.2.2 Pg 133 [4] Bernd Panzer-Steindel, CERN/IT, Data integrity, Pg 2 [5] USB-IF, USB 2.0 Specification, 4.5 Pg 19 [6] USB-IF, USB 2.0 Specification, 4.7.4 Pg 21 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.19.219
Windf:請教一下,該篇文章裡的sampling jitter指的是? 04/04 01:55
Windf:還有一點,照你的分析,線能造成的jitter十分小 04/04 01:57
Windf:這樣在adative mode與synchrounous mode,線仍舊不影響不是 04/04 01:58
john0312:Sampling Jitter是ADC/DAC吃的Clock的Jitter. 04/04 01:58
Windf:嗎?線造成的jitter與電腦端的jitter是獨立事件吧 04/04 01:58
Windf:所以是ad/da電路上那個震盪器的jitter? 04/04 01:59
john0312:AD/DA的震盪線路的Jitter跟USB又是獨立事件. 04/04 02:01
john0312:其中前者是真正真正要注意的. 04/04 02:01
Windf:所以你指的吃的clock是指哪個現象? 04/04 02:01
john0312:你問的是哪個吃Clock? 04/04 02:06
john0312:USB接收線路跟電腦之間有一個Clock, DAC自己也有一個. 04/04 02:07
john0312:Synchronous下面, 兩個Clock被連在一起 (透過1kHz Frame) 04/04 02:08
john0312:Asynchronous下面獨立運作. 04/04 02:08
john0312:USB的Jitter需要傳到DAC那邊, 變成Sampling Jitter才有效 04/04 02:08
Windf:那這個有效的sampling jitter是怎麼來的? 04/04 02:11
Windf:是電腦端造成的jitter+line induced總和的結果嗎? 04/04 02:11
john0312:Synchronous下面是這樣的. Async下面只有DAC的石英而已. 04/04 02:14
pipi5867:我是覺得很多人都忽略一個簡單的地方 那就是..接地XD 04/04 02:21
GoodFriday:這篇應該會有沒有盲測過的人推文說他聽過覺得差超多 04/04 02:23
john0312:接第一定要接, 不然電流走USB的地線, 你就科科科了. 04/04 02:23
Windf:我繼續問幾個笨問題,jitter單位裡的peak to peak指的是? 04/04 02:25
來看一個方波訊號: V 9 7 ^ <-------><-----> | ***** *** **** | | ... | | **** **** **** +--------------------------------------------------------------------> t 123456789123456789 假設平均你每個週期是8, 那我們看到一個波形週期為9, 那這邊 ΔT = 1 我們又看到第二個週期為7, 所以 ΔT = -1 我們累積一段時間之後, 我們看所有週期的ΔT, 然後找最大跟最小的, 例如說 最大ΔT = 2 最小ΔT = -2 那Peak to Peak Jitter = 2 - (-2) = 4 ※ 編輯: john0312 來自: 220.134.19.219 (04/04 02:33)
Windf:還有為啥jitter會有頻率?例如這篇舉20k的訊號,混17k的 04/04 02:29
Windf:jitter? 04/04 02:29
john0312:每個訊號都有頻率, 單獨說Jitter = x ps 沒有意義. 04/04 02:35
john0312:因為Jitter是指原本頻率的變動. 我們這邊看到的都是週期 04/04 02:36
john0312:的變動, 但是頻率等於週期的導數, 所以頻率也是在變動的. 04/04 02:36
john0312:舉例, 週期=1us, 頻率等於1MHz, 假如今天Jitter = 04/04 02:37
john0312:+/- 10ns, 那代表頻率就會是0.99099~1.0101MHz. 04/04 02:38
raygod:推 04/04 08:01
Naraka:快推!! 不然別人會知道我念數學的居然看不懂這篇XDDDDDDDDD 04/04 08:19
yamatai:用錯誤的前提當然會導出錯誤的結論線的差異不是來自jitter 04/04 09:10
sai25:非同步感覺只會差一點點而已 所以我也沒興趣換線.. 04/04 12:45
sniper0710:與其用感覺,不如自己弄一條來試試看 04/04 13:31
ultimatevic:窩喔>////< 被點名了 好像在上課喔XDD 04/04 13:43
borisaladin:推! 原來非同步USB換USB線差異會很小! 受教了O_O 04/04 14:16
yeahbo:樓上,事情沒有那麼單純的啦... 還是耳聽為憑 XD 04/04 14:18
yamatai:明明就差很多........ 04/05 14:58
john0312:如果差很多的話, 那趕快去升級你的DAC吧 (勸敗 04/05 16:28