4. 模拟前端与模数转换:从光子到数字的最后一公里

传感器把光变成了电压,但这事儿还没完。这个电压信号其实特别脆弱——噪声大、幅度小、还带着各种干扰。我刚开始做图像传感器驱动的时候,总觉得ADC就是选个分辨率完事,后来被噪声折腾得够呛,才明白模拟前端(AFE)才是真正的门道。

说白了,模拟前端就是信号从像素出来到变成数字码之间的所有处理环节。它决定了你最终图像的信噪比天花板。你ADC再牛,前面信号没伺候好,也是白搭。

4.1 相关双采样(CDS)——把复位噪声干掉

像素读出最头疼的问题是什么?复位噪声。每次复位像素,那个复位电平都不一样,而且这个噪声是随机的,没法通过平均消除。

相关双采样的思路其实很简单:

  1. 先采样一次复位电平(复位态)
  2. 再采样一次曝光后的信号电平(信号态)
  3. 两者相减,复位噪声就被抵消了

为什么能抵消?因为复位噪声在两次采样之间基本没变,属于“相关”噪声。一减就没了。我当年调试一个全局快门传感器,没开CDS时暗场噪声有20个DN,开了之后直接降到3个DN。效果立竿见影。

关键点:CDS只能消除像素级的固定模式噪声(FPN)和复位噪声。它不能消除读出电路的热噪声和1/f噪声——这些需要后面其他手段处理。

CDS的实现方式有两种:

  • 模拟CDS:用采样保持电路做减法,速度快,但电路面积大
  • 数字CDS:先ADC转换,再在数字域做减法,灵活但需要ADC速度快一倍

现在主流CMOS传感器大多用数字CDS,因为工艺进步后ADC速度上来了。

4.2 可编程增益放大器(PGA)——信号太小?放大它

像素输出的信号电压通常只有几十到几百毫伏。ADC的满量程一般是1V到2V。不放大,你就浪费了ADC的动态范围。

PGA的作用就是把这个小信号放大到ADC的最佳输入范围。它叫“可编程”,是因为增益可以软件配置——通常从1x到16x,甚至更高。

增益设置 适用场景 注意事项
1x - 2x 强光环境、高灵敏度像素 信号可能接近满量程,注意不要饱和
4x - 8x 室内、正常光照 常用范围,信噪比平衡较好
16x 以上 暗光、夜视 噪声也会被放大,需要配合降噪

避坑:我曾经在一个项目中把PGA增益设到32x,结果发现暗部噪声大得离谱。后来一查,PGA本身也有噪声,增益越大,噪声贡献越明显。所以增益不是越高越好,要看你系统的噪声底限在哪里。

4.3 模数转换器类型——选对ADC,事半功倍

图像传感器里用的ADC主要有这么几种:

  • 单斜率ADC:结构简单,面积小,但速度慢。适合低分辨率、高帧率场景
  • 逐次逼近型(SAR)ADC:速度和精度平衡,功耗低。中高端传感器常用
  • 流水线型(Pipeline)ADC:速度快,但面积大、功耗高。高速工业相机用得多
  • Σ-Δ ADC:精度极高,但速度慢。主要用于音频和低频测量

我个人习惯在列并行架构里用单斜率ADC——它天然适合做CDS,而且每个列占的面积小,能塞进像素间距里。

4.4 量化噪声——ADC的“原罪”

ADC把连续的模拟信号变成离散的数字码,这个过程必然有误差。这个误差就是量化噪声。

量化噪声的理论值很简单:

量化噪声 = LSB / √12

其中 LSB = 满量程电压 / 2^N
N = ADC位深

举个例子:一个10位ADC,满量程1V,LSB ≈ 0.977mV,量化噪声 ≈ 0.282mV。这个噪声是加性的,没法消除,只能通过增加位深来降低。

经验之谈:量化噪声通常不是系统的主要噪声源——像素噪声和读出噪声才是。但如果你ADC位深不够,量化噪声就会成为瓶颈。我一般建议ADC的量化噪声至少要比传感器等效输入噪声低3倍以上。

