---
title: Sigma-Delta ADC Designer 中文用户手册
date: 2026-09-04
tags:
  - sigma-delta-adc
  - matlab-app
  - 用户手册
aliases:
  - Sigma-Delta ADC Designer 中文手册
  - SDADC Designer 中文用户指南
---

# Sigma-Delta ADC Designer 中文用户手册

## 1. 软件用途

Sigma-Delta ADC Designer 是一套在 MATLAB 中运行的 Sigma-Delta ADC 行为级辅助设计与验证工具。它将设计过程组织成可追踪的十个阶段，并为每个阶段保留参数、模型、验证门、波形和诊断信息。

当前 App 支持：

- CIFF、CIFB、CRFF、CRFB 和自定义 ABCD 架构；
- 2～256 个量化器电平；
- 连续转换和增量复位两种模式；
- sinc1～sinc6 以及自定义数字滤波权重；
- NTF、ABCD 和 $a/g/b/c$ 系数综合与状态缩放；
- 连续模式 FFT、增量式 DC 扫描和峰峰值 ENOB；
- 整数电容比映射、有限运放 A0/GBW/SR；
- 全差分第一级采样热噪声、dither、DAC 电容失配和 DEM；
- Monte Carlo、两点数字增益/偏移校准和最终统计签核。

> [!warning] 模型边界
> 本软件用于系统级和行为级设计指导，不代替 Cadence/Spectre 中的晶体管级 PVT、瞬态噪声、版图寄生和后仿真签核。当前正式热噪声合同只包含第一级输入折算采样热噪声；一般化的白噪声、1/f 噪声及导入 PSD 接口属于预留能力。

## 2. 软件版本与运行要求

### 2.1 必要环境

- MATLAB R2022b 或更高版本；
- MATLAB App Designer 运行环境；
- 兼容的外部 Delta-Sigma Toolbox。

外部 Delta-Sigma Toolbox 至少应提供：

```matlab
synthesizeNTF
realizeNTF
stuffABCD
mapABCD
scaleABCD
```

检查方法：

```matlab
which synthesizeNTF -all
which realizeNTF -all
which scaleABCD -all
```

### 2.2 可选工具箱

- Parallel Computing Toolbox：用于并行 DC 扫描和 Monte Carlo；
- Fixed-Point Designer：用于需要相应定点能力的扩展流程；
- MATLAB Report Generator：用于扩展报告功能；
- MATLAB Compiler：仅在另行构建独立程序时需要。

没有 Parallel Computing Toolbox 时仍可串行运行，但大规模 DC 扫描和 Monte Carlo 会明显变慢。

## 3. 安装正式发布包

正式安装文件为：

```text
SigmaDeltaADCDesigner.mltbx
```

### 3.1 图形界面安装

1. 双击 `SigmaDeltaADCDesigner.mltbx`；
2. MATLAB 显示安装确认窗口后选择安装；
3. 安装完成后在命令窗口启动 App。

### 3.2 命令行安装

```matlab
packageFile = "D:\Software\SigmaDeltaADCDesigner.mltbx";
installedToolbox = matlab.addons.toolbox.installToolbox( ...
    packageFile,true);
```

第二个参数 `true` 表示安装时接受安装包内的许可条款。安装前应先阅读相应许可文件。

### 3.3 配置外部 Delta-Sigma Toolbox

如果工具箱没有加入 MATLAB 路径，设置其 `delsig` 目录：

```matlab
setenv("SDADC_DELSIG_ROOT", ...
    "D:\MATLAB\Delta Sigma Toolbox\delsig");
```

`setenv` 默认只对当前 MATLAB 会话有效。需要永久设置时，可将该语句加入用户自己的 `startup.m`。

### 3.4 启动 App

```matlab
app = SDADCDesignerRelease();
```

检查正在运行的版本：

```matlab
which SDADCDesigner -all
which sdadc.workflow.DesignWorkflowEngine -all
```

