专项一:接口、上电和故障(25–28)
前提:完成基础课程,理解同步寄存器、状态机、CDC 和配置提交。目标是让数字控制器明确模拟电路何时可用、何时必须停止。
25:数模接口不只有 0 和 1
讲解
数字控制的物理对象可能是偏置开关、参考源、模拟 mux、采样开关或 trim 阵列。接口表至少给出方向、域、极性、默认值、更新时机、稳定时间、有效性与异常处理。
“code 已写入”是数字事件;“模拟量已稳定”是模拟条件;“ADC 结果有效”是数据事件。三者分别命名,例如 code_applied、analog_ready、sample_valid,不以一个 done 同时代替它们。
单位也属于契约:ADC 的 1 LSB 对应多少电压?trim 的 1 code 使 ADC 变化多少 LSB?time_unit 是 ns、周期还是 μs?signed 码是补码还是 offset binary?规格先消除这些歧义,再设计逻辑。
| 接口 | 数字语义 | 需要模拟侧提供 |
|---|---|---|
| bias_en | 请求开启偏置 | 启动时间、关闭影响与默认安全态 |
| ref_ready | 参考已可用 | 阈值、保持时间、误报/抖动定义 |
| trim_code | 锁存的配置码 | 码制、范围、码到输出关系 |
| adc_req/response | 一次测量协议 | acquisition、转换时间、有效数据窗口 |
| fault | 请求进入故障策略 | 同步/异步来源和允许响应时间 |
练习与验收
为你熟悉的 ADC、DAC 或偏置模块写至少八根接口的契约,区分稳定、有效和确认。没有真实电路数据时写“教学假设”,不要将估计值伪装成硅片指标。验收要求每根状态输入都有采样/CDC 方式。
26:最小等待和 ready 都要满足
讲解
推荐启动顺序:OFF→BIAS_WAIT→REF_WAIT→TRIM_WAIT→READY。打开偏置后等待最小时间并确认 bias_ready;再打开参考并等待 ref_ready;准备初始模拟码并等待 settling,最后允许采样。
固定计数器可以保证“至少等待多久”,但无法独自证明慢 PVT 下电路确实稳定。ready 若来自异步域,需要同步;若还会抖动,可要求连续 M 个有效周期。去毛刺意味着响应延迟增加,不能隐含改变故障响应指标。
明确计时原点:在边沿 n0 拉高 enable,若等待 N 个完整周期,最早在 n0+N 的边沿转下一阶段。进入状态时计数器清零,避免把旧计数带进下一次启动。
例:50 MHz、BIAS_MIN=100、REF_MIN=250,则最小等待分别为 2 μs、5 μs。ref_ready 在 8 μs 才有效,就不能只按 5 μs 提前进入 READY。具体偏置/参考顺序依电路依赖关系调整。
练习与验收
手画 ready 早到、晚到、不来、抖动四种波形,给出首次合法进入 READY 的边沿。实现独立 sequencer 后用可变延迟模型验证;验收要求 min-time 和 ready 两条件同时成立,输出顺序没有组合毛刺。
27:复位、brownout 与安全输出
讲解
复位分冷启动、功能软复位和故障复位,是否清除配置/状态应分开定义。brownout 可能让参考、模拟状态和数字电源同时变化,不能假定原校准值与 pending 更新仍可使用。
给控制动作指定优先级,例如故障/复位→取消操作→正常状态推进→接受新请求。多个条件同周期满足时仍只有一个结果。进入 FAULT 时停止新采样、失效当前结果、关闭要求关闭的模拟使能,并保留诊断 sticky 状态。
“安全输出是 0”需要电路确认:有的开关高有效,有的低有效,有的关闭顺序比电平本身更重要。同沿翻转多个 enable 不等于物理先后顺序满足,分状态和必要的等待用于实现顺序。
同步控制器只有时钟运行、输入被识别后才能反应。如果电源故障时 clk 可能消失,不能依赖同一域的同步状态机保证关断;需要模拟互锁或保持供电/时钟的监督路径,并独立给出物理响应要求。
练习与验收
列出启动中、测量中、校准中和 READY 中 brownout 的输出与恢复行为。注入故障与 sample_valid 同周期,规定结果是被接受还是丢弃。验收要求故障优先,不能把收到旧结果当作恢复完成。
28:watchdog 与诊断
讲解
每个等待阶段有最小计时和最大超时。超时计数的原点、终值比较、ready 与 timeout 同周期的优先级必须明确。教学方案取故障/超时优先,截止边沿才出现的 ready 不再被接受。
重试必须有最大次数及重新初始化过程。无界自动重试可能持续扰动模拟电路,也会隐藏系统故障;首版采用故障锁存、显式清错、确认输入恢复后重新启动。
诊断记录 fault_code、失败阶段和必要的请求版本。sticky 状态清除与新事件并发时新事件优先。读状态无副作用,便于软件重复诊断。
例:10 μs 超时、20 ns 周期对应 500 个周期;计数表示已等待 0…500 周期时需要 9 位。若实现采用其他计数定义,应推导相同的截止边沿,不能只复制常数。
练习与验收
画出 MAX−1、MAX、MAX+1 三个边沿的 ready/超时行为。连续重启两次确认计数和阶段状态正确清除。验收要求任何等待路径都有退出或明确的外部等待协议,不存在隐藏无限状态循环。