AM03:改码 → 等待 settling → 采样
数字 code 已更新,不等于模拟结果已可测。本课将 RC 误差转换为 ADC 码,并把采样做成可归属的请求/应答。
前置 AM01–AM02、FSM 与基本量化。总纲 · 设置 · 答案 AM03 · 记录。预计 8–12 小时。
模型与误差定义
沿用 AM01 的 8 bit DAC、2 V/256、R=10 kΩ、C=10 pF、rout=0、理想阶跃。measurement ADC 为 unsigned 10 bit,LSB=2 V/1024=1.953125 mV。
量化明确定义:Q(v)=clip(floor(v/LSB),0,1023),禁止把负数转 unsigned 后再裁剪。对 0→128 阶跃,稳态=1 V,理想稳态码512。结果分成连续误差 1 V−Vsample 和量化码差 Q(Vsample)−512,这两者不能混成一个“精度”。
对于此 1 V 阶跃,连续残差小于半 ADC LSB 需 twait>τ ln(1024)≈693.147 ns。若允许所有 8 bit 码之间最大 1.9921875 V 阶跃,需 twait>τ ln(2040)≈762.070 ns。50 MHz 的整周期等待分别至少 35 拍/700 ns 与 39 拍/780 ns,前提是从 DAC 实际改码计时、零额外输出延迟。
floor 量化的稳态值若恰好在512码边界,有限时间从下方接近1 V依然可能读到511;“小于半 LSB 连续误差”不能保证等于稳态 floor 码。对码一致性实验另加非边界目标,并记录距阈值的裕量。
请求与时序契约
controller 顺序为 LOAD→WAIT_SETTLE→REQUEST→WAIT_RESPONSE→DONE。接受任务时锁存 code 与 transaction_id,busy 时拒绝新任务。LOAD 边沿 t0 更新 code,等待计数从该次真实更新开始;预定采样边沿是 t0+N×20 ns。用逐周期表消除“数了 N 拍但实际等待 N−1 拍”的错误。
测量模型在约定采样时刻取得 v_rc 一次并保持 Q 值,稍后发布有效应答;发布延迟不改变采样时刻。首版由 clk 同步采样适配器驱动,采样边沿上 code 不再更新,结果最早下一拍有效,避免同一边沿竞态。
异步扩展采用四相握手:req/payload 保持→valid/data/id 保持→req 降低→valid 降低,payload 在整个事务内稳定。同步 valid 后才捕获稳定总线,按设计的保持与确认窗口实现,不给每个 data bit 各放两级 FF 来代替总线握手。复位清空握手、旧应答排空后才允许重用 id;超时和取消也需关闭/排空事务。
操作与实验
- 先画 LOAD、DAC 跳变、sample、valid、done 五个时刻,注明时钟周期和单位。对照 结课接口规格。
- 在同一个 top/config 中替换 counter 为小 FSM,加入测量模型;保存 code、state、sample_event、v_rc、req、valid、id、data。
- 每个等待时间都重新从 Vc=0 建立 0→128,跑 5/25/35/39 拍,即 100/500/700/780 ns。不要在连续四次转换中假设每次初态为0。
- 独立脚本/计算器根据实际 t0、sample 时刻预测模拟值,使用另写的 floor/clip 参考预测量化值;不能从 DUT 输出反推期望。
- 保持 sample 不变,只把 response latency 改为 1/3/10 拍,检查数据相同、done 推迟。再移动 sample,检查误差变化。
- 注入 busy-start、旧 id 应答、never-valid、超时边界应答及等待中复位。将“模拟未稳”与“测量没回来”分别报告。
边界与 PVT
首版采用固定理想参数。另建教学角落:R 最大1.2倍、C最大1.1倍、rout最大1 kΩ,则 τmax=(12 kΩ+1 kΩ)×11 pF=143 ns;最大阶跃的半 ADC LSB 连续误差条件需要 >1089.760 ns,因此至少55拍/1100 ns。780 ns 在此角落不再足够。
该角落只是明确的练习假设,不是实际 PDK corner。若 DAC 有延迟、slew、额外极点、glitch 或负载,重新预算;不能把一阶 RC 时间直接写成真实 ADC 的 SDC 或签核结论。
验收
交付四个等待时间的电压/残差/量化表,标出 floor 边界效应;采样与应答延迟必须分别测量。完成忙时拒绝、身份检查、超时与复位台账。用有效 id、sample_time、code_version 证明每个结果属于哪次改码。
理想电压参考沿用 ≤0.1 mV,整数结果精确比较;边界处另注明数值裕量,不能为了让511变512而放宽容差。进入 AM04 前能独立给出等待拍数和最坏参数来源。