正式安装后，路径应指向 MATLAB Add-Ons 安装目录。若同时出现开发源码路径和安装路径，应关闭 MATLAB、移除旧路径后重新启动，以免旧源码覆盖安装版。

## 4. 界面结构

App 由三个主要区域组成：

1. **Design Inputs**：架构、规格、FFT、积分器、电容、DEM、噪声和 dither 配置；
2. **Ten-Stage Design Workflow**：运行模式、预览覆盖率、并行设置、十个设计阶段和运行按钮；
3. **Stage Evidence and Diagnostics**：阶段状态、验证门、参数、系数、波形和统计分布。

右侧结果页签包括：

| 页签 | 主要内容 |
|---|---|
| Summary | 十步流程整体状态 |
| Stage Results | 当前阶段的完整证据树和运行耗时 |
| Validation Gates | 每个验证门的 Actual、Limit、Unit 和状态 |
| Metrics | 当前阶段的标量指标 |
| Coefficients / ABCD | $a/g/b/c$、电容分数和 ABCD 矩阵 |
| FFT | 动态频谱、SNDR 和 ENOB |
| FFT Analysis Points | FFT 激励与分析参数 |
| Static Error | DC 扫描、INL、最大误差和 $ENOB_{pp}$ |
| Integrator States | 各级积分器峰值、限制和利用率 |
| ENOB Distribution | Monte Carlo ENOB 分布 |

## 5. 快速开始

建议先使用默认二阶 CIFF、16 电平量化器配置熟悉流程。

1. 设置 `Architecture`、`Modulator Order` 和 `Quantizer Levels`；
2. 设置转换模式、sinc 阶数及 `M / OSR`；
3. 设置 VREF、VDD、输入范围、采样率和信号带宽；
4. 设置动态 FFT 和静态 ENOB 目标；
5. 设置每一级积分器的摆幅、A0、GBW、SR 和建立时间分配；
6. 设置电容、失配、DEM、Monte Carlo、噪声和 dither；
7. 选择 **Debug Preview**，逐步运行并排除明显错误；
8. 参数稳定后选择 **Final Signoff**；
9. 点击 **Run Through Final Signoff**；
10. 第 10 步为 PASS 后再导出可复现设计包。

> [!important] PASS 与“运行完成”不同
> `Completed` 只说明程序执行结束；`PASS` 才说明所有必需验证门满足限制。缺少正式覆盖率时会显示 `INCOMPLETE` 或 `INCONCLUSIVE`，不会用预览结果冒充正式通过。

## 6. 主要输入参数

### 6.1 架构、阶数和量化器

| 参数 | 含义 |
|---|---|
| Architecture | CIFF、CIFB、CRFF、CRFB 或自定义 ABCD |
| Modulator Order | 调制器阶数，同时决定积分器配置级数 |
| Quantizer Levels | 实际量化电平数，不是量化位数 |
| NTF opt | 直接传给 `synthesizeNTF` 的零点优化模式 |
| NTF f0 / fs | 归一化 NTF 中心频率；低通通常为 0 |
| NTF H_inf | NTF 最大增益约束，必须大于 1 |

常规 4-bit 量化器对应 16 个电平和 15 个一元 DAC 单元。软件也允许非 $2^n$ 的任意整数电平数。

### 6.2 采样率、带宽与 OSR

低通调制器使用：

$$
OSR=\frac{f_s}{2BW}
$$

其中 $BW$ 是噪声积分带宽。若 $f_s=256\,\mathrm{kHz}$、$BW=250\,\mathrm{Hz}$，则 $OSR=512$。

### 6.3 输入范围与 LSB

`Input Peak / VREF` 是设计输入峰值相对 VREF 的归一化值。第 2 步的 `scaleABCD` 会给出满足状态摆幅约束的最大稳定输入 `vinmax`。

静态签核 LSB 以 `vinmax` 对应的允许双极性输入跨度定义：

$$
V_{LSB}=\frac{2V_{REF}v_{in,max}}{2^{ENOB_{target}}}
$$

FFT 输入幅度只定义动态测试激励，不会重新定义静态 LSB。

