FPGA+ADV7511實現HDMI顯示
一、前言
目前FPGA成為了視訊影象實時處理的主要平臺。顯示作為影象應用裝置的必要功能,對整體系統處理效果非常關鍵。HDMI是現階段主流的顯示介面,本文基於ADV7511晶片的HDMI顯示系統,講述HDMI顯示過程中的一些原理和經驗總結。
二、色彩空間轉換
之前通過VGA介面顯示影象時只清楚RGB影象格式,對YUV瞭解甚少。YUV是指亮度參量和色度參量分開表示的畫素格式,而這樣分開的好處就是不但可以避免相互干擾,還可以降低色度的取樣率而不會對影象質量影響太大。所以HDMI顯示中,經常選擇YUV來表示影象資訊。要想將影象的YUV資訊送入ADV7511,首先需要完成RGB到YUV的格式轉換。兩種格式分析以及互轉公式具體見參考文獻1,這裡只給出RGB轉YUV的標準公式。
- Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16
- Cb = U = -( 0.148 * R) - (0.291 * G) + (0.439 * B) + 128
- Cr = V = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128
上述三個公式均為乘加操作,呼叫MAC計算較為方便。在運算過程中首先整體向左移位將所有係數變為整數,再進行乘加操作,最後右移得到最終結果[2]。
三、HDMI顯示原理及ADV7511晶片使用
HDMI介面通過三組TMDS序列差分訊號來完成資料傳輸功能,示意圖如下:
高速傳輸介面都是一個套路,編碼->並串轉換->串並轉換->解碼。HDMI傳輸流程細節見參考文獻3。我們更多隻關注ADV7511的核心使用者側介面及使用方式。ADV7511的內部結構如圖:
左側畫紅框的引腳是我們需要用到的。同步傳輸首先需要時鐘CLK和資料D。然後是行場同步和資料有效指示HSYNC VSYNC DE。該晶片支援多種資料格式和工作模式,利用IIC匯流排的SDA和SCL讀寫內部控制暫存器。晶片內暫存器非常多,ADV7511 grogramming guide中的section3 -quick start guide給出了必要的配置嚮導[4]。其中輸入視訊格式配置最為重要,本文使用的是YUV 422 ,8bit,DDR with separate sync,left justified模式中的syle 2。
如圖,這種模式下只用到了D[35:0]這36bit引腳中的[23:16]。配置暫存器地址為0X15和0X16。
我們再來看看ADV7511 hardware user's guide[5]中給出的DDR取樣模式介面時序圖。
FPGA端可利用ODDR原語輸出雙邊沿取樣資料。
四、顯示Demo及效果
自定義HDMI顯示IP的使用者側接收VGA格式資料,介面側連線ADV7511晶片。使用者介面包括:RGB HSYNC YSYNC DE。VGA影象資料格式在之前的博文中已有講述[6],注意兩點:
1 HSYNC YSYNC是負脈衝
2 DE = HS_DE & YS_DE
上圖是黑白格顯示例程。從顯示效果來看系統工作正常。
參考文獻
1 YUV格式分析 - arm-linux - 部落格園 http://www.cnblogs.com/armlinux/archive/2012/02/15/2396763.html
2 (原創)用verilog實現RGB格式影象到YCbCr或YUV格式的轉換及其驗證方法 (RGB2YCrCb)(RGB2YUV) - 任懷魯 - 部落格園
https://www.cnblogs.com/lunix/archive/2011/07/31/rgb2yuv_design_verification.html
3 HDMI介紹與流程 - TaigaComplex求職中 - 部落格園 https://www.cnblogs.com/TaigaCon/p/3840653.html
4 ADV7511 PROGRAMMING GUIDE. Low-Power HDMI 1.4 Compatible Transmitter with Audio Return Channel. - Revision G - PDF https://docplayer.net/30916605-Adv7511-programming-guide-low-power-hdmi-1-4-compatible-transmitter-with-audio-return-channel-revision-g.html
5 ADV7511 Design Support Files - Documents - Video - EngineerZone https://ez.analog.com/video/w/documents/794/adv7511-design-support-files
6 FPGA驅動VGA顯示靜態圖片 - 沒落騎士 - 部落格園 https://www.cnblogs.com/moluoqishi/p/9544146.html
&n