MIPI 打怪升级之DSI篇
目录
- 1 Overview
- 2 DSI Mode
-
- 2.1 Video 模式
- 2.2 Command 模式
- 3 DSI Physical Layer
-
- 3.1 数据流控
- 3.2 双向性
- 3.3 Video Mode Interfaces
- 3.4 Command Mode Interfaces
- 3.5 Clock
- 4 多通道管理
-
- 4.1 通道数匹配
- 4.2 线上数据分布
- 5 DSI 协议
-
- 5.1 包格式
-
- 5.1.1 短包
- 5.1.2 长包
- 5.2 Data ID
- 5.3 ECC
- 5.4 Data Type(Processor -> Peripheral)
-
- 5.4.1 Sync Event (H Start, H End, V Start, V End), Data Type = XX 0001 (0xX1)
- 5.4.2 EoTp, Data Type = 00 1000 (0x08)
- 5.4.3 Color Mode Cmd, Data Type = 00 0010 (0x02)、01 0010 (0x12)
- 5.4.4 Peripheral On/Off Cmd, Data Type = 10 0010 (0x22)、11 0010 (0x32)
- 5.4.5 Generic Write/Read Packet
- 5.4.6 DCS 命令
- 5.4.7 Set Maximum Return Packet Size, Data Type = 11 0111 (0x37)
- 5.4.8 Null Packet (Long), Data Type = 00 1001 (0x09)
- 5.4.9 Blanking Packet (Long), Data Type = 01 1001 (0x19)
- 5.4.10 YCbCr Packed Pixel Stream
- 5.4.11 RGB Packed Pixel Stream
- 5.4.12 Execute Queue (0x16)
- 5.4.13 DO NOT USE and Reserved Data Types
- 5.5 Data Type(Peripheral -> Processor)
-
- 5.5.1 Acknowledge and Error Report, Data Type 00 0010 (0x02)
- 5.5.2 End of Transmission packet (EoTp), Data Type 00 1000(0x08)
- 5.5.3 Generic Read Response, 1 or 2 or long Bytes
- 5.5.4 DCS Read Response, 1 or 2 or long Bytes
- 5.6 Video Mode Interface Timing
-
- 5.6.1 Non-Burst Mode with Sync Pulses
- 5.6.2 Non-Burst Mode with Sync Events
- 5.6.3 Burst Mode
- 6 DSI 错误检测
-
- 6.1 Low-Level Protocol Errors
- 6.2 Contention Detection and Recovery
-
- 6.2.1 Contention Detection in LP Mode
- 6.2.2 Contention Recovery Using Timers
- 6.3 Additional Timers
1 Overview
DSI 全称 Display Serial Interface,是由 MIPI 联盟定义的处理器与外设之间的移动设备接口规范。该规范建立在现有标准的基础上,并采用了 MIPI 联盟 DBI、DPI 和 DCS 标准中定义的像素格式和命令集。DSI是主要用于显示传输的接口。
一般而言,完整的DSI传输结构如下图所示,从上到下依次为(本文主要关注第二层与第三层):
- Application:描述了数据流中包含的数据的更高层的编码和解释。 根据显示子系统架构,它可能由具有规定格式的像素组成,或者由显示模块的命令组成。 可以参考DCS、DPI、DBI Spec。
- Low Level Protocol:该协议规定了通过接口的位和字节的顺序和值,它定义如何将字节组织成定义的组,即数据包。该协议以数据包为最小集合,并为每个数据包定义了所需的包头,以及如何生成和解释包头信息。后续发送端将包头和错误检查信息附加到正在传输的数据中。
- Lane Managment:通道管理,DSI 可进行通道扩展以提高性能。 根据应用的带宽要求,Data Lane的数量可以是 1、2、3 或 4。
接口的发送端将输出数据流分配到一个或多个通道。有相应的通道数据分配机制。 - PHY Layer:物理层。
MIPI 的协议庞大且版本众多,本文主要基于如下Spec版本:
- MIPI Alliance Standard for D-PHY, version 0.65, November 2005
- MIPI Alliance Standard for Display Bus Interface, version 2.00, November 2005
- MIPI Alliance Standard for Display Parallel Interface, version 2.00, September 2005
- MIPI Alliance Standard for Display Command Set, version 1.00, April 2006
- MIPI Alliance Standard for Display Serial Interface V1.0
2 DSI Mode
DSI定义了两种基本操作模式,Video模式与Command 模式。使用哪种模式取决于外设的架构、功能与应用的目标。
2.1 Video 模式
Video模式是指从主机处理器到外围设备的传输采用实时像素流形式的操作。一般而言,显示模块依靠主机处理器以足够的带宽提供图像数据,以避免显示图像中的闪烁或其他可见伪影。而一些视频模式架构可能包括一个简单的时序控制器和部分帧缓冲区,用于在待机或低功耗模式下保持部分屏幕或较低分辨率的图像。 这允许关闭接口以降低功耗。当然为了降低复杂性和成本,仅在Video模式下运行的系统可以使用单向Data Lane。
视频信息只能使用高速模式传输。
2.2 Command 模式
Command模式是指其中事务主要采取将命令和数据发送到外设(例如显示模块)的形式的操作。显示控制器需要有本地寄存器和帧缓冲器。处理器通过向显示控制器发送命令、参数和数据来间接控制其显示行为,同时还可以读取显示模块状态信息或帧存储器的内容。 故Command模式操作需要一个双向Data Lane。
某些显示器仅能在LP模式下初始化
3 DSI Physical Layer
本节简要概述 DSI 中使用的物理层。 有关详细信息可以参考之前的D-PHY篇——MIPI 打怪升级之D-PHY篇。
DSI使用一个或多个串行数据信号和一个串行时钟在主机处理器和外围设备之间传输信息。 **通过总线发送高速串行数据的动作称为 HS 传输或Burst。**在高速传输之间,差分数据信号或通道进入低功耗状态 (LPS),且接口在不主动发送或接收高速数据时也应处于低功耗状态 LPS。
下图为HS模式下的数据传输:
> 协议规定了一个字节即最小数据单元,一次传输包含整数个字节。
3.1 数据流控
由前面的结构图可知,底层为协议层将数据发给PHY层,但是协议层和 PHY 层之间没有握手,一旦传输开始,协议层就可以限制进出 PHY 层的数据传输。而数据包应完整无间断地发送和接收, 则需要链路两端的协议层和数据缓冲应始终具有等于或大于 PHY 层电路的带宽。 一个实际的结果是系统实现者应该确保接收器的带宽能力等于或大于发射器的带宽能力。
3.2 双向性
DSI 实现的物理层由一到四个数据通道和一个时钟通道组成。其中:
- Command Mode:Data Lane0 应是双向的; 额外的Data Lane应是单向的。
- Video Mode: Data Lane0 可以是双向的或单向的; 额外的Data Lane应是单向的。
Note:
Clock Lane应仅由Master驱动,而不能由外设驱动。
LP传输应仅使用Data Lane0。
PHY 和协议层之间的接口有几个控制总线方向的信号。当Master需要外设的响应使用。例如 返回 READ 数据或状态信息,它有如下流程:
- Master在传输的最后一个数据包期间向其 PHY 断言 TurnRequest;
- PHY 层拿到TurnRequest后在 EoT序列之后发送 BTA 命令;
- 当外设接收到 BTA 命令时,其 PHY 层将 TurnRequest 置为协议层的输入;
- 外设拿到TurnRequest 通知其接收协议层准备向Master发送响应;
- 外设发送响应后,外设同样使用 TurnRequest将总线控制权交还给Master。
BTA机制是需要在LP下实现的。
下图为测试过程抓的一个BTA波形:
3.3 Video Mode Interfaces
在 Video 模式下运行的 DSI TX 的最低 PHY 要求是:
- • Data Lane Module:CIL-MUNN(HS-TX、LP-TX)
- • Clock Lane Module:CIL-MCNN(HS-TX、LP-TX)
在 Video 模式下运行的 DSI RX 的最低 PHY 要求是: - • Data Lane Module: CIL-SUNN (HS-RX, LP-RX)
- • Clock Lane Module: CIL-SCNN (HS-RX, LP-RX)
3.4 Command Mode Interfaces
在 Command 模式下运行的 DSI TX 的最低 PHY 要求是:
- • Data Lane Module: CIL-MUYY (HS-TX, LP-TX, LP-RX, and LP-CD)
- •Clock Lane Module: CIL-MCNN (HS-TX, LP-TX)
在 Command 模式下运行的 DSI RX 的最低PHY要求是: - • Data Lane Module: CIL-SUYY (HS-RX, LP-RX, LP-TX, and LP-CD)
- •Clock Lane Module: CIL-SCNN (HS-RX, LP-RX)
3.5 Clock
DSI 时钟是从Master 到 Slave的信号。 它可能具有多种功能:
- Bit Clock:在整个链路上,DSI 时钟用作源同步位时钟,用于捕获接收器 PHY 中的串行数据位。
- Byte Clock:分频后,DSI 时钟用于在协议层和应用层之间的概念接口处生成Lane Byte Clock。
- Esc Clock: 分频后,DSI时钟用于LP模式。
- Application Clock(s):DSI 位时钟的分频版本可用于其他时钟功能。
所有 DSI TX/RX都应支持时钟通道上的连续时钟行为,并且可以选择支持非连续时钟行为(可降低功耗)。
Note: 在低功耗信号模式下,LP 时钟在功能上嵌入在数据信号中。当 LP 数据传输结束时,时钟有效停止,后续的 LP 时钟对外设不可用。如果外设需要额外的时钟来推进其逻辑状态,通过顺序缓冲区移动数据,或类似的,可能需要在 LP 传输中添加“虚拟”数据字节以实现状态机的前向进程或推进数据通过时序逻辑。
BTA 的握手过程只允许 Master 和 Slave 之间的 Escape Mode 时钟频率存在有限的不匹配。 Master 和 Slave 之间的 Escape Mode 频率比不得超过 3:2。Master 负责控制自己的时钟频率以匹配外设。Master 的 LP 时钟频率应在外围 LP 时钟频率的 67% 到 150% 范围内。因此,外设实现者应指定外设的标称 LP 时钟频率和保证的精度。
4 多通道管理
在PHY层之上有一个通道管理层,在发送端,负责数据的分发到每个 Lane,而在接收端,负责将多个 Lane 的数据合成。
如下图所示,即发送端分别在单Lane与4Lane的情况下数据的Lane上分布。
接收端就正好相反,如下图所示,即发送端分别在单Lane与4Lane的情况下数据的Lane上分布。
4.1 通道数匹配
当Slave通道数与Master不匹配时,可以通过调整D-PHY的通道数来匹配对方。如下图所示:当Receiver PHY只有两条Data Lane,而Transmitter PHY有四条Data Lane。这是可以调整Transmitter PHY输出使用两条Data Lane,同理也可以将两边都调整为使用一条lane。而在这种情况下并不影响DSI与D-PHY之间的连接。
4.2 线上数据分布
我们知道DSI的数据是以Byte为最小单位的,使用的Data Lane的条数是可以调整。而一次传输包含了SOT、Data、EOT等。排布规则也比较简单:每条Lane都有自己的SOT与EOT,数据在SoT之后从Lane0~Lane3依次排布。
那么在线上则存在不同情况:
1,数据为Lane数的整数倍
2,数据非Lane数的整数倍
5 DSI 协议
在 DSI 链路的发送端,并行数据、信号事件和命令会在协议层中转换为数据包。协议层附加数据包协议信息和包头,然后通过Lane管理层将所有字节发送到 PHY。 数据包由 PHY 序列化并通过串行链路发送。 DSI 链路的接收端执行与发送端相反的操作,将数据包分解为并行数据、信号事件和命令。
数据包协议和格式与使用的通道数无关。
DSI支持一次传输一个包活着多个包,每次传输包含一个SOT代表开始,一个EoT代表结束。要传 3 个包,那么如下所示两种方式:
5.1 包格式
DSI定义了两种数据包结构:长数据包和短数据包。 对于这两种数据包结构,数据标识符始终是数据包的第一个字节。
5.1.1 短包
一个短数据包包含一个 8 位数据 ID,后跟 2 个字节数据和一个 8 位 ECC。 短数据包的长度为 4 个字节。主要用于传输命令、参数、读写寄存器,也可以传输一些时序信息,比如Hsync、Vsync等。
5.1.2 长包
长数据包应由三个元素组成:32 位数据包头(PH)、具有可变字节数(0-65535)的特定应用数据有效负载和 16 位数据包尾(PF)。 包头进一步由三个元素组成:8 位数据标识符、16 位字数和 8 位 ECC。 包尾有一个元素,一个 16 位校验和。 长数据包的长度可以是 6 到 65,541 个字节。主要用于传输图像、视频等数据。
> Word Count 仅指数据的长度,以Byte为单位,而不包含后续的Checksum。
5.2 Data ID
任何数据包的第一个字节是 DI(数据标识符)字节。 下图即数据标识符 (DI) 字节的组成。 DI[7:6]:这两位将数据标识为定向到四个虚拟通道之一。 DI[5:0]:这六个位指定数据类型。
5.3 ECC
ECC可以纠正单比特错误并在数据包报头中检测 2 比特错误。
外设应支持正向和反向通信中的 ECC。