SCDC State and Control Data Channel
接收端如果有SCDC,應該在E-EDID中包含一個有效的HF-VSDB,並且把SCDC_Present位設置為1。在訪問SCDC之前,源端必須驗證接收端E-EDID中,包含一個有效的HF-VSDB並且SCDC_Present位要設置為1,否則源端不能訪問SCDC。
HF-VSDB在H2.0中定義,用於指示宿端支持的H2.0中定義的特性。HF-VDSB與H1.4b中定義的VSDB是有區別的。HF-VDSB不能取代VDSB,它們都是Vendor Specific Data Block
在E-EDID中是否要支持HF-VDSB是可選的,除非支持Table10-5(H2.0)的特征。如果包含的話,HF-VSDB應該位於宿端E-EDID中CEA 擴展版本3,在E-EDID中緊隨H14b VSDB。下圖是H2.0中Table10-6,它定義了HF-VDSB
在程序中,SCDC主要用於源端更新宿端TMDS_Bit_Clock_Ratio和Scrambler_Enable寄存器位,並且在這個版本中不支持HDMI RX對SCDC的讀請求。
SCDC_Present[1bit] = 1,宿端支持SCDC功能
= 0,宿端不支持SCDC功能
以下HDMI Specification 2.0 中的對應的寄存器及地址參數
按照版本2.0,接收端版本應該是1
Table10-19:SCDC—TMDS Configuration
Scrambling_Enable:=1,源端設置該位為1使能宿端加擾
=0,源端設置該位為0,禁止宿端加擾
TMDS_Bit_Clock_Ratio:=0,(TMDS Bit Period)/ (TMDS Clock Period) = 1/10
=1, (TMDS Bit Period) / ( TMDS Clock Period) = 1/40
當宿端支持的TMDS位速率大於3.4Gbps時,就要提供TMDS_Bit_Clock_Ratio控制位。如果TMDS位速率小於3.4Gpbs,源端要設置TMDS_Bit_Clock_Ratio = 0,TMDS 時鍾和數據信號要遵從HDMI1.4b。當TMDS位速率在3.4~6.0Gbps時,源端要設置TMDS_Bit_Clock_Ratio = 1,此時TMDS的時鍾和數據信號要遵從HDMI2.0的6.1.1.4。設置之后源端可以讀取Clock_Detected狀態位來確保宿端接收到了傳輸的TMDS_Bit_Clock_Ratio設置。
源端修改宿端的TMDS_Bit_Clock_Ratio位的操作步驟:
- 源端要暫停傳輸TMDS時鍾和數據
- 寫tmds_bit_clock_ratio位
- 等待最小1ms,最大100ms,再啟動TMDS時鍾和數據的傳輸
- 源端可以讀取Clock_Detected狀態位來驗證宿端是否檢測到了TMDS時鍾
Clock_Detected:當宿端接收到有效的時鍾信號時該位置1,反之置0
Ch0_Locked:當宿端在通道0上成功解碼出數據時該位置高,反之置0.
數據傳輸協議
SCDC 的I2C從機地址是0xA8/0xA9
(1) 讀update flags
(2) 讀其余數據
(3) 寫操作
上面的程序對應一個地址為0Xa8,先看下在HDMI Specification2.0【10.4.3 Data Transfer Protocols】中的說明:
HDMI Specification2.0對SCDC(Satus and Control Data Channel)的參數進行了詳細的講述。