HDMI是(High Definition Multimedia Interface)的縮寫,意思是高清晰度多媒體接口,是一種數(shù)字化視頻/音頻接口技術(shù),適合影像傳輸?shù)膶S眯蛿?shù)字化接口,可同時傳送音頻和影像信號,最高數(shù)據(jù)傳輸速度為48Gbps(2.1版),HDMI相較于VGA接口,它傳輸?shù)男畔⒘看?,色彩度高,傳輸速度快等顯著優(yōu)點。
一般來說驅(qū)動HDMI有兩種方法,有些開發(fā)板是用一顆專用的HDMI芯片ADV7511做HDMI的輸出使用,ADV7511 是一款高速高清晰度多媒體接口(High Definition Multimedia Interface HDMI)發(fā)送器。 能夠處理的數(shù)據(jù)速率高達165MHz(1080p @60H, UXGA @60Hz), 輸出數(shù)據(jù)速率高達 225MHz。
Digilent官方出品的ZYBO開發(fā)板,上面一個雙向的HDMI端口,直接連接在PL的引腳上,所以這次博主分享的工程是用ZYBO PL端的IO口模擬HDMI接口,首先先來講一下HDMI的顯示原理主要是TMDS,該部分摘自博客:http://blog.sina.com.cn/s/blog_679686370100vgg1.html
HDMI 采用和 DVI 相同癿傳輸原理——TMDS(Transition Minimized Differential signal),最小化傳輸差分信號。
TMDS 傳輸系統(tǒng)分為兩個部分:發(fā)送端和接收端。 TMDS 發(fā)送端收到HDMI 接口傳來的表示 RGB 信號的24 位并行數(shù)據(jù)(TMDS 對每個像素的 RGB 三原色分別按 8bit 編碼,即 R信號有 8 位,G 信號有 8 位,B 信號有 8 位),然后對這些數(shù)據(jù)進行編碼和并/串轉(zhuǎn)換,再將表示 3 個 RGB 信號的數(shù)據(jù)分別分配到獨立的傳輸通道發(fā)送出去。接收端接收來自發(fā)送端的串行信號,對其進行解碼和串/并轉(zhuǎn)換,然后發(fā)送到顯示器的控制端。與此同時也接收時鐘信號,以實現(xiàn)同步。
TMDS的原理
每一個 TMDS 鏈路都包括 3 個傳輸 RGB 信號的數(shù)據(jù)通道和 1 個傳輸時鐘信號的通道。每一個數(shù)據(jù)通道都通過編碼算法,將 8 位的視、音頻數(shù)據(jù)轉(zhuǎn)換成最小化傳輸、直流平衡的 10 位數(shù)據(jù)。這使得數(shù)據(jù)的傳輸和恢復更加可靠。最小化傳輸差分信號是通過異或及異或非等逡、邏輯算法將原始 8 位信號數(shù)據(jù)轉(zhuǎn)換成 10 位,前 8 為數(shù)據(jù)由原始信號經(jīng)運算后獲得,第 9 位指示運算的方式,第 10 位用來對應直流平衡。
一般來說,HDMI 傳輸癿編碼格式中要包含視頻數(shù)據(jù)、控制數(shù)據(jù)和數(shù)據(jù)包(數(shù)據(jù)包中包噸音頻數(shù)據(jù)和附加信息數(shù)據(jù),例如糾錯碼等)。 TMDS 每個通道在傳輸時要包含一個 2bit 的控制數(shù)據(jù)、 8bit 的視頻數(shù)據(jù)或者 4bit 的數(shù)據(jù)包即可。在 HDMI 信息傳輸過程中,可以分為三個階段:視頻數(shù)據(jù)傳輸周期、控制數(shù)據(jù)傳輸周期和數(shù)據(jù)島傳輸周期,分別對應上述的三種數(shù)據(jù)類型。
下面介紹 TMDS 中采用的技術(shù):
8 位數(shù)據(jù)經(jīng)過編碼和直流平衡得到 10 位最小化數(shù)據(jù),這仿佛增加了冗余位,對傳輸鏈路的帶寬要求更高,但事實上,通過這種算法得到的 10 位數(shù)據(jù)在更長的同軸電纜中傳輸?shù)目煽啃栽鰪娏?。下圖是一個例子,說明對一個 8 位的并行 RED 數(shù)據(jù)編碼、并/串轉(zhuǎn)換。
第一步:將 8 位并行 RED 數(shù)據(jù)發(fā)送到 TMDS 収送端。
第二步:并/串轉(zhuǎn)換.
第三步:進行最小化傳輸處理,加上第 9 位,即編碼過程。第 9 位數(shù)據(jù)稱為編碼位。
2. 直流平衡
直流平衡(DC-balanced)就是指在編碼過程中保證信道中直流偏移為零。方法是在原來的 9 位數(shù)據(jù)癿后面加上第 10 位數(shù)據(jù),返樣,傳輸?shù)臄?shù)據(jù)趨于直流平衡,使信號對傳輸線的電磁干擾減少,提高信號傳輸?shù)目煽啃浴?/p>
3. 差分信號
TMDS差分傳動技術(shù)是一種利用2個引腳間電壓差來傳送信號的技術(shù)。傳輸數(shù)據(jù)的數(shù)值(“0”或者“1”)由兩腳間電壓正負極性和大小決定。即,采用 2 根線來傳輸信號,一根線上傳輸原來的信號,另一根線上傳輸與原來信號相反的信號。這樣接收端就可以通過讓一根線上的信號減去另一根線上的信號的方式來屏蔽電磁干擾,從而得到正確的信號。
另外,還有一個顯示數(shù)據(jù)通道(DDC),是用于讀取表示接收端顯示器的清晰度等顯示能力的擴展顯示標識數(shù)據(jù)(EDID)的信號線。搭載 HDCP(High-bandwidth Digital Content Protection,高帶寬數(shù)字內(nèi)容保護技術(shù))的發(fā)送、接收設備之間也利用 DDC 線進行密碼鍵的認證。
接下來是電路設計部分,HDMI驅(qū)動部分追尋原始出處應該是迪芝倫官方,該部分代碼用VHDL語言描述,為了方便移植,我將該部分代碼封裝成自定義IP Core,由上文可知,我們需要產(chǎn)生RGB888三路數(shù)據(jù),輸入給該模塊,然后經(jīng)過解碼、串/并轉(zhuǎn)換,差分輸出。還需要兩個時鐘輸入,一個是當前顯示分辨率的像素時鐘,一個是當前顯示分辨率的像素時鐘的五倍。還有一個行同步信號和場同步信號,這兩個信號的產(chǎn)生方法和VGA是一樣的,簡單來說就是先產(chǎn)生VGA的信號,行同步信號、場同步信號RGB888的數(shù)據(jù)輸入給HDMI驅(qū)動模塊就可以顯示了,我們要修改顯示的數(shù)據(jù),還是只需要修改VGA時序即可。
該工程經(jīng)過測試,可以實現(xiàn)720p(1280x720)的分辨率顯示,1080p(1920×1080)的分辨率沒有測試出來,原因我覺得可能是官方的zybo的晶振是125Mhz的,這個時鐘很尷尬,直接用Clocking wizard鎖不出來HDMI所需要的精確時鐘,如下圖。我試過先分頻出100Mhz,然后在調(diào)用一個IP Core分頻和倍頻,但是綜合總會報錯。所以直接這樣進行PLL雖然有誤差但是還是可以顯示出720p的。
而且根據(jù)迪芝倫的官方手冊上描述,有這樣一段,Resolution up to 720p(1280x720) have been teste。我的英文不是很好,那既然這樣說了,沒準它還真達不到1080p,好吧不管了,就暫且認為它最高只能達到720p吧。逃~
打開工程后,需要重新添加HDMI自定義IP的路徑,就在工程中,rgb2dvi_v1_2文件夾中。
然后在IP Catalog中搜索hdmi_disp就可以得到對應的IP Core了。
雙擊打開這四個需要定義的參數(shù),已經(jīng)定義好在IP中了,直接點擊OK——Generate生成
直接可以在如下圖所示中找到例化文件,直接實例化即可。
關于引腳約束,需要說的是,引腳約束必須為TMDS_33電平標準
最后附上一張720p彩條測試圖。
聯(lián)系客服