2. R-Car显示硬件单元解析
R-Car SoC的显示子系统并不是“一个GPU直接接屏幕”的简单结构,而是由VSP(Video Signal Processor,视频信号处理器)、DU(Display Unit,显示单元)以及各类显示接口PHY共同构成的分层管线。理解这条管线的分工,是后续做多屏输出、带宽评估和同步设计的前提。
一、VSP与DU的分工
VSP负责“把像素准备好”,DU负责“把像素按节拍送出去”。具体来说:
- VSP:承担图层合成(R/G/B/Alpha混合)、缩放(SC)、色彩空间转换(YUV↔RGB)、去隔行、旋转等。它从DDR读取图层数据,合成后写入帧缓冲,或直接输出到DU。VSP有多个实例(VSPD/VSPI/VSPBC等),不同实例能力不同,例如VSPD支持显示输出,VSPI偏向图像处理。
- DU:从VSP或DDR读取已合成的帧,按显示时序(Hsync/Vsync/DE)输出到接口PHY。DU内部包含多个显示通道(channel),每个通道可独立配置分辨率、时序和输出接口。
因此,一条典型显示链是:应用图层 → VSP合成 → 帧缓冲 → DU通道 → 接口PHY → 屏幕。如果图层简单(如单层UI),也可以让DU直接读取DDR帧缓冲,绕过VSP合成,以节省VSP资源。
二、显示接口与PHY
R-Car常见的显示输出接口包括:
- LVDS:常用于车载中控屏、仪表屏,支持单链路/双链路,双链路可驱动更高分辨率(如1920×720@60)。
- HDMI:用于外接显示或后排娱乐,支持TMDS,需注意HDCP和EDID读取。
- DP(DisplayPort):高带宽,适合高分辨率多屏,支持MST(多流传输)可在一根线缆上挂多个屏。
- MIPI DSI:常用于小尺寸屏或仪表,走DSI控制器+DPHY。
每个接口背后都有对应的PHY和时钟源。例如LVDS需要像素时钟(Pixel Clock),HDMI需要TMDS时钟,DP需要链路时钟。这些时钟通常由CPG(Clock Pulse Generator)分频产生,必须与DU通道的时序参数匹配。
三、多屏输出通道分配
多屏场景下,关键问题是“哪个DU通道接哪个接口、由哪个VSP供图”。以R-Car H3/M3为例,DU有多个通道(DU0/DU1/DU2等),每个通道可绑定到不同接口。分配时需考虑:
- VSP实例数量是否够用:每个需要合成的屏最好独占一个VSP,否则要排队。
- 接口PHY是否独立:LVDS和HDMI可能共享某些时钟资源,需查手册确认。
- DDR带宽:多屏同时刷新会叠加带宽需求。
四、时钟与同步机制
多屏同步分为帧同步和时钟同步。帧同步要求各屏的Vsync对齐,否则会出现撕裂或不同步。R-Car可通过以下方式实现:
- 使用同一个像素时钟源分频给多个DU通道,保证时钟同源。
- 配置DU的同步信号输出/输入,让一个通道作为主,其他通道跟随。
- 在软件层用DRM的atomic commit统一提交多屏帧,减少时间差。
需要注意的是,不同接口的时序参数不同,完全对齐Vsync有时需要牺牲某一屏的刷新率或调整porch参数。
五、硬件限制与带宽评估
带宽评估是设计阶段必须做的。基本公式:
单屏带宽 = 水平总像素 × 垂直总行数 × 刷新率 × 每像素字节数
例如:1920×1080@60,每像素4字节(ARGB8888)
水平总像素 ≈ 2200,垂直总行数 ≈ 1125
带宽 ≈ 2200 × 1125 × 60 × 4 ≈ 594 MB/s
若三屏同时输出,总带宽可能超过1.5 GB/s,需确认DDR控制器能否承受。此外,VSP合成时还会额外读写DDR,实际占用更高。硬件限制还包括:每个VSP的最大输入图层数、最大缩放比例、DU通道的最大分辨率等。
六、实际配置中的关键参数示例
以LVDS双链路驱动1920×720@60为例,DU通道需要配置的时序参数大致为:
| 参数 | 典型值 | 说明 |
|---|---|---|
| Hactive | 1920 | 水平有效像素 |
| Hfront porch | 40 | 水平前肩 |
| Hback porch | 40 | 水平后肩 |
| Hsync width | 10 | 水平同步宽度 |
| Vactive | 720 | 垂直有效行 |
| Vfront porch | 10 | 垂直前肩 |
| Vback porch | 10 | 垂直后肩 |
| Vsync width | 5 | 垂直同步宽度 |
| Pixel Clock | 约74.25 MHz | 由CPG分频得到 |
这些参数必须与屏幕规格书一致,否则会出现无显示、偏移或闪烁。配置时通常通过设备树(DTS)的display-timings节点或DRM驱动接口写入。
带宽评估时,除了像素带宽,还要加上VSP合成时的读写开销。一个实用的估算方法是:总DDR带宽 ≈ 各屏像素带宽之和 × 1.5~2.0(合成系数)。如果接近DDR理论带宽的70%,就需要考虑降低刷新率、减少图层或使用压缩(如AFBC)。
- 每个屏是否分配了独立的DU通道?
- VSP实例数量是否满足合成需求?
- 像素时钟是否与屏幕规格匹配?
- 多屏Vsync是否同源或已做同步?
- 总带宽是否留有余量?
掌握这条从VSP到DU再到PHY的完整链路,以及通道分配、时钟同步和带宽估算方法,就能在后续的多屏工程中快速定位瓶颈,做出合理的硬件资源规划。