看到 Sam 和 k900733 兩位大大在隔壁樓講系統時間準確度及對時,也去讀了他們提到的幾篇文章/討論。先把看到的一些資料簡略整理出來供大家參考。目前我的系統正自行放暑假、我也忙著看環法大賽、沒空實驗。還望技術能力較強和有空實測的版上先進不吝補充、糾正、分享:
首先,這篇提到 S/PDIF 的訊號傳輸並不是以 DAC 端的時鐘頻率為準去從電腦拉訊號,而是電腦的時鐘和 DAC 的晶振各自爲政,你丟你的,我接我的,兩者的時鐘/晶振頻率可能有差異。而即使看似微小的差異,在很短的時間內就可能造成電腦丟出來的訊號塞車、累積到超過 DAC 暫存記憶體的容量而丟失;也可能電腦發訊號發得太慢,造成 DAC 收訊號開天窗。Airplay 的訊號傳輸有同樣的問題:
同一篇還提到 DAC 對訊號做 asynchronous 頻率重建會造成訊號品質劣化。我好奇這裡說的取樣頻率轉換跟 FIFO 所做的處理是不是同一件事:引用:
So lets say, the DAC’s clock is running at a perfect 44100.000. The computer’s clock might be at 44100.005. This seems like a small difference, but over even relatively short periods of time, they will drift relative to each other. In this case, since the computer is faster, data will tend to “pile up” in the AirPlay device.
如果電腦常常向標準時鐘對時的話,電腦調時間的機制不是一下子把時間往回撥(回撥可能造成剛剛系統已用過的時間印記再度出現、造成混亂)或往前撥,而是以調整時間走快或走慢(也就是微調振盪的頻率)的方式去修正。電腦經常對時會導致電腦的振盪頻率(時間走得快或慢)趨近於準確(標準時鐘),如果 DAC 端的晶振很準的話,前面提到的訊號塞車或開天窗現象就不會出現。若不考慮其他因素的話,電腦經常向標準時鐘對時應該有正面的效果。引用:
- Perform an asynchronous sample rate conversion from, in our example, 44100.005hz to 44100hz. This degrades the signal the whole time that the conversion is running to a degree that depends on the quality of the sample rate conversion algorithm.
以下讓 Windows 系統更頻繁去對時的步驟來自這一篇:(我自己還沒試)
這篇作者提醒:對時過於頻繁可能會被標準時鐘服務器誤判為惡意攻擊:引用:
Changing time synchronisation interval in Windows 10
A windows 10 computer synchronises with a time server to update the clock at specific intervals. In case of computers that are part of a domain, the default interval is 1 hour. But in case of stand-alone systems the update interval is 7 days. If you want your computer to synchronise the time more frequently, you can achieve that by changing the value for a registry key.
- Open registry editor. (Type regedit in the search box)
- Open the following registry path.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient
- Right click the key SpecialPollInterval and select modify.
- Select Decimal as Base. The default value in the Value data box will be 604800 which is the poll interval in seconds (604800 seconds = 7 days).
- Enter a new value in the Value data box. For example if you want to set the poll interval to one day, enter the 86400.
- Click OK.
- Close registry editor and restart your computer.
對時也沒想像中單純。電腦與標準時鐘間溝通的來回傳輸條件是否對稱也會影響。還有網路延遲、層級/stratum 等等都會影響。引用:
由於系統時鐘很快就會歪掉,所以若要長時間保持在 AES11 Grade 2 +-10ppm (+-10us),那麼就必須要增加對時頻率;為了避免被 NTP server 視為惡意行為 (過度的 polling 可能會被判斷為 DDoS),個人建議對時頻率別太緊密,大約 10~30s 範圍都能接受。