专项四:校准控制(37–40)
贯穿例子:用 unsigned8 trim 调节模拟量,用 signed12 ADC 测量与目标的误差。默认教学 plant 为 y=offset+gain×(code−128)+noise,gain>0;这些参数不是实际晶体管电路模型。
37:先证明搜索方法适合电路
讲解
算法选择取决于码到测量量的映射:是否单调、方向是否已知、目标是否在可达范围、相邻码跳变量是否允许达到误差目标。非单调 DAC、温度反转、滞回或测量饱和都可能破坏搜索前提。
单调递增关系可先测 code=0、255,再维护包围目标的区间。若端点不能可靠判断,应报告 out-of-range、测量无效或模型前提不足,而不是强行宣布成功。
端点测试只检查端点方向和范围,不能证明中间所有码都单调。完整单调性应来自模拟设计/规格或独立码扫描证据;控制器只能报告已观察到的不一致,不能保证识别任意隐藏的非单调曲线。
无噪声二分:选中点,误差负则向更高 code 搜索,误差正则向更低 code 搜索。255−0 的区间最多八次对半可缩到相邻两码,再比较可实现的残余误差。评估端点、最终候选和重复确认所需测量块额外计入预算。
默认 offset=120、gain=2、target=0,无噪声理想解 code=68。若允许测量误差 ±2 LSB,67、68、69 都可能满足终止条件,验证要检查合法性与误差,而不是无条件只接受某一个数字码。
练习与验收
手算默认案例的区间收缩,再给出 gain<0、gain=0、目标越界、非单调和 ADC clipping 的反例。验收要求每条搜索分支都有前提,每次推进都缩小区间或终止。
38:测量是一个有误差的判断
讲解
每个候选码先应用,再等待 settling,再收集 16 个有效同版本样本。只有完整平均块才能作一次比较,不能在单个 noisy 样本后直接改变搜索方向。
误差预算包含模拟噪声、ADC offset/gain、量化、平均舍入、trim 分辨率和未完全稳定。平均降低某些随机分量,不校正 ADC 的系统误差;用一个有偏测量器校准,只能把量调到该测量器定义的目标附近。
教学终止采用 |mean−target|≤2 ADC LSB,并对最终候选作两个连续合格块确认。若噪声可能改变误差符号,deadband 外的比较仍需有噪声/不确定度依据,必要时加样本、重复判定或报无法可靠区分。
统计噪声的 RMS 不是绝对界限。有界 ±1 LSB 行为模型与高斯 σ=1 模型的尾部风险不同。两块通过是所选数字策略,不能直接推导真实模拟准确度或置信水平。
练习与验收
列出测量误差预算,计算 N=1、4、16 的理想独立噪声 RMS;用相关噪声解释失效情况。给最终验证写“测量值通过”与“真实量误差”之间的条件。验收要求 success 状态没有超出证据的物理承诺。
39:把搜索写成可取消的 FSM
讲解
状态可包括 IDLE、SNAPSHOT、APPLY_TRIAL、SETTLE、REQUEST_SAMPLE、WAIT_SAMPLE、ACCUMULATE、DECIDE、VERIFY、RESTORE、DONE、FAULT。算法区间、候选码、样本计数、和、请求 id 和配置版本都是寄存状态。
开始时锁存 target、参数和原 committed_trim。校准期间 trial_trim 暂时拥有模拟 trim 输出,正常测量消费者停用或标 invalid;手动 commit 按规格拒绝,不能让两个状态机同时驱动同一组输出。
优先级:故障/超时→abort→响应接受→正常推进→新 start。start 忙时拒绝。超时和 response 同截止边沿,按超时处理。每个状态等待有上限,总测量块数也有限,另有总校准 watchdog。
abort 后停止发新请求,并确保旧响应不会成为下一次请求的数据。用响应 drain、取消确认或重置并重新建立接口 epoch;只把本地 count 清零不够。时钟停顿的外部设备可能不能立即确认,系统保持未就绪而不是假装握手结束。
练习与验收
在每个状态注入 abort/timeout,列出 trial 输出、committed、busy 和错误码的变化。输入 target 在 busy 中变化不能改变本次快照。验收要求不存在无界搜索,也不存在两个拥有者同时更新码。
40:成功、恢复与重新校准
讲解
成功前对选定候选确认,commit 到 committed_trim,并在合法更新窗口完成模拟应用与稳定;cal_done 表示本次流程成功结束,具体保证写入接口契约。
失败/取消时旧 committed_trim 保持。若模拟仍可工作,按窗口恢复旧码、等待恢复稳定,再返回可用状态。若电源/参考故障,应先关闭要求关闭的使能,保留旧提交值供诊断,等待显式恢复;不能在故障状态仍称 analog_ready。
最终候选无解、测量饱和、符号不可信、块数耗尽等都有明确失败码。搜索应先保留最优合法候选,不能在区间变空时访问不存在的 code。
温度或电源漂移后可能需要重新校准。重校触发条件、业务暂停、码恢复和数据失效都要定义。后台连续校准会影响正常转换和环路动态,首版仅做前台有限校准。
练习与验收
测试成功、目标越界、噪声无法确认、参考掉线、手动干预和取消恢复。分别核对 cal_done、cal_error、analog_ready 和 committed 值。验收要求失败不会把最后一个试探码误当成已验证码。