程序项目代做,有需求私信(vue、React、Java、爬虫、电路板设计、嵌入式linux等)

Rockchip RK3399 - DRM HDMI介绍

----------------------------------------------------------------------------------------------------------------------------

开发板 :NanoPC-T4开发板
eMMC16GB
LPDDR34GB
显示屏 :15.6英寸HDMI接口显示屏
u-boot2023.04
linux6.3
----------------------------------------------------------------------------------------------------------------------------

Rockchip RK3399 - DRM驱动程序》我们已经介绍过了,RK3399有两个VOP,均可以支持HDMIeDPDPMIPI DSI0MIPI DSI1显示接口,本节我们选择HDMI作为分析的对象。

一、HDMI介绍

1.1 概述

HDMI全称(High Definition Multimedia Interface)高清多媒体接口,支持在单线缆上传输全数字高清视频和多声道音频。

HDMI基于TMDS协议传输,主要用于DVD, 机顶盒等音视频sourceTV,显示器等sink设备的传输。

HDMI向下兼容DVI,但是DVI(数字视频接口)只能用来传输视频,而不能同时传输音频,这是两者最主要的差别。

1.1.1 版本变更

HDMI 1.0版本于2002年发布,最高数据传输速度为5Gbps

HDMI 1.1版本版本2004年5月分布,新增对DVD音频的支持;

HDMI 1.2版本于20058月推出,很大程度上解决了HDMI 1.1支持的分辨率较低、同电脑设备兼容性较差等问题。1.2版像素时钟运行频率达到165MHz,数据量达到4.95 Gbps,因此可以实现1080P。可以认为1.2版解决的是电视的1080P和电脑的点对点问题。

20066HDMI 1.3更新,带来最大的变化是将单链接带宽频率提升到340MHz,也就能让这些液晶电视获得10.2Gbps的数据传输量,1.3版的线是有4对传输通道组成,其中1对通道是时钟通道,另外3对是TMDS通道(最小化传输差分信号),他们的传输速度分别为3.4GBPS。那么3对就是3*3.4=10.2GPBS更是能将HDMI 1.1、1.2版本所支持的24位色深大幅扩充至30位、36位及48位(RGBYCbCr);

HDMI 1.4版本已经可以支持4K了,但是受制于带宽10.2Gbps,最高只能达到3840×2160分辨率和30FPS帧率;

HDMI 2.0的带宽扩充到了18Gbps,支持即插即用和热插拔,支持3840×2160分辨率和50FPS60FPS帧率。同时在音频方面支持最多32个声道,以及最高1536kHz采样率。HDMI 2.0并没有定义新的数据线和接头、接口,因此能保持对HDMI 1.x的完美向下兼容,现有的二类数据线可直接使用。HDMI 2.0并不会取代HDMI 1.x,而是基于后者的增强,任何设备要想支持HDMI 2.0必须首先保证对HDMI 1.x的基础性支持。

HDMI 2.0a的变化并不大,它的主要更新只有一个地方,那就是加入了对HDR格式传输的支持,能够显著增强图像质量。

HDMI 2.0b兼容所有HDMI之前的规格版本,与HDMI 2.0a并没有太大区别。

2017年发布的HDMI 2.1标准的理论带宽可达48Gbps

1.1.2 术语

在介绍HDMI时,我们会提到大量的专业术语:

  • HDCPHigh-bandwidth Digital Content Protection版权保护相关的,通过IIC获取;
  • EDIDExtended Display Identification Data扩展显示标识数据,包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串等;
  • DDCDisplay Data Channel显示数据通道,其实就是IIC通道,用来获取EDIDHDCP密钥等内容;
  • HDPHot Plug Detect热插拔检测;
  • CECConsumer Electronics Control用户电气控制,CEC可以控制从设备的一些状态,即遥控器功能;
  • TMDSTransition Minimized Differential Signaling最小化传输差分信号,一种差分传输技术;
  • HEACHDMI Ethernet and Audio Return Channel以太网和音频返回,HEAC需要额外的phy才能支持;
  • SourceA device with an HDMI output
  • SinkA device with an HDMI input
  • CTSCompliance Test Specification

