简介:这份PDF为西安电子科技大学微电子学与固体电子学博士论文,聚焦高性能sigma-delta ADC的系统建模、电路实现与版图设计,适合微电子、模拟集成电路方向的研究生、工程师及ADC设计学习者参考。包内仅含1个PDF文件,大小约5.44MB,内容完整、便于检索阅读;目前已有262人学习下载。论文围绕过采样与噪声整形展开,给出MATLAB系统建模、阶数与前馈/反馈因子等参数确定方法,并量化分析运放有限增益、带宽、摆率、时钟抖动、kT/C噪声等非理想因素。结构层面分别讨论4阶单环1位调制器与改进型前馈MASH 2-2多位4b 4b级联方案,涉及数字抽取滤波器、DWA数字校正及数模混合版图布局。读者可据此梳理从系统指标到电路实现的完整链路,理解精度、动态范围与功耗之间的权衡。
1. 一份博士论文拆开看:sigma-delta ADC 从系统指标到流片参数的完整链路
做音频前端或传感器信号链的人,迟早会碰到一个尴尬区间:带宽几百 kHz、精度要 16 位以上,SAR 追不上,流水线功耗又压不住。这时候翻到 sigma-delta ADC 的论文,通常会看到一堆 NTF、系数和噪声预算,真正能落地的细节反而藏在页缝里。这份 PDF 资源就是一份把系统建模、非理想因素预算、单环 4 阶 1 位调制器、MASH 2-2 4b4b 宽带结构、抽取滤波器和版图隔离串起来的博士论文。它适合两类人:一是正在做 ADC 系统级设计、需要一套可复现的 MATLAB 建模流程的人;二是已经画过开关电容积分器、但总在稳定性、DWA 杂波和抽取滤波器通带边缘上翻车的人。论文给的是特定 0.18 µm CMOS 工艺下的实测结果,不是能直接照搬的开源工程,但设计链路和排查思路可以拆出来用。
2. 从 640 kHz 带宽反推 NTF:MATLAB 建模、系数定标与稳定性检查
2.1 先定边界:640 kHz 带宽、64 倍过采样和 15 位目标怎么互相拉扯
论文里给出的单环路线很明确:信号带宽 640 kHz,采样时钟 81.92 MHz,过采样率 64,目标动态范围 93.9 dB,实测有效位数 15.31 位。把这几个数放在一起,先别急着画电路,先算清楚它们之间的约束关系。过采样率 64 意味着采样频率是带宽的 128 倍,输出数据率降到 1.28 MHz;对 1 位量化器来说,带内量化噪声要靠高阶噪声整形压下去,阶数不够,15 位目标就是空的。单环 4 阶 1 位的选择,本质是用“固有线性”换“稳定性余量”:1 位量化器没有多位 DAC 的失配问题,但高阶环路的输出摆幅和积分器饱和必须靠系数定标和仿真兜住。
我一般会先做一个边界表,把“必须满足”和“可以妥协”分开。带宽、动态范围、功耗、面积是硬指标;过采样率、阶数、量化器位数是设计变量。论文里 56 mW 功耗、1 mm×2 mm 面积,是在 1.8 V 全差分、0.18 µm 混合信号工艺下拿到的,换工艺或换电源电压,系数和电容都要重算。这里最容易犯的错,是把论文的 64 倍过采样直接套到自己的带宽上:如果带宽变成 1.25 MHz,同样的时钟下过采样率掉到 32,带内噪声立刻抬升,4 阶 1 位未必还能稳住 15 位。
提示:论文里的 15.31 位是特定工艺、特定版图和特定测试条件下的结果,不是换一个工艺就能复现的“标称值”。先把自己的带宽、时钟、电源和工艺边界写清楚,再决定哪些参数能借。
2.2 用 MATLAB 把 NTF 落到系数:前馈、反馈、积分器增益
系统级设计的第一步不是画原理图,而是把噪声传递函数 NTF 和信号传递函数 STF 定下来。论文里提到用 MATLAB 做系统建模和仿真,根据过采样率、精度和动态性能要求,得出调制器阶数以及前馈因子、反馈因子、积分器增益因子。常见做法是用 Delta-Sigma Toolbox 里的synthesizeNTF先综合出一个满足带内噪声目标的 NTF,再用realizeNTF转成积分器链路的系数。下面这段是示意脚本,函数名和参数顺序按手头工具箱调整,重点是看每一步在定什么。
fs = 81.92e6; % 采样时钟,对应论文单环路线的 81.92 MHz bw = 640e3; % 信号带宽 OSR = fs/(2*bw); % 过采样率,约等于 64 order = 4; % 单环 4 阶 opt = 0; % 1 位量化器 Hinf = 1.5; % 带外增益,先给一个保守值,后面扫 f0 = 0; % 零点位置,低通设计从 0 开始 % 综合 NTF,得到零极点形式 ntf = synthesizeNTF(order, OSR, opt, Hinf, f0); % 转成积分器链路系数,常见输出为 A/B/C/D 或 ABCD 矩阵 [a, b, c, d] = realizeNTF(ntf, 'CIFB'); % 看带内噪声积分,确认是否满足目标动态范围 [ntf_mag, f] = fresp(ntf, linspace(0, bw, 4096), fs); inband_noise = sum(ntf_mag.^2) / length(ntf_mag); snr_est = 10*log10(1/inband_noise); disp(['带内 SNR 估算: ', num2str(snr_est), ' dB']);这段代码的逻辑是:先由 OSR 和阶数综合出 NTF,再转成 CIFB 积分器链路的系数。Hinf是带外增益,给得越高,带内噪声压得越狠,但积分器输出摆幅和稳定性余量越紧;f0是 NTF 零点,低通设计通常从 0 开始,如果带宽边缘噪声抬头,可以把零点往带内挪一点,但别指望它解决所有问题。realizeNTF出来的系数不是最终电路值,还要做动态范围定标,否则第一级积分器先饱和,后面全是非线性。
这里有个血泪经验:不要只看snr_est一个数。把 NTF 幅频响应画出来,看带内是否平坦、带外抬升是否超过量化器输入范围。论文里 4 阶单环 1 位能到 93.9 dB 动态范围,靠的不是某一个系数,而是 NTF、积分器摆幅、采样电容和运放增益一起兜住的。系数定标后,每一级积分器的输出分布要单独跑一遍,最大摆幅留 20% 到 30% 余量,别等版图画完才发现第一级运放已经贴到电源轨。
2.3 系数定标后的稳定性与输出摆幅检查
高阶单环的稳定性不是“仿真能收敛”就算过。常见做法是跑三组仿真:小信号输入看带内 SNR,接近满幅输入看积分器输出是否过载,阶跃输入看环路恢复时间。论文里提到高阶单环结构在较高信噪比和较好谐波失真要求下受青睐,但稳定性是条件稳定,必须靠仿真验证。我的习惯是把每一级积分器的输出直方图打出来,看 99.9% 分位点离电源轨还有多少;如果第三级或第四级已经频繁贴轨,带内噪声会以“偶发跳变”的形式冒出来,频谱上不一定好看,但 SNDR 会掉。
另一个容易忽略的是系数缩放。MATLAB 里综合出来的系数是归一化的,落到开关电容电路时,采样电容、积分电容、反馈电容的比值会受 kT/C 噪声和匹配限制。论文里 1.8 V 全差分、64 倍过采样、640 kHz 带宽,采样电容不是随便给的:电容太小,kT/C 噪声压不住;电容太大,运放驱动和功耗又上去了。这个权衡在第 3 章会展开,但在系统级就要先标一个下限,否则后面电路设计只能反复返工。
注意:系数定标不是把 MATLAB 输出直接抄进电路。每级积分器的摆幅、运放输出范围、开关导通电阻都会改变有效系数,定标后要回到系统仿真里再跑一遍,确认带内噪声和稳定性没有跑偏。
2.4 从系统仿真到电路指标:哪些结果可以直接信
系统仿真能信的部分,是带内噪声趋势、NTF 形状、积分器输出分布和稳定性边界;不能直接信的部分,是绝对精度和谐波。理想积分器加理想量化器跑出来的 SNR,通常比实际电路高 10 dB 以上,因为运放有限增益、有限带宽、摆率、开关非线性和时钟抖动都没进去。论文里专门对这些非理想因素做了量化分析,这一点很关键:系统仿真不是用来“证明设计能到 15 位”,而是用来定电路指标的预算。比如运放直流增益要多少、采样电容下限是多少、时钟抖动控制在什么量级,都要从系统仿真里反推。
我一般会把系统仿真结果整理成三列:仿真值、预算值、验证方法。仿真值给理想条件下的上限,预算值给留余量后的电路目标,验证方法写清楚用哪种仿真或测试去卡。这样后面电路设计不会拿“理想 SNR”当 KPI,也不会在流片后才发现某个非理想因素根本没进预算。论文里单环路线最终做到 15.31 位、93.9 dB 动态范围,是把这些非理想因素逐项折进去之后的结果,不是单靠一个高阶 NTF 撑起来的。
3. 非理想因素怎么折算成电路指标:运放增益、kT/C、时钟抖动与开关非线性
3.1 运放有限直流增益:带内噪声抬升不是线性项
开关电容积分器里的运放不是理想放大器,有限直流增益会让积分器产生增益误差,还会把一部分量化噪声搬回带内。论文里把运放有限直流增益列为非理想因素之一,做量化分析。工程上常见的起步预算是:对 15 位目标,单级运放直流增益至少 80 dB 到 90 dB,具体要看阶数、系数和积分器位置。第一级积分器的运放最敏感,因为它的误差没有被前面的环路抑制;后面几级可以适当放宽,但别放得太狠,否则高阶环路的噪声整形会漏。
我一般会先跑一个增益扫描:把运放直流增益从 60 dB 扫到 100 dB,看带内 SNDR 和积分器输出误差怎么变。如果 80 dB 到 90 dB 之间曲线已经平了,说明增益不是瓶颈;如果还在爬,说明要么增益不够,要么其他非理想因素把曲线压住了。这里别只看 SNDR,还要看低频噪声抬升和积分器输出偏差。有限增益带来的误差是静态的,但它会和开关非线性、电容失配混在一起,频谱上不一定能一眼分开。
3.2 有限带宽与摆率:建立误差怎么变成偶次/奇次失真
运放有限单位增益带宽和摆率会影响开关电容积分器的建立过程。建立不完整,采样电荷没有完全转移到积分电容上,等效于系数误差和非线性。论文里把有限带宽和摆率列进非理想因素,说明这两项不是“仿真收敛就行”。常见做法是让运放的单位增益带宽至少是采样时钟的 5 到 10 倍,摆率要覆盖最大输入阶跃下的建立要求。这个倍数不是死的:采样电容越大、反馈系数越小,建立越难,倍数要往上走。
建立误差最麻烦的地方是它和输入信号相关。小信号时建立够了,大信号时摆率不够,输出就会出现与幅度相关的失真;如果差分路径不对称,偶次谐波也会冒出来。我一般会在系统仿真里加一个一阶建立模型,先看多大建立误差会让 SNDR 掉 1 dB,再把这个误差折算成运放带宽和摆率指标。这样比直接拍一个“带宽大于 10 倍时钟”更靠谱,因为不同系数、不同电容下的建立要求差很多。
3.3 kT/C、时钟抖动与开关非线性:三项容易被理想仿真吃掉
kT/C 噪声是采样电容的下限。论文里把采样电容 kT/C 噪声列为非理想因素,做量化分析。简单估算:采样电容越小,kT/C 噪声越大;要压到带内量化噪声以下,电容不能太小。对 1.8 V 电源、全差分结构,采样电容通常在一些皮法到几皮法量级,具体要看带宽、过采样率和目标 SNR。下面这段脚本用来做快速预算,不是精确仿真,但能把量级卡住。
k = 1.380649e-23; % 玻尔兹曼常数 T = 300; % 温度,单位 K C = 2e-12; % 采样电容,先按 2 pF 试算 Vref = 1.8; % 参考电压,全差分峰峰值按 1.8 V 估算 % 单端等效 kT/C 噪声功率,全差分按两倍电容折算,这里只做量级估算 noise_power = k*T/C; noise_rms = sqrt(noise_power); snr_kTC = 20*log10((Vref/2)/noise_rms); disp(['kT/C 噪声 RMS: ', num2str(noise_rms*1e6), ' uV']); disp(['kT/C 限制 SNR: ', num2str(snr_kTC), ' dB']); % 时钟抖动对 SNR 的限制,f_in 取 1.25 MHz,sigma_j 取 10 ps f_in = 1.25e6; sigma_j = 10e-12; snr_jitter = -20*log10(2*pi*f_in*sigma_j); disp(['时钟抖动限制 SNR: ', num2str(snr_jitter), ' dB']);这段脚本的逻辑很直接:kT/C噪声功率是kT/C,RMS 噪声除以满幅的一半得到 SNR 估算;时钟抖动用-20log10(2π f_in σ_j)估算。参数里C=2 pF、Vref=1.8 V、f_in=1.25 MHz、σ_j=10 ps都是起步值,实际要按自己的采样电容、输入频率和时钟源改。算出来如果 kT/C 限制的 SNR 只有 85 dB,而目标是 93 dB 动态范围,那采样电容就得往上加,或者用相关双采样、斩波之类的手段,别硬扛。
开关非线性容易被理想仿真吃掉。采样开关导通电阻随输入信号变化,会引入失真;自举开关在低电源电压下能改善线性度,但会增加时钟馈通和可靠性问题。论文里把开关非线性列进非理想因素,说明它不是只靠“加大开关”就能解决。我一般会在电路仿真里单独跑一个开关线性度测试:给一个接近满幅的低频正弦,看输出频谱的三次谐波;再把开关尺寸、自举电容、时钟沿扫一遍,确认谐波不是被其他非线性掩盖。
3.4 把非理想因素写成预算表
非理想因素不能只在脑子里过一遍,要写成表,否则电路设计到后面会变成“凭感觉加余量”。下面这张表是我按论文里提到的几项整理的预算模板,具体数值要按自己的指标填。
| 非理想因素 | 主要影响 | 起步预算 | 验证方法 |
|---|---|---|---|
| 运放有限直流增益 | 积分器增益误差、带内噪声抬升 | 第一级 80~90 dB,后级可放宽 | 增益扫描,看 SNDR 是否进入平台 |
| 有限单位增益带宽 | 建立误差、与输入相关的失真 | 5~10 倍采样时钟起,按建立误差折算 | 一阶建立模型 + 瞬态仿真 |
| 摆率 | 大信号建立不完整、偶次失真 | 覆盖最大输入阶跃,留 20% 余量 | 满幅阶跃仿真,看建立尾巴 |
| 输出摆幅限制 | 积分器过载、稳定性边界 | 每级输出留 20%~30% 余量 | 输出直方图,看 99.9% 分位点 |
| 采样电容 kT/C | 带内白噪声底 | 低于量化噪声 6~10 dB | 噪声预算 + 瞬态噪声仿真 |
| 时钟抖动 | 高频输入 SNR 下降 | 按输入频率和抖动预算算 | 抖动注入仿真 |
| 开关非线性 | 三次谐波、SFDR 下降 | 自举开关 + 尺寸扫描 | 满幅低频正弦频谱 |
这张表的作用不是给一套万能参数,而是把“系统仿真—电路指标—验证方法”串起来。论文里能到 15.31 位,不是某一项特别强,而是这些项都没有明显短板。反过来,如果流片后 SNDR 比仿真低很多,先回到这张表,看哪一项的预算被突破了,比盲目改电路有效。
4. 单环 4 阶 1 位调制器与多级抽取滤波器:1.8 V 全差分链路的实现细节
4.1 单环 4 阶 1 位的选型:固有线性换稳定性余量
论文里设计了两个结构:一个是 4 阶单环 1 位调制器加降采样数字抽取滤波器,0.18 µm CMOS 工艺,芯片面积 1 mm×2 mm,功耗 56 mW,1.8 V 全差分,过采样率 64,时钟 81.92 MHz,带宽 640 kHz,实测精度 15.31 位,动态范围 93.9 dB;另一个是面向无线局域网的 MASH 2-2 4b4b 宽带结构。先看单环路线,选 1 位量化器的理由很直接:1 位量化器固有线性,不需要多位 DAC 的失配校正,适合线性度要求高的场合。代价是量化噪声大,必须靠高阶噪声整形和过采样压下去。
4 阶单环的稳定性是条件稳定,系数定标和积分器摆幅比 2 阶结构紧得多。论文里能做成,说明 NTF 综合、系数缩放和电路实现是一起调的。工程上如果带宽不高、线性度要求高,单环 4 阶 1 位是合理选择;如果带宽往上走,单环堆阶的稳定性余量会越来越薄,这时候才考虑 MASH 或多位量化。这里别反过来:不是 MASH 一定比单环好,MASH 对模拟和数字抵消路径的匹配更敏感,单环 1 位在低带宽高线性场景反而更稳。
4.2 全差分开关电容链路:1.8 V 下的时序与摆幅
全差分开关电容积分器是这套单环路线的基本单元。1.8 V 电源下,开关的过驱动电压不大,采样开关要用自举或低阈值器件;全差分结构能抑制偶次谐波和共模噪声,但共模反馈电路会增加功耗和设计复杂度。论文里提到调制器采用 1.8 V 全差分电路结构,这意味着每一级积分器的输出共模要稳住,否则差分摆幅会被压缩。我一般会先定共模电压和输出摆幅,再反推运放的输入对管尺寸和尾电流,别先画运放再补共模反馈。
时序上,两相不重叠时钟是基础,采样相和积分相的重叠会引入电荷共享,不重叠时间不够又会限制建立。常见做法是把不重叠时间控制在采样周期的 5% 到 10%,同时留足够的建立时间。时钟馈通和电荷注入在 1.8 V 下更明显,尤其是自举开关的时钟沿,版图上要把时钟走线和模拟信号走线分开。论文里芯片面积 1 mm×2 mm,模拟和数字都在里面,版图隔离不是可选项,是必选项。
4.3 64 倍抽取滤波器的多级分解:通带 0.01 dB、阻带 80 dB 怎么分
数字抽取滤波器是单环路线后面的大头。论文里给的指标很具体:通带波纹小于 0.01 dB,阻带衰减 80 dB,过渡带 640 kHz 到 740 kHz,输出采样频率降到奈奎斯特频率,输出速率 1.28 MHz。64 倍抽取如果用一个 FIR 直接做,运算量和存储量都很大;多级分解能显著减少运算量和存储单元,这是论文里明确提到的思路。常见做法是 CIC 先做大比例抽取,再用半带滤波器逐级减半,最后用补偿 FIR 修通带下垂。
下面这张表是按 64 倍抽取给的一种示意分解,具体级数和抽取比要按通带、阻带、过渡带和字长重新算,不能直接照抄。
| 级数 | 滤波器类型 | 抽取比 | 主要任务 | 注意点 |
|---|---|---|---|---|
| 1 | CIC | 16 | 大比例抽取,抗混叠粗滤 | 通带下垂要后面补偿,字长要够 |
| 2 | 半带 FIR | 2 | 进一步降采样,保留通带 | 半带系数对称,乘法可省一半 |
| 3 | 半带 FIR | 2 | 继续降采样 | 通带边缘要盯住 0.01 dB |
| 4 | 补偿 FIR | 1 | 修 CIC 通带下垂,压阻带 | 系数量化会影响阻带衰减 |
这张表的关键不是抽取比本身,而是每一级的通带边缘和阻带起点怎么分配。过渡带 640 kHz 到 740 kHz 只有 100 kHz,最后一级滤波器的阶数会被这个过渡带推高;如果前面 CIC 的通带下垂没留够余量,最后补偿 FIR 会很难做。我一般会先把总幅频响应画出来,再逐级分配通带波纹和阻带衰减,别等每一级都设计完才发现总指标对不上。数字滤波器是全数字 CMOS 实现,面积和功耗是难点,多级结构能省运算量,但级数太多也会增加控制逻辑和存储,取一个折中。
4.4 版图与数模隔离:1 mm×2 mm 面积里的取舍
芯片里既有模拟调制器又有数字抽取滤波器,数字噪声会通过衬底和电源耦合到模拟部分。论文里专门提到版图设计至关重要,要防止数字电路噪声影响模拟电路性能。工程上常见的做法是:模拟和数字分区放置,各自独立的电源和地,地在片外单点连接;时钟走线远离敏感模拟节点,采样时钟尽量走差分或屏蔽;数字输出缓冲器靠近焊盘,减少回流路径穿过模拟区。1 mm×2 mm 的面积不算宽裕,隔离环、去耦电容和布线通道都要提前规划,别等布局完再硬塞。
提示:数模混合芯片的版图隔离,最容易被低估的是电源和地的回流路径。原理图上的“模拟地”和“数字地”如果在片内随便连,数字开关噪声会直接抬升模拟地的电位,频谱上表现为白噪声底抬高或杂波。
5. 宽带 MASH 2-2 4b4b 的落地与排查:第二级反馈因子、DWA 和五个翻车点
5.1 宽带路线为什么选 MASH 2-2:单环堆阶的稳定性边界
论文里对单环和 MASH 的优缺点说得很清楚:单环结构简单、线性度高,适合高精度线性应用,但难以做到高速;MASH 由多个低阶单环级联,每级采用固有稳定的低阶结构,整体能实现高阶噪声整形,同时保持稳定性。面向无线局域网的宽带场景,论文选了前馈 MASH 2-2 多位 4b4b 级联结构,在第二级加入反馈因子,每级用 4 位量化器减少量化噪声,再用 DWA 校正 4 位 DAC 的失配。测试结果:-6 dBFS、1.25 MHz 输入,采样频率 160 MHz,SNDR 峰值 80.9 dB,SFDR 87 dB,ENOB 13.15 位。
这条路线和单环 4 阶 1 位的取舍很不一样。MASH 2-2 每级只有 2 阶,单级稳定性好,但级间增益匹配、数字抵消逻辑和多位 DAC 失配会直接吃掉性能。论文里在第二级加反馈因子,目的是改善带内 SNDR;用 4 位量化器降低量化噪声;用 DWA 压 DAC 失配。三个手段是一套组合拳,少一个,实测指标都可能掉。工程上如果带宽到 MHz 级、目标 13 位左右,MASH 2-2 4b4b 是合理路线;如果目标 15 位以上、带宽几百 kHz,单环 1 位反而更稳。
5.2 第二级反馈因子与 4 位量化器:参数怎么落、数字抵消怎么配
MASH 的核心是数字抵消:第一级的量化误差被第二级重新量化,数字域把第一级量化噪声抵消掉,只留下第二级经过高阶整形的量化噪声。第二级加反馈因子,会改变第二级的 STF/NTF,也会影响数字抵消的传递函数。参数怎么落?常见做法是先把每一级的 NTF 综合出来,再把级间增益和数字抵消滤波器系数一起定标,让第一级量化噪声在数字输出端抵消干净。这里没有“单级调好再拼”的捷径,模拟和数字要一起仿真。
4 位量化器降低了量化噪声,但也带来 4 位 DAC 的失配。论文里用 DWA 做数字校正,原因是 DWA 简单实用。多位量化器的好处是量化噪声小、对积分器摆幅要求低;坏处是 DAC 失配会产生谐波,必须靠 DEM/DWA 压下去。我一般会先跑一个蒙特卡洛,看单位电容失配在 0.1%、0.5%、1% 下 SFDR 掉多少,再决定 DWA 的基数和单位元件数量。单位元件太少,DWA 的随机化效果不够;太多,版图匹配和开关驱动又难做。
5.3 DWA 校正:实现步骤、输入相关 tone 和失配残余
DWA 的基本思路是让 4 位 DAC 的 15 个单位元件轮流被选中,把失配误差平均掉。实现上需要一个指针,每个采样周期根据输入码值移动指针,选中的单位元件组合输出。下面这段是伪代码,用 Python 写,重点是看指针移动和单位元件选择逻辑,不是可综合 RTL。
# DWA 伪代码:4 位 DAC,15 个单位元件 N = 15 ptr = 0 history = [0] * N def dwa_encode(code, ptr): # code 范围 0~15,实际 4 位 DAC 常用 15 个单位元件加一个固定参考 selected = [] for i in range(code): idx = (ptr + i) % N selected.append(idx) new_ptr = (ptr + code) % N return selected, new_ptr # 模拟一段输入,观察指针是否周期性重复 for k in range(64): code = 8 # 固定中间码,实际要换成调制器输出 sel, ptr = dwa_encode(code, ptr) for i in sel: history[i] += 1 print(history)这段伪代码的逻辑是:指针从当前位置开始,连续选code个单位元件,然后指针移动code位。固定输入码时,指针会周期性重复,这就是 DWA 可能产生 idle tone 的根源。实际实现里要加随机化或旋转步长扰动,或者用更高基数的 DWA 变体,把周期性打散。参数N=15对应 4 位 DAC 的单位元件数,具体要按实际 DAC 结构改;code是调制器输出码,范围要跟量化器电平对齐。DWA 不是万能线性化,单位电容失配太大时,它只能把谐波打散成噪声,SFDR 不会凭空回来。
5.4 五个翻车点:现象、原因、解决
翻车点一:MASH 输出频谱里第一级量化噪声泄漏,SNDR 比仿真低 10 dB 以上。现象是低频段噪声底明显抬高,数字输出频谱在带内出现第一级 NTF 的形状。原因通常是模拟和数字抵消路径的增益或延迟不匹配,比如采样保持路径的延迟、数字滤波器的群延迟、级间增益误差。解决方法是把数字抵消逻辑里的增益和延迟做成可调,流片后做 trim;版图上让两级调制器的采样时刻和信号路径尽量对称;系统仿真里故意注入 0.5% 到 1% 的增益失配,先看性能退化能不能接受。
翻车点二:DWA 后 SFDR 在特定输入幅度下出现离散杂波。现象是某些输入幅度下频谱冒出固定频率的尖峰,换一个幅度就消失。原因是 DWA 指针周期性重复,形成与输入相关的 idle tone。解决方法是给指针加随机抖动或改变旋转步长,或者用数据权重平均的变体;测试时做输入幅度扫描,别只测一个点。这个问题很玄学,仿真时容易被忽略,因为理想 DWA 模型没有把指针周期性和输入码的耦合显式建模。
翻车点三:第二级反馈因子加完后,带内 SNDR 没升反降。现象是第二级输出摆幅被压缩,积分器过载,带内噪声反而抬高。原因是反馈因子改变了第二级的信号增益,系数没有重新定标,或者第二级运放输出范围不够。解决方法是重新跑第二级的输出分布,看 99.9% 分位点是否贴轨;降低前馈系数或增加饱和保护;在系统仿真里把第二级反馈因子和积分器摆幅一起扫,别单独调一个参数。
翻车点四:4 位 DAC 失配导致三次谐波,DWA 压不下去。现象是 SFDR 被三次谐波限制,DWA 打开后谐波变成噪声底,但带内噪声抬高。原因是单位电容失配太大,DWA 的有效位数不够,或者单位元件版图匹配差。解决方法是做共中心版图、加 dummy、提高单位电容面积;蒙特卡洛看失配分布,别只看典型值;DWA 的基数要和失配量级匹配,失配大时单纯加快指针不一定有用。
翻车点五:数字抽取滤波器通带边缘衰减超过 0.01 dB。现象是带内高频端幅度掉得快,测试时看起来像调制器带内噪声抬头。原因是 CIC 通带下垂没有补偿够,或者补偿 FIR 系数量化后通带波纹超了。解决方法是把 CIC 的抽取比和补偿 FIR 的阶数一起优化,给通带边缘留余量;系数量化用足够字长,最后一级乘法器别省位;把总幅频响应从输入到输出整体仿真一遍,别只单独看每一级。
6. 把论文变成验证清单:从 spectre 仿真到实测复现的进阶技巧
6.1 验证清单:三个必须过的仿真关口
把论文里的设计链路搬到自己项目里,最容易犯的错是“系统仿真过了就以为电路能过”。我一般会卡三个关口:第一关是系统级 NTF 和系数定标,看带内噪声、积分器输出分布、稳定性边界;第二关是电路级瞬态,看建立误差、输出摆幅、共模稳定;第三关是混合信号后仿,看数字抽取滤波器和调制器连起来后的频谱。每一关的通过标准要写死,比如带内 SNDR 比目标高 3 dB 余量、积分器输出 99.9% 分位点离电源轨至少 150 mV、抽取滤波器通带边缘衰减不超过 0.01 dB。
| 验证关口 | 看什么 | 通过标准 | 常见失败原因 |
|---|---|---|---|
| 系统级 | NTF、带内噪声、积分器摆幅 | SNR 比目标高 3 dB,摆幅留 20% 余量 | 系数未定标、Hinf 给太高 |
| 电路级 | 建立误差、共模、输出摆幅 | 建立误差 < 0.1%,共模漂移 < 50 mV | 运放带宽不够、共模反馈慢 |
| 混合后仿 | 输出频谱、SFDR、通带边缘 | SNDR/SFDR 不低于预算,通带波纹达标 | 数字噪声耦合、抽取滤波器系数错 |
6.2 把实测结果反推回设计余量
实测和仿真对不上时,别急着改电路,先把差异拆开。如果带内噪声底整体抬高,优先查采样电容、运放增益和电源地回流;如果谐波超标,优先查开关线性度、DAC 失配和差分对称;如果只在某些输入幅度下出现杂波,优先查 DWA 周期性和数字抵消失配。论文里单环路线实测 15.31 位、93.9 dB 动态范围,宽带 MASH 路线 SNDR 80.9 dB、SFDR 87 dB,这些数不是用来当模板的,是用来对照“哪一项非理想因素没兜住”的。
从那以后我每次拿到这类论文,都会先把它拆成三张表:系统参数表、非理想因素预算表、验证清单表。参数表用来判断哪些指标能借,预算表用来定电路指标,验证清单用来卡仿真和实测。论文里的 1.8 V、0.18 µm、64 倍过采样、4 阶单环、MASH 2-2 4b4b、DWA 这些关键词,只有在自己的带宽、工艺和功耗边界里重新算一遍,才真正有用。希望帮到你。
本文还有配套的精品资源,点击获取