ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

IMX678传感器深度解析:从60fps与72fps差异到HDR与同步设计

IMX678传感器深度解析:从60fps与72fps差异到HDR与同步设计

简介:这份资料是索尼 IMX678-AAQR1-C 彩色 CMOS 图像传感器的官方数据手册(Datasheet),面向安防监控摄像机、高端成像设备的硬件工程师、驱动开发者与图像算法人员,用于查阅器件规格、设计电路与调试驱动。压缩包内仅含 1 个 PDF 文件,约 2.03MB,完整收录了该传感器的器件结构与电气参数。手册详细给出 1/1.8 型、8.40M 有效像素、2.0μm 方形像素、三路供电与低功耗设计,并列出全像素扫描、2/2 行二值化、窗口裁剪等读取模式,12bit 下 60fps、10bit 下 72fps 的帧率,以及数字重叠 HDR、清晰 HDR、同步传感器、变速快门、HCG/LCG 增益切换和 CSI-2 多 Lane RAW10/RAW12 输出等特性。读者可据此完成寄存器配置、曝光与增益调校、HDR 方案选型及低照度成像评估。目前已有 661 人学习下载,适合需要一手原厂规格依据的工程实践者。

1. 一颗 1/1.8 型传感器,为什么把 60fps 和 72fps 写成了两个数

翻 IMX678-AAQR1-C 的规格书,最先撞进眼里的不是 8.40M 有效像素,而是全像素扫描模式下那行「12 bit: 60 frame/s,10 bit: 72 frame/s」。同一颗芯片、同一个 3840×2160 阵列,为什么换个位宽帧率就变了?这不是营销话术里的数字游戏,而是整条读出链路带宽被算死之后留下的余量。搞懂这个差值从哪来,基本就摸到了这颗传感器的骨架:像素怎么把光变成电荷、电荷怎么被读出、读出后又怎么塞进 CSI-2 的几条 lane 里。对做安防摄像机、机器视觉前端的开发者来说,规格书里那些「HDR」「HCG/LCG」「2/2-line binning」不是参数表装饰,而是决定低照度画面能不能用、多路相机能不能同步的底层开关。下面按「现象 → 机制 → 实现」把这份 datasheet 拆开看。

2. 像素与读出链路:2.0 μm 单元里到底发生了什么

2.1 从光子到电压:主动像素与 CDS 的分工

IMX678 用的是 CMOS 主动像素结构,每个 2.0 μm × 2.0 μm 的单元里除了光电二极管,还集成了源极跟随器和行选开关。光电二极管把入射光子转成电荷,电荷在积分时间内累积,随后被源极跟随器转成电压送出行线。规格书里「electronic shutter with variable charge-integration time」说的就是这段积分时间可调,分辨率到 1H 单位,也就是一行的时间粒度。

真正决定画质下限的是 CDS(相关双采样)。像素复位后的电平里含有复位噪声和固定模式噪声,CDS 在复位电平与信号电平之间做差,把这部分共模噪声扣掉。规格书把 CDS 和 PGA 写在一起,是因为两者串在同一条模拟链上:CDS 先清噪声,PGA 再把微弱信号放大到 ADC 能吃的幅度。常见的实现思路是,CDS 的输出摆幅很小,PGA 的增益直接决定后面 ADC 的有效位数用得多满,所以增益档位不是随便给的,0 dB 到 30 dB 是纯模拟增益,30.3 dB 往上就切到「模拟 30 dB + 数字增益」,因为模拟增益再往上推,噪声也被一起放大,收益递减。

2.2 转换增益切换:HCG 与 LCG 是同一套像素的两种读法

规格书里「Conversion gain switching (HCG Mode / LCG Mode)」这一条,是理解低照度表现的关键。转换增益指的是像素内电荷到电压的转换系数,HCG 模式下转换系数高,同样多的电荷能产生更大的电压摆幅,等效于读出噪声在输入折算后更小,暗光下信噪比更好;代价是满阱容量变小,强光下更容易饱和。LCG 模式反过来,满阱大、动态范围上限高,但暗部噪声大。

所以 HCG/LCG 不是两个独立功能,而是同一颗像素在「灵敏度」和「饱和点」之间的一个物理开关。工程上常见的做法是:低照度场景锁 HCG,白天或强光场景切 LCG,或者配合 HDR 在一帧内两种增益各读一次。这里没有免费的午餐,切换点选错,要么暗部糊成一片,要么高光直接削顶,属于典型的踩坑高发区。

2.3 读出模式:全像素、2/2 binning 与窗口裁剪

规格书列了三种读出模式,对应三种完全不同的数据通路:

模式行为典型用途
All-pixel scan3856×2180 有效区逐行读出4K 全分辨率录像
Horizontal/Vertical 2/2-line binning相邻 2×2 像素合并提升灵敏度与帧率,降分辨率
Window cropping只读感兴趣窗口高速跟踪、ROI 分析