### 6.4 FFT 参数

| 参数 | 含义 |
|---|---|
| FFT Input Amplitude / VREF | 正弦输入峰值相对 VREF 的归一化值 |
| FFT Input Frequency | 目标输入频率，程序映射到活动 NFFT 的相干带内频点 |
| FFT Points | 正式 FFT 点数 |
| FFT Discard Samples | FFT 前舍弃的调制器启动样本 |
| Signal Bandwidth | SNDR/SNR 噪声积分带宽 |
| Continuous FFT Target ENOB | 连续模式动态性能目标 |

动态目标换算为：

$$
SNDR_{required}=6.02\times ENOB_{target}+1.76\ \mathrm{dB}
$$

默认连续 FFT 目标为 18 bit，对应 110.12 dB。

程序使用周期 Hann 窗。DC bin 及 Hann 窗的相邻 DC 主瓣 bin 被归类为 DC 并排除在 SNDR 之外；信号和谐波主瓣也从噪声累加中排除。其余带内频点共同形成噪声与失真功率。

### 6.5 每级积分器配置

调制器为 $N$ 阶时，界面生成 $N$ 组积分器配置：

- Normal Hard Limit / VDD；
- Dither Hard Limit / VDD；
- A0 Mode；
- Manual A0；
- Minimum Auto-Selected A0；
- Simulated A0；
- GBW；
- SR；
- Large-Signal Time Fraction；
- Small-Signal Time Fraction；
- Available Settling Time。

自动 A0 模式从配置的下限开始寻找满足系统静态 INL、FFT、复位和状态摆幅门的最低增益。手动模式直接仿真用户输入值，不会被自动搜索结果覆盖。

### 6.6 电容与 DEM

| 参数 | 含义 |
|---|---|
| Unit Capacitance | 工艺允许的单位电容 |
| Differential Total Capacitance Limit | 两个差分支路的物理电容总和上限 |
| Coefficient Relative Error Limit | $a/g/b/c$ 电容比映射误差上限 |
| Unit-Capacitor Mismatch Sigma | 单位电容相对随机失配标准差 |
| DAC DEM Mode | Static、DWA、ILA Rotation、ILA Addition 或 Butterfly |
| Mismatch Yield Target | 静态、FFT 和联合良率目标 |

第一级采样电容与 DAC 反馈电容在当前 CIFF 模型中视为同一个物理阵列，只计算一次。非零 $a/g/b/c$ 系数采用共同分母的整数电容比表示；当 $|g|<0.01$ 时直接映射为零。

当前一元 DAC 使用二态单元，每个单元连接正参考或负参考。Butterfly 要求一元单元数为 $2^n$；例如 17 个量化电平对应 16 个一元单元。

### 6.7 热噪声

当前正式模型将第一级全差分采样热噪声折算到 ADC 输入：

$$
\sigma_{sample}=\sqrt{\frac{4kT}{C_{sample}}}
$$

`6.6-Sigma Thermal Noise Budget` 是数字滤波输出端热噪声统计界限的 LSB 预算。软件先根据热噪声要求确定第一级共享采样/DAC 阵列，再量化其他系数电容。

`Stage-7 Noise DC Repeats` 控制第 7 步每个 DC 输入点的独立含噪声转换次数。每个样本、输入点和重复轮次使用独立高斯噪声，但由固定主随机种子生成，因此重复运行可得到完全相同的数字结果。

### 6.8 Dither

Dither 注入位置为量化器输入端。支持：

- `prbs`：伪随机二进制序列；
- `binary`：独立二值 Bernoulli 序列；
- `uniform`：均匀分布；
- `tpdf`：三角概率密度分布。

启用 dither 后采用单独配置的积分器 dither 摆幅限制。Dither 可打散部分周期性模式，但不能保证消除所有极限环或静态局部误差；必须以第 7、8、9 步的实际 FFT 和 DC 结果判断。

## 7. Preview 与 Final Signoff

### 7.1 Debug Preview

