HDMI前端設計與實現
摘要:隨著高清影音時代的到來,新的高清多媒體接口技術也漸趨成熟。本文研究了高清多媒體接口的編碼和解碼功能,并采用硬件描述語言實現高清多媒體接口規(guī)范定義的編解碼功能。首先對高清多媒體接口的整體信道傳輸過程進行了分析和分解,并闡述了三個數據周期傳輸時間及其解碼方式的不同。在此基礎上對編解碼功能進行了模塊劃分,采用分層及模塊復用至頂向下的設計方法。最后通過NC—Verilog仿真工具仿真驗證代碼功能的正確性。
本文引用地址:http://2s4d.com/article/201610/307870.htm0 引言
數字影音技術發(fā)展日新月異,多媒體視聽領域正在進行著一場革命,隨著生活水平的提高,普通影音己不能滿足人們的需求,追求高清晰畫質,立體感音質,已經成為新一代人追求時尚的一種詮釋。
在過去相當長的一段時間,CRT(Cathode Ray Tube)為代表的模擬顯示設備主導了整個顯示設備市場。隨著高清視頻格式(720p/1080i/1080p)的確定,液晶電視、等離子電視等大尺寸數字化平板顯示設備的發(fā)明和普及,傳統(tǒng)模擬接口易受電磁干擾、傳輸速率低、帶寬小、傳輸損耗大等缺點已經不能滿足海量數據流傳輸等需求;同時,影視等行業(yè)對版權意識越來越重視,數據傳輸的加密變得愈發(fā)重要,傳輸更快更安全的全數字化接口代替模擬接口成為必然趨勢。于是第一個行業(yè)支持的、無壓縮的、全數字的音視頻接口 —HDMI誕生了。
HDMI的全稱是“High Definition Multimedia Interface高清多媒體接口”。2002年4月,來自電子電器行業(yè)的7家公司——日立、松下、飛利浦、Silicon Image、索尼、湯姆遜、東芝共同組建了HDMI高清多媒體接口組織HDMI founders(HDMI論壇),HDMI founders在2002年12月9號正式發(fā)布HDMI1.0版標準,標志著HDMI技術正式進入歷史舞臺。隨著HDMI標準本身的發(fā)展,1.3a版本和2.0等后續(xù)版本也陸續(xù)推出,不僅性能更加強大,兼容性也更加出色。
在HDMI標準制定之初,繼承了DVI標準中相對成熟且較容易實現的部分技術標準。整個傳輸原理依然是基于Silicon Image公司的TMDS(Transition Minimized Differential Sienaling)編碼技術。
HDMI具有體積小、抗干擾強、兼容性好、智能連接、單線纜同時傳輸無壓縮音視頻等優(yōu)勢。因此,它已被廣泛地應用到DVD、機頂盒等設備中,HDMI正在成為高清時代普及率最高、用途最廣泛的數字接口。
1 HDMI概述
HDMI系統(tǒng)架構由信源端和接收端組成。如圖1所示,HDMI提供四個獨立的TMDS(Transition Minimized Differential Signaling)通信通道:三個數據信道和一個時鐘信道,這些信道主要用于傳遞視頻、音頻和輔助數據。另外,HDMI提供一個VESADDC(Video Electronics Standards Association)(Display Data Channel)信道。DDC是用于配置和在一個單獨的信源端和一個單獨的接收端交換狀態(tài),讀取接收端的E-EDID數據結構。CEC(Consumer Electronics Control)是一個可選信道,可選擇在用戶的各種不同的音視頻產品中,為高端用戶提供高水平的控制功能??蛇x擇的HDMI以太網和音頻返回(HEAC),在連接的設備中提供以太網兼容的網絡數據和一個和TMDS相對方向的音頻返回信道。

