在模拟集成电路设计中,逐次逼近型模数转换器(SAR ADC)因其结构简单、功耗低的特点,成为中高精度应用的主流选择。我最近用TSMC 65nm工艺完成了一款10位50MHz的SAR ADC设计,这个规格对初学者来说既不会太简单失去挑战性,又不会复杂到让人望而生畏。本文将分享我的完整设计过程,包括关键的栅压自举开关CDAC设计、比较器优化技巧,以及如何用异步时钟和冗余设计提升稳定性。
这个项目特别适合刚接触模拟IC设计的工程师,所有电路模块都采用经典结构,避免使用过于复杂的电路技巧。我会提供完整的前仿真结果和MATLAB行为级模型,但不会涉及版图设计阶段——因为对初学者来说,先理解电路原理和仿真方法比直接画版图更重要。通过这个项目,你可以掌握SAR ADC设计的全流程方法论。
SAR ADC的核心思想类似于天平称重:假设输入电压为1.2V,参考电压Vref为2.5V。第一个时钟周期,DAC输出Vref/2=1.25V,比较器判断1.2V<1.25V,最高位MSB置0;第二个周期输出Vref/4=0.625V,1.2V>0.625V,次高位MSB-1置1...如此反复直至最低位。这种二分搜索方式使得N位转换仅需N个时钟周期,效率极高。
我设计的10位50MHz ADC采用典型的电荷再分配型结构,主要包含五个关键模块:
对于50MHz采样率的10位ADC,有几个关键参数需要特别注意:
在实际设计中,我通过以下措施保证性能:
注意:电容值不宜过小,否则匹配误差会显著影响INL。TSMC 65nm工艺下,50fF电容的面积约6μm×6μm。
传统MOS开关的导通电阻随输入电压变化,导致采样非线性。我的设计采用图1所示的栅压自举电路:
code复制当CLK=0时:
M1导通,M2截止,Cboot充电至VDD
当CLK=1时:
M1截止,M2导通,Cboot电压叠加到M3栅极
使得Vgs=VDD+VIN,保持恒定过驱动电压
这个电路的关键点在于:
实测显示,采用自举开关后,在50MHz采样率下SFDR提升了18dB。
10位CDAC采用5+5分段结构(高5位二进制加权,低5位单位电容),这种设计在面积和线性度之间取得平衡:
| 位权重 | 电容值(fF) | 数量 |
|---|---|---|
| 9 | 512C | 1 |
| 8 | 256C | 1 |
| ... | ... | ... |
| 4 | 16C | 1 |
| 3-0 | C=50fF | 32 |
分段设计带来两个优势:
实操技巧:在布局时采用共质心结构摆放单位电容,并用dummy电容包围,可将匹配误差控制在0.1%以内。
比较器采用图2所示的三级结构:
这种结构的优势在于:
关键设计参数:
传统同步时钟需要精确的时序控制电路,而我的设计采用图3所示的异步时钟生成方案:
这种设计的好处是:
为提高成品率,我在低3位加入了冗余设计:
校准算法MATLAB实现:
matlab复制function [code] = redundancy_correction(raw_code)
MSB = bitshift(raw_code, -3);
LSB = bitand(raw_code, 0x7);
if LSB > 5
MSB = MSB + 1;
end
code = MSB;
end
在TT工艺角、1.2V电源、27℃条件下的仿真数据:
| 参数 | 指标 | 实测结果 |
|---|---|---|
| ENOB | ≥9.5bit | 9.63bit |
| SFDR | ≥65dB | 68.2dB |
| 功耗 | <1mW | 0.82mW |
| 输入带宽 | 25MHz | 27MHz |
图4显示了在10MHz输入、50MHz采样时的FFT分析结果,可见二次谐波抑制良好。
问题现象:DNL测试出现规律性突跳
解决方法:
问题现象:高频输入时ENOB下降明显
排查步骤:
问题现象:低频输入时SFDR恶化
解决方案:
我提供的MATLAB模型包含三个关键脚本:
sar_adc_model.m - 行为级模型dnl_inl_calc.m - 静态特性分析fft_analysis.m - 动态性能评估对于初学者,建议按以下步骤实验:
我在实际调试中发现,温度对比较器阈值影响很大。在-40℃到85℃范围内,失调电压可能变化±15mV。因此建议在仿真时一定要跑PVT全角落。