简介:《18bits Sigma-Delta DAC的设计》是一篇面向电子工程研发人员与数模转换技术学习者的硕士学位论文,聚焦大带宽、高精度DAC的系统级设计与CMOS实现,适合音频处理、工业控制等应用场景参考。论文围绕一位量化五阶全前馈Sigma-Delta调制器、128倍过采样率及六阶贝赛尔模拟低通滤波器展开,涵盖MATLAB行为级仿真、Verilog调制器描述、GF 0.35μm CMOS工艺下的综合布局布线、开关电容电路与版图设计,并给出输入-6dB时98.26dB信噪比的仿真结果,可帮助读者理清从架构选型到电路验证的完整设计链路。资源包仅含1个PDF文件,大小约3.03MB,便于集中阅读与保存;目前已有108人学习,适合具备一定DAC与Sigma-Delta基础的读者按章节逐步研读。
1. 18 位精度、100kHz 带宽:这套 Sigma-Delta DAC 方案要解决什么
做 DAC 的人常遇到一个尴尬:想上 18 位精度,Nyquist 采样架构的电阻匹配和运放增益就得跟着上一个台阶,工艺一波动,低位就开始“玄学跳码”。这份 18 bits Sigma-Delta DAC 的完整设计,正是冲着这个矛盾去的——用 128 倍过采样把量化噪声推到高频,再靠五阶全前馈调制器做噪声整形,让模拟部分只需要处理 1 位信号,把精度压力从模拟搬到数字。系统指标定得很明确:输入信号带宽 100kHz,过采样率 128,时钟采样频率 25.6MHz,目标信噪比大于 100dB,最终在 -6dB 输入下仿真得到 98.26dB。
这套东西适合两类人:一类是做毕设或课设、需要一份从 MATLAB 行为级建模到 Verilog RTL、再到 CMOS 版图的完整链路参考;另一类是从业者要根据现有工艺条件规划一款中高精度、非音频带宽的 DAC,想看清每个模块的指标是怎么推导出来的。整份方案用的是 0.35μm CMOS 工艺,数字部分综合加自动布局布线,模拟部分手工设计版图,属于典型的“almost”数字实现路线,也就是说,大部分功能放在数字侧完成,模拟侧只留 1 位 D/A、开关电容滤波器和几块辅助电路。
2. 系统级方案选型:四个模块如何分配精度压力
系统级设计是整个项目的起点,也是后面电路参数、RTL 代码和版图工作的依据。这一层的任务不是画电路,而是回答三个问题:调制器用什么结构、过采样率取多少、滤波器用几级什么类型。这三个问题回答错了,后面所有仿真都是白做。
2.1 从经典结构推出四个模块的职责边界
Sigma-Delta DAC 的经典结构是:数字插值滤波器 → 数字 Sigma-Delta 调制器 → 低精度 D/A → 模拟低通滤波器。信号流很清楚:输入数字信号先被插值,采样率从 fN 提升到 OSR·fN;调制器在不改变信号功率的前提下把量化噪声的功率谱密度整形,让低频段噪声被压低、高频段被抬高;低精度 D/A 把 1 位数字流变成具体模拟电平;最后模拟低通滤波器滤掉信号带外噪声,把干净波形送出去。
这个结构中,精度的责任划分是关键。调制器用一位量化,意味着 D/A 只需要在两个电平之间切换,天然线性,不存在多位 D/A 那种元素失配问题——这是选择一位量化的最大理由。代价是量化噪声更大,必须靠更高的过采样率和更高阶的噪声整形来补。模拟低通滤波器则承担“清道夫”角色,它不需要很高的带内平坦度指标压死自己,但阻带衰减必须足够,否则整形到高频的噪声会折叠回来。
通常的做法是先在 MATLAB 里把整条链路搭成行为级模型,用理想器件跑一遍,确认信噪比达标后再逐个模块加非理想因素。这份方案也是这么推进的:先确定各模块架构,再往下做电路。
2.2 调制器结构对比:为什么是五阶全前馈、一位量化
调制器选型要同时权衡三件事:稳定性、噪声整形能力、电路实现难度。单环高阶结构在噪声整形上效率高,但阶数一高就容易不稳定;级联结构稳定性好,但对模拟电路失配敏感,级间增益误差会直接泄漏量化噪声;多位量化能显著降低量化噪声,可反馈 D/A 的失配又需要动态元素匹配电路来兜底。
这份方案最后落在单环、一位量化、五阶全前馈结构上。全前馈的意思是所有积分器输出都通过前馈系数加到量化器输入端,环路滤波器内部只有前馈通路、没有反馈支路,好处是积分器处理的信号幅度小,对运放的输出摆幅和线性度要求放宽,同时前馈系数还能在传递函数里放置零点,把带内噪声再压一段。
阶数和过采样率是联动确定的。信噪比传递函数(NTE)分析给出的结论是:五阶加 128 倍过采样,在 100kHz 带宽内可以把量化噪声压到满足 18 位精度的水平。这里有个血泪经验——阶数不是越高越好,五阶已经要仔细做系数缩放(scale),每个积分器的输出范围都得在 MATLAB 里逐点仿真确认不溢出,否则一上电就饱和,输出全是振荡。
2.3 三级 FIR 级联:128 倍插值怎么拆才省
128 倍插值如果做一个单级 FIR,意味着滤波器阶数会高到面积和功耗都不可接受。工程上的通用做法是拆成多级、每级做适度的倍数,让每一级的过渡带要求变宽松,总阶数反而下降。这份方案采用三级数字 FIR 滤波器级联。
拆级的核心原则是:第一级倍数最大、指标最松,因为它在最低采样率下工作,同样的过渡带宽度对应更少的阶数;后面几级倍数小、但要在更高采样率下抑制镜像。每一级的通带纹波、阻带衰减和过渡带宽度要统一分配,最后总的通带纹波不能超过系统允许值。实际操作时我会先在 MATLAB 里用 fdatool 的思路把每级的幅频响应画出来,重点看第一级到第二级之间的镜像会不会掉进后级通带。
提示:级联滤波器的字长要逐级核算。前级输出的位宽如果不够,后级插值会把截断噪声一起放大,最后表现为带内底噪抬高,而这种问题在行为级理想模型里完全看不出来。
2.4 六阶贝赛尔低通:相位比陡度更重要
模拟低通滤波器要在几种经典响应里选:巴特沃斯带内最平坦但过渡带缓,切比雪夫过渡带陡但带内纹波大、群时延不平,贝赛尔的最大特点是群时延接近恒定,相位线性好。
在 Sigma-Delta DAC 里,带外噪声已经被整形到高频,滤波器的主要任务是把这些高频能量挡在输出端之外,同时不能把信号本身的波形搞变形。对 100kHz 带宽的信号来说,相位失真会直接反映为波形畸变,所以选六阶贝赛尔是合理的折中:阶数够高、阻带衰减够用,群时延又相对平坦。实现上用 CMOS 开关电容电路,截止频率由时钟和电容比决定,不依赖电阻绝对值,工艺偏差下频率精度更可控。
3. 电路实现:从系统参数到七个子模块
系统级定完架构,接下来就要把每个模块的指标翻译成电路参数。这一层最容易翻车的地方不是拓扑,而是参数之间互相牵制——电容取大了噪声低但运放驱动吃力,开关取大了导通电阻小但电荷注入严重。所以参数确定要按依赖顺序来。
3.1 关键参数的推导顺序:采样频率、电容、开关、运放
采样频率由带宽和过采样率直接决定:100kHz × 128 = 12.8MHz,考虑实际时钟方案后定为 25.6MHz 的时钟采样频率。这个数字一旦定下,开关电容电路的时序余量、运放的单位增益带宽、开关的导通电阻要求就全被锁死了。
电容值的确定要从两条线同时满足:一条是热噪声,采样电容上的 kT/C 噪声必须远低于量化噪声本底,否则信噪比被卡在热噪声上,调制器阶数再高也没用;另一条是匹配精度,电容失配会引入增益误差。工程上一般让电容噪声贡献比量化噪声低 10dB 以上作为设计裕量。
开关设计的关键是导通电阻和电荷注入的平衡。采样开关的导通电阻和采样电容构成时间常数,必须远小于采样周期;而开关尺寸越大,沟道电荷注入和时钟馈通越严重,在 1 位 D/A 输出这种小信号节点上会直接表现为直流失调。常用的做法是给关键开关加 dummy 开关做电荷抵消。
运放的要求来自建立精度:闭环增益要够高,保证有限增益误差小于 1/2 LSB;单位增益带宽要满足建立时间,通常要求建立时间常数对应的误差在半个采样周期内衰减到目标精度以下;输出摆幅要覆盖积分器的最大输出范围。
| 参数 | 取值 | 约束来源 |
|---|---|---|
| 信号带宽 | 100kHz | 系统指标 |
| 过采样率 | 128 | 信噪比传递函数分析 |
| 时钟采样频率 | 25.6MHz | 带宽 × 过采样率 |
| 调制器结构 | 五阶全前馈、一位量化 | 稳定性与线性度折中 |
| 插值滤波器 | 三级 FIR 级联 | 面积与阶数优化 |
| 模拟低通 | 六阶贝赛尔、开关电容 | 群时延平坦性 |
| 工艺 | 0.35μm CMOS | 项目工艺条件 |
3.2 数字侧 RTL:插值滤波器与调制器的 Verilog 实现
数字部分是整个设计的主体,包括插值滤波器和调制器两块,都用 Verilog 描述,再走逻辑综合和自动布局布线。调制器的 RTL 本质上是把前馈系数和积分器用定点运算搭出来,核心难点是位宽和系数的定点化。
// 五阶全前馈调制器单级积分器(定点实现,节选) // 系数经 MATLAB 定点化后写入,位宽按逐级仿真确定 module integrator ( input wire clk, input wire rst_n, input wire signed [23:0] din, // 含前馈求和后的输入 output reg signed [23:0] dout ); always @(posedge clk or negedge rst_n) begin if (!rst_n) dout <= 24'sd0; else dout <= dout + din; // 累加即积分,溢出由位宽裕量保证 end endmodule这段代码看着简单,设计点全在位宽上。积分器是累加结构,直流增益无穷大,实际实现里必须留够整数位防止溢出,同时小数位不能太少,否则量化噪声会叠加在信号上。系数缩放通常在 MATLAB 里做:先归一化,再按每一级积分器的最大输出幅度分配位宽,最后用定点仿真验证信噪比损失在可接受范围内。
插值滤波器的 RTL 是标准的多相 FIR 结构。128 倍拆成三级后,每一级的滤波器系数都不同,实现时用移位加代替乘法器可以省面积,但系数如果不能近似成 2 的幂,就得老老实实用乘法器或者 CSD 编码。
3.3 模拟侧五个小模块:从单双端转换到运放
模拟部分包括单双端转换电路、1 位 D/A、两相不交叠时钟、基准与偏置电路、运算放大器,五块拼起来构成开关电容滤波器的完整信号链。
单双端转换是因为数字输出的 1 位流是单端形式,而开关电容滤波器通常工作在全差分结构下,差分能抑制共模噪声和偶次谐波。1 位 D/A 实际就是两个参考电平的切换开关,它的线性度天然很好,但开关时序和电荷注入要小心。两相不交叠时钟是整个开关电容电路的心跳,两相时钟必须有足够的死区时间,避免开关同时导通造成电荷直接泄放——这个模块不起眼,但时钟交叠是新手最常见的翻车点之一。基准与偏置电路提供参考电压和运放偏置电流,要求是温漂小、电源抑制比高。运放则决定了滤波器的建立精度和带内线性度。
版图阶段,数字部分走综合加自动布局布线,模拟部分手工绘制。混合信号版图要特别注意数字噪声对模拟侧的干扰,通常的做法是分开电源地、加保护环、把敏感模拟节点远离时钟走线。这部分没有捷径,只能靠布局规划提前避让。
3.4 前仿真验证:-6dB 输入下的 98.26dB 怎么读
电路设计完成后做整体前仿真,输入 -6dB 正弦波,得到 98.26dB 的信噪比。这个数字要和指标对照着看:目标是大于 100dB,实测 98.26dB,属于同一量级、略有差距。读这类仿真结果时,我会重点确认三件事——信噪比是在多长的仿真时间内统计的、有没有加窗、噪声积分带宽是不是严格限制在 100kHz 内。这三项任一条件放松,数字都会好看,但没有可比性。
另一个容易被忽略的点是输入幅度。-6dB 输入不是满幅,满幅附近调制器更容易进入不稳定区,信噪比会掉。所以这个 98.26dB 代表的是正常工作区间的性能,答辩或评审时被问到满幅特性,要能说清楚稳定输入范围是怎么确定的。
4. 避坑与常见问题:这类项目最容易翻车的五个地方
做完整条链路回头看,出问题的地方往往不在架构选型,而在细节耦合。下面五条是这类项目里复现率最高的坑。
第一,调制器系数缩放不到位导致积分器饱和。现象是行为级仿真正常、RTL 仿真一跑输出就是大幅振荡。原因通常是只按典型输入幅度分配了位宽,没考虑瞬态和最大输入。解决办法是在 MATLAB 里用接近满幅的输入跑足够长的点数,统计每一级积分器的峰值,按峰值留 1 到 2 位裕量重新定标。
第二,开关电容电路的两相时钟交叠。现象是输出出现无法解释的直流偏移和偶次谐波,前仿真就存在。原因是时钟产生链里与非门和反相器延迟没算准,死区时间不足甚至为负。解决办法是在时钟路径里插入可控延迟单元,提取后仿参数确认两相时钟在任何工艺角下都不重叠。
第三,插值滤波器级间位宽截断。现象是带内底噪比行为级模型高出一截,且随输入信号变化。原因就是前级输出截断,噪声被后级放大。解决办法是逐级核算字长增长,在满足指标的前提下把截断放在噪声整形之后、或者用舍入代替直接截断。
第四,模拟滤波器截止频率随工艺漂移。开关电容滤波器靠电容比定频率,比例精度好,但时钟频率本身如果来自片外或来源不稳,截止频率会整体偏移。现象是不同批次或不同仿真角下阻带衰减不达标。解决办法是把时钟纳入系统预算,或采用时钟倍乘加修调。
第五,混合信号版图的数字噪声耦合。现象是后仿真的信噪比明显低于前仿真,且频谱上出现时钟谐波。原因是数字部分的开关电流通过共用衬底和电源耦合进模拟侧。解决办法是分开电源地网络、加保护环、敏感模拟模块远离时钟树,并且在布局阶段就规划好数字和模拟的物理边界,而不是等布线完再补救。
注意:后仿真和前仿真差距大时,别急着改电路拓扑,先把耦合路径找出来。多数情况下问题在版图和电源网络,不在电路本身。
5. 验收与答辩:怎么证明这套 DAC 真的达标
验收这类设计的核心,不是把 98.26dB 这个数字报出来,而是证明这个数字是怎么来的、在什么条件下成立、离指标还差多少、差的部分能不能解释。我一般按三条线准备材料。
第一条线是链路完整性。从 MATLAB 行为级模型、Verilog RTL 仿真、模拟子电路前仿真到整体混合仿真,每一级都要有对应的结果,并且逐级之间能对上。比如行为级给出的信噪比是 105dB,RTL 定点化后掉到 102dB,模拟非理想因素加进去掉到 98.26dB,这个衰减链条要能逐项归因——定点位宽损失多少、运放有限增益损失多少、时钟抖动损失多少。评审最常追问的就是这个归因,答不上来就会被怀疑数字是凑出来的。
第二条线是工艺角覆盖。前仿真在典型条件下达标只是及格线,至少要给出慢速、快速、以及温度变化下的结果,说明指标在什么范围内波动。开关电容电路对时钟频率和运放带宽敏感,工艺角一变,建立精度就会变,这部分数据缺失是答辩里最容易被抓的点。
第三条线是版图与后仿。数字部分综合报告里的时序裕量、面积、功耗要能说清;模拟部分的手工版图要给出关键节点的寄生提取结果,以及后仿真和前仿真的对比。前仿后仿差距如果超过预期,必须有解释和对应的改进措施。
| 验收项 | 判据 | 常见扣分点 |
|---|---|---|
| 系统指标达成 | 带宽 100kHz、信噪比接近或达到 100dB | 只报单一输入幅度下的结果 |
| 链路一致性 | 行为级到晶体管级逐级可归因 | 中间环节缺数据 |
| 工艺角覆盖 | 典型加慢快角、温度扫描 | 只给典型角 |
| 版图验证 | DRC、LVS 通过,后仿对比前仿 | 后仿差距无解释 |
| 模块独立性 | 七个子模块均可单独说明职责 | 只会讲整体不会讲模块 |
答辩时还有一个实用技巧:主动交代一位量化带来的时延特性。Sigma-Delta DAC 的输出和输入在时间上不一一对应,这是架构本身的特点,不是设计缺陷,提前说清楚比被追问再解释要从容得多。同时把 98.26dB 和目标 100dB 的差距摆在明面上,说明差距来源和后续可优化方向,比硬说达标更让人信服。
从那以后我每次带这类混合信号项目,都会强制走一遍“行为级—RTL—电路—版图”四层结果对账,任何一层缺失或者对不上,就先停下来查,不往下推。这套习惯帮我躲过了好几次后期返工。希望这份拆解能帮到正在做类似设计的你。
本文还有配套的精品资源,点击获取