在基於Semtech GS12170 HDMI 2.0 to 12G UHD-SDI解決方案及基於Semtech GS12170 12G UHD-SDI to HDMI 2.0解決方案中, 都有用到Semtech推出的GS12170 12G SDI/HDMI 2.0 bridge IC, 在這篇博文主要的介紹就是使用這顆bridge IC的一些注意事項.
Semtech GS12170有3個主要的操作模式, 主要由CONF_MODE_1 / CONF_MODE_0兩個I/O PIN控制, 第一個主要操作模式是SDI to SDI mode的gearbox功能, 能做到與上一代gearbox IC GS12070 P2P, 但需要注意PIN L6在SDI to SDI mode需要為1.8V才能共用GS12070與GS12170, 因為PIN L6在GS12170 HDMI to SDI mode會使用2.5V, 所以要特別注意, 而在CONF_MODE_1 / CONF_MODE_0 的I/O設定部份, 在原本GS12070是空PIN, 而在GS12170的部份是internal pull-down, 預設值就是SDI to SDI mode, 所以使用上不會有問題.
在F/W部份, GS12070需要填入一串initial table, 但在GS12170的SDI to SDI mode並不需要填initial table, 這部份也是使用上的差異點.
GS12170的第二個主要操作模式是HDMI to SDI mode, 在這個模式下, PIN L6在會使用2.5V, 可以參考上圖, 而CONF_MODE_1 / CONF_MODE_0的I/O設定在power on後, 就要設定為1 / 0, 而且會需要填入datasheet中的Table 3-2 initial table, 下圖所示只是其中的一部份.
在使用HDMI to SDI mode, 會額外需要搭配使用Silicon Labs SI5317 clock cleaner, 主要是HDMI的clock jitter規範比SDI clock jitter規範寬鬆許多, 若直接拿HDMI的clock給SDI輸出使用, 會造成SDI輸出的jitter過大, 因此會需要使用額外的clock cleaner, 雖然GS12170 IC也有內建PLL來做clock cleaner功能, 但效果並不是太好, 因此還是會需要使用額外的clock cleaner, 除了RDK上使用的Silicon Labs SI5317, SiTime也有SiT95145可以使用, 不過目前Semtech還在確認搭配SiTime的穩定度.
另外因為GS12170內部並沒有color space convert的功能, 而大部份SDI的接收端都只能收YCbCr 422的color space格式, 所以在使用GS12170 HDMI to SDI時, 要先確認GS12170的HDMI source可以限制輸出為YCbCr 422 color space格式, 不然最好就在GS12170的HDMI輸入前端, 再加上一顆有color space convert功能的HDMI IC, 以確保GS12170可以使用12G SDI輸出4K/60f YCbCr 422的格式, 在修改GS12170 HDMI的EDID並無法限制HDMI source只輸出YCbCr 422格式, 若是在444格式下, 沒有加上color space轉換, GS12170的12G SDI的輸出只能到4K/30f, 且會有較高的機率遇到相容性的問題.
GS12170的第三個主要操作模式是SDI to HDMI mode, 在這個模式下, PIN L6會使用1.8V, 而CONF_MODE_1 / CONF_MODE_0的I/O設定在power on後, 就要設定為1 / 1, 而且需要填入datasheet中的Table 3-3 initial table, 下圖所示只是其中的一部份.
在SDI to HDMI mode的模式下, 最常遇到的問題就是在GS12170 HDMI 2.0輸出4K/50f, 4K/60f時, 需要經由GS12170的DDC通道設定scramble enable 的SCDC命令給後端HDMI接收端, 這樣4K/50f, 4K/60f才能正常顯示, 所以在初期測試時, 可以先測試4K/30f以下的解析度, 先確認GSPI的read/write是正常的, 再確認initial table有正確的設定GS12170, 且在STAT0的LOCK訊號穩定輸出high時, 基本上4K/30f以下的解析度都要能正常顯示.
若4K/30f以下的解析度有問題, 或是在解析度切換以及cable插拔後會出現問題, 就可以先確認GS12170的HDMI_5V_EN是否有正常輸出high, 讓HDMI connector上的5V正常輸出, 再來後端HDMI接收端會將HPD訊號拉high, 因為GS12170的I/O只有1.8V, 所以一定要經過level shift轉換, 因此要確認level shift兩端的1.8V及5V訊號變化都能正常, 這樣基本上4K/30f以下的解析度就要能正常顯示, 只是要注意, GS12170不支援SD-SDI, 所以無法顯示480i及576i, 另外在3G-SDI level B及PsF格式部份, 也是無法支援的.
在HDMI 2.0的4K/50f, 4K/60f無法顯示部份, 就需要先確認GS12170的DDC通訊, 因為scramble command的SCDC會由GS12170 DDC通道來溝通, 一樣的, GS12170的I/O只有1.8V, 而HDMI的DDC是5V, 所以會需要level shift來做轉換, 因為基本上DDC跟I2C的格式是相同的, 所以這level shift轉換IC需要使用有支援雙向訊號轉換的, 不能使用單向的level shift轉換IC, 另外可以確認slave端是否有回acknowledge, 來判斷DDC溝通是否正常.
若DDC溝通都正常, 但scramble command的SCDC設定一直都無法正常設定進去, 就要先確認後端HDMI接收端是否真的有支援HDMI 2.0, 或是有任何設定讓HDMI接收端的scramble設定被關掉, 因為基本上HDMI 2.0就是要能支援scramble的格式.
若是scramble command有被正確設定進去, 但因為莫名原因, 一小段時間後, scramble command自動被disable, 可能就需要確認HPD是有穩定在high, 並試著多確認幾次scramble command有被正確設定進去, 再輸出HDMI訊號, 以避免scramble command會自動被disable, 造成畫面無法正確顯示.
原本Semtech GS12170在scramble command部份, 應該是要能自動完成所有的設定, 但是因為GS12170會去讀取enhance EDID, 而並非所有HDMI RX都有支援enhance EDID, 所以造成GS12170無法完成enhance EDID讀取, 接續下來設定scramble enable的SCDC無法自動完成, 目前就只能使用外部MCU來確認GS12170的LOCK及HPD狀態, 手動讓GS12170在收到12G SDI訊號後及HPD有變化後, 由MCU下scramble enable的SCDC, 這算是GS12170 IC的BUG, 但在MCU的協助下, 還是可以完成所有設定, 讓GS12170的SDI to HDMI mode正常且穩定的工作.