
基于LMS电容失配数字校正的16bit SAR ADC Split ADC MATLAB建模与精度对比研
究
SAR ADC设计里最头疼的就是电容失配问题。当工艺跑到16bit精度时,哪怕几个fF的误差都能让线
性度崩盘。今天咱们聊聊怎么用Split ADC结构配合LMS算法玩转数字校准,手把手用MATLAB验证校准效果
。
先看ADC基础结构。传统SAR的电容阵列一旦出现±3%的随机误差,INL直接飙到200LSB开外。这时候S
plit ADC结构就派上用场了——把主ADC拆成两个子通道ADC1/ADC2,每次转换时让它们互为校验对象。具
体实现看这段建模代码:
```matlab
% 生成5%随机失配的电容阵列
mismatch = 0.05;
cap_array = [1 2 4 8 16].*(1 + mismatch*(rand(1,5)-0.5));
% Split ADC工作模式
adc1_output = sar_conversion(vin, cap_array);
adc2_output = sar_conversion(vin, cap_array.*cal_weights); % 带校准权重的副本
```
重点在cal_weights这个校准系数矩阵。理想情况下它应该是全1数组,实际需要通过LMS算法动态
调整。校准的核心思想可以理解为:让两个子ADC的输出差异驱动权重更新,直到它们的转换误差统计特性
趋同。
看看LMS权重更新怎么实现:
```matlab
mu = 0.001; % 收敛步长
error = adc1_output - adc2_output; % 差异信号
% 电容权重更新公式
delta_w = mu * error * input_vector;
cal_weights = cal_weights + delta_w;
```
这里input_vector对应比较器决策时的电容状态向量。有意思的是,步长参数mu的选择需要反复试
错——太大会振荡,太小收敛慢。实测中发现当输入信号幅值超过0.7Vref时,误差信号的信噪比最适合权重
收敛。
校准效果验证用动态性能对比最直观。跑个8192点的FFT看看: