视频图像处理平台对比_【图像处理二】HDMI显示(一)

053331cf5753ac5d739038380c23cb3c.png

引言

做图像处理没有显示怎么能行,所以用两章来介绍HDMI的协议以及编码实现。HDMI的编码,仿真和调试会花费较长时间,特别是第一次在windows环境下部署UVM环境,对于刚刚入门UVM的我来说,这块也花费了很长时间。截止目前设计和仿真的代码都已经做完。所以这章主要介绍HDMI的协议以及设计的架构,之后再用一章来介绍HDMI的实现和驱动编写。

01

HDMI协议简介

HDMI包含物理层和链路层结构,物理层定义了信号的物理接口,以及物理层物理层编码方式。链路层定义了帧格式,包含了图像,声音,和控制信息。

1)物理层信号

TMDS Data:采用差分传输,共有三路。

TMDS Data shield:

TMDS clock:A类型的时钟频率小于55MHz,即最大传输165M pixels/sec。

TMDS clock shield:

SCL:串口通信时钟。

SDA:串口通信数据通路。

CEC:用户可以通过CEC协议对设备进行控制。

Hot Plug Detect:对供电电源进行检测信号,提示电源超过或者不足。

30ab9cd84f6ee2b5000d03e5ecaa56d1.png

图1.1 物理层信号定义

2)链路层结构

链路层主要包含如下信息:

eb64dc22499b0f723700d0b9d7cd7716.png

图1.2 链路层包含信息

整个传输的帧时序结构如图1.3:其中HSYNC、VSYNC是图像同步信号,都为高电平,表示是有效图像数据。Preamble用于区分数据类型,具体如图1.4。video数据以2bit的leading gurad band开头,之后是连续的一行图像数据。Data island用于传输声音信息,一些音视频描述信息等。Data island被放置于非有效video图像区域。这部分不是必须的,我们进行图像处理仅仅用于显示处理,所以不进行data island字段设计。这部分介绍略过。

62c572f46f4953e13edf52ecf8ca4f2f.png

图1.3 帧时序结构

4bd9ffc701e2e944893a3420792c670c.png

图1.4 preamble结构

3)物理层编码

控制信号包括HSYNC、VSYNC以及CTL0……2。其具体映射到物理传输线上为:

4cae97215c88fe1645ff50443b8afd24.png

Case(D1, D0):

0, 0: q = 10b1101010100;

0, 1: q = 10b0010101011;

1, 0: q = 10b0101010100;

1, 1: q = 10b1010101011;

Endcase

Video数据8bit被编码为10bit,这样可以降低TMDS物理路径上电位转变次数。算法如下:

4cd3c75ba1d1c367d2cfe97502a39aae.png

91c4da21cb4f5934c9f858bbbad91dbf.png

61b6079e8d475989619eb9c046d931a5.png

图1.5 video data物理层编码

02

HDMI设计架构

HDMI设计中不包含data island的结构解析,因为仅仅用于显示。整体结构如图2.1。包含两大部分:

1)hdmi_link

用于从ddr中获得图像数据,并封装成链路层格式。其中cfg是通过arm端实现寄存器配置,包括图像的起始地址,大小,图像长宽,blank的大小等。Ctrl是实现对HDMI的整体控制,包括使能HDMI发送,处理hotplug以及产生HDMI传输中断等。Img_reader通过axi总线从DDR中获得图像数据,pack是完成链路层格式的打包,并发送到物理层。

2)hdmi_phy

这层主要是将链路层帧结构进行物理编码,并转换为串行数据发送出去。Encoder就是对帧结构进行编码,每8bit转换为10bit数据。Serial中用到了芯片的SERDERS,将并行10bit数据转化为高速串行数据。

3)PLL

产生两种时钟信号:一种用于链路层数据打包和读取等,而tmds_clk是高速串行时钟。用于提供给物理接口。

a1caf3cd442678907d39afc084036153.png

图2.1 HDMI设计结构

03

验证架构

这部分用UVM来实现的,利用了UVM的基本架构。大致如图3.1。

1)img_seq,img_drv

产生图像并通过axi发送给DUT,同时将数据发送给img_monitor用于产生对比数据。

2)sw config

模拟软件行为,配置寄存器数据。

3)img_monitor

获取原始img数据产生对比文件,然后拉取DUT中link层和phy层数据,进行对比。输出对比结果。

044a889ebb30a68410f2571d4ca7d09d.png

图3.1 UVM验证架构

总结

简单介绍了HDMI协议,并设计了HDMI显示架构。完成了设计和仿真代码。下一章将会介绍仿真和调试过程。

往期回顾

1 图像处理一:直方图

2 图像处理一:加速直方图统计

3 DNN中FPGA做了什么?

5075744ce3a65125de7b3b08d810966b.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值