大数跨境

技术洞见 | MIPI DSI协议Video Mode接口时序、TE信号与ECC

技术洞见 | MIPI DSI协议Video Mode接口时序、TE信号与ECC 牛芯半导体
2025-10-24
0
导读:本文转载自CSDN论坛作者G2突破手259的博客,转载文章仅供学习和研究使用。

本文转载自CSDN论坛作者G2突破手259的博客,转载文章仅供学习和研究使用。


Video Mode接口时序


Video Mode外设需要实时传送像素数据。本节指定这种类型的显示模块的 DSI数据流的格式和时序。
传输数据包序列
DSI支持Video Mode数据传输的几种格式或数据包序列。外设的时序要求决定了哪种格式是合适的。在接下来的章节中,突发模式(Burst Mode)指的是传输中RGB像素(有效视频)部分的时间压缩。此外,这些术语在以下章节中使用:
  • Non-Burst Mode with Sync Pulses:使外设能够准确地重建原始视频时序,包括同步脉冲宽度。
  • Non-Burst Mode with Sync Events:与上面类似,但不需要精确地重建同步脉冲宽度,因此替换为单个同步事件。
  • Burst mode:RGB像素数据包是时间压缩的,在扫描线中留出更多的时间用于LP模式(节省功耗)或用于将其他传输多路复用到DSI链路上。
请注意,为了准确地重建时序,应该考虑数据包开销,包括Data ID、ECC和Checksum字节。
主机处理器应支持本节中所有的数据包序列。Video Mode外设应支持本节中至少一种数据包序列。外设不需要任何额外的关于分组顺序或分组时序的约束。
在下面的图中,BLLP(Blanking or Low-Power Interval)被定义为一段时间,在这段时间内,像像素流和同步事件包这样的视频数据包不会主动发送到外设。
为了使PHY同步,主机处理器应该定期结束HS传输并将数据通道驱动到LP状态。这种转换应该至少每帧发生一次;在本节的图中显示为LPM。在水平空白期间,主机处理器应该在每个扫描线返回一次LP状态。无论BLLP周期的频率如何,主处理器都负责满足所有记录的外设时序要求。注意,在较低频率下,BLLP周期将接近或变为零,并且突发模式将与非突发模式无法区分。
在BLLP期间,DSI链路可以执行以下任何操作:
  • 保持IDLE模式,主机处理器处于LP-11状态,外设处于LP-RX状态。
  • 使用Escape Mode从主机处理器向外设传输一个或多个非视频数据包。
  • 使用HS模式从主机处理器向外设发送一个或多个非视频数据包。
  • 如果先前的处理器到外设的传输以BTA结束,则使用Escape Mode从外设向主机处理器传输一个或多个数据包。
  • 使用不同的虚拟通道ID从主机处理器发送一个或多个数据包到不同的外设。
在HS传输的BLLP或RGB部分内的数据包序列是任意的。主机处理器可以在包格式定义的限制内组成包的任何序列,包括迭代。对于所有时序情况,帧的第一行应以VSS开头;所有其他线路应以VSE或HSS开头。请注意,同步数据包(如VSS和HSS)在时序上的位置至关重要,因为这对显示面板的视觉性能有直接影响。
通常,RGB像素数据在单个数据包中以一个完整的像素扫描线发送。如有必要,有效像素的水平扫描线可分为两个或多个包。然而,单个像素不应该在包之间分割。
除非另有说明,本节图中使用的传输分组组件在下图中定义。
如果HBP或HFP最小周期的外设时序规格为零,则可能会忽略相应的 Blanking Packet。如果HBP或HFP的最大周期为零,则忽略相应的 Blanking Packet。
Non-Burst Mode with Sync Pulses
使用这种格式,目标是通过DSI串行链路准确地传递DPI类型的时序。这包括匹配DPI像素传输速率,以及同步脉冲等时序事件的宽度。因此,同步周期是使用传输同步脉冲的开始和结束的数据包来定义的。图显示了该模式的一个示例。
通常,显示为HSA(水平同步有效),HBP(水平后肩)和HFP(水平前肩)的周期由空白数据包填充,其长度(包括数据包开销)计算与外设数据表指定的周期相匹配。或者,如果有足够的时间从HS模式转换到LP模式并再次转换,那么LP模式的定时间隔可以代替Blanking Packet,从而节省功耗。在HSA、HBP和HFP期间,总线应保持在LP-11状态。
Non-Burst Mode with Sync Events
发送每个同步脉冲的起始点。外设可以根据需要从接收到的每个同步事件包中重新生成同步脉冲。像素以与相应的并行显示接口(如DPI-2)相同的速率传输。图中显示了该模式的一个示例。
与之前的非突发模式一样,如果有足够的时间从HS模式转换到LP模式并再次转换,LP模式下的定时间隔可以代替Blanking Packet,从而节省功耗。
Burst Mode
在这种模式下,可以使用时间压缩的突发格式在较短的时间内传输像素数据块。这是一种很好的策略,可以减少DSI总体功耗,并为链路上任何方向的其他数据传输提供更大的时间块。
外围设备上可能有行缓冲区或类似的存储器,以容纳高速输入的数据。在HS 像素数据传输之后,总线可以保持HS模式发送消隐包,也可以进入Low Power Mode,在此期间总线可能处于空闲状态,即主机处理器保持LP-11 状态,或者在任意一个方向上进行LP传输。如果外设控制总线向主处理器发送数据,它的传输时间应该被限制,以确保数据不会从其内部缓冲区溢出到显示设备。此模式的一个示例如图所示。
与非突发模式类似,如果有足够的时间从HS模式转换到LP模式并再次转换,LP模式下的定时间隔可以代替Blanking Packet,从而节省功耗。
参数
各参数含义如表所示。外围设备供应商公司负责为表中的所有空白字段指定合适的值。主处理器应满足这些要求,以确保互操作性。
当数据通道处于LP模式时,外设还应指定DSI时钟通道是否可以进入LP模式。主机处理器负责满足时钟活动和数据通道上HS传输之间的最小时序关系,如[MIPI04]中所述。


