1)实验平台:正点原子ATK-DLRK3568开发板
2)平台购买地址:https://detail.tmall.com/item.htm?id=731866264428
3)全套实验源码+手册+视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban
第二十五章HDMI屏幕驱动实验
HDMI是现在最流行的屏幕显示接口之一,大尺寸如65/75/100寸、高分辨率如4K、8K、高帧率如60Hz、120Hz等应用场合都有HDMI的身影。瑞芯微的RK3568芯片原生自带了HDMI外设接口,可以用来连接HDMI显示器,本章我们就来学习一下如何使用RK3568的HDMI接口。
25.1 HDMI简介
HDMI全称为High Definition Multimedia Interface,也就是高清多媒体接口,是一个纯数字的音视频传输接口,通过一根线同时发送音视频数据。目前在电视、显示器、电脑、机顶盒等领域得到了广泛的使用。
在学习HDMI之前,我们先了解一些HDMI相关术语:
HDCP:High-bandwidth Digital Content Protection,版权保护相关,通过HDMI的DDC通道获取相关信息。
EDID:Extended Display Identification Data,扩展显示标识数据,包括显示器参数信息、供应商、图像大小、颜色、厂商预设值等信息。
DDC:Display Data Channel,显示数据通道,本质是IIC,因为大家会在HDMI接口上看到SCL和SDA引脚,DDC用来获取EDID、HDCP信息。
CEC:Consumer Electronics Control,用户电气控制,可以通过CEC引脚控制一些从设备,实现遥控功能。
TMDS:Transition Minimized Differential Signaling,最小化传输差分信号,用来传输HDMI信号。
HEAC:HDMI Ethernet and Audio Return Channel,以太网和音频返回,需要额外的PHY支持。
Source:HDMI信号输出设备。
Sink:HDMI信号输入设备。
HDMI最早于2002年出现,来用取代模拟信号接口,比如SCART或RCA,支持各种电脑与电视图像格式,还支持多声道的数字音频。HDMI经过不断地迭代,已经发布了多个版本:HDMI 1.1、HDMI 1.2、HDMI 1.3/1.3a/1.3b/1.3c、HDMI 1.4/1.4a/1.4b、HDMI 2.0/2.0a/2.0b以及最新的HDMI 2.1。这些版本的主要功能和区别如表25.1.1和25.1.2所示:
图25.1.1 HDMI各版本区别1
图25.1.2 HDMI各版本区别2
25.1.1 HDMI接口介绍
HDMI结构框图如图25.1.1.1所示:
图25.1.1.1 HDMI结构框图
图25.1.1.1中左侧是Source,用于产生Video、Audio等信号。左侧是Sink,也就是接受Source端发送过来的Video、Audio等信息。Source和Sink之间通过TMDS来传输信号,一共有3个TMDS数据通道,1个TMDS时钟通道。另外还有DDC、CEC、HPD等信号来传输其他的控制信息,简单总结一下这几个通道的功能。
TMDS:传输音视频数据。
CEC:实现遥控器功能。
DDC:实现屏幕分辨率自适应,通过DDC获取不同屏幕的参数信息。
HPD:实现热插拔。
HDMI一共有5种接口,如图25.1.1.1所示:
图25.1.1.1 HDMI接口图
我们最常用的就是Type A口,正点原子ATK-DLRK3568开发板也是Type A口,所以本章我们就基于Type A口进行讲解。HDMI接口引脚如图25.1.1.2所示:
图25.1.1.2 HDMI接口引脚图
从图25.1.1.2可以看出,一共有19个引脚,这19个引脚对应的功能如表25.1.1.1所示:
表25.1.1.1 HDMI引脚定义
表25.1.1.1中这些数据线分为如下几类:
TMDS 数据0/1/2:一共有3对数据线,为TMDS编码格式。
TMDS 时钟:1对TMDS时钟线。
CEC:HDMI的CEC通道引脚,可以通过CEC信号控制HDMI接口上所连接的设备。
IIC:HDMI接口上有个IIC接口,专业的名词叫做DDC(Display Data Channel),也就是显示数据通道,本质是个IIC接口,用来获取EDID、HDCP等内容的。
HPD:热插拔引脚,实现HDMI的热插拔功能。
25.1.2 TMDS传输原理简析
前面说了HDMI主要是通过TMDS编码来传输音视频信号,TMDS使用2根差分线来传输信号,信号0和1由两个引脚的电压差来决定,当TMDS差分线+为高电平,-为低电平的时候表示1;+为低电平,-为高电平的时候为0。接受端通过判断+和-的电压差来确定发送过来的是1还是0。采用差分传输的好处就是抗干扰能力强,适合高速传输。
TMDS由3个数据通道和1个时钟通道组成。TMDS的时钟通道以所传输的视频信号像素时钟的固定比例运行。每个TMDS时钟周期,每个TMDS数据通道都会传输10bit数据。HDMI编解码结构如图25.1.2.1所示:
图25.1.2.1 HDMI编解码结构图
从图25.1.2.1可以看出,左侧位Source端,右侧位Sink端,数据从左侧传递到右侧。左侧每个通道有8bit的原始数据,通过编码后得到10bit数据通过TMDS传输,接收端接收到10bit的编码数据要先解码,得到原始的8bit数据。
首先看一下Source端,一共3个数据通道,每个通道都是8bit的并行数据,这8bit数据含义如下:
D[7:0]:8bit的实际图像数据,为并行数据。
D[1:0]:通道0的这2位是HSYNC和VSYNC信号,通道1和通道2的这两位是CTL0~CTL3这4个控制信号。
D[3:0]:额外的一些辅助数据,比如音频数据等。
图25.1.2.1中一共有4个通道,3个数据通道,1个时钟通道,这4个通道功能如下:
通道0:传输图像的蓝色分量、HS和VS信号。
通道1:传输图像的绿色分量、CTL0和CTL1信号。
通道2:传输图像的红色分量、CTL2和CTL3信号。
时钟通道:图像的像素时钟。
25.1.3 HDMI传输阶段
1、HDMI传输的三个阶段
HDMI数据传输分为3个阶段:
①、Video Data Period:视频数据传输阶段,也就是此阶段传输实际的图像数据。对应图25.1.2.1中的D[7:0],会将8bit数据编码并串行化为10bit发送出去。
②、Data Island Period:音频和额外数据传输阶段。对应图25.1.2.1中的D[3:0],会将4bit数据编码并串行化为10bit发送出去。
③、Control Period:控制信号传输阶段,当不传输音视频信号和控制信号的时候,都处于这个阶段。对应图25.1.2.1中的D[1:0],会将2bit数据编码并串行化为10bit发送出去。
这三个阶段的详细编码方式与描述见图25.10.3.1:
图25.1.3.1 编码方式数据传输
以一个720*480分辨率为例,这三个传输阶段如图25.1.3.2所示:
图25.1.3.2 720*480分辨率传输阶段
2、Control Period
Control Period就是前面说的CTL0~CTL3,一共4bit,用来指示接下来的数据是Data Island还是Video Data,如图25.1.3.3示:
图25.1.3.3 Control Period含义
3、Video Data Period
当Control Period指示下一个是Video Data的时候,那么就开始图像数据传输,在正进入Video Data之前,有一个Guard Band阶段,经过TMDS编码后每个通道都有一个10bit的数据,如下所示:
1 case (TMDS Channel Number):
2
3 Ch0: q_out[9:0] = 0b1011001100;
4
5 Ch1: q_out[9:0] = 0b0100110011;
6
7 Ch2: q_out[9:0] = 0b1011001100;
8
9 endcase
Video Band以后就是真实的图像数据了。
4、Video Data Period
如果Control Period指示下一阶段为Data Isiand Period,那么接下来就是Data Island Period的数据传输,这个阶段以Guard Band开始,最后一个以Trailing Guard Band结束,编码格式如下:
1 case (TMDS Channel Number):
2 0: q_out[9:0] = n.a.;
3 1: q_out[9:0] = 0b0100110011;
4 2: q_out[9:0] = 0b0100110011;
5 endcase
这三个阶段如图25.1.3.4所示:
图25.1.3.4 三个传输阶段
25.1.4 HDMI时钟与带宽
1、像素时钟
我们分别以RK3568所支持的1920x1080p@120Hz和4096x2304@60fps这两个分辨率来算一下对应的像素时钟:
1920x1080p@120Hz:1920×1080×120=248832000≈248.832MHz。
4096x2304@60Hz:4096×2304×60=566231040≈566.2MHz。
上面算出来的就是1S中要传输的像素数,也就是像素时钟。
2、理论带宽
前面我们计算出的是像素时钟,假设像素格式为RGB888,也就是一个像素24bit,那么对应的理论带宽就是:
1920x1080p@120Hz:248832000×24=5971968000≈6.0Gbps。
4096x2304@60Hz:4096×2304×60=566231040≈13.6Gbps。
可以看出仅传输视频最少就需要13.6Gbps的带宽,而HDMI不仅仅要传输视频,还要传输音频等其他信号,所以HDMI的实际带宽要大于13.6Gpbs。
3、TMDS时钟
HDMI1.4b协议规定TMDS时钟最高340MHz,HDMI2.0协议将TMDS时钟加到了600MHz。RK3568的HDMI接口为2.0版本,我们就以600MHz的TMDS时钟计算一下HDMI接口实际提供的带宽。一个TMDS时钟单个通道传输10bit的数据,所以单个通道的带宽就是:
600000000×10 = 6Gpbs
一共有3个TMDS数据通道,所以总带宽就是:
6Gpbs×3=18Gbps
这个就是大家找HDMI2.0资料的时候,说的18Gbps带宽的来源。但是前面我们说了,TMDS在传输的时候会将原始的8bit有效数据编码为10bit,所以真实的有效带宽要再乘一个0.8,因此实际有效带宽为:
18Gpbs×0.8=14.4 Gbps
可以看出,实际有效带宽为14.4Gbps,大于我们前面算出来的13.6Gbps要求。HDMI各版本的传输带宽如图25.1.4.1所示:
图24.1.4.1 HDMI各版本带宽区别
另外HDMI 2.0和HDMI2.1对于不同分辨率与帧率的支持如图24.1.4.2所示:
图25.1.4.2 HDMI不同版本对分辨率与帧率的支持