binning 的本质是把 2×2 个像素的电荷在读出前合并,等效像素面积变成 4 倍,灵敏度上升、噪声相对下降,代价是空间分辨率减半。窗口裁剪则相反,跳过不关心的行和列,直接缩短读出时间,帧率能显著提高。规格书还提到 Normal / Inverted readout,即水平或垂直方向反转读出,这在需要镜像安装或特殊光学布局的整机里很有用,不用在 ISP 里再做一次翻转。

3. 帧率与带宽:60fps 和 72fps 背后的算术

3.1 一行像素要搬多少比特

把 3840×2160 全像素、RAW12 输出代进去算一下:单帧比特数约 3840 × 2160 × 12 ≈ 99.5 Mbit。60 fps 时每秒约 5.97 Gbit。换成 RAW10,单帧约 82.9 Mbit,72 fps 时每秒约 5.97 Gbit。两个数字几乎相等,这不是巧合,而是读出链路和 CSI-2 接口的总带宽被卡在同一个量级上。位宽降了,每帧变轻,帧率就能往上顶;位宽升了,每帧变重,帧率就得让路。

这也解释了为什么规格书把「Readout rate」和「CSI-2 serial data output (2 Lane / 4 Lane / 8 Lane / 4Lane × 2ch)」放在一起写。lane 数是物理通道数,每 lane 的速率由输入时钟和 SerDes 配置决定,通道总带宽定了,像素读出速率和输出位宽就只能在这个框里做取舍。做整机时如果只盯着「支持 4 Lane」就以为万事大吉,忽略了 lane 速率和 RAW 位宽的匹配,很容易在 bring-up 阶段发现帧率上不去,这是血泪经验里最常见的一条。

3.2 主时钟与输入频率:为什么列了 8 个频点

规格书给的输入频率是 13.5 / 18 / 24 / 27 / 36 / 37.125 / 72 / 74.25 MHz 这一串。看起来杂,其实分两类:一类是整数 MHz 的通用频点,方便整机用普通晶振;另一类是 37.125 和 74.25 这种带 .125 的,属于视频时钟体系里的标准频点,和 4K 视频的像素时钟体系对得上。传感器内部有 timing adjustment circuit 和 H/V driver,主时钟进来后由内部时序电路分频、生成行同步和像素时钟,所以外部只需要给一个稳定的参考时钟,不用自己搭复杂的时序发生器。

这里有个容易翻车的点:主时钟频点选错,内部时序分频出来的行周期和预期对不上,表现是画面行数不对或者帧率偏差。排查时先量 INCK 的实际频率和抖动,再对照规格书里 Master Clock Waveform 的占空比要求,别一上来就怀疑寄存器配置。

3.3 同步多传感器:XVS/XHS 的主从角色

规格书里「Synchronizing sensors function」和 XMASTER 引脚的主从模式,是多目相机方案的核心。XMASTER 拉高时传感器处于 slave 模式,XVS/XHS 作为输入,由外部主控统一发同步信号;拉低时是 master 模式,传感器自己输出 XVS/XHS 去带别的器件。多颗传感器要做严格同步(比如双目测距、多路拼接),就得让它们都当 slave,共用一套同步脉冲,否则各自 free-run 的相位差会让帧对不齐。

常见的实现思路是:主控产生一路 XVS 分发给所有传感器的 XVS 输入,XHS 同理,同时保证所有传感器的 INCK 同源,避免时钟漂移累积。只同步帧起始不同步时钟,跑几分钟就会看到相位慢慢偏,这种问题在实验室短测里根本暴露不出来。

4. HDR 与寄存器配置:数字重叠和 Clear HDR 差在哪

4.1 两种 HDR 的实现路径

规格书写了 Digital overlap HDR 和 Clear HDR 两种。数字重叠 HDR 的思路是在一帧内用不同曝光时间读出多次,再在片内或片外合成,长曝光保暗部、短曝光保高光,重叠区做加权。Clear HDR 更偏向「干净」的多曝光合成,减少运动伪影和合成痕迹,对动态场景更友好。两者的共同前提是读出链路要能在一帧时间内完成多次读出,这就又回到带宽问题:HDR 模式下有效帧率会下降,因为一帧里塞了多次曝光。

工程上选哪种,取决于场景运动程度。静态监控场景数字重叠 HDR 够用;有快速移动目标时,合成伪影会很明显,这时候 Clear HDR 或者干脆用 HCG/LCG 双增益单帧读出更稳。规格书没写死推荐场景,这个取舍得整机自己定。

4.2 I2C 寄存器访问:单写、顺序写与随机读

传感器通过 I2C 串行通信配置寄存器,规格书给了四种访问方式:随机地址单读、当前地址单读、随机地址起顺序读、当前地址起顺序读,写侧对应随机单写和随机起顺序写。这套协议不复杂,但顺序写有个隐含约束:地址自增的步长和寄存器映射的连续性必须对上,跨页写的时候如果没重新发起始地址,数据会写到错误的页里。