DSI中的TE信号


Command Mode显示模块具有其自己的时序控制器和用于显示刷新的本地帧缓冲区。在某些情况下,主机处理器需要被通知显示模块上的时序事件,例如,垂直空白的开始或类似的时序信息。在传统的并行总线接口(如DBI-2)中,提供了一条专用的信号线,标记为TE(Tearing Effect),将这些时序信息传递给主处理器。在DSI系统中,当请求时,应使用双向数据通道将相同的信息以合理的低延迟从显示模块传输到主处理器。
用于DSI的PHY没有从外设到主处理器的固有中断能力,因此主处理器要么依赖于轮询,要么将总线所有权延长到外设,因为它不知道外设何时将发送 =TE消息。
为了轮询显示模块,主机处理器应使用DCS命令(如get_scan_line)检测当前扫描线信息,以避免TE。对于显示模块的TE报告,通过DCS对显示模块控制器的三个命令set_tear_on、set_tear_scanline和set_tear_off来开启和关闭TE报告功能。参见[MIPI01]了解详细信息。
set_tear_on和set_tear_scanline分别作为DSI数据类型0x15(DCS短数据包写,一个参数)和DSI数据类型0x39(DCS长数据包写/write_LUT)发送到显示模块。主处理器结束传输时断言总线反转,将总线所有权交给显示模块。由于显示模块的DSI协议层不解释DCS命令,而只是将它们传递给显示控制器,因此它以正常的确认响应并将总线所有权返回给主处理器。在这种状态下,显示模块不能向主处理器报告TE事件,因为它没有总线所有权。
为了使能TE报告,在TE报告被使能后,主处理器应该在没有伴随的DSI命令传输的情况下,将总线所有权交给显示模块。这是通过主机处理器的协议逻辑断言(内部)总线反转信号到它的D-PHY功能块来完成的。然后物理层将在LP模式下启动总线反转序列,这将总线所有权交给显示模块。
由于根据定义,主处理器不知道TE事件的时间,因此主处理器应将总线所有权交给显示模块,然后等待最多一个视频帧周期的TE响应。在此期间,主机处理器不能向显示模块发送新的命令或请求,因为它没有总线所有权。
当TE事件发生时,显示模块将使用D-PHY协议提供的指定触发消息,通过以下顺序以LP模式发送TE事件信息:
  • 显示模块应发送LP Escape Mode序列;
  • 然后显示模块发送触发消息字节01011101(此处按首尾位顺序显示);
  • 然后显示模块将总线所有权返回给主处理器。
此触发消息由DSI保留,仅用于TE信号,不得用于符合DSI的接口中的任何其他目的。
TE相关命令的详细描述、命令和参数格式请参见[MIPI01]。


ECC(Error-Correcting Code)和Checksum


