104、多摄同步与带宽管理:时钟对齐与数据流优化
104、多摄同步与带宽管理:时钟对齐与数据流优化去年夏天,我在一个车载环视项目上被折腾得够呛。四颗鱼眼摄像头,硬件方案是安森美AR0234搭配安霸CV22,理论上帧同步精度能到微秒级。产线送来的第一版样机,晚上开出去路试,回来一看录像——左转时四个画面拼接出来的俯视图,车头前面那根车道线,硬生生错开了半个车身。更诡异的是,这种错位不是固定的,车速越快,错得越离谱。我盯着日志看了三天,最后发现是主控的PTP时钟域和ISP的帧同步信号之间,差了整整三个像素时钟周期。这个案例,就是今天要聊的多摄同步与带宽管理最典型的坑。时钟对齐:别信硬件手册上的“同步”多摄系统里,时钟对齐是地基。地基歪了,上面所有算法都是空中楼阁。很多人以为只要把所有摄像头接到同一个MCLK上就完事了,这是典型的纸上谈兵。实际走线时,PCB上每多一个过孔、多拐一个直角,时钟信号到不同sensor的传播延迟就能差出几十皮秒。对于1080P@60fps的MIPI信号,一个像素时钟周期才几纳秒,几十皮秒的偏差足够让D-PHY的DDR采样出错。我在手机项目上踩过一个更隐蔽的坑。当时用两颗索尼IMX586做双摄变焦,硬件设计时把主摄和副摄的XSHUTDOWN信号连在同一个GPIO上,想着同时拉低就能同时开始曝光。结果发现副摄的画面总是比主摄晚半帧。查到最后,是主控芯片内部两个GPIO的驱动能力不同,拉低速度差了0.3微秒。0.3微秒对30fps来说,刚好是一个帧周期的1%。这个误差在静态场景下看不出来,一旦拍运动物体,双摄融合出来的边缘就全是鬼影。正确的做法是:用硬件帧同步信号(FSYNC)代替软件触发