1.2 HDMI框图

HDMI系统架构由source端和sink端组成:source是指发送HDMI信号的一侧,sink是指接收HDMI信号的一侧。

在这里插入图片描述

以上是HDMI的结构图,从中我们大致可以看出HDMI信号的组成部分:

  • 四路差分信号,包括三路TMDS Data信号和一路TMDS Clock信号。TMDS信号不仅仅用于传输video信号,还传输audio和辅助信息;

  • 一个DDC通道用于在source端和sink端交换状态, 用于告知source端,sink端具体可以接收什么样的数据;

  • HDP用于热插拔检测, 连接好过后sink端会发送一个拉高的信号,source端在接收到信号过后会向sink端开始发送数据;

  • CEC是用户电气控制,一般用作遥控;CECHDMI可选协议;

  • HEAC以太网和音频返回;HEACHDMI可选协议;

因此,我们可以推断出:

  • 要想传输音视频,只需要TMDS信号即可;
  • 要想使用遥控器,需要CEC
  • 要想做到分辨率自适应屏幕,需要DDC
  • 要支持热插拔,需要实现HPD
1.2.1 物理结构

HDMIABCDE五种引脚类型,目前常用的是Type A

img

其中:

  • AHDMI Type A接口共有19pin,宽度为13.9毫米,厚度为4.45毫米;
  • BHDMI Type B接口采用29pin,宽度21毫米;
  • CHDMI Type C常称为Mini HDMI,它主要是为小型设备设计的;
  • DHDMI Type D是最新的接口类型,尺寸进一步缩小;
  • E:主要用于车载娱乐系统的音视频传输。由于车内环境的不稳定性,HDMI Type E在设计上具备抗震性、防潮、耐高强度、温差承受范围大等特性;
1.2.2 引脚分布

其中HDMI Type A接口引脚分布如下:

其中:

  • 1-9:是TMDS data传输用到的引脚,共有三组;
  • 10-12:是TMDS clock传输用到的引脚,共有一组;
  • 13:CEC引脚;
  • 14:保留;
  • 15,16:DDC的引脚,DDC是基于I2C协议传输,故引脚为SCLSDA
  • 17:DDC/CEC地;
  • 18:5V电源;
  • 19:HPD引脚,用于热插拔检测;

1.3 TMDS协议

TMDSTransition TYPE_Cmized Differential Signaling)最小化传输差分信号。是美国Silicon Image公司开发的一项高速数据传输技术。

TMDS差分传输技术使用两个引脚来传输一路信号,利用这两个引脚间的电压差的正负极性和大小来决定传输数据的数值(0 或 1)。

TMDS传输系统分为两个部分:发送端source和接收端sinkTMDS 链路包括3个传输数据的通道和1个传输时钟信号的通道;

  • 发送端对这些数据进行编码和并/串转换,再将数据分别分配到独立的传输通道发送出去;
  • 接收端接收来自发送端的串行信号,对其进行解码和串/并转换,然后发送到显示器的控制端;
1.3.1 TMDS链路

TMDS链路如下图所示:

在这里插入图片描述

首先我们从图上一眼看过去就可以分为两半边,左边是源,右边是接收,可以分别看作发送与接收端。

从发送端左边看,分别有蓝、绿、红三个数据通道,加一个时钟通道(像素时钟);

(1) 时钟通道:主要就是为了将我们传输数据与接收数据都匹配在同一时钟下,使整个系统同步在时钟网络,不容易出错;

(2) 数据通道:分别有蓝、绿、红三个数据通道;

  • 每个通道都有一个8位的像素位传输颜色数据信息;

  • 每个通道都有一个两比特的数据位宽;

    • 在蓝色通道中用于传输HSYNCVSYNC

    • 在绿色通道中用于传输CTL0、CTL1

    • 在红色通道中用于传输CTL2CTL3

  • 每个通道都有一个4比特的数据位宽用于传输我们的音频信号;

(3) 编码阶段:Encoder是编码,将8bit video的并行数据变成了10bit的串行数据,通过串行传到我们的接收端,这要求我们的串行数据速率是实际像素时钟速率的10倍。在接收端与发送端相反,我们需要将串行数据转换为并行数据并进行解码恢复信号。

