基本概念
PCLK:pixel clock是像素点同步时钟信号, 主频。也就是每个PCLK对应一个像素点。
HSYNC:horizonal synchronization是行同步信号,水平同步信号。就是在告诉接收端:“HSYNC”有效时段内接收端接收到的所有的信号输出属同一行。这个概念是来自于显示器,HSYNC是提供给显示器的信号,告诉它停止绘制当前水平线,并开始绘制下一条线。因为显示器显示图像也是一行一行扫描的,比如经常看到的720P, 1080P,这个P就是逐行扫描的意思。还有1080i, i是指隔行扫描。对于sensor,如果是rolling shutter,数据也是一行一行地readout。没读完一行就发送一个HSYNC信号,然后读取下一行。
VSYNC:Vertical synchronization,帧同步信号, 垂直同步信号。以高电平有效为例,VSYNC置高直到被拉低,这个区段所输出的所有影像数据组成一个frame。sensor 通过这个VSYNC来触发读取一帧数据。
FSYNC:frame synchronization,帧同步信号,通常是从sensor外部输入的同步信号,用来控制sensor的曝光时机,即控制sensor在指定的时机曝光。
FSYNC和VSYNC的一种可能的时序如下:
这种模式是FSYNC直接控制曝光起始时间,internal signal 是sensor 内部的一个参考同步信号。
另一种时序可能:
这种模式是FSYNC控制readout时机,间接控制曝光起始时间。
多相机时间同步
多相机同步就是指让多颗摄像头同时曝光。为什么要进行时间同步?在自动驾驶或机器人领域,设备往往要部署多颗摄像头,比如典型双目摄像头方案就包含两个摄像头,车载场景摄像头可能更多,可能高达十数颗摄像头。如果这些摄像头之间不进行时间同步,那么各个摄像头成像的时间就不一致,存在误差,会对后续的流程产生不良影响,比如融合感知的精度会受到很大影响。
下图显示的是两颗摄像头不同步的时序,其中camera2曝光的时间和预期存在一定偏差:
我们期望的曝光时序如下:
那如何确保相机同时曝光呢?
一种可行的办法是让相机的每一帧都由外部FSYNC信号触发,即由外部host在同一时间统一给各个sensor发送同步信号来触发曝光。
FSYNC作为输入,由外部host控制多个sensor进行曝光:
还有一种方案是让其中一个sensor作为master来控制其它sensor曝光,master在曝光时输出FSYNC给其它sensor。
一个sensor作为master输出FSYNC,控制其它sensor进行时间同步: