一、前言

  目前FPGA成为了视频图像实时处理的主要平台。显示作为图像应用设备的必要功能,对整体系统处理效果非常关键。HDMI是现阶段主流的显示接口,本文基于ADV7511芯片的HDMI显示系统,讲述HDMI显示过程中的一些原理和经验总结。

二、色彩空间转换

  之前通过VGA接口显示图像时只清楚RGB图像格式,对YUV了解甚少。YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大。所以HDMI显示中,经常选择YUV来表示图像信息。要想将图像的YUV信息送入ADV7511,首先需要完成RGB到YUV的格式转换。两种格式分析以及互转公式具体见参考文献1,这里只给出RGB转YUV的标准公式。

  1. Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16
  2. Cb = U = -( 0.148 * R) - (0.291 * G) + (0.439 * B) + 128
  3. 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

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

ADV7511 Design Support Files - Documents - Video - EngineerZone https://ez.analog.com/video/w/documents/794/adv7511-design-support-files

FPGA驱动VGA显示静态图片 - 没落骑士 - 博客园 https://www.cnblogs.com/moluoqishi/p/9544146.html

FPGA+ADV7511实现HDMI显示的更多相关文章

  1. Uboot中支持lcd和hdmi显示不同的logo图片【转】

    本文转载自:http://blog.csdn.net/u010865783/article/details/54953315 在lcd为竖屏,hdmi显示横屏的情况下,如果按照默认的uboot显示框架 ...

  2. 基于FPGA的HDMI显示设计(三)

    上一篇:基于FPGA的VGA显示设计(二) 10月10日 ~ 20日期间实习,令我万万没想到的是实习题目是 “便携式高清电视显示屏测试系统原型设计” 也就是 “基于FPGA的视频显示”. 实习要求用 ...

  3. 树莓派系统安装、HDMI显示

    树莓派上可以安装多种操作系统,我们采用的是官方的基于debian的raspbian.系统安装方式见 安装完系统由于我使用的是7寸的HDMI屏,装完系统如果配置不该的话会导致右边有一部分无法显示,所以在 ...

  4. 基于FPGA的HDMI高清显示接口驱动

    HDMI是(High Definition Multimedia Interface)的缩写,意思是高清晰度多媒体接口,是一种数字化视频/音频接口技术,适合影像传输的专用型数字化接口,可同时传送音频和 ...

  5. 基于FPGA的Uart接收图像数据至VGA显示

    系统框图 前面我们设计了基于FPGA的静态图片显示,接下来我们来做做基于FPGA的动态图片显示,本实验内容为:由PC端上位机软件通过串口发送一幅图像数据至FPGA,FPGA内部将图像数据存储,最后扫描 ...

  6. 从FPGA搞定OV7670 VGA显示 移植到 STM32F10x TFT显示 总结及疑问(高手请进)

    OV7670不愧是最便宜的摄像头了最大显示像素:640*480(在VGA显示器上显示效果还不赖,用usb模块采集显示依然显著) 第一步:VGA显示 视频图像(实时)FPGA+SDRAM+OV7670= ...

  7. 玩转FPGA边缘视觉——4k视频图像抓取

    随着现代图像及视频处理技术的不断发展,人们对图像处理提出了新的要求,最近几年,图像的分辨率和扫描频率都有了较大范围的提升,1080P分辨率的视频已经非常流行,2K甚至4K分辨率的图像也在火热发展中. ...

  8. OV5640图像采集(一)VGA显示

    vga控制器模块 1 引言  项目的背景是采集无人车间现场的工件图像并送往控制间pc端处理,最终实现缺陷检测.项目包括图像采集模块,数据传输模块,上位机,缺陷检测算法等四个部分.其中,图像采集模块又分 ...

  9. 实验箱FPGA部分测试报告及A8与FPGA链接测试报告

    其实,我一开始还以为实验箱不会有什么问题只是让我们多学习东西才做这个测试的,结果发现还真的有不少问题. 1.实验准备部分 安装驱动时,win10系统无法正确安装usb-blaster Windows ...

随机推荐

  1. 配置DirectX SDK开发环境

    创建工程 选择空工程 添加源文件 添加DirectX SDK测试程序 属性配置 添加头文件和库文件路径 D:\Microsoft DirectX SDK (February 2010)\Include ...

  2. 4.redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?

    作者:中华石杉 面试题 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当 ...

  3. [windows]c盘瘦身、系统盘清理临时文件、缓存等垃圾文件

    前言 虽然现在已经9102年了硬盘空间越来越大越便宜,但win系统用久了系统盘还是会渐渐变小的,公司的电脑系统盘就已经不够用了经常爆红,这个时候两个简单快速高效的办法 1.扩大系统盘空间,可以使用 w ...

  4. dapi 基于Django的轻量级测试平台二 前端页面

    QQ群: GitHub:https://github.com/yjlch1016/dapi 一.登录页login.html: 二.首页home.html: 三.产品线列表页product.html: ...

  5. K8S当中的本地卷(Local PV)的使用

    Local PV是从kuberntes 1.10开始引入,本质目的是为了解决hostPath的缺陷.通过PV控制器与Scheduler的结合,会对local PV做针对性的逻辑处理,从而,让Pod在多 ...

  6. vs2008 新建win32控制台程序提示:脚本错误

    解决方案: 1.根据错误信息中的url,找到对应文件夹下的htm文件 2.使用notepad++打开default.htm文件,找到错误提示的434行,注释掉433和434行 然后保存文件,重新新建w ...

  7. SpringBoot开发mockserver及生成swagger接口文档

    通过springboot开发mock server,包含get及post接口,用于练习接口自动化及jmeter很方便 当然,也为后面jenkins持续集成做基础(开发push代码后  → jenkin ...

  8. matlab-层次分析法

    层次分析法(AHP)是把问题条理化.层次化,构造出一个有层次的结构模型的方法. 比如要选择旅游地,有3个选择方案,苏杭.北戴河和桂林.选择过程需要考虑多个因素,比如景色.费用.居住.饮食和旅途. 1. ...

  9. [codevs3044]矩形面积求并

    题目描述 Description 输入n个矩形,求他们总共占地面积(也就是求一下面积的并) 输入描述 Input Description 可能有多组数据,读到n=0为止(不超过15组) 每组数据第一行 ...

  10. 修改MyEclipse/Eclipse左侧文字大小(MacOS/Windows)

    一.Windows 首先找到 Eclipse/MyEclipse 的安装目录,然后找到如下目录: \plugins\org.eclipse.ui.themes_1.1.200.v20160815-05 ...