LCD MIPI DSI简析系列之二

MIPI DSI 协议标准支持两种模式:Command模式和Video模式。

1 Command 模式

只有当LCD面板带有显示控制器和帧缓冲区的时候才能使用Command模式。数据传送的格式一般是在像素数据后跟着命令参数(如果有的话)和命令。主机端可以读写LCD控制器的寄存器和帧缓冲区的内容。

每一帧数据开始传输的时间可以由TE信号(由LCD面板输出)来控制也可以使用其的外接管脚,TE线或是直接通过DSI接口传送的TE 触发信息。

1.1 TE 控制信号

为了使用CMD模式,LCD屏需要内置一个时序控制器和缓冲区存储空间(一般为RAM)。为了防止出现Tearing Effect(切屏或分屏)LCD屏需要把它的时序事件信息传递给主机端。在CMD模式下传送这种时序事件可以通过3种方式来实现:
• 自动模式:当DSI_VC_TE_i[31]寄存器的TE_START位被设置成0x1的时候软件开始传送数据(这种情况下DSI_VC_TE_i[30]即TE_EN位必须要被置成0x0)。一旦数据传送完成TE_START位会被硬件自动清零。这种模式让数据的传送可以通过软件应用来手动控制或是使用TE中断来控制。如果数据传送跟TE信号不匹配,就有可能会出现切屏或分屏现象。
• DSI 物理TE触发器:MIPI DSI 标准定义了一个从屏到主机端的TE触发信息包。一旦收到这种数据包,Host的像素数据就会自动开始传送。
• CMOS TE线:这种方式并不是MIPI DSI 标准的一部分,但OMAP支持它。这种方式使用一个单独的信号线(GPIO)来发送TE信号,当TE COMS 线上的信号来的时候数据就会开始传送。在OMAP上支持两条TE线。一条TE线可以控制一个或多个虚拟通道

2 Video模式

在Video模式下,数据信号实时地从Host传送到Panel. Panel 可以有一个简单的时序控制器和一部分的FB。
Video模式又分三种子模式:

2.1 Non-burst Mode Sync pulses

在这种模式下,DSI基于各种不同的同步数据包来做数据同步。这种数据包括:重构,时间校准等。更具体的请参考DSI协议标准。

2.2 Non-burst Mode Sync event

这种模式和第一种模式很像,但是这种模式不会发重构和时间校准的数据包,它们只发送一种叫做”Sync event”的包。

2.3 Burst mode

在horizontal 的时序是一样的情况下DSI会把连接的速度提升到Panel支持的最大速度。在这种模式下发送RGB数据包的时间被压缩,以留出更多的时间用来传送其他的数据。

为了使能Video模式Host需要发送各种不同的包到panel用来设置开始和结束的Porch.以下是Video模式中用到的数据包:
• VSS:  DSI Sync Event Packet: V Sync Start
• VSE:  DSI Sync Event Packet: V Sync End
• BLLP: DSI Packet: Arbitrary sequence of non-restricted DSI packets or Low Power Mode incluing optional BTA.
• HSS:  DSI Sync Event Packet: H Sync Start
• HAS:  DSI Blanking Packet: Horizontal Sync Active or Low Power Mode, No Data
• HSE:  DSI Sync Event Packet: H Sync End
• HFP:  DSI Blanking Packet: Horizontal Front Porch or Low Power Mode
• HBP:  DSI Blanking Packet: Horizontal Back Porch or Low Power Mode
• RGB:  DSI Packet: Arbitrary sequence of pixel stream and Null Packets
• LPM:  Low Power Mode incuding optional BTA

3 VIDEO & COMMAND Mode优缺点总结

DSI video 模式,主机需要持续刷新显示器,因此相比cmd模式更耗电。由于不使用专用的数据信号传输同步信息,控制信号和RGB数据是以报文的形式通过MIPI传输的,因为持续杀心,所以可以不带帧缓冲器。
DSI cmd 模式,MIPI总线控制器使用命令报文来发送像素流数据,显示其应该有一个全帧长的帧缓冲来存储所有像素数据,一旦数据被放在帧缓冲器中,显示控制器就会从RAM里取出数据,并显示在屏幕上。与video相比,MIPI总线控制器不需要定期刷新数据。