此外TMDS不仅仅是对video进行编码,还包括audio和控制信号。

1.3.2 TMDS传输周期

TMDS链路将数据传输分为了3个阶段:

  • Video Data Period:顾名思义,这个阶段用于传输实际有效的视频图像数据,sourc端给sink端发送图像数据,sink端显示;
  • Data Island Period:这个阶段用于传输音频或者辅助数据等;
  • Control Period:当没有视频图像数据和音频数据,或者辅助数据的时候,都处于这个阶段;

TMDS传输四种类型数据:

  • Control:控制信号,主要用于控制接下来传输的是Data Island还是Video Data;通过Channel12D[1:0]传输,占用4bit
  • Data Island:数据包,各种类型的包信息,包括音频数据包(通过3个ChannelD[3:0]传输,占用12bit)、辅助数据包等;
  • Video Data:视频像素数据,HDMI可以传输RGBYUV两种格式的像素数据;比如R,G,B分别通过Channel2,1,0传输,每个颜色8bit,共24bit
  • HSYNC, VSYNC:使用Channel0D[1:0]传输,占用2bit

举了个例子,以720x480p的图像帧为例:

img

上图:

  • 蓝色部分是Data Island Period
  • 深灰色部分是有效的图像数据Video Data Period
  • 浅灰色是Control Period

可以看到,在有效图像部分,是720x480的宽度;没有传送Data Island Period的时候,都在传送Control Period

img

左边是Control period:传输有HSYNCVSYNCPreamble

  • Channel0传输HSYNC, VSYNC;
  • Channel1[1:0]Channel2[1:0] 传输Preamble,用来判断接下来输入的是Video Data还是Data Island;

中间是Data Island period:传输有HSYNCVSYNC,以及两个Packet HeaderPacket,占用三通道共12bit输入;

  • Channel0[3:2]用于传输Data Island Header(包头);
  • Channel1[3:0]Channel2[3:0]用于传输Data Island Content(包内数据);

右边是Video Data period :视频信号经过编码生成三路TMDS数据通道,共24位视频流数据,输入到HDMI Tx中。24位像素的视频信号通过TMDS通道传输,将每通道8位信号转换为10位,在每个10位像素周期传送一个最小化的信号序列,视频信号将被调制为TMDS信号传送出去。

(1) Control Period(preamble)

Data Island或者Video Data传输周期之前,每一个TMDS通道包含2bit的控制数据,一共6位控制数据。

TMDS Channel D0 D1
0 HSYNC VSYNC
1 CTL0 CTL1
2 CTL2 CTL3

每个TMDS通道使用了D[1:0]2bit,采用2bit10bit的编码方式。在每个Control Period的最后阶段,CTL0CTL1CTL2CTL3组成的文件头说明下一个周期是Data Island还是Video Data

CTL0 CTL1 CTL2 CTL3 数据周期类型
1 0 0 0 Video Data
1 0 1 0 Data Island

(2) Video Data Period

Video Data Period用来传输视频线的像素,每个 Video Data Period以报文头为前导,在报文头之后,视频数据周期以两个字符开始,做为视频前导保护边界。对于数据周期,没有末尾保护边界。

(3) Data Island Period

Data Island用来携带音频和辅助数据的报文。辅助数据包括Info frame和其他用于音视频信息描述的数据。每个Data Island以2个字符长度的前导保护边界开始,并以2个字符宽度的末尾保护边界结束。

Channel0 Bit0 HSYNC
Channel0 Bit1 VSYNC
Channel0 Bit2 packet header
Channel1 Bit3:0 packet
Channel2 Bit3:0 packet

1.4 电路原理图

接下来我们介绍NanoPC-T4开发板HDMI接线原理图。

1.4.1 RK3399

RK3399有一个HDMI显示接口(HDMI TX);

  • 支持HDMI 2.0a;

  • 支持4K@60Hz显示;

  • 支持HDCP 1.4/2.2

电路接线图如下:

