DSI是一种高速串行接口,旨在通过将数据实时传输到显示模块而不将数据存储在设备中来降低移动设备中显示子系统的成本。但是,这意味着必须使用正确的时序信息发送数据。验证MIPI-DSI最重要的方面是与视频帧传输相关的时序参数。我与几个VIP用户一起完成了整个练习,并认为分享这将很有用,因为它将使其他人了解视频帧传输所涉及的复杂性。
让我们以888×640分辨率的RGB480视频帧为例,了解传输视频帧的相关时序细节。
图 1:888×640 显示屏中的 RGB480 视频格式
在RGB888数据格式中,每个像素有3个字节(24位)的信息,每个分量(R和G和B)有1个字节(8位)。在 640×480 分辨率帧中,每行有 640 像素,帧有 480 行。让我们看看需要与此RGB数据一起发送的时序信息。
每个视频帧应具有以下信息(按顺序):
VSYNC (同步信息)
VBP(垂直后门廊计时信息)
VACT(活动视频数据以及水平后门廊和前门廊定时)
VFP(垂直前门廊定时信息)
VSYNC (同步信息)
VSYNC具有同步脉冲的信息。每个脉冲信息通过发送垂直同步开始或水平同步开始数据包(第一个脉冲单独具有VSS,其余脉冲具有HSS)进行传输,然后是水平同步活动(只不过是一个消隐数据包),水平同步结束和BLLP(如果时间允许,可以引入低功耗状态,这又是一个屏蔽数据包), 参见图 2。此信息针对每个 VSA(垂直同步活动)线路发送。在简化模式下(非突发/突发同步事件),主机只能发送同步脉冲的启动事件(仅限VSS或HSS),外设可以在需要时从收到的同步事件中重新生成同步脉冲。每条VSA线路应在tL(线路时间)范围内,时序参数由外设定义。
在此状态下涉及的定时参数是tL(线路时间),tHSA(水平同步活动时间)和BLLP,这些时序参数的约束显示在VACT部分中,因为这些参数还取决于VACT中的其他参数(HBP,HACT,HFP)。
VBP(垂直后门廊计时信息)
VBP具有垂直后廊定时的信息。VBP 线路信息通过发送垂直同步端或水平同步开始(第一行单独具有 VSE,其余具有 HSS)数据包,然后发送水平同步活动(只不过是消隐数据包)、水平同步端和 BLLP(如果时间允许,可以引入低功耗状态,这又是屏蔽数据包)来传达), 参见图 2。此信息将针对每个 VBP 行发送。每个 VBP 行都应在 tL(行时间)范围内。
图2:具有同步脉冲定时信息的非突发(来源:DSI 1.1规范)
此状态期间涉及的定时参数与 VSA 中的定时参数相同,并将在 VACT 中涵盖,因为这些参数还取决于 VACT 中的其他参数(HBP、HACT、HFP)。
VACT(活动视频数据以及水平后门廊和前门廊定时)
VACT具有活动视频数据以及水平后廊和水平前廊的信息。每个VACT行都有以下信息
HSYNC(水平同步信息):
这与我们在VSA或VBP中看到的Hsync信息相同。这是由HSS传达的,其次是HAS和HSE。同步信息应在外设定义的tHSA定时参数范围内。
HBP(水平后门廊计时信息):
这只不过是一个带有水平后门定时信息的空白包。该信息应在外设定义的tHBP时序参数范围内。
活动线数据(在我们的示例中为 RGB888 数据)
这是具有24位像素信息的活动视频像素数据。每条线路作为一个长数据包发送,也可以分成多个长数据包。但是多条线路不能合并为一个长数据包,在这种情况下,我们可能无法传达第二条线路的 HBP 和 HFP。此信息应在外设定义的 tHACT 定时参数范围内。
HFP(水平前门廊定时信息)
这只不过是一个带有水平前廊计时信息的空白包。该信息应在外设定义的tHFP定时参数范围内。
每行应在tL(线路时间)定时参数范围内。在此状态下涉及的定时参数为tL,tHSA,tHBP,tHACT,tHFP。HSA 应在 tHSA 最小和最大范围内。同样,Line、HBP、HACT、HFP 应在相应的最小和最大时序参数范围内。很难对实时进行约束,因此我们建议将时间转换为字数和字数限制。例如,如果最小 tL 为 tL_MIN,最大 tL 为 tL_MAX则通过将其除以比特率然后除以 8(获得字节数 = 字数)来计算字数。同样,从其他参数的最小和最大范围计算其字数。
bit[15:0] min_line_wc = ((tL_MIN ) / bitrate) / 8;
bit[15:0] max_line_wc = ((tL_MAX ) / bitrate) / 8;
// Note: tL_MIN and tL_MAX are in micro seconds and so make sure the units of bitrate is also in micro seconds
constraint constraint_hsa {
hsa_wc inside {[min_hsa_wc:max_hsa_wc]};
}
constraint constraint_hbp {
hbp_wc inside {[min_hbp_wc:max_hbp_wc]};
}
constraint constraint_hfp {
hfp_wc inside {[min_hfp_wc:max_hfp_wc]};
}
constraint constraint_hact {
hact_wc inside {[min_hact_wc:max_hact_wc]};
// Below constraint is required to make sure HACT has one byte of data for RGB in each pixel
(hact_wc % 3) == 0;
}
constraint constraint_line {
line_wc inside {[min_line_wc:max_line_wc]};
// LINE = HSS (4bytes short packet) + HSA + HSE (4bytes short packet) + HBP + HACT + HFP
line_wc == 4 + hsa_wc + 4 + hbp_wc + hact_wc + hfp_wc;
}
constraint constraint_bllp {
//BLLP = LINE – HSS (4bytes short packet) – HSA – HSE (4bytes short packet)
bllp_wc == line_wc – 4 – has_wc – 4;
}
线路时序约束为hsa_wc、hbp_wc、hact_wc、hfp_wc、HSS 和 HSE 的总和。HSS 和 HSE 是 2 个短数据包,因此每个数据包 4 个字节。BLLP(用于 VSA、VBP 和 VFP)的字数应减去字数统计和 2 个短数据包,HSS 和 HSE 各有字数。
VFP(垂直前门廊定时信息)
VFP具有垂直前廊计时的信息。VFP 线路信息通过发送水平同步开始数据包,然后发送水平同步活动(只不过是一个消隐数据包)、水平同步结束和 BLLP(如果时间允许,可以引入低功耗状态,这又是一个消隐数据包)来传达。此信息针对 VFP 时间发送。每条 VFP 线路都应在外设定义的 tL(线路时间)计时参数范围内。
DSI1.1规范(表22,第8.11.5节)中提到的时序参数范围(最小值和最大值)留给外设供应商的分立器件。除了本博客中解释的非突发同步脉冲之外,还有不同的视频帧信息发送模式,但有微小的变化,例如,在非突发同步事件中,不需要发送HSA和HSE,而只需使用HSS即可。同样,DSI也具有突发模式,其中像素数据使用时间压缩突发格式在更短的时间内传输,从而为LP状态提供更多时间。让我们在后续博客中看一下这些其他模式。希望此博客对那些在DSI中验证视频帧传输的人有所帮助。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !