# 专项一：接口、上电和故障（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/超时行为。连续重启两次确认计数和阶段状态正确清除。验收要求任何等待路径都有退出或明确的外部等待协议，不存在隐藏无限状态循环。
