無時鍾線的視頻數據傳輸是DP協議的一大特點,將時鍾信號隱藏在數據中是傳輸協議的設計趨勢。時鍾恢復技術也是DP芯片設計的關鍵技術。在這說一下在發送端時鍾是如何隱藏到數據中的,以及在接收端是如何將時鍾恢復出來的。
這里涉及兩個時鍾:link_clock和stream_clock。
link_clock是dp差分線上的時鍾,DP v1.3最高5.4GHz。stream_clock說的是video stream的pixel_clock。所說的時鍾恢復,指的是根據link_clock恢復stream_clock。最終恢復的,還是stream_clock。
link_clock的恢復
link_clock是phy層的時鍾,source端發送數據通過main_link直接發送數據而沒有時鍾線。因此dp協議定義了Link Training行為。在Link training 時,source在差分對上發送規整的時鍾信號(實際上是clock pattern,序列0101010101),在sink端就可以以main link線上的時鍾同步sink自己的時鍾了。但事實上現在的時鍾恢復技術已經非常成熟,由於source與sink的main link是同步的,因此即使不link training,sink也可以從其不規則的main link數據中恢復出link_clock。因此協議現在規定link training是可選的。
sink端的時鍾恢復原理大概是這樣的:
用以上方法即可確定link_clock。
發送端時鍾(stream_clock)的隱藏:
在DP協議上采用了類似頻率計的原理。在source端,首先確定一個N值,這個N值是並不是嚴格的多少,能達到要求的精度即可。N值的作用是使用link_clock計時N個周期,也就是N*link_clock_period這么長的時間,以這個時間作為一個門限。在這段時間內,對source端的stream_clock進行計數,得到了計數器個數M。於是,在門限時間內,共有N個link_clock和M個stream_clock。協議規定了M、N為24bit。隨后M、N會被打包到Data Packet里面,在video的vertical blank期間通過main link的main stream attribute data 發送到sink端。同時,在video的有效數據時,也隨VB-ID把M/N值的低8位一同發出,sink端也可通過MN值的低8位隨時調整stream clock的周期。
接收端的時鍾(stream_clock)恢復
上面已經介紹了sink是如何同步link_clock的,並且也通過MN的值知道了link_clock和stream_clock的關系。因此stream_clock的恢復方法很簡單了,就是M/N*link_clock_frequency。