4.5 ADC位深与动态范围——数字能表达多少“灰”

ADC位深直接决定了你能区分多少级灰度。8位是256级,10位是1024级,12位是4096级,14位是16384级。

但位深不等于动态范围。动态范围是最大可测信号与最小可测信号的比值,单位是dB:

动态范围 (dB) = 20 × log10(满量程信号 / 噪声底限)

ADC的理论动态范围是:

ADC动态范围 (dB) ≈ 6.02 × N + 1.76

所以:

  • 10位ADC ≈ 60.2 dB
  • 12位ADC ≈ 72.2 dB
  • 14位ADC ≈ 84.3 dB
  • 16位ADC ≈ 96.3 dB

但传感器的实际动态范围往往比ADC低。你想想看,如果传感器只能做到60dB,你用16位ADC就是浪费——多出来的位全是噪声。

4.6 列并行ADC——速度与面积的博弈

传统做法是一个ADC处理整帧数据,速度慢。列并行ADC的思路是:每一列(或每几列)配一个ADC,同时转换。

这样做的好处:

  • 速度提升N倍(N为列数)
  • 每列ADC可以做得简单、低速、低功耗
  • 适合高分辨率、高帧率传感器

代价是什么?面积。一个1920列的传感器,如果每列一个ADC,那就是1920个ADC挤在芯片上。每个ADC的宽度必须小于像素间距——通常是几微米。

我记得有一次设计一个4K传感器,列间距只有3.2μm。单斜率ADC勉强能塞进去,但SAR ADC就太大了。最后我们用了两列共享一个ADC的方案,面积和速度做了个折中。

4.7 片上ADC校准——让每个ADC都“听话”

列并行ADC有个大问题:1920个ADC,每个的增益和偏移都不一样。如果不校准,图像上就会出现竖条纹——固定模式噪声(FPN)。

校准方法一般分两步:

  1. 偏移校准:输入零信号,测量每个ADC的输出,记录偏移量
  2. 增益校准:输入已知参考电压,测量每个ADC的输出,计算增益误差

校准数据存在片上SRAM或寄存器里,每次读出时做数字补偿。

实战技巧:我习惯在校准前先做一次“暗场采集”——盖上镜头盖,拍一张全黑图。然后分析每列的均值,就能看出偏移校准是否到位。如果还有竖条纹,那就是增益校准的问题。

有些高端传感器还支持在线校准——在每帧的消隐期插入校准序列,实时更新校准参数。这样能补偿温度和电压漂移带来的变化。

4.8 本章知识体系

下面这张图把模拟前端到ADC的完整链路串起来了:

模拟前端与模数转换链路 模拟前端与模数转换完整链路 像素输出 相关双采样 (CDS) 可编程增益 (PGA) 模数转换 (ADC) 片上校准 ADC类型对比 单斜率 ADC 结构简单,面积小 适合列并行架构 SAR ADC 速度与精度平衡 中高端传感器常用 流水线 ADC 速度快,面积大 高速工业相机 Σ-Δ ADC 精度极高,速度慢 音频/低频测量 列并行ADC:每列配一个ADC,同时转换,速度提升N倍 片上校准:偏移校准 + 增益校准,消除列间FPN 量化噪声 = LSB / √12   |   ADC动态范围 (dB) ≈ 6.02 × N + 1.76

4.9 小结

模拟前端和模数转换这块,说白了就是要把像素那个微弱的模拟信号,变成干净、准确、高动态范围的数字码。每一步都有坑:

  • CDS能干掉复位噪声,但别指望它解决所有噪声
  • PGA增益不是越大越好,噪声也会跟着放大
  • ADC类型选型要看你的速度、面积、功耗约束
  • 量化噪声是理论下限,实际系统往往被其他噪声限制
  • 列并行ADC是高速高分辨率的关键,但校准不能省