一、前言
目前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