用于快速调试，可独立设置：

- Preview FFT Points；
- Preview Discard Samples；
- Preview DC Points；
- Preview MC Trials。

预览覆盖率可以较低，但预览不能生成正式最终 PASS。

### 7.2 Final Signoff

使用左侧正式 FFT、DC 点数和 Monte Carlo 次数。最终接受设计前必须切换到该模式。

> [!tip] 推荐顺序
> 先用 Preview 验证模型、系数、频谱形状和状态摆幅；确认无明显问题后再使用 10,000 点 DC 扫描、100 次 Monte Carlo 等正式覆盖率。

## 8. 十步设计流程

### 第 1 步：Specification and Normalization

建立 VREF、VDD、采样率、带宽、输入范围、ENOB 目标、确定性误差预算和逐级积分器摆幅限制。此阶段只定义合同，不综合调制器。

### 第 2 步：Topology / NTF / ABCD

完成 NTF 综合、环路结构实现、ABCD 构造和状态缩放。主要输出：

- NTF 表达式、分子、分母、极点和零点；
- 缩放后的 ABCD；
- $a/g/b/c$；
- 状态缩放矩阵；
- `vinmax`；
- 各级积分器峰值及利用率。

### 第 3 步：Continuous-Mode FFT

对理想连续转换调制器运行 `discard + NFFT` 个样本并计算 Hann 窗动态频谱。主要输出 SNDR、SNR、THD、ENOB 和状态峰值。

FFT 本身很快，主要耗时来自有状态调制器的逐采样非线性仿真。

### 第 4 步：Incremental Reset / sinc / M

对所有候选 M 分别执行增量复位和有限窗 sinc 解码，不假设性能随 M 单调变化。选择满足确定性误差预算的最小候选 M，并给出：

- 两点校准后的 DC 转移；
- 峰峰值 INL；
- 最大绝对误差；
- $ENOB_{pp}$；
- 不同 M 的比较表。

### 第 5 步：Integer Capacitor Mapping

根据第一级 $4kT/C$ 约束确定共享采样/DAC 阵列，将 $a/g/b/c$ 映射为共同分母的整数电容比，然后重新执行 FFT、DC 和状态摆幅检查。

该阶段不负责失配 Monte Carlo；DEM 和随机失配的统计验证在第 8 步完成。

### 第 6 步：A0 / GBW / SR Settling

加入逐级有限 A0、GBW、SR 和大/小信号建立模型。第 6 步会发布有限运放模型下的 FFT 和 DC 结果，而不仅仅显示计算出的运放指标。

### 第 7 步：Noise and Dither

在有限 A0 模型基础上加入输入端第一级采样热噪声和配置的 dither，执行：

- 一次动态 FFT；
- 多次独立含噪声 DC 扫描；
- 平均静态转移和各输入点标准差；
- FFT、DC 和总耗时记录；
- 并行策略与实际 worker 数记录。

独立 DC 重复轮次可以并行；单条调制器时间记录内部仍必须顺序执行，因为当前状态依赖前一个采样状态。

### 第 8 步：Mismatch Monte Carlo

生成独立单位电容失配样本，并在每个 trial 中使用所选 DEM 重新运行 FFT 和静态验证。要求：

- Static Yield 达标；
- FFT Yield 达标；
- Combined Yield 达标。

App 显示最坏动态 trial 的频谱和所有 trial 的 ENOB 分布。

### 第 9 步：Digital Calibration / Fixed Point

对每片器件执行两点数字增益/偏移校准，然后基于物理系数、DAC 失配、DEM 和有限运放模型重新计算全输入范围静态 INL。

两点校准能消除线性增益和偏移，但不能消除局部周期性 INL、高阶非线性或随机噪声。

### 第 10 步：Final Statistical Signoff

要求前九步满足必要验证门，并检查：

$$
E_{det,pp}+K_{\sigma}\sigma_{noise}\leq1\,LSB
$$

其中 $E_{det,pp}$ 是确定性峰峰值误差，$K_{\sigma}$ 默认为 6.6。该阶段还检查：

