DVI(Digital Video Interface)接口[1-3]是由數字顯示工作組在1999年制定的,利用最小變換差分信號TMDS作為基本電氣鏈接信號。圖像源生成的3路紅、綠、藍信號和控制信號在時鐘的作用下由DVI發送器進行編碼并串行化后,通過TMDS通道發送給DVI接收器;DVI接收器對其進行串/并轉換、通道對齊、解碼等一系列處理后發送給顯示設備,如圖1所示。DVI接口傳送的是數字信號,因此可以減少模/數轉換的成本,節約時間,速度更快,加之它與HDMI在電氣特性上完全兼容,因此升級更容易。DVI鏈路結構如圖1所示。
DVI在高速串行遠距離傳輸后進行接收,常規做法是用接收芯片與FPGA相結合來進行接收,但在用FPGA進行視頻信號處理的場合無疑會增加系統功耗和成本。因此,提出一種充分利用FPGA自身資源來實現DVI接收的方法,即采用內置TMDS I/O電氣接口的FPGA芯片而無需外接專用芯片來實現TMDS連接,加之FPGA的可編程性,可使用戶快速實現設計,從而縮短設計周期。
DVI的單TMDS只提供24 bit色深,當用戶要求色深超過24 bit時,并且系統已經確認顯卡和顯示器都支持雙鏈路TMDS,此時系統會啟動雙TMDS鏈路,鏈路0(數據通道1~3)傳輸24 bit信息,其他顏色信息由鏈路1(數據通道4~6)傳輸。當用戶的分辨率和刷新率要求超出單TMDS鏈路的傳輸能力時(單鏈路的最高像素傳輸頻率為165 MHz),系統會啟動鏈路1,并定義顯示器上每一行的第一個像素為1,奇數像素。鏈路0用來傳輸奇數像素信息,鏈路1用來傳輸偶數像素信息。由于TMDS鏈路共用一條時鐘回路,所以雙鏈路工作時,鏈路的時鐘頻率為像素數據帶寬的一半。
DVI編碼器在時鐘驅動下, 利用TMDS編碼方式對8 bit像素信號和2 bit控制信號分別進行8 bit轉10 bit和2 bit轉10 bit編碼,最低有效位先送出。這種編碼方式充分體現了TMDS 的兩大優勢,即:變換次數最小化和直流均衡作用。
1 接收器設計
1.1 系統架構??
DVI接收器的系統結構包括電平轉換、時鐘恢復、相位調整、串/并轉化、字對齊、通道對齊、解碼等幾部分組成,由TMDS通道傳輸過來的串行信號最終被轉化成3路8 bit的像素信號和2 bit的控制信號,如圖2所示。
1.2 時鐘恢復和相位調整???
時鐘與同步是DVI接收器設計中非常重要的一步,以DVI信號提供的像素時鐘為參考時鐘,在TMDS通道上傳輸的串行數據的時鐘為參考時鐘的10倍,在接收端采樣時要用倍頻后的速率進行采樣。文中這幾個時鐘信號由PLL電路產生,采用DDR[4]的方式采樣數據,可實現兩倍于以往的串行數據傳輸速率,因此只需將參考時鐘5倍頻即可,這樣可降低器件成本。???
DVI信號在經過長距離傳輸后,數據與采樣時鐘的相位不確定性很大,有較大的相位偏移,對正確采樣有很大的影響,因此需要進行相位調整[5]。利用FPGA IO 接口模塊內置的IODELAY[4]模塊,在算法上利用狀態機動態調整串行數據的延時來獲取最佳的數據采樣時刻。由于之前已可用DCM來實現相位調整,IODELAY模塊與DCM模塊相比較,其缺少兩個輸出,分別為DCM的psdone和DO[0],因此給IODELAY模塊模擬兩個輸出psdone和DO[0],在調用IODELAY模塊的代碼中依照它們在DCM中的時序來編寫代碼,完成在IODELAY中相同的功能。其中psdone相當于DCM模塊中的psdone,表示一級調整的完成;DO[0]相當于DCM中的DO[0],表示調整級數超過63級時溢出,用這兩個輸出送到相位調整算法的狀態機上來實現動態調整。由于通過TMDS通道傳輸的視頻數據是隨機的,但4個控制字是周期發送的,因此可以用來檢測時鐘相對于數據的位置。如果收到4個控制字之一, 就認為數據有效。如圖3所示,串行數據的兩個采樣窗口之間是抖動區域,抖動區域描述了時鐘和數據在傳輸邊沿的到達時間不確定性,有效采樣的部分稱作窗。為保證有效采樣,采樣時鐘必須調整到窗的中心。
相位調整算法如下:??
? (1)如果時鐘的初始位置在S2處,則增加IODELAY的相位偏移值至T1并記錄下來,再增加相位偏移值至T2并記錄下來,(T2-T1)/2即為最佳的采樣時刻。?
? (2)如果時鐘的初始位置在S1處,則增加相位偏移至S2處,即從下一個抖動區開始,同步驟(1)分別增加相位偏移至T1、T2記錄,則(T2-T1)/2為最佳的采樣時刻。??
?相位調整亦可通過DCM模塊來實現,不需要額外模擬輸出信號。與通過DCM模塊來實現相位調整不同的是,IODELAY實現相位調整時是數據在移動,而DCM則是時鐘在動。利用IODELAY可以節約FPGA內的DCM和BUFG資源,但需要額外提供200 MHz的工作時鐘,且IODELAY模塊的相位調節步長和幅度是固定的,對于較低頻率的DVI數據,可能無法完成采樣窗口掃描。
1.3 數據串/并轉換??
利用FPGAIO接口模塊內的ISERDES[5]完成串/并轉換,與用一系列寄存器完成串/并轉換相比,避免了時序混亂且節約資源。要實現1:10串/并轉換,需要將兩個ISERDES串接起來,即將一個設置為主ISERDES,一個設置為從ISERDES,然后將主ISERDES的輸出SHIFTOUT1、SHIFTOUT2連接到從ISERDES的SHIFTIN1、SHIFTIN2上,如圖4所示。
串/并轉換后還需進行字對齊,ISERDES本身的BITSLIP可完成字對齊,但速度較慢,所以利用多路選擇器邏輯來完成,如圖5所示。其核心思想依然是靠檢測控制字將經過串/并轉換后的兩次原始10 bit數據rawword[9:0]并接組成20?? bit rawwords[19:0],然后依次檢測rawwords[9:0]、rawwowds[10:1]、…rawwords[18:9]、rawwords[19:10]是否與控制字相等,若檢測到相等,則必為rawwords[9:0]、rawwowds[10:1]、…rawwords[18:9]、rawwords[19:10]之一,之后即可通過多路選擇器選出具有正確高低字節的數據輸出。
1.4 通道對齊??
?每個通道會收到一個來自于相位調整狀態機的表示字對齊后的數據是否為有效的信號,如果3個通道都有效,則通道對齊模塊內的FIFO緩存器開始傳送數據,不斷地寫入和讀出。FIFO是一個16 B深度的分布式RAM資源,當一個通道的FIFO輸出檢測到控制字時,則該通道的讀出數據流被延遲,僅當另外兩個通道檢測到控制字時才恢復,這樣可消除通道延遲。
1.5 DVI解碼
在經過通道對齊后,通過DVI解碼規則可解出8 bit數據信號和2 bit控制信號,解碼規則如下:DE=0(消隱期)解出2 bit的控制信號,DE=1解出8 bit的像素信號。
2 仿真結果?
?本設計在modelsim6.5版本上進行仿真[6],功能仿真如圖6所示。用H264E_VDATA文件作為Y、U、V源文件,用它產生R、G、B信號,經過發送端到達接收端時,接收端的輸入信號為圖中的TMDS差分信號blue_p、blue_n、green_p、green_n、red_p、red_n和時鐘tmdsclk_p、tmdsclk_n。輸出信號為3路8位的R、G、B信號blue_out、green_out、red_out和一路的時鐘恢復信號pixel_clk及控制信號hsync、vsync、de。?? ?
此設計在Xilinx公司的Virtex5-330T FPGA上得到驗證。資源利用情況如表1所示。受限于FPGA內PLL模塊的最高輸出主頻450 MHz,所以主時鐘工作頻率為90 MHz,即TMDS串行輸入數據的理論最高速率為900 Mb/s。
實際測試使用PC機顯卡輸出的DVI信號源,DVI傳輸線長1 m,點頻74.5 MHz,視頻分辨率1 280×720。接入FPGA后DVI信號解碼正確,輸出的并行視頻數據接入FPGA內的視頻處理模塊后,可采集得到正確的動態視頻畫面,且畫面清晰無噪點,證明了文中方法的可行性。??
?本文討論了一種符合DVI1.0規范的、基于FPGA的DVI接收器設計與實現方法。經驗證可得,此方法可用于DVI視頻的接收解碼,尤其是在利用FPGA進行DVI解碼設計時,可減少資源消耗,提高集成度,充分利用FPGA自身資源實現。
參考文獻
[1] 王春軍,潘昉晟.DVI接口在嵌入式系統中的應該[J]. 計算機工程,2005,31(20):207-208.
[2] 尹淑仙,徐火生.DVI核心技術剖析與邏輯實現[J].液晶與顯示,2007,22(6):765-769.
[3] 馮永茂,王瑞光,丁鐵頭.數字視頻接口-DVI1.0[J]. 電子技術應用,2003,29(9):10-14.
[4] Xilinx. Virtex-5 FPGA user guide[EB/OL].(2009-03-19)[2013-06-01]
[5] FENG B, CRABILL E. Video connectivity using TMDS I/O? in Spartan-3A FPGAs[EB/OL].(2008-07-25)[2013-06-01]
[6] Xilinx. Virtex-5 libraries guide for HDL designs[EB/OL].(2009-09-16)[2013-06-01]
?
評論
查看更多