下面是一段典型的 I2C 随机写 + 回读校验的伪代码,用来验证寄存器是否真的落盘:

# 假设 i2c 是已初始化的总线对象,addr 为传感器 7 位地址 def write_reg(reg_addr, value): # 16 位寄存器地址,大端;数据 8 位 i2c.write(addr, bytes([(reg_addr >> 8) & 0xFF, reg_addr & 0xFF, value & 0xFF])) def read_reg(reg_addr): i2c.write(addr, bytes([(reg_addr >> 8) & 0xFF, reg_addr & 0xFF])) return i2c.read(addr, 1)[0] def write_and_verify(reg_addr, value): write_reg(reg_addr, value) got = read_reg(reg_addr) if got != value: raise RuntimeError(f"reg 0x{reg_addr:04X} expect 0x{value:02X} got 0x{got:02X}")

这段代码的关键不在语法,而在「写完必回读」。很多传感器寄存器有只读位、保留位或者写入后需要延迟生效的位,直接写不校验,配置错了也看不出来,等到出图异常再回头查,成本高得多。参数上要注意寄存器地址宽度(这里是 16 位)和数据宽度(8 位),不同型号可能不同,照抄会翻车。

4.3 上电时序与 XCLR:系统清零不是可选项

规格书单独列了 System Clear (XCLR) 的时序。XCLR 是系统复位信号,上电后必须按规格书给的时序拉低再释放,让内部时序电路、PLL 和寄存器进入确定状态。跳过这一步直接配寄存器,常见现象是部分寄存器写不进去或者读出值随机,因为内部状态机还没稳定。电源上也有讲究:AVDD 3.3V、OVDD 1.8V、DVDD 1.1V 三路,上电顺序和斜率如果不符合要求,可能出现闩锁或初始化失败。规格书的 Absolute Maximum Ratings 里 AVDD 上限 3.65V、DVDD 上限 2.0V,超了就是不可逆损伤,不是「稍微超一点没事」。

5. 避坑与排查:bring-up 阶段最容易翻车的几件事

5.1 现象:能读到 ID,但出图全黑

原因通常是 XCLR 释放时序不对,或者主时钟没起振就发了配置。传感器内部时序电路没进入工作状态,寄存器虽然能通过 I2C 访问,但像素阵列没有开始积分。解决方法是按规格书时序重新走一遍上电流程,先用示波器确认 INCK 稳定、XCLR 释放沿干净,再发配置。

5.2 现象:帧率只有预期的一半

多半是 lane 数或 RAW 位宽配错。比如硬件走 4 Lane,寄存器却按 2 Lane 配,或者 RAW12 模式下期望 72fps。回到第 3 章的带宽算术,先算通道总带宽,再核对读出模式和位宽,别在软件层反复调参数。

5.3 现象:多相机画面不同步,跑久了相位漂移

只同步了 XVS 没同步 INCK,或者部分传感器还在 master 模式 free-run。检查 XMASTER 引脚电平,确认所有 slave 的 XVS/XHS 来自同一路主控信号,INCK 同源。短测看不出来,长测必现。

5.4 现象:低照度噪点明显,切 HCG 也没改善

先确认 HCG 是否真的生效,回读转换增益相关寄存器;再检查模拟增益是否已经推到 30 dB 以上还继续加数字增益,数字增益放大的是已经含噪声的信号,不会改善信噪比。正确做法是在 HCG 下用合理曝光,而不是靠拉增益硬撑。

5.5 现象:HDR 画面有鬼影或运动物体边缘发虚

数字重叠 HDR 在多曝光合成时对运动敏感,长曝光和短曝光的时间差内物体移动了,合成就会错位。换 Clear HDR 或缩短曝光差,或者对运动场景改用单帧双增益读出,是更实际的方向。

6. 设计取舍:规格书没写的那部分,才是整机要自己扛的

把这份 datasheet 读到最后会发现,它把「能做什么」写得很清楚,把「该怎么选」留给了整机。60fps 与 72fps 的取舍、HCG 与 LCG 的切换点、数字重叠 HDR 与 Clear HDR 的适用边界、binning 换灵敏度还是保分辨率,这些都不是芯片层面能替你决定的,而是场景决定的。安防摄像机白天要看清车牌、夜里要看清人脸,同一颗传感器在不同时段其实需要不同的读出策略,固件里做场景自适应切换,比死守一套配置更靠谱。

我一般会这么理解这颗芯片:它把模拟链、时序、接口都收进片内,把复杂度压到「配寄存器 + 给时钟 + 接 CSI-2」这三件事上,但恰恰是这三件事里的时序和带宽约束,最容易在 bring-up 阶段翻车。从那以后我每次拿到新传感器,都强制先做三件事:量电源和主时钟、按规格书走一遍 XCLR 时序、写完寄存器必回读校验,然后再谈出图。这套习惯救过不止一次。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进