Skip to content

理解 blanking

复制本地路径 | 在线编辑

讲一下 blanking

初步介绍

👉 传感器在输出一帧图像时,并不是:

像素 像素 像素 像素 像素(一直连续)

而是:

像素 像素 像素 [空白] 像素 像素 [空白]

这些“空白时间”就是 blanking。

详细说明

分为两种 blanking。

1️⃣ 水平 blanking(HBLANK)

👉 每一行结束后的一段“空时间”

一行数据:
[有效像素][空白][下一行]

2️⃣ 垂直 blanking(VBLANK)

👉 一帧结束后的一段“空时间”

一帧:
[第 1 行]
[第 2 行]
...
[最后一行]
[空白很多行]  ← 这就是 VBLANK

为什么要有 blanking,没有这些空白帧率会高很多

这是你最容易疑惑的点:

❓ “既然没用,为什么不干掉?”

👉 因为硬件需要时间喘气

1. 行与行之间要重置

  • 列电路需要恢复(防止电荷残留)
  • ADC 需要准备下一行
  • 信号需要稳定

2. 帧与帧之间要准备

  • Sensor 重新曝光
  • 数据路径清空
  • ISP / FPGA 同步

3. 兼容历史接口(视频标准)

很多设计继承自:

  • CRT 显示器(真的需要回扫时间)

👉 所以 blanking 被保留下来了

blanking 对帧率的影响

还记得刚才那个公式吗:

FrameRate = PCLK / (HTOTAL × VTOTAL)

关键点:

HTOTAL = 有效像素 + HBLANK
VTOTAL = 有效行数 + VBLANK

👉 所以:

blanking 越大 → 总数据越多 → 帧率越低

为什么工业上更喜欢减 blanking

相比提高采样频率:

  • 不改变信号频率
  • 不增加带宽压力
  • 不增加噪声

但 blanking 不能无限减少(重点)

上一个问题进行了说明

理论上第 n 行输出之后,然后 n+1 行曝光,之后可以立刻输出 n+1 行

对 rolling shutter 的理解不深刻,第二行曝光开始时:✅ 第一行不必等完全读出结束。

举例

时间轴 行 1 行 2 行 3
t0 开始曝光
t1 曝光中 开始曝光
t2 读出 曝光中 开始曝光

所以对于理想模型而言,n 行输出结束的时候,n+1 行也曝光结束,此时不能立刻输出 n+1 行。因为他们复用一个列 ADC,所以还是和上面的问题一样,列 ADC 要有喘息的时间。