结论先行
Sensor → 串行器阶段遵循 传感器的 pix_clk;
解串器 → SoC 阶段用的是 解串器自己锁相后的 csi_clk,两者只在“整体带宽”层面匹配,而不是频率直接对等。
链路上到底有几把 “时钟”?
┌──────────┐ MIPI D-PHY GMSL串行 MIPI D-PHY
│ Sensor │──pix_clk──►│Serializer│──6 Gb/s──►│Deserializer│──csi_clk──►SoC (NVCSI)
└──────────┘ (Forward link) (RX D-PHY)
阶段 | 时钟名称 | 谁产生? | 物理含义 | 常见数值/配置点 |
---|---|---|---|---|
① Sensor → 串行器 | pix clk(也叫 SCLK、PCLK) | 传感器内部 PLL | 一 像素周期 的基准;决定 line_time / frame_rate 。在 MIPI D-PHY 上体现在 HS 先导时序 + UI | 例如 74.25 MHz(1920×1080@30 fps, 12-bit)由 sensor 驱动代码固定或通过 I²C寄存器设定 |
② 串行器 → 解串器 | Forward-channel serial rate | 串行器 CMU | 将并行像素 + 控制包封装成 GMSL2 3 Gb/s / 6 Gb/s 差分流;与 pix_clk 只按 “带宽够不够” 关系,不必相等 | DT 中 TX_RATE = 0x10(6 G)/0x01(3 G) |
③ 解串器输出 MIPI | csi_clk(RX D-PHY clock lane) | 解串器内部 PLL | 恢复成 MIPI 数据流所需的 lane 时钟;为了吞吐,可以是 2-lane、4-lane 并行,每 lane UI = 1/csi_clk | 典型 400 – 1500 Mbps/lane;DT 的 cil_settletime 、num_lanes |
④ SoC NVCSI-VI | VI pixel clock | SoC 时钟树 (fuse_clk + NVCSI 分频) | SoC 内部再一次把 MIPI packet 解包成线阵像素流时用到的 时钟基准,可在 clk tree 设置 | clk@13e10000 { rate = … } 等 |
补充说明
-
“Sensor 把数据输出给串行器” 时,带过去的是传感器自己的 pix_clk
-
通过 MIPI D-PHY clock lane 连同数据信号一起进到串行器。
-
pix_clk 决定了行周期/帧周期,串行器只是 “吃” 这个节拍,不改变它。
-
-
“解串器输出给 CSI” 时,解串器会重新产生一套 D-PHY 时钟 (csi_clk)
-
频率与前端 pix_clk 不必相同,而是满足 lane 带宽 ≥ 像素带宽 × bpp / lane_num。
-
该时钟在设备树里由 解串器 driver + NVCSI 端口 的参数(
num-lanes
、clock-freq
、cil_settletime
等)决定。 -
SoC 的 NVCSI/VI 再把这套时钟整合进内部像素管线。
-