003、读出电路深度剖析:列并行ADC与单斜率ADC的噪声特性及帧率影响

📅 2026/7/11 16:33:22
003、读出电路深度剖析:列并行ADC与单斜率ADC的噪声特性及帧率影响
003、读出电路深度剖析列并行ADC与单斜率ADC的噪声特性及帧率影响一个让我熬夜三天的bug2018年某款旗舰机项目暗光预览下画面出现周期性横纹像百叶窗一样。团队排查了三天从sensor驱动到ISP配置从电源纹波到时钟抖动最后发现是读出电路的列并行ADC在低增益模式下出现了列间固定模式噪声FPN。那个夜晚我盯着示波器上ADC转换时序的毛刺突然意识到——我们对读出电路的理解还停留在“能用就行”的层面。读出电路被低估的性能瓶颈很多工程师把注意力放在sensor像素设计和ISP算法上却忽略了读出电路这个“中间人”。实际上读出电路决定了sensor能输出的最大帧率、动态范围底噪以及最让人头疼的固定模式噪声。CMOS图像传感器的读出电路主要有两种架构列并行ADC和单斜率ADC也叫全局ADC。它们不是简单的“谁更好”的问题而是在不同应用场景下的权衡。列并行ADC速度与噪声的博弈列并行ADC的核心思想很简单每一列像素都配一个ADC转换器。这样所有列可以同时开始转换大幅提升读出速度。噪声特性我踩过的坑列并行ADC最致命的噪声源是列间失配。每个ADC的参考电压、比较器偏移、电容失配都会产生差异导致同一行像素在不同列读出时出现固定偏差。这就是我开头提到的百叶窗现象的根源。实际调试经验在低增益高ISO场景下列间FPN会被放大。我曾经在某个项目中列间FPN达到0.3%在暗光下肉眼可见。解决方案是双采样CDS配合列校正但校正表需要实时更新因为温度变化会导致失配漂移。另一个容易被忽视的是量化噪声。列并行ADC通常采用逐次逼近SAR架构分辨率受限于电容匹配精度。12bit的列并行ADC实际有效位数ENOB能做到10bit就不错了。别被datasheet上的“12bit”骗了那是理想值。帧率影响速度的代价列并行ADC的帧率优势明显。以4K分辨率3840×2160为例如果每列一个ADC读出时间主要取决于一行像素的转换时间。假设ADC转换周期为1μs那么一帧的读出时间约为2160×1μs2.16ms加上像素曝光时间轻松实现60fps。但这里有个陷阱列并行ADC的功耗与列数成正比。高分辨率sensor比如48MP需要近8000个ADC同时工作功耗轻松超过500mW。手机sensor的散热问题会让你怀疑人生。单斜率ADC精度与噪声的妥协单斜率ADC采用全局架构所有像素共享一个斜坡发生器和一个比较器。像素电压与斜坡电压比较通过计数器记录转换时间。噪声特性别被“高精度”迷惑单斜率ADC理论上可以实现高分辨率16bit以上因为精度取决于斜坡的线性度和计数器的位数。但实际应用中斜坡噪声是最大的敌人。亲身经历某安防项目使用单斜率ADC的sensor在低照度下出现“雪花”噪声排查发现是斜坡发生器上的1/f噪声被放大。解决方案是增加斜坡滤波电容但代价是斜坡斜率变缓转换时间增加。另一个问题是比较器噪声。单斜率ADC的比较器需要在整个转换过程中保持稳定任何抖动都会导致转换误差。我见过最离谱的情况是电源纹波通过比较器耦合到输出产生周期性噪声。帧率影响慢工出细活单斜率ADC的帧率受限于转换时间。对于16bit分辨率需要2^1665536个时钟周期。假设时钟频率100MHz转换时间约655μs。对于1080P分辨率1920×1080一帧读出时间约1080×655μs707ms帧率不到1.5fps。别这样写代码有些工程师试图通过降低分辨率来提高帧率比如只读出部分像素。但单斜率ADC的转换时间与像素数量成正比降低分辨率确实有效但会损失画质。两种架构的实战选择手机/消费电子列并行ADC是主流手机sensor追求高帧率60fps以上和低功耗列并行ADC是必然选择。但需要做好列校正和温度补偿。我的经验在sensor驱动中预留列校正表更新接口每帧根据温度传感器数据动态调整。车载/安防单斜率ADC仍有优势车载和安防场景对帧率要求不高30fps足够但对动态范围和噪声要求苛刻。单斜率ADC配合多斜率技术可以实现120dB以上的动态范围。注意多斜率转换需要精确控制斜坡切换点否则会出现灰度跳变。工业检测混合架构是趋势高端工业相机开始采用混合架构列并行ADC负责高速读出单斜率ADC负责高精度转换。通过时分复用在低分辨率下使用单斜率模式高分辨率下切换到列并行模式。调试难点两种模式的切换时序需要精确同步否则会出现图像撕裂。个人经验性建议别迷信datasheetsensor厂商给出的ADC性能参数通常是在理想条件下测得的。实际项目中电源噪声、温度漂移、PCB布局都会影响ADC性能。拿到sensor后先做噪声基底测试再谈其他。列校正不是万能的列间FPN可以通过校正消除但校正表会随时间漂移。建议在sensor初始化时做一次校正然后在运行过程中每10分钟更新一次。更新频率过高会导致闪烁过低则校正效果变差。关注读出时序很多噪声问题源于读出时序冲突。比如列并行ADC的转换时钟与像素复位时钟耦合会产生串扰。用示波器抓一下读出窗口的时钟抖动往往能发现问题。功耗与性能的平衡列并行ADC的功耗与帧率成正比。如果项目对功耗敏感比如手机考虑在低帧率模式下关闭部分ADC列或者降低ADC分辨率。别让sensor成为发热大户。单斜率ADC的斜坡设计斜坡的线性度直接影响ADC精度。建议使用分段斜坡低电压段用慢斜坡高精度高电压段用快斜坡高速度。这种设计在车载HDR sensor中很常见。最后一点也是最重要的一点读出电路的问题往往在系统联调时才暴露。不要等到项目后期才关注ADC噪声在sensor选型阶段就要评估读出架构是否匹配你的应用场景。我见过太多项目因为ADC性能不足而被迫降规格。这篇文章写于深夜窗外下着小雨。想起当年那个百叶窗bug最后发现是sensor驱动中列校正表初始化顺序错误。有时候最复杂的问题往往源于最简单的疏忽。希望这些经验能帮你少走弯路。