### YOLO模型中的即插即用注意力机制实现与改进 #### 什么是CBAM注意力机制? CBAM(Convolutional Block Attention Module)是一种轻量级的即插即用模块,能够显著增强卷积神经网络的能力。它通过引入通道注意力和空间注意力来突出重要特征并抑制不必要特征[^2]。 #### CBAM的具体组成 CBAM由两个主要部分构成: 1. **通道注意力模块(Channel Attention Module)**: 这一模块通过对输入特征图的不同通道计算加权系数,从而强调重要的通道而削弱无关紧要的通道[^4]。具体过程如下: - 对输入特征图执行全局平均池化(Global Average Pooling, GAP)和全局最大池化(Global Max Pooling, GMP),分别获取每通道的统计信息。 - 将这两种池化的结果送入一个多层感知机(MLP)结构中学习权重向量。 - 使用Sigmoid函数激活这些权重,并将其乘回原始特征图上以完成通道维度上的重新校准。 2. **空间注意力模块(Spatial Attention Module)**: 此模块关注于图像的空间分布特性,在像素级别上进一步细化特征表达能力。其流程包括: - 同样采用GAP和GMP方法提取沿通道方向的信息汇总。 - 融合上述两种方式获得单一响应映射。 - 经过7×7卷积核处理后生成最终的空间注意掩码并与原数据相乘形成优化版输出。 #### 如何在YOLOv8中集成CBAM? 为了提升目标检测性能,可以将CBAM嵌入到YOLO架构内的骨干网或者颈部阶段。以下是基于PyTorch框架的一个简单示例代码展示如何定义以及调用该组件: ```python import torch.nn as nn class ChannelAttention(nn.Module): def __init__(self, channel, reduction=16): super(ChannelAttention, self).__init__() self.avg_pool = nn.AdaptiveAvgPool2d(1) self.max_pool = nn.AdaptiveMaxPool2d(1) self.fc = nn.Sequential( nn.Linear(channel, channel // reduction, bias=False), nn.ReLU(inplace=True), nn.Linear(channel // reduction, channel, bias=False), nn.Sigmoid() ) def forward(self, x): b, c, _, _ = x.size() y_avg = self.avg_pool(x).view(b, c) y_max = self.max_pool(x).view(b, c) y = self.fc(y_avg) + self.fc(y_max) return x * y.view(b, c, 1, 1) class SpatialAttention(nn.Module): def __init__(self, kernel_size=7): super(SpatialAttention, self).__init__() assert kernel_size in (3, 7), 'kernel size must be 3 or 7' padding = 3 if kernel_size == 7 else 1 self.conv = nn.Conv2d(2, 1, kernel_size, padding=padding, bias=False) self.sigmoid = nn.Sigmoid() def forward(self, x): avg_out = torch.mean(x, dim=1, keepdim=True) max_out, _ = torch.max(x, dim=1, keepdim=True) out = torch.cat([avg_out, max_out], dim=1) out = self.conv(out) return x * self.sigmoid(out) class CBAM(nn.Module): def __init__(self, channels, reduction_ratio=16, kernel_size=7): super(CBAM, self).__init__() self.channel_attention = ChannelAttention(channels, reduction=reduction_ratio) self.spatial_attention = SpatialAttention(kernel_size=kernel_size) def forward(self, input_tensor): ca_output = self.channel_attention(input_tensor) sa_output = self.spatial_attention(ca_output) return sa_output ``` 以上片段展示了完整的CBAM构建逻辑及其子部件的设计思路。 #### Mish激活函数的作用 除了加入注意力机制外,还可以考虑替换默认使用的ReLU为更先进的Mish作为新的非线性变换单元[Mish: A Self Regularized Non-Monotonic Neural Activation Function][^3]。这种新型激活函数具备自正则性质,有助于缓解梯度消失现象的同时促进训练稳定性与收敛速度加快。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

产品人卫朋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值