HDMI_AVDD_0V9_1HDMI_AVDD_0V9_1电源由VCCA0V9_S3提供,可以看做是常供电。

HDMI_AVDD_1V8VCC1V8_S3供电,同样可以看做是常供电;

1.4.2 HDMI接口侧

其中:

  • DDC_SCL:连接到RK3399GPIO2_B0/VOP_CLK/CIF_VSYNC/I2C7_SC引脚;
  • DDC_SDA:连接到RK3399GPIO2_A7/VOP_D7/CIF_D7/I2C7_SDA
  • PORT_CEC:连接到RK3399GPIO4_C7/HDMI_CECINOUT/EDP_HOTPLUG
1.4.3 电源信号

电源VCCA0V9_S3RT9041B-10GE提供的,这是一款稳压器IC,其输入端为VCC3V3_S5RT9041B-10GEVCC1V8_S3使能,VCC1V8_S3作为使能引脚EN的输入端;因此VCCA0V9_S3可以看做是常供电,更多内容可以参考《Rockchip RK3399 - USB基础》;

二、EDID

2.1 概述

EDID:全称是Extended Display Identification Data (外部显示设备标识数据);VGADVIEDID由主块128字节组成,HDMIEDID增加扩展块(128字节),扩展块的内容主要是和音频属性相关的,DVIVGA没有音频,HDMI自带音频,扩展块数据规范按照CEA-861x标准定义,未来可能增加到512256的整数倍。

其中包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串等等。形象地说,EDID就是显示器的身份证、户口本、技能证书等证件的集合,目的就是告诉别人我是谁,我从哪来,我能干什么。

EDID并非古而有之,在古老的CRT时期是没有EDID这个概念的,那为什么后来会有呢?

因为随着显示设备的发展,显示器的种类越来越多,模拟的、数字的、普屏的、宽屏的、17寸、19寸、22寸……这让PC傻了眼,分辨率和时序的种类太多了,而每种显示器又不可能支持所有的分辨率,那怎么知道该给显示器一个什么样的分辨率啊?显示出的效果是最佳效果吗?

不仅如此,随便输出一个分辨率还有损坏显示器硬件的可能,这可太危险了。于是,EDID临危受命,担当起显示器和PC之前的传话筒。

  • PC你好,我是A显示器,我能显示N种分辨率,最佳分辨率是XXX”。

  • “显示器你好,收到你的信息,现在就按最佳分辨率给你输出”。

这下大家明白了吧,EDID就是为了能让PC或其他的图像输出设备更好的识别显示器属性而出现的。

需要注意的是:EDID信息是通过DDC通道传输的,并且每个显示器可能有多个EDID.

现在的显示器功能很强大,通常都提供多种视频接口,常见的有DVIVGAHDMIDisplay Port等,由于每种接口的特性和带宽不同,使得不同接口的EDID也不同。使用哪个接口,PC读到的就是哪个接口的EDID

2.2 主块详解

考虑到EDID信息字节太多,我们不可能将所有字节表示的含义介绍一遍。这里我们我们仅仅挑选一些重要的字节进行介绍;

2.2.1 Header

EDID的开头八个字节为EDID的开始标志,简称头,固定为:

0H 01H 02H 03H 04H 05H 06H 07H
00 FF FF FF FF FF FF 00
2.2.2 Vendor / Product Identification

这十个字节表示产品ID和制造商信息。详细如下:

08H

09H

0AH

0BH

0CH

0DH

0EH

0FH

10H

11H

制造商名称

产品代码

产品序列号

制造周

制造年份

制造商名称:3个字母组成,基于压缩的ASCII码见下表,例如“00001=A”… …”11010=Z”。这两字节排列如下:

地址

bit1

bit2

bit3

bit4

bit5

bit6

bit7

bit8

08H

-

(4

3

2

1

0)

(4

3

字符1

字符2

09H

2

1

0)

(4

3

2

1

0)

字符2

字符3

A

B

C

D

E

F

G

H

I

J

K

L

M

00001

00010

00011

00100

00101

00110

00111

01000

01001

01010

01011

01100

01101

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

01110

01111

10000

10001

10010

10011

10100

10101

10110

10111

