李雁

摘要:介紹了基于XILINX公司FPGA的12G-SDI收發器的實現,接收的是SDI信號,發送的是光纖信號。使用FPGA內部的GTH實現高速串并轉換,使用FPGA中的RAM實現數據緩存,使用GTH的TX Phase Interpolaror PPM Controller實現發送時鐘調整。
關鍵詞:FPGA;12G-SDI;GTH;時鐘調整
中圖分類號:TN929.11 文獻標識碼:A 文章編號:1007-9416(2020)06-0022-02
0 引言
SDI接口是數字分量串行接口,是由SMPTE組織制定的一種數字視頻接口標準。SMPTE組織在2015年正式發布了串行數據接口的6G-SDI和12G-SDI。6G-SDI面向2160p30的應用,對應每秒30幀畫面的刷新。而12G-SDI面向2160p60的應用,對應著每秒60幀畫面的刷新。使用12G-SDI進行較高速的數據傳輸會增加傳輸介質中的損耗,并且減少視頻源與接收端之間的總可支持電纜長度。因此需要其它方式實現遠距離的傳輸[1]。為此。本文介紹了一種12G-SDI信號的光纖傳輸方案。
1 FPGA內部實現架構
FPGA采用XILINX公司的XCKU035-FBVA676-2,該芯片的GTH高速串行收發器能支持我們系統所需的11.88G速率,12G-SDI信號經過TI公司的LM1219電纜均衡器后送入FPGA,在FPGA中必須使用高速串行收發器對高速串行信號進行串并轉換,時鐘恢復[2]。轉換出來的并行數據緩存在內部BLOCK RAM中,由發送GTH的時鐘進行讀取。由于發送GTH的本地晶振與接收GTH恢復的時鐘不同源,所以需要對發送GTH的時鐘進行相位調整,以便收發時鐘同步。發送GTH的輸出連接到SFP進行電光轉換,最終通過光纖連接到遠端。系統框圖如圖1所示。
2 FPGA內部詳細設計
2.1 高速串行接口設計
使用VIVADO2018.3進行邏輯開發,在IP Catalog里選擇UltraScale FPGA Transceivers Wizard,在向導中選擇GTH-12G_SDI,向導會根據12G-SDI的數據結構對GTH內部進行配置。包括鏈路速率11.88G,參考時鐘148.5M,并行數據位寬40bit,編碼模式(無編碼)。一般很多高速串行鏈路在編碼模式時會使用8B/10B編碼,這是因為串行數據變成并行數據后需要字符邊界對齊,并且8B/10B可以把原始數據里的連續長時間0或連續長時間1編碼成具有豐富時鐘邊沿的短時間0或1。由于SDI原始數據中有加擾器。所以不會造成長時間0或1,且8B/10B會使得帶寬額外消耗25%,所以SDI系統沒有使用8B/10B編碼。
2.2 數據緩存設計
數據緩存在本設計中使用RAM,而不是FIFO。因為后續模塊要根據讀寫地址差值進行發送時鐘調整。同調用GTH類似,在IP Catalog里選擇Block Memory Generator,設置數據深度和數據寬度,再此數據深度設置為256,數據寬度設置為40bit。只有地址控制需自行編寫代碼設計。首先只允許寫。不允許讀,當寫地址寫到RAM緩存的一半時,才允許讀。這樣做是為了拉開讀寫地址距離,避免收發時鐘抖動造成同時讀空或寫滿。類似的做法還有乒乓操作,但需要兩個RAM。
2.3 時鐘調整設計
設計思路是當數據緩存讀寫地址差值拉大時,說明寫時鐘快,讀時鐘慢,此時就應該加快讀時鐘,反之就應該減緩讀時鐘。由于讀寫時鐘域不同,直接對兩者進行比較會出現亞穩態,即采樣時鐘采集到數據的跳變沿。這樣會帶來數據判斷錯誤,從而誤判讀寫地址差值。例如二進制11111111加1變為00000000的時候,每個bit都在跳變,所以可能被采集判斷成任何一個8位二進制數,誤差不可控。由于時鐘域不同,所以出現這種采集到跳變沿的情況是不可避免的。但是可以采用格雷碼進行補救。格雷碼的特點是每次二進制自然碼增加1,格雷編碼后只有一個bit位翻轉。先對寫地址進行格雷編碼,然后使用讀地址進行采集,這樣即使采集到寫地址跳變沿,也只會造成1個偏差,即采集值為真實地址加1或減1。之后在讀時鐘域對寫地址進行格雷解碼,轉換為自然二進制碼。從而在讀時鐘域比較讀地址和寫地址的差值,誤差僅為1。
時鐘調整設計采用狀態機實現,如圖2所示。
由于我們的RAM深度是256,且當寫入128個數據后才允許讀,所以讀寫差值理想狀態是128。由于接收GTH恢復的時鐘(RAM寫時鐘)本身會抖動,所以即使收發時鐘同源,讀寫差值也不會永遠為128,所以不能簡單地以讀寫差值不為128就進行發送GTH時鐘(RAM讀時鐘)調整。當讀寫地址差值大于192時,偏移了理想差值64個時鐘,此時應該進行加快讀時鐘的操作,且留有64個時鐘的余量。以免調整不夠迅速,導致RAM寫滿。通過加快讀時鐘后,讀寫地址差值會逐漸減小,回到理想差值128,此時狀態機跳回idle,不再進行速率調整。隨著時間積累,讀寫差值會重新變大,狀態機跳轉重復上述過程。當寫時鐘比讀時鐘慢時,讀寫地址差值逐漸變小,小于64時,進行發送時鐘減緩狀態,地址差值逐漸恢復到128后,回到idle狀態,不再進行時鐘調整。同理,隨著時間積累,讀寫差值會重新變小,狀態機跳轉重復上述過程。
2.4 GTH發送時鐘控制器
GTH模塊中有個TX Phase Interpolaror PPM Controller,通過該控制器能調節發送時鐘,當前級狀態機進入到時鐘加快狀態時,設置該控制器的時鐘加快功能,從而使得發送時鐘變快,在前級狀態機進入到時鐘減慢狀態時,設置該控制器的時鐘減慢功能,從而使得發送時鐘減慢。在前級狀態機進入idel狀態時,關閉該控制器,使之進入power down狀態,減小耗電。
3 結語
利用FPGA的GTH實現收發器,省去了外部收發器芯片,且利用GTH時鐘控制器,省去了外部PLL芯片,整個系統硬件得以簡化,從而設備可以做成一個小盒子,方便攜帶。內部RAM的緩存空間可根據實際場景增大或者減小。增大RAM能允許更大的時鐘抖動,且對發送時鐘進行更加細微的調整,使得接收機恢復的時鐘更為穩定。減小RAM能降低系統延時,使用分布式RAM來節省FPGA資源消耗,更為節能。
參考文獻
[1] 嘉恒圖像,真4K(12G/60Hz SDI)信號的采集壓縮傳輸技術[Z].https://www.sohu.com/a/324469589_120200283,2019-07-03.
[2] Jamille Estonilo,Three things to consider when upgrading to 4K Ultra HD 12G-SDI interfaces[Z].http://e2e.ti.com/blogs_/b/analogwire/archive/2016/04/13/three-things-to-consider-when-upgrading-to-4k-ultra-hd-12g-sdi,2016-04-13.