AM04:SAR 控制、DAC、比较器与逐块视图替换
SAR 的每一位决定依赖模拟电压已建立、比较结果已有效。你熟悉 DAC 和比较器,本课重点是把其建立时间、判决延迟和负载变成数字控制的条件。
前置 AM03、AD 架构讲义。总纲 · 设置 · 答案 AM04 · 记录。预计 12–18 小时。
小系统规格
- 单 clk=50 MHz、同步低有效 rst_n,start 为一拍;busy 时忽略 start。
- unsigned 10 bit SAR,Vref=2 V,DAC trial 电压
2 V×trial/1024,LSB=1.953125 mV。 - 输入在接受 start 前已完成 acquisition,首版理想 sample/hold 将 Vin 保持整个转换;不要把变化中的 Vin 直接送给十次比较并期待静态 floor 结果。
cmp_ge=1表示保持的 Vin≥Vdac。相等时保留 trial,结果对应 floor/clip;理想 equality 是模型约定。- 首版 DAC 为理想源+10 kΩ/10 pF 低通;cmp 为理想差分判决加明确响应延迟。同步适配器只在当前 cmp_req 合法窗口取值,并锁存该值。
控制状态为 ACQUIRE(顶层)→APPLY_TRIAL→WAIT_DAC→WAIT_COMPARE→DECIDE→NEXT_BIT→DONE。MSB 先试;cmp_ge 时保留当前位,否则清除;最后一次判决后发布结果。这里每个状态可以多拍,也可在 RTL 中合并;必须画出实际实现的边沿表。
复用现有 RTL 的边界
已有 sar_controller.sv 提供 clk/rst_n/start、cmp_valid/cmp_ge、trial/result、busy/done/error 与 cmp_req。参数 BITS、SETTLE、TIMEOUT 必须 ≥1。其 cmp_req 在 COMP_WAIT 状态保持高,响应需要教学适配器;该 RTL 未包含 acquisition、异步 CDC 或 trial_id。
该实现从 APPLY 更新 trial 后,经过 SETTLE 拍 DAC_WAIT 才进入 COMP_WAIT。标称一阶 RC 可用 SETTLE=39(780 ns)做探索;最坏教学角落用55。比较器适配器示例选择同步有效延迟3拍,TIMEOUT=8,然后从波形确认真实计数关系。RTL 当前在同一 COMP_WAIT 边沿先检查 cmp_valid,再检查超时,所以截止边沿同时 valid 会接受;AM05 的校准项目另用“timeout 优先”。不得把两者写成同一规则。
首版限定同步比较应答:每个请求只产生一个、只属于当前 trial 的 valid 脉冲,reset/error 后适配器清除待返回应答。要接异步比较器,新增保持/确认与身份隔离适配器,再跑独立协议测试;不能只接一条裸 E2L 输出来代替结果有效信号。
先手算十次比较
Vin=677.4 LSB=1.323046875 V。写出十个 trial:512、768、640、704、672、688、680、676、678、677;逐次记录 DAC 目标、比较结果、kept 值,最终677。
理想 floor 参考只是首层 oracle。含有限 settling 时,判决是否一致取决于 Vin 距当前比较门限的裕量;AM03 的半 LSB 条件不能保证所有 Vin 的 floor 码完全一致。677.4 LSB 的最小门限裕量为0.4 LSB,先检验残差;扫 threshold±ε 时逐项降低 RC 误差与数值误差,或报告边界不确定区。
实验步骤
- 纯数字基准。 用零延迟理想 DAC 数值与同步比较应答得到预期 trial 台账,先运行已有 AD 测试或检查既有结果,不把它登记为新的 AMS 结果。
- 全行为 AMS。 config 中绑定 SAR RTL、sample/hold 行为、RC DAC 和比较器行为。保存 Vin_hold、trial、Vdac、cmp_req、sample_event、cmp_ge、valid、result 和 done/error。
- 等待扫描。 SETTLE=1/5/39/55,检查相同输入下出错的第一位。独立监视器对每次 sample_event 比较 Vin_hold 与当时模拟 Vdac,定位等待不足,而不是只看最终码。
- 边界扫描。 测0、接近满量程、超量程、677.4 LSB,若干
k±0.1 LSB、恰好k LSB,以及保持期间输入源变化。外部源变化不应改变理想 held input;真实 S/H droop 另做实验。 - 比较器替换。 只将 cmp 实例绑定 transistor schematic,保留行为 DAC。定义输入共模、reset/evaluate、输出供电、E2L 阈值、有效信号获取方式和最大判决时间。动态比较器输出翻转不必然表示该次判决已有效,不能把 X 硬转0继续。
- DAC 替换。 恢复行为 cmp,再单独替换 DAC,加入实际开关/负载/寄生或可用提取视图。核对参考端负载、输出极性、量程和建立时间,然后才组合两种替换。
transistor/提取步骤依赖你的可用 PDK、模型和电路。没有数据时完成接口和替换计划,记录“待电路”,不制造虚假结果。不同 view 使用相同逻辑功能端口;需要 level shifter 或 comparator clock 时显式引入适配层。
故障与验收
注入 never-valid、迟到旧比较应答、busy-start、转换中复位、比较器 polarity 反接和模拟未建立。同步首版需检测 error/done 一拍、result 仅成功时更新;异步扩展必须验证旧 trial 不能污染下一位。
提交:十次手算与实际比较台账、非边界输入码检查、门限附近的不确定区、每次视图替换的延迟/负载/码变化。检查延迟增加时先错哪位、offset 如何移动转换门限,以及只加 maxstep 精度为何不能补救不够的真实等待。
完成目标是一个小 SAR 验证案例。晶体管级噪声、亚稳态、kickback、参考扰动、DNL/INL 需要对应统计/电路测试;本课理想 floor 验证不自动覆盖这些性能。