HDMI前端設計與實現(xiàn)
摘要:隨著高清影音時代的到來,新的高清多媒體接口技術也漸趨成熟。本文研究了高清多媒體接口的編碼和解碼功能,并采用硬件描述語言實現(xiàn)高清多媒體接口規(guī)范定義的編解碼功能。首先對高清多媒體接口的整體信道傳輸過程進行了分析和分解,并闡述了三個數(shù)據(jù)周期傳輸時間及其解碼方式的不同。在此基礎上對編解碼功能進行了模塊劃分,采用分層及模塊復用至頂向下的設計方法。最后通過NC—Verilog仿真工具仿真驗證代碼功能的正確性。
本文引用地址:http://butianyuan.cn/article/201610/307870.htm0 引言
數(shù)字影音技術發(fā)展日新月異,多媒體視聽領域正在進行著一場革命,隨著生活水平的提高,普通影音己不能滿足人們的需求,追求高清晰畫質(zhì),立體感音質(zhì),已經(jīng)成為新一代人追求時尚的一種詮釋。
在過去相當長的一段時間,CRT(Cathode Ray Tube)為代表的模擬顯示設備主導了整個顯示設備市場。隨著高清視頻格式(720p/1080i/1080p)的確定,液晶電視、等離子電視等大尺寸數(shù)字化平板顯示設備的發(fā)明和普及,傳統(tǒng)模擬接口易受電磁干擾、傳輸速率低、帶寬小、傳輸損耗大等缺點已經(jīng)不能滿足海量數(shù)據(jù)流傳輸?shù)刃枨?同時,影視等行業(yè)對版權意識越來越重視,數(shù)據(jù)傳輸?shù)募用茏兊糜l(fā)重要,傳輸更快更安全的全數(shù)字化接口代替模擬接口成為必然趨勢。于是第一個行業(yè)支持的、無壓縮的、全數(shù)字的音視頻接口 —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標準中相對成熟且較容易實現(xiàn)的部分技術標準。整個傳輸原理依然是基于Silicon Image公司的TMDS(Transition Minimized Differential Sienaling)編碼技術。
HDMI具有體積小、抗干擾強、兼容性好、智能連接、單線纜同時傳輸無壓縮音視頻等優(yōu)勢。因此,它已被廣泛地應用到DVD、機頂盒等設備中,HDMI正在成為高清時代普及率最高、用途最廣泛的數(shù)字接口。
1 HDMI概述
HDMI系統(tǒng)架構由信源端和接收端組成。如圖1所示,HDMI提供四個獨立的TMDS(Transition Minimized Differential Signaling)通信通道:三個數(shù)據(jù)信道和一個時鐘信道,這些信道主要用于傳遞視頻、音頻和輔助數(shù)據(jù)。另外,HDMI提供一個VESADDC(Video Electronics Standards Association)(Display Data Channel)信道。DDC是用于配置和在一個單獨的信源端和一個單獨的接收端交換狀態(tài),讀取接收端的E-EDID數(shù)據(jù)結構。CEC(Consumer Electronics Control)是一個可選信道,可選擇在用戶的各種不同的音視頻產(chǎn)品中,為高端用戶提供高水平的控制功能??蛇x擇的HDMI以太網(wǎng)和音頻返回(HEAC),在連接的設備中提供以太網(wǎng)兼容的網(wǎng)絡數(shù)據(jù)和一個和TMDS相對方向的音頻返回信道。
音頻,視頻和輔助數(shù)據(jù)都是在三個TMDS數(shù)據(jù)信道中相互交錯傳輸。TMDS時鐘,即視頻像素速率傳輸時鐘,在TMDS時鐘信道中傳輸,它被接收端三個 TMDS信道作為一個頻率參考,用于對三個TMDS數(shù)據(jù)信道的數(shù)據(jù)復原。在信源端,TMDS編碼將每個TMDS數(shù)據(jù)的8bits數(shù)據(jù)轉換成10bits的 DC-balanced數(shù)據(jù),10bits的DC-balanced數(shù)據(jù)將以每個TMDS時鐘周期串行地在差分線對上進行傳輸。
視頻數(shù)據(jù)像素時鐘的TMDS時鐘上傳遞默認值為24位色深,視頻數(shù)據(jù)還兼容30,36,48位像素的數(shù)據(jù)。更高的色深使用需要相應的更高的TMDS時鐘率。視頻格式TMDS時鐘率低于25M可以運用像素復用發(fā)送的策略來進行傳輸。視頻像素支持多種編碼格式,可以是 RGB,YCbCr4:4:4,YCbCr4:2:2格式編碼。
TMDS信道傳輸音頻和輔助數(shù)據(jù)中,HDMI的信源端需要采取用包的格式來保證傳輸。為了保證音頻和控制信號的高保真度,音頻和輔助數(shù)據(jù)數(shù)據(jù)需要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編碼模塊主要實現(xiàn)把視頻、音頻數(shù)據(jù)通過編碼傳輸給Rx解碼模塊。RX解碼模塊主要把視頻、音頻數(shù)據(jù)解碼后傳輸給外置設備。
如圖2所示,HDMI有三種處理數(shù)據(jù)的操作模式:視頻數(shù)據(jù)周期,數(shù)據(jù)島周期,控制周期。在視頻數(shù)據(jù)周期,傳輸每一個有效的視頻像素行。在數(shù)據(jù)島周期中,音頻和輔助數(shù)據(jù)使用一系列數(shù)據(jù)包來傳輸。在音頻和視頻周期的兩個非控制周期之間要插入控制周期。
視頻數(shù)據(jù)周期采用最小化差分傳輸編碼(TMDS)的編碼方式,對每個8bits傳輸信道進行編碼,三個傳輸信道共24bits數(shù)據(jù)。
數(shù)據(jù)島周期采用TMDS糾錯編碼(TERC4)的編碼方式,每個4bits傳輸信道進行編碼,三個傳輸信道共12bits數(shù)據(jù)。
控制周期采用最大化傳輸編碼的編碼方式,對每個2bits傳輸信道進行編碼,三個傳輸信道共6bits。這6bits數(shù)據(jù)包括HSYNC、VSYNC、CTL0、CTL1、CTL2、CTL3。在每個控制周期的末尾有一個報文頭,使用CTLx bits數(shù)據(jù)組成的preamble,指示下一個數(shù)據(jù)周期是視頻周期還是數(shù)據(jù)島周期。
每一個數(shù)據(jù)島周期起始于前導保護帶(Leading Guard Band),結束于后置保護帶(Training Guard Band);而視頻數(shù)據(jù)周期只始于前導保護帶,沒有后置保護帶。保護邊界兩個特殊字符組成,設計目標是提供從控制周期到數(shù)據(jù)周期或從數(shù)據(jù)周期向控制周期轉化的魯棒決策。
下表2.3展示在數(shù)據(jù)傳輸中每種操作模式的編碼類型。
2. 1 編碼器TX模塊
TX(信源端)發(fā)射模塊,包括時鐘模塊(由Timing和Timing_dly兩個模塊組成)、以及編碼模塊。時鐘模塊主要為視頻音頻交錯相傳產(chǎn)生時鐘,編碼模塊實現(xiàn)對視頻音頻數(shù)據(jù)編碼傳輸。
2. 1.1 時鐘模塊
(1)Timing模塊
Timing模塊是HDMI編碼器的基礎,它產(chǎn)生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高速數(shù)據(jù)傳輸?shù)暮诵?,按照TMDS通道的視頻音頻交錯傳輸數(shù)據(jù)要求,分配視頻數(shù)據(jù)、音頻數(shù)據(jù)和輔助數(shù)據(jù),以及控制數(shù)據(jù)的傳輸時間周期,并為編碼模塊提供控制信號。
主要端口定義:
hsync_pr、vsync_pr;行信號和場信號。
aux_rdy:當輸出是“1”,則外部數(shù)據(jù)緩存音頻數(shù)據(jù)準備完畢,可以傳輸音頻數(shù)據(jù);否則,音頻數(shù)據(jù)未完成打包,終止傳輸音頻數(shù)據(jù)。
aux_admit:當輸出是“1”,則傳輸音頻數(shù)據(jù);否則終止接受音頻包數(shù)據(jù)。
ade、vde:分別表示傳輸音、視頻數(shù)據(jù)標志位,為高時表示進入數(shù)據(jù)島或視頻數(shù)據(jù)周期。
2.1.2 encoder模塊
timing模塊采用TMDS編碼、TERC4編碼和最大化傳輸編碼三種編碼形式,對視頻數(shù)據(jù)、音頻數(shù)據(jù)包和輔助數(shù)據(jù)、控制數(shù)據(jù)編碼傳輸。
視頻像素數(shù)據(jù)的編碼可分為兩個階段:第一個階段是輸入音頻的8bits像素數(shù)據(jù)轉換成9bits數(shù)據(jù);第二階段是把9bit數(shù)據(jù)轉換成TMDS傳輸10bits。
實現(xiàn)的TMDS編碼算法如圖5所示。
D:輸入8 bits視頻數(shù)據(jù)。
cnt:計算編碼數(shù)據(jù)中0和1個數(shù)的差值。若cnt為正值表示發(fā)送1的數(shù)量超過0的數(shù)量,負值則表示發(fā)送0的數(shù)量多于1的數(shù)量。cnt{t-1}表示相對于輸入數(shù)據(jù)的前一個周期的cnt的值,cnt{t}表示本周期的值。
q_m:第一階段的9 bits輸出數(shù)據(jù)。
q_out:第二階段的10 bits輸出數(shù)據(jù),即編碼器輸出值。
N1{x}:這個操作符返回參數(shù)x中的1的個數(shù)。
N0{x}:這個操作符返回參數(shù)x中的0的個數(shù)部分核心代碼如下:
2.2 解碼器RX模塊
解碼器模塊較容易實現(xiàn),只需依據(jù)preamble控制位判斷接下來傳輸?shù)臄?shù)據(jù)類型,即音頻或視頻數(shù)據(jù),然后解碼即可。解碼同樣分兩個階段,如圖5所示,第一階段由10bits數(shù)據(jù)轉為9bits數(shù)據(jù),第二階段由9bits數(shù)據(jù)轉為8bits數(shù)據(jù)。
圖6 TMDS解碼原理
3 HDMI功能仿真驗證
在HDMI功能驗證采用分層驗證法,根據(jù)Spec1.4的編碼解碼的要求,制定驗證計劃,設計各種激勵,實現(xiàn)近百分之百的覆蓋率。本文運用的工具是Cadence NC—Verilog,文中介紹部分驗證計劃,以及驗證的結果。
3.1 時鐘模塊的功能仿真驗證
按Spec1.4要求,給定仿真必需激勵信號,仿真數(shù)據(jù)島周期及視頻數(shù)據(jù)周期的每個像素時鐘的功能分布是否符合Spec1.4的要求。比如驗證ctl[3:0]的正確性,如圖4所示,在3個blanking、8個preamble、2個leading guard band的時鐘周期之后,進入下一個狀態(tài),ctl[3:0]的值與狀態(tài)所表示的值對比便可驗證。
在驗證數(shù)據(jù)島周期:在ade_pr置高位后,經(jīng)過4個blanking+8個preamble+2個leading guard band。packet傳輸結束后置低位。ade置高位進入data island period,再經(jīng)過2個leading guard band+N個32位的packets+trialing guard band。trialing guard band后置低位。在8個preamble時,ctl[3:0]=4’b0101。
在驗證視頻數(shù)據(jù)周期時:vde_pr置高位后,經(jīng)過4個blanking+8個preamble+2個leading guard band。video data傳輸結束后置低位。vde置高位進入video data period,再經(jīng)過2個leading guard band+active video pixels。video data傳輸完后置低位。在8個preamble時,ctl[3:0]=4’b0001。
圖7數(shù)據(jù)島周期和視頻數(shù)據(jù)周期仿真圖
3.2 HDMI模塊仿真
把時鐘模塊和encoder模塊整合成TX模塊,其中encoder模塊分別實例為Encdr、Encdg、Encdb三個信道的編碼模塊。將TX和RX模塊,即hdmi_encoder和hdmi_decoder,組合在一起仿真。
如圖8所示,輸入的音頻、視頻數(shù)據(jù)用random函數(shù)隨機產(chǎn)生,且在固定的時間周期輸入,將輸出與輸入對比,得出HDMI整個編解碼模塊是否正確。
如圖9所示,第一組為7bits視頻數(shù)據(jù)輸入,第二組為編碼后的10bits視頻數(shù)據(jù)輸出,第三組為解碼后的7bits視頻數(shù)據(jù)輸出。視頻數(shù)據(jù)編碼需要三個時鐘,解碼需要兩個時鐘,所以每間隔五個時鐘輸入7bits數(shù)據(jù)等于輸出的7bits數(shù)據(jù),即從編碼到解碼一共需要五個時鐘。
4 結論
進入21世紀,在帶寬、音頻、傳輸安全等方面具有優(yōu)越性的HDMI的出現(xiàn),滿足了數(shù)字高清時代海量數(shù)據(jù)流傳輸?shù)男枨?。本設計運用 verilog HDL實現(xiàn)HDMI編碼及解碼功能,通過寫仿真測試激勵及運用NC—Verilog工具仿真代碼邏輯的正確性。從子模塊、模塊、系統(tǒng)仿真驗證自底向上的方法來進行,最終根據(jù)仿真驗證結果確認實現(xiàn)編解碼功能。非常感謝芯珠微電子林泉工程師及梁文鋒、黎偉蓮、洪傳練、楊家昌等同事的幫助,本設計的不足之處將在后續(xù)工作中改進。
評論