音頻,視頻和輔助數據都是在三個TMDS數據信道中相互交錯傳輸。TMDS時鐘,即視頻像素速率傳輸時鐘,在TMDS時鐘信道中傳輸,它被接收端三個 TMDS信道作為一個頻率參考,用于對三個TMDS數據信道的數據復原。在信源端,TMDS編碼將每個TMDS數據的8bits數據轉換成10bits的 DC-balanced數據,10bits的DC-balanced數據將以每個TMDS時鐘周期串行地在差分線對上進行傳輸。
視頻數據像素時鐘的TMDS時鐘上傳遞默認值為24位色深,視頻數據還兼容30,36,48位像素的數據。更高的色深使用需要相應的更高的TMDS時鐘率。視頻格式TMDS時鐘率低于25M可以運用像素復用發(fā)送的策略來進行傳輸。視頻像素支持多種編碼格式,可以是 RGB,YCbCr4:4:4,YCbCr4:2:2格式編碼。
TMDS信道傳輸音頻和輔助數據中,HDMI的信源端需要采取用包的格式來保證傳輸。為了保證音頻和控制信號的高保真度,音頻和輔助數據數據需要BCH糾錯碼的編碼方式,且采取了一種10bits減少錯誤編碼的特殊編碼方式。基本的音頻傳輸功能幾乎包括所有的普通的立體聲音頻,在采樣頻率分別為 32KHz,44.1KHz和48KHz情況下的IEC60958L—PCM音頻流。HDMI還可以傳輸采樣頻率高達192KHz,采用3到8個音頻通道的音頻流。HDMI同樣可以傳輸采樣頻率高達24.576MHz的IEC61937壓縮音頻。HDMI同樣可以傳輸2—8通道的OneBit音頻或者是一種被稱為DST的壓縮的One Bit音頻。
2 HDMI編碼設計
本設計是基于HDMI 1.4版本的編解碼設計。主要分為兩個大模塊設計,即HDMI TX編碼模塊和HDMI RX解碼模塊。TX編碼模塊主要實現把視頻、音頻數據通過編碼傳輸給Rx解碼模塊。RX解碼模塊主要把視頻、音頻數據解碼后傳輸給外置設備。
如圖2所示,HDMI有三種處理數據的操作模式:視頻數據周期,數據島周期,控制周期。在視頻數據周期,傳輸每一個有效的視頻像素行。在數據島周期中,音頻和輔助數據使用一系列數據包來傳輸。在音頻和視頻周期的兩個非控制周期之間要插入控制周期。

視頻數據周期采用最小化差分傳輸編碼(TMDS)的編碼方式,對每個8bits傳輸信道進行編碼,三個傳輸信道共24bits數據。
數據島周期采用TMDS糾錯編碼(TERC4)的編碼方式,每個4bits傳輸信道進行編碼,三個傳輸信道共12bits數據。
控制周期采用最大化傳輸編碼的編碼方式,對每個2bits傳輸信道進行編碼,三個傳輸信道共6bits。這6bits數據包括HSYNC、VSYNC、CTL0、CTL1、CTL2、CTL3。在每個控制周期的末尾有一個報文頭,使用CTLx bits數據組成的preamble,指示下一個數據周期是視頻周期還是數據島周期。
每一個數據島周期起始于前導保護帶(Leading Guard Band),結束于后置保護帶(Training Guard Band);而視頻數據周期只始于前導保護帶,沒有后置保護帶。保護邊界兩個特殊字符組成,設計目標是提供從控制周期到數據周期或從數據周期向控制周期轉化的魯棒決策。
下表2.3展示在數據傳輸中每種操作模式的編碼類型。

2. 1 編碼器TX模塊
TX(信源端)發(fā)射模塊,包括時鐘模塊(由Timing和Timing_dly兩個模塊組成)、以及編碼模塊。時鐘模塊主要為視頻音頻交錯相傳產生時鐘,編碼模塊實現對視頻音頻數據編碼傳輸。

2. 1.1 時鐘模塊
(1)Timing模塊
Timing模塊是HDMI編碼器的基礎,它產生720*480p、1280*720p、1920*1080i等視頻格式的行信號hsync_pr、場信號vsync_pr、行無效信號hblnk_pr和場無效信號vblnk_pr。如圖2所示,hsync_pr、vsync_pr分別為HSYNC、 VSYNC;hblnk_pr為每行前138 pixels置高位,vblnk_pr為每幀前42行和后3行共45行置高位(注:具體定義以CEA-861-D中規(guī)定的720*480p的標準視頻格式為準)。
(2)Timing_dly模塊
Timing_dly模塊是HDMI高速數據傳輸的核心,按照TMDS通道的視頻音頻交錯傳輸數據要求,分配視頻數據、音頻數據和輔助數據,以及控制數據的傳輸時間周期,并為編碼模塊提供控制信號。