- 输出舍入；
- 积分器峰值；
- 正式 FFT/DC/Monte Carlo 覆盖率；
- 失配良率；
- 必需证据是否完整。

## 9. 运行操作

### 9.1 运行到某一步

1. 在中间列表选中目标阶段；
2. 点击 **Run Selected Stage**；
3. 程序自动执行该阶段所需的全部前置步骤；
4. 运行完成后选择右侧页签查看结果。

### 9.2 运行完整流程

点击：

```text
Run Through Final Signoff
```

### 9.3 取消任务

点击 **Cancel Workflow**。后台 future 可立即请求取消；前台或并行内部仿真会在下一个安全边界停止。未完成的局部证据不会被当作正式完成结果接受。

### 9.4 参数修改后的 stale 状态

修改参数后，受影响阶段及其下游阶段会标记为 `stale`。必须重新运行才能得到与新参数匹配的证据。若点击不同步骤但波形没有变化，应先检查该阶段是否尚未运行或已经 stale。

## 10. 如何判断失败原因

阶段失败时先打开 **Validation Gates**：

- `Gate`：验证项目；
- `Status`：pass、fail、incomplete 或 inconclusive；
- `Actual`：实际仿真值；
- `Limit`：允许限制；
- `Unit`：单位。

推荐排查顺序：

1. 先检查状态峰值是否超限；
2. 检查连续 FFT 的 SNDR/ENOB；
3. 检查 M、数字滤波器和静态 INL；
4. 检查物理电容比量化和总电容；
5. 检查 A0/GBW/SR；
6. 检查热噪声和 dither；
7. 检查 Monte Carlo 的静态、FFT 和联合良率；
8. 最后检查第 10 步联合 1-LSB 预算及正式覆盖率。

第 8、9 步单独通过并不保证第 10 步通过，因为第 10 步还要求联合误差合同和完整正式覆盖率同时成立。

## 11. 并行加速与内存

启用 **Enable parfor** 并设置 **Maximum Workers** 后，程序可以并行处理独立任务，例如：

- 独立 DC 输入点；
- 第 7 步的独立含噪声 DC 重复轮次；
- Monte Carlo trials。

增加 worker 不一定线性加速。每个 worker 都需要模型、随机数据和中间数组；内存不足时 MATLAB 可能变慢或停止响应。建议：

- 普通 8 核计算机先使用 4～8 workers；
- Preview 阶段减少 DC 点数和 Monte Carlo 次数；
- 关闭不使用的 Figure 和旧 App 实例；
- 正式签核前再恢复完整覆盖率；
- 不要同时启动多个完整签核任务。

## 12. 保存工程与导出结果

### 12.1 Save Project

保存当前输入参数和工程状态，供以后继续设计。

### 12.2 Open Project

选择已有的 `.sdadcproj` 文件，恢复全部设计输入和各级积分器设置。打开新工程后，前一个工程的 FFT、DC、Monte Carlo 和签核证据会被清空，所有阶段回到 `pending`，需要重新运行后才能导出。工作流运行期间不能打开其他工程。

### 12.3 Export Reproducible Design Package

仅在第 10 步正式 PASS 后启用。导出的可复现设计包可包含：

- 工程配置快照；
- NTF、ABCD 和 $a/g/b/c$；
- 电容映射表；
- 运放指标；
- 数字滤波器信息；
- 阶段证据和随机种子；
- FFT、DC 和 Monte Carlo 数据；
- 源码版本哈希和验证脚本。

> [!warning] 两种“包”不是一回事
> `SigmaDeltaADCDesigner.mltbx` 是软件安装包；App 中导出的 Reproducible Design Package 是某次 ADC 设计的结果包，不能用于安装软件。

## 13. 更新与卸载

查看已安装工具箱：

```matlab
installed = matlab.addons.toolbox.installedToolboxes;
disp(struct2table(installed));
```

找到 `SigmaDeltaADCDesigner` 对应项后卸载：

