1、前言css
目前FPGA成爲了視頻圖像實時處理的主要平臺。顯示做爲圖像應用設備的必要功能,對總體系統處理效果很是關鍵。HDMI是現階段主流的顯示接口,本文基於ADV7511芯片的HDMI顯示系統,講述HDMI顯示過程當中的一些原理和經驗總結。html
2、色彩空間轉換linux
以前經過VGA接口顯示圖像時只清楚RGB圖像格式,對YUV瞭解甚少。YUV是指亮度參量和色度參量分開表示的像素格式,而這樣分開的好處就是不但能夠避免相互干擾,還能夠下降色度的採樣率而不會對圖像質量影響太大。因此HDMI顯示中,常常選擇YUV來表示圖像信息。要想將圖像的YUV信息送入ADV7511,首先須要完成RGB到YUV的格式轉換。兩種格式分析以及互轉公式具體見參考文獻1,這裏只給出RGB轉YUV的標準公式。ide
上述三個公式均爲乘加操做,調用MAC計算較爲方便。在運算過程當中首先總體向左移位將全部係數變爲整數,再進行乘加操做,最後右移獲得最終結果[2]。ui
3、HDMI顯示原理及ADV7511芯片使用編碼
HDMI接口經過三組TMDS串行差分信號來完成數據傳輸功能,示意圖以下:spa
高速傳輸接口都是一個套路,編碼->並串轉換->串並轉換->解碼。HDMI傳輸流程細節見參考文獻3。咱們更多隻關注ADV7511的核心用戶側接口及使用方式。ADV7511的內部結構如圖:.net
左側畫紅框的引腳是咱們須要用到的。同步傳輸首先須要時鐘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。unix
如圖,這種模式下只用到了D[35:0]這36bit引腳中的[23:16]。配置寄存器地址爲0X15和0X16。視頻
咱們再來看看ADV7511 hardware user's guide[5]中給出的DDR採樣模式接口時序圖。
FPGA端可利用ODDR原語輸出雙邊沿採樣數據。
4、顯示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