主要端口定義:
hsync_pr、vsync_pr;行信號和場信號。
aux_rdy:當輸出是“1”,則外部數據緩存音頻數據準備完畢,可以傳輸音頻數據;否則,音頻數據未完成打包,終止傳輸音頻數據。
aux_admit:當輸出是“1”,則傳輸音頻數據;否則終止接受音頻包數據。
ade、vde:分別表示傳輸音、視頻數據標志位,為高時表示進入數據島或視頻數據周期。
2.1.2 encoder模塊
timing模塊采用TMDS編碼、TERC4編碼和最大化傳輸編碼三種編碼形式,對視頻數據、音頻數據包和輔助數據、控制數據編碼傳輸。
視頻像素數據的編碼可分為兩個階段:第一個階段是輸入音頻的8bits像素數據轉換成9bits數據;第二階段是把9bit數據轉換成TMDS傳輸10bits。
實現的TMDS編碼算法如圖5所示。

D:輸入8 bits視頻數據。
cnt:計算編碼數據中0和1個數的差值。若cnt為正值表示發(fā)送1的數量超過0的數量,負值則表示發(fā)送0的數量多于1的數量。cnt{t-1}表示相對于輸入數據的前一個周期的cnt的值,cnt{t}表示本周期的值。
q_m:第一階段的9 bits輸出數據。
q_out:第二階段的10 bits輸出數據,即編碼器輸出值。
N1{x}:這個操作符返回參數x中的1的個數。
N0{x}:這個操作符返回參數x中的0的個數部分核心代碼如下:


2.2 解碼器RX模塊
解碼器模塊較容易實現,只需依據preamble控制位判斷接下來傳輸的數據類型,即音頻或視頻數據,然后解碼即可。解碼同樣分兩個階段,如圖5所示,第一階段由10bits數據轉為9bits數據,第二階段由9bits數據轉為8bits數據。
圖6 TMDS解碼原理

3 HDMI功能仿真驗證
在HDMI功能驗證采用分層驗證法,根據Spec1.4的編碼解碼的要求,制定驗證計劃,設計各種激勵,實現近百分之百的覆蓋率。本文運用的工具是Cadence NC—Verilog,文中介紹部分驗證計劃,以及驗證的結果。
3.1 時鐘模塊的功能仿真驗證
按Spec1.4要求,給定仿真必需激勵信號,仿真數據島周期及視頻數據周期的每個像素時鐘的功能分布是否符合Spec1.4的要求。比如驗證ctl[3:0]的正確性,如圖4所示,在3個blanking、8個preamble、2個leading guard band的時鐘周期之后,進入下一個狀態(tài),ctl[3:0]的值與狀態(tài)所表示的值對比便可驗證。
在驗證數據島周期:在ade_pr置高位后,經過4個blanking+8個preamble+2個leading guard band。packet傳輸結束后置低位。ade置高位進入data island period,再經過2個leading guard band+N個32位的packets+trialing guard band。trialing guard band后置低位。在8個preamble時,ctl[3:0]=4’b0101。
在驗證視頻數據周期時:vde_pr置高位后,經過4個blanking+8個preamble+2個leading guard band。video data傳輸結束后置低位。vde置高位進入video data period,再經過2個leading guard band+active video pixels。video data傳輸完后置低位。在8個preamble時,ctl[3:0]=4’b0001。
圖7數據島周期和視頻數據周期仿真圖

3.2 HDMI模塊仿真
把時鐘模塊和encoder模塊整合成TX模塊,其中encoder模塊分別實例為Encdr、Encdg、Encdb三個信道的編碼模塊。將TX和RX模塊,即hdmi_encoder和hdmi_decoder,組合在一起仿真。
如圖8所示,輸入的音頻、視頻數據用random函數隨機產生,且在固定的時間周期輸入,將輸出與輸入對比,得出HDMI整個編解碼模塊是否正確。

如圖9所示,第一組為7bits視頻數據輸入,第二組為編碼后的10bits視頻數據輸出,第三組為解碼后的7bits視頻數據輸出。視頻數據編碼需要三個時鐘,解碼需要兩個時鐘,所以每間隔五個時鐘輸入7bits數據等于輸出的7bits數據,即從編碼到解碼一共需要五個時鐘。

4 結論
進入21世紀,在帶寬、音頻、傳輸安全等方面具有優(yōu)越性的HDMI的出現,滿足了數字高清時代海量數據流傳輸的需求。本設計運用 verilog HDL實現HDMI編碼及解碼功能,通過寫仿真測試激勵及運用NC—Verilog工具仿真代碼邏輯的正確性。從子模塊、模塊、系統(tǒng)仿真驗證自底向上的方法來進行,最終根據仿真驗證結果確認實現編解碼功能。非常感謝芯珠微電子林泉工程師及梁文鋒、黎偉蓮、洪傳練、楊家昌等同事的幫助,本設計的不足之處將在后續(xù)工作中改進。
評論