```matlab
names = string({installed.Name});
index = find(names == "SigmaDeltaADCDesigner",1);

if ~isempty(index)
    matlab.addons.toolbox.uninstallToolbox(installed(index));
end
```

然后安装新版本 `.mltbx` 并重新启动 MATLAB。更新后检查：

```matlab
which SDADCDesigner -all
```

## 14. 正式发布包的源码可见性

正式 `.mltbx` 中：

- `+sdadc` 核心算法以 MATLAB P-code 发布；
- 核心目录不包含对应 `.m`；
- App 入口、帮助和示例保持可读；
- 外部 Delta-Sigma Toolbox 不包含在安装包中。

P-code 能阻止用户直接阅读普通 MATLAB 源码，但不是密码学加密，也不能视为绝对防逆向。开发版完整 `.m` 源码应始终保存在私有 Git 仓库中，不应在开发目录内用 `.p` 覆盖。

## 15. 常见问题

### App 可以打开，但第 2 步失败

通常是外部 Delta-Sigma Toolbox 未找到。重新检查：

```matlab
setenv("SDADC_DELSIG_ROOT","D:\...\delsig");
which synthesizeNTF -all
which scaleABCD -all
```

### FFT 的第一个正频率 bin 为什么不计入动态噪声

周期 Hann 窗会使 DC 分量扩展到相邻 bin。程序将 DC bin 和相邻 DC 主瓣 bin 作为 DC 证据排除，避免把 DC 泄漏错误计入 SNDR。

### 为什么修改 FFT 点数后仍显示另一个点数

检查当前运行的是 Preview 还是 Final。启用独立预览覆盖率时，Preview FFT Points 会覆盖正式 FFT Points，但不会修改正式配置。

### 为什么第 8 步很慢

第 8 步的每个 Monte Carlo trial 需要生成失配实例，并可能重新运行 FFT、DC 和 DEM 序列。总计算量近似随 trial 数、FFT 点数、DC 点数和 M 增长。

### 为什么启用 dither 后更慢

每个调制器采样都需要更新 dither 状态并完成注入；若同时执行大量 DC 点和 Monte Carlo，额外操作会被重复很多次。

### 为什么第 10 步失败，但前面主要步骤通过

检查：

- Final 模式是否启用；
- 正式 FFT/DC/Monte Carlo 覆盖率是否满足；
- 联合 1-LSB 合同是否超限；
- Static Yield、FFT Yield 和 Combined Yield 是否都达到目标；
- 是否存在 stale 或 incomplete 证据。

### MATLAB 无响应或崩溃怎么办

1. 减少并行 worker；
2. 降低 Preview FFT、DC 和 MC 覆盖率；
3. 关闭重复 App 和 Figure；
4. 确认系统物理内存和虚拟内存充足；
5. 不要并行运行多个完整签核；
6. 用 Preview 定位问题后再运行 Final。

## 16. 正式签核检查表

- [ ] `which SDADCDesigner -all` 指向预期版本；
- [ ] 外部 Delta-Sigma Toolbox 可以找到；
- [ ] 架构、阶数和量化电平数正确；
- [ ] VREF、VDD、采样率、带宽和输入范围正确；
- [ ] 每级积分器摆幅、A0、GBW、SR 正确；
- [ ] FFT 激励、NFFT 和 discard 正确；
- [ ] M 候选和 sinc 阶数正确；
- [ ] 单位电容、总电容、失配和 DEM 正确；
- [ ] 热噪声与 dither 配置正确；
- [ ] 已切换到 Final Signoff；
- [ ] 十个阶段全部具有当前参数对应的非 stale 证据；
- [ ] 第 10 步状态为 PASS；
- [ ] 已保存工程并导出可复现设计包。

## 17. 相关文档

- 英文离线 Help：`sigma_delta_adc_app/resources/help/en_US/index.md`
- 正式发布构建说明：`sigma_delta_adc_app/packaging/README.md`
- 正式发布构建脚本：`sigma_delta_adc_app/build_release_toolbox.m`