11000

11001

11010

产品代码:固定为4位16进制数,即两个字节,为客户提供,直接填写。

产品序列号:即产品的流水号(数值型),直接转成16进制或以ASCII格式转换。序列号也可用字符型,在后面DTD部分定义。

生产周:即在当年中的生产周,范围1~52,注意0为无效值。

生产年份:规定1990开始计算,即1990年为0,然后递增计算。

2.2.3 EDID Structure Version / Revision

字节

EDID版本及修改

备注

12H

版本号

13H

修改号

2.2.4 Basic Display Parameters / Features
5 字节 基本的显示参数/特征
14H 1 视频信号定义 见下表
15H 1 最大水平图像尺寸 cm
16H 1 最大垂直图像尺寸 cm
17H 1 显示传输特性(Gamma) (gamma x 100)-100,[1.00→3.55]
18H 1 电源管理标准(DPMS) 见下表

视频信号定义:

字节

类型

详细描述

14H

7

模拟/数字信号

模拟= 0,数字= 1

bit7=0,即模拟信号,bit6~0定义如下:

6

信号电平[6:5]

参阅下列定义。

Bit6   Bit5   Operation

0   0      0.700,0.300(1.000Vp-p)

0     1      0.714,0.286(1.000Vp-p)

1     0      1.000,0.400(1.400Vp-p)

1     1      0.700,0.000(0.700Vp-p)

5

4

setup

一般为0

3

同步输入支持[3]

如果设置1, 支持同步分离信号;

2

同步输入支持[2]

如果设置1, 支持同步复合信号(在水平同步行信号上);

1

同步输入支持[1]

如果设置1, 支持同步SOG信号;

0

同步输入支持[0]

如果设置1, 场同步扫描起点,脉冲须在复合同步信号或同步SOG信号被使用;

bit7=1,即数字信号,bit6~0定义如下:

6-1

保留

0

DFP 1.x

If set = 1, Interface is signal compatible with VESA DFP 1.x TMDS CRGB, 1 pixel / clock, up to 8 bits / color MSB aligned,DE active high

电源管理标准(DPMS):

字节

特点支持

详细描述

18H

7

Standby待机

是否支持Standby功能

6

Suspend挂起

是否支持Suspend功能

5

Active Off/Very

Low Power

是否支持Off Mode功能

[4:3]

显示类型[4:3]

Bit4 Bit3 解释       

0 0   黑白/灰度显示

0 1   RGB颜色显示

1 0   非RGB多彩色显示,如RGY

1   1   没有定义

2

标准默认颜色空间sRGB

如果置1,显示将使用默认的颜色空间sRGB作为基色

1

推荐分辨率模式

如果置1,推荐分辨率为第一个详细描述的时序(Detailed Timing)

0

支持GTF

如果置1,支持GTF标准分辨率

2.2.5 Color Characteristics
字节 颜色特征 基于CIE出版15.2测定空间
19H Red / Green Low Bits红绿场xy坐标低2位值 Rx1 Rx0 Ry1 Ry0Gx1 Gx0 Gy1 Gy0
1AH Blue / White Low Bits蓝白场xy坐标低2位值 Bx1 Bx0 By1 By0Wx1 Wx0 Wy1 Wy0
1BH Red_x红场画面x坐标 Red_x bits 9 →2
1CH Red_y红场画面y坐标 Red_y bits 9 →2
1DH Green_x绿场画面x坐标 Green_x bits 9 →2
1EH Green_y绿场画面y坐标 Green_y bits 9 →2
1FH Blue_x蓝场画面x坐标 Blue_x bits 9 →2
20H Blue_y蓝场画面y坐标 Blue_y bits 9 →2
21H White_x白场画面x坐标 White_x bits 9 →2
22H White_y白场画面y坐标 White_y bits 9 →2
2.2.6 Established Timings

Established Timings(内建时序,描述了分辨率和刷新率)表示显示器是否支持一些通用时序。若支持,则相应的分辨率位为1。

字节

描述

信源

23H

7

720 x 400 @ 70Hz

IBM, VGA

6

720 x 400 @ 88Hz

IBM, XGA2

