4. ADC与读出行:模拟世界的数字化

像素收集到的光生电荷,本质上还是个模拟量。怎么把它变成数字信号?这就是ADC(模数转换器)的活儿。但ADC放在哪、怎么读,直接决定了传感器的速度、噪声和画质。

我刚开始接触传感器时,总觉得ADC就是个黑盒子——输入电压,输出数字码。后来调了几年才明白,ADC的架构选择,其实是整个传感器设计的核心权衡点。

4.1 从像素到数字:信号链的最后一公里

先看一个典型的CMOS传感器读出链路:

像素单元 → 列总线 → 可编程增益放大器(PGA) → ADC → 数字处理 → 输出

每个像素的复位电平和信号电平,通过源跟随器缓冲后,送到列总线。然后经过PGA放大,最后进入ADC量化。这个过程中,每一步都会引入噪声。

我个人习惯把ADC的量化过程想象成「用尺子量水位」。尺子的刻度就是ADC的分辨率——10bit有1024个刻度,12bit有4096个。水位就是像素电压。尺子越精细,读数越准,但读数时间也越长。

4.2 列级ADC:主流之选

现在的手机和安防传感器,绝大多数采用列级ADC。什么意思?每一列像素共享一个ADC,整行像素同时开始转换。

核心特点:

  • 每列一个ADC,并行转换整行像素
  • 转换时间与行时间耦合,决定了帧率上限
  • 面积和功耗在列级ADC中相对均衡

列级ADC最常用的是单斜率ADC(SS ADC)。它的原理很简单:一个斜坡发生器从0V开始上升,比较器在每个像素列上比较斜坡电压和像素电压。当斜坡超过像素电压时,比较器翻转,计数器记录此时的时间码。

说白了,就是把电压比较变成了时间测量。时间码就是数字输出。

我在项目中遇到过一个问题:斜坡发生器的线性度直接影响ADC的积分非线性(INL)。有一次客户反馈图像有条纹,查了三天才发现是斜坡发生器供电纹波太大,导致斜坡斜率不均匀。嗯,从那以后我每次调板子都会先测斜坡的线性度。

4.3 像素级ADC:极致速度的代价

像素级ADC,顾名思义,每个像素里都集成了一个ADC。这听起来很疯狂,但确实存在,主要用在高速工业相机和科学级传感器上。

对比项 列级ADC 像素级ADC
转换并行度 每列并行 每个像素并行
帧率上限 受限于行时间 极高(万fps级)
像素面积 小(~2-3μm) 大(>10μm)
填充因子 高 低(需要微透镜补偿)
功耗 中等 极高
典型应用 手机、安防、车载 高速成像、科学级

你想想看,如果每个像素都要放一个ADC,那像素面积得有多大?所以像素级ADC的像素尺寸通常在10μm以上,分辨率也受限(一般8-10bit)。但好处是——所有像素同时转换,帧率可以做到非常高。

我记得有一次帮客户调试一款高速相机,用的就是像素级ADC架构。帧率跑到10000fps时,图像依然清晰。但代价是传感器芯片面积大得吓人,散热也是个噩梦。

4.4 全局快门 vs 卷帘快门

快门方式决定了像素如何曝光和读出。这个选择对图像质量影响非常大。

4.4.1 卷帘快门(Rolling Shutter)

卷帘快门是CMOS传感器最常用的方式。它的工作流程是:

  1. 第一行开始曝光,同时其他行继续积累电荷
  2. 第一行曝光结束,开始读出
  3. 第二行开始曝光,依次类推

说白了,各行不是同时曝光的,而是像卷帘一样逐行扫描。这会导致一个问题——果冻效应。拍摄快速运动的物体时,物体会变形,因为不同行的曝光时间点不同。

避坑指南:我曾经调试一款车载传感器,客户抱怨拍到的路牌是歪的。查了半天,发现是卷帘快门导致的果冻效应。后来改用全局快门才解决。如果你做运动场景或LED闪烁抑制的应用,卷帘快门要格外小心。

4.4.2 全局快门(Global Shutter)

全局快门所有像素同时开始曝光,同时结束。曝光结束后,电荷被暂存在像素内的存储节点中,然后逐行读出。

全局快门的关键在于存储节点。每个像素需要额外的电容来暂存电荷。这增加了像素面积,降低了填充因子。而且存储节点会有漏电,导致暗电流噪声。

我调试过一款全局快门传感器,暗电流比同工艺的卷帘快门大了将近一个数量级。后来通过优化存储节点的偏置电压和时序,才把暗电流压下来。

4.5 ADC与快门方式的协同设计

ADC和快门方式不是独立的。它们需要协同工作:

  • 卷帘快门 + 列级ADC:最经典的组合。行时间决定了ADC的转换时间窗口。如果ADC转换太慢,帧率就上不去。
  • 全局快门 + 列级ADC:所有像素同时曝光,但读出时还是逐行转换。ADC的转换时间同样受限于行时间。
  • 全局快门 + 像素级ADC:真正的「同时曝光+同时转换」。帧率可以做到极致,但像素面积和功耗巨大。

调试经验:选择组合时,先问自己三个问题:

  1. 场景中是否有快速运动物体?→ 考虑全局快门
  2. 帧率要求多高?→ 决定ADC并行度
  3. 像素尺寸和成本限制?→ 决定ADC架构

4.6 知识结构图:ADC与读出架构

下面这张图梳理了本章的核心概念和关系:

ADC与读出架构知识结构图 ADC与读出架构知识结构 像素模拟信号 ADC架构选择 列级ADC 每列一个ADC 像素级ADC 每个像素一个ADC 芯片级ADC 整个芯片一个ADC 快门方式 卷帘快门 逐行曝光+读出 全局快门 同时曝光+逐行读出 关键权衡:速度 vs 面积 vs 噪声 vs 功耗 卷帘+列级ADC:主流选择 | 全局+像素级ADC:极致性能

4.7 调试中的关键参数

实际调试时,我通常会关注以下几个ADC相关参数:

参数 含义 调试要点
ADC分辨率 量化位数(10/12/14bit) 分辨率越高,动态范围越大,但转换时间越长
转换速率 每秒转换次数 决定了帧率上限,受限于ADC架构和时钟
积分非线性(INL) 实际转换曲线与理想直线的偏差 INL过大会导致灰度不均匀,表现为固定图案噪声
微分非线性(DNL) 相邻码之间的步长偏差 DNL过大会导致丢码,图像出现条纹
读出噪声 ADC转换引入的噪声 通常与CDS(相关双采样)配合抑制

嗯,这里要注意:ADC的INL和DNL在数据手册上通常给的是典型值,但实际表现受温度、供电电压影响很大。我习惯在-20°C、25°C、85°C三个温度点各测一次,确保全温范围内都合格。

曾经有一次,一款传感器在常温下INL只有±0.5LSB,但到了低温下飙到了±3LSB。查到最后发现是斜坡发生器的温度补偿没做好。从那以后,温度特性成了我必测的项目。

ADC和读出架构的选择,说白了就是一场权衡游戏。没有完美的方案,只有最适合你应用场景的方案。理解这些底层原理,调试时才能快速定位问题,而不是盲目调参数。