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传感器最常用的方式。它的工作流程是:
- 第一行开始曝光,同时其他行继续积累电荷
- 第一行曝光结束,开始读出
- 第二行开始曝光,依次类推
说白了,各行不是同时曝光的,而是像卷帘一样逐行扫描。这会导致一个问题——果冻效应。拍摄快速运动的物体时,物体会变形,因为不同行的曝光时间点不同。
避坑指南:我曾经调试一款车载传感器,客户抱怨拍到的路牌是歪的。查了半天,发现是卷帘快门导致的果冻效应。后来改用全局快门才解决。如果你做运动场景或LED闪烁抑制的应用,卷帘快门要格外小心。
4.4.2 全局快门(Global Shutter)
全局快门所有像素同时开始曝光,同时结束。曝光结束后,电荷被暂存在像素内的存储节点中,然后逐行读出。
全局快门的关键在于存储节点。每个像素需要额外的电容来暂存电荷。这增加了像素面积,降低了填充因子。而且存储节点会有漏电,导致暗电流噪声。
我调试过一款全局快门传感器,暗电流比同工艺的卷帘快门大了将近一个数量级。后来通过优化存储节点的偏置电压和时序,才把暗电流压下来。
4.5 ADC与快门方式的协同设计
ADC和快门方式不是独立的。它们需要协同工作:
- 卷帘快门 + 列级ADC:最经典的组合。行时间决定了ADC的转换时间窗口。如果ADC转换太慢,帧率就上不去。
- 全局快门 + 列级ADC:所有像素同时曝光,但读出时还是逐行转换。ADC的转换时间同样受限于行时间。
- 全局快门 + 像素级ADC:真正的「同时曝光+同时转换」。帧率可以做到极致,但像素面积和功耗巨大。
调试经验:选择组合时,先问自己三个问题:
- 场景中是否有快速运动物体?→ 考虑全局快门
- 帧率要求多高?→ 决定ADC并行度
- 像素尺寸和成本限制?→ 决定ADC架构
4.6 知识结构图: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和读出架构的选择,说白了就是一场权衡游戏。没有完美的方案,只有最适合你应用场景的方案。理解这些底层原理,调试时才能快速定位问题,而不是盲目调参数。