5

640 x 480 @ 60Hz

IBM, VGA

4

640 x 480 @ 67Hz

Apple, Mac II

3

640 x 480 @ 72Hz

VESA

2

640 x 480 @ 75Hz

VESA

1

800 x 600 @ 56Hz

VESA

0

800 x 600 @ 60Hz

VESA

24H

7

800 x 600 @ 72Hz

VESA

6

800 x 600 @ 75Hz

VESA

5

832 x 624 @ 75H z

Apple, Mac II

4

1024 x 768 @ 87Hz(I)

IBM

3

1024 x 768 @ 60Hz

VESA

2

1024 x 768 @ 70Hz

VESA

1

1024 x 768 @ 75Hz  

VESA

0

1280 x 1024 @ 75Hz

VESA

25H

7

1152 x 870 @ 75Hz

Apple, Mac II

6-0

保留

比如:0x2F 0xCF 0x00表示的含义如下:

  • 640 x 480 @ 60Hz (IBM, VGA) ;

  • 640 x 480 @ 72Hz (VESA);

  • 640 x 480 @ 75Hz (VESA);

  • 800 x 600 @ 56Hz (VESA) ;

  • 800 x 600 @ 60Hz (VESA);

  • 800 x 600 @ 72Hz (VESA);

  • 800 x 600 @ 75Hz (VESA);

  • 1024 x 768 @ 60Hz (VESA) ;

  • 1024 x 768 @ 70Hz(VESA);

  • 1024 x 768 @ 75Hz (VESA) ;

  • 1280 x 1024 @ 75Hz (VESA)

2.2.7 Standard Timings

标准时序是对内建时序的扩充,最多可描述8个时序,每2个字节描述一种时序,这些时序都没有包含Established Timings中;

字节

描述

26H

(行有效像素/8)-31

27H

7,6








5-0

Aspect Ratio

Bit7 Bit6 生效

00   1:1

01   4:3

10   5:4

11   16:9

刷新率-60

Aspect Ratio=行像素/列像素








范围是;60-123Hz

28H-29H

同上

同上

2AH-2BH

同上

同上

2CH-2DH

同上

同上

2EH-2FH

同上

同上

30H-21H

同上

同上

32H-33H

同上

同上

34H-35H

同上

同上

比如:0x71 0x40表示的含义如下:

  • 行有效像素为:(0x71+31)*8=1152;
  • 宽高比为:4:3,所以列有效像素为1152*3/4=864
  • 刷新率为:0+60=60Hz
2.2.8 Detailed Timings

详细时序这个区域可以说是整个EDID中和我们关系最密切,也是我们需要了解最多和改动最频繁的区域。

它分为4个块(Block),每个块占用18个字节,一共72个字节。

每个块既可以是一个时序说明(Timing)也可以是一个显示器描述符(Monitor Descriptor)。

需要注意的是:Block 1必须是时序说明;

  • 对于EDID 1.4及以上版本,第一个详细时序它描述的是显示器的最佳时序;
  • 对于EDID 1.4以下版本,如果字节0x18 位[1]的值为1则表示第一个详细时序它描述的是显示器的最佳时序。

img

参考文章

[1] [Rockchip_Developer_Guide_HDMI_CN]

[2] Linux驱动学习--HDMI开发(一) 相关协议及传输原理的介绍

[3] LINUX驱动学习--HDMI开发(二)HDMI驱动源码分析(RK平台)

[4] HDMI协议介绍

[5] HDMI接口电路设计

[7] HDMI接口协议

[8] HDMI协议1.4 好文推荐!

[9] DRM框架介绍及基于DRM框架的HDMI开发

[10] DesignWare HDMI IP 解决方案

[11] LVDS+HDMI输出特殊分辨率800*1280竖屏

[12] Linux DRM那些事-HDMI接口EDID获取

[13] EDID的简介和解析

[14] 什么是EDIDEDID能做什么,EDID基本介绍

posted @ 2023-11-05 22:14  大奥特曼打小怪兽  阅读(831)  评论(0编辑  收藏  举报
如果有任何技术小问题,欢迎大家交流沟通,共同进步