包头错误检测/纠正
在基于DSI的系统中,主机处理器应该生成一个纠错码(ECC),并将其附加到发送到外设的每个数据包的包头中。ECC采用包头字节后面的单个字节的形式。ECC字节应该为整个包头提供单比特错误纠正和两比特错误检测。
ECC总是由主机处理器生成并附加在包头中。具有双向链路的外设也应生成和发送ECC。
单向DSI系统中的外设虽然不能向主机报告错误,但仍应利用ECC来纠正包头中的单比特错误。
应用于DSI包头的汉明修改码
汉明码使用奇偶校验来纠正单比特的错误或检测两比特的错误,但不能同时做这两件事。DSI使用汉明修改码,其中使用额外的奇偶校验位来支持单比特错误纠正和两比特错误检测。例如,7+1位汉明修改码(72,64)允许保护多达 64位数据位。DSI系统应使用5+1位汉明修改码(30,24),允许保护多达 24个数据位。奇偶校验位的增加允许一个5位的汉明码同时纠正一个单比特的错误和检测一个两比特的错误。
由于包头固定为四个字节(24个数据位和8个ECC位),因此ECC字节的P6 和P7不使用,应由发送端设置为零。在处理ECC之前,接收器应忽略P6和P7,并将两位置零。
奇偶校验位的计算可以优化为:
在发送端上生成ECC
ECC是由包头中的24个数据位生成的,如图所示,这也是一个ECC计算示例。注意,DSI协议使用一个四字节的包头。
在接收端上应用ECC
在接收端上应用ECC包括为接收到的数据包生成一个新的ECC,比对新的 ECC和接收到的ECC,以确定是否发生了单比特错误,如果发生了,则纠正错误。如果一个多比特错误被识别,它被标记并报告给发送端。注意,错误报告只适用于双向DSI实现。
接收端的ECC生成与发送端的ECC生成采用相同的填充规则。
解码有三个步骤:
  • 测试包头中的错误。如果syndrome = 0,则不存在错误。
  • 通过将生成的矩阵与表23中的矩阵进行比较,测试包头中是否有一个单比特错误。如果匹配表中的某一项,则发生了一个单比特错误,相应的位错误。包头中的这个位置应该被补充以纠正错误。同样,如果是单位矩阵I的一行,那么一个奇偶校验位出错。如果不能识别该矩阵,则发生了多比特错误。在这种情况下,数据包包头已损坏,无法恢复。因此,应该设置多比特错误标志。
  • 如前所述,如果检测到单比特错误,则纠正。
长数据包有效载荷的校验和(CRC)生成
为了检测长数据包传输中的错误,对数据包的有效载荷部分计算校验和(CRC)。注意,对于零长度载荷的特殊情况,2字节校验和被设置为 0xFFFF。
校验和只能指示有效载荷中存在一个或多个错误。与ECC不同,校验和不支持纠错。由于这个原因,校验和计算对于单向DSI实现是没有用的,因为外设没有办法向主机处理器报告错误。
校验和的产生和传输是主机处理器向外设发送长数据包时必须执行的。外设将长数据包传输到主机处理器是可选的。但是,长数据包的格式是固定的;不支持校验和生成的外设在向主机处理器发送长数据包时,将发送两个值为 0x0000的字节来代替校验和字节。
主机处理器应该禁用从不支持校验和生成的外设接收的长数据包的校验和检查。
校验和应实现为16位CRC,其生成多项式为x^16 + x^12 + x^5 + x^0。
校验和的传输如图所示。首先发送LS字节,然后是MS字节。注意,在字节中,LS位首先发送。
CRC实现如图所示。在数据包数据进入之前,CRC移位寄存器应该初始化为 0xFFFF。包数据不包括包头,然后作为按位数据流从左边输入,先LS位。每个位在传递到输出以传输到外设之前都要通过CRC移位寄存器。在包载荷中的所有字节都通过CRC移位寄存器后,移位寄存器包含校验和。C15包含校验和的MSB,C0包含16位校验和的LSB。然后将校验和附加到数据流并发送给接收端。接收端使用自己生成的CRC来验证在传输过程中没有发生错误。


往期推荐

01

牛芯半导体亮相ICDIA 2025展会,斩获“2025中国创新IC-强芯评选”生态贡献奖

▲ 点击阅读

02

牛芯半导体成功入围2024年度深圳高成长企业TOP100

▲ 点击阅读

03

牛芯DDR5 IP取得突破性进展

▲ 点击阅读


牛芯半导体(深圳)有限公司(简称“牛芯半导体”)成立于2020年,聚焦提供IP授权与定制、IP代理服务、依托IP技术为客户提供芯片整体解决方案及芯片设计服务。


牛芯半导体在主流先进工艺布局SerDes、DDR等高中端接口IP,产品广泛应用于人工智能、消费电子、网络通信、数据存储、汽车电子、医疗电子等领域。


未来,牛芯半导体持续响应IP市场需求,适应不断演进的接口技术和日益拓展的接口互联场景,赋能数智时代下的千行百业。

【声明】内容源于网络
0
0
牛芯半导体
牛芯半导体,专注于高速互联技术的研发和持续创新,拥有完全自主可控的知识产权,提供全栈式接口IP授权和高速互联芯片的定制方案,赋能芯片国产化;已服务客户超百家,涵盖智能驾驶、人工智能、特种计算等领域,致力成为全球领先的高速互联半导体公司。
内容 96
粉丝 0
牛芯半导体 牛芯半导体,专注于高速互联技术的研发和持续创新,拥有完全自主可控的知识产权,提供全栈式接口IP授权和高速互联芯片的定制方案,赋能芯片国产化;已服务客户超百家,涵盖智能驾驶、人工智能、特种计算等领域,致力成为全球领先的高速互联半导体公司。
总阅读84
粉丝0
内容96