卫星一旦入轨,就再也没有人能上去按一下复位键。可恰恰是这个"没人按"的场景,逼出了航天器上最不起眼、却最不能少的一类芯片——电压监控与复位芯片。今天以 ASL706S 为例,聊聊它在星载计算机里到底干什么:上电时怎么保证 CPU 不会在电压没站稳时就乱跑,运行中怎么防止程序跑飞变成"僵尸",电源快不行时又怎么提前报警。它看着像个简单的"复位按钮",实际上身兼复位、看门狗、手动复位、电源失效监测四重身份,是整块板的"生命监护仪"。
这颗料供电范围一点二到五点五伏,复位阈值典型三点零八伏,上电复位脉宽典型二百毫秒,看门狗超时典型一点六秒,带手动复位、看门狗和电源失效比较器,静态电流最大五十微安,工作温度负五十五到正一百二十五度,同样扛得住单粒子翻转、单粒子闩锁大于等于三十七兆电子伏每平方厘米每毫克、总剂量大于等于十万拉德硅。我们还是不堆参数,只看场景。
图:星载计算机:上电复位与看门狗守护
上电那一刻:电压还没站稳,CPU 已经急着跑了
卫星母线通电后,经过 DC-DC 和 LDO 稳压,才得到给 CPU 用的三点三伏。但这个过程不是"啪"一下就到位,而是几百毫秒里从零慢慢爬升、还会 overshoot 再回落。问题来了:CPU 内核一拿到一点几伏可能就偷偷开始取指执行了。如果这时候电压还没稳到能可靠翻转寄存器的水平,CPU 就会跑飞,状态机锁死在怪异状态,后面怎么都救不回来。
ASL706S 干的第一件事,就是"按住 CPU 别动"。它内部盯着 VCC,一旦低于复位阈值三点零八伏,就立刻把 RESET 输出拉低(低有效);等到 VCC 稳稳越过阈值后,它还不马上松手,而是要再延时一段典型二百毫秒的复位脉宽,确保电源纹波都平复了、时钟也起振稳了,才释放 RESET 让 CPU 从头好好启动。这二百毫秒,是给整板一个"整齐划一"的起跑线。
为什么这条起跑线如此重要?因为现代星载计算机从来不是一颗孤零零的 CPU,而是 CPU 加 FPGA 加多路存储器加各种外设的复杂系统,它们各自的上电时序、各自能可靠工作的最低电压都不一样。如果没有一个统一的复位信号把它们"框"在同一个时刻释放,就会出现 CPU 已经开始读取 FPGA 里还没配置好的寄存器、或者往还没准备好的存储器里写数据这种灾难性的时序竞争。ASL706S 输出的这一条复位线,通常会同时分发给板上所有需要同步启动的器件,等电压真正稳了、延时也走完了,大家在同一拍上一起松手、一起开跑。这种"发令枪响之前谁都不许动"的纪律,才是复杂数字系统能可靠上电的根本保证,而它的成本,不过是一颗小小的监控芯片。
复位阈值三点零八伏:为什么是这个数
有人会问,阈值为什么定在三点零八伏、而不是三点三伏?因为要给系统留裕量。CPU 手册里常写"最低工作电压三点伏",意思是低于三点伏它就不保证行为了。ASL706S 把阈值放在三点零八伏,等于在 CPU 危险边缘之上又垫了一截,确保 RESET 释放时,电压早已安全地高于 CPU 的最低要求。这种"宁可晚一点放、不可早一毫厘放"的思路,是宇航板卡的常识。
而且阈值本身也有容差,手册给的是二点九四到三点二一伏。设计时要确认最坏情况:即使阈值低到二点九四伏才释放,那也仍高于 CPU 最低工作点。这就是抗辐照料在设计上讨喜的地方——它的参数在整个温度和辐射寿命里都有保证区间,不像某些商用料随着老化悄悄偏掉。
阈值检测还必须"干净利落",不能在阈值附近来回抖。想象一下,如果电压刚好卡在阈值线上下微微波动,一个没有迟滞的比较器就会疯狂地拉高拉低复位信号,让 CPU 陷入"复位—启动—又复位"的无限循环,比彻底死机还糟。ASL706S 内部的比较器带迟滞,也就是说它"进"和"出"用的是两条略有间隔的门限,一旦判定电压不足而拉复位,就要等电压明显回升、越过一条更高的线才肯松手,中间的抖动一概不理。这个看不见的迟滞设计,是复位芯片能在电源缓慢爬升或轻微纹波下依然给出一次干脆利落复位的关键。
跑飞了怎么办:看门狗是最后一道保险
上电稳了,CPU 正常跑,故事就结束了吗?没有。太空中单粒子翻转可能把程序计数器打偏,让 CPU 跳进一段死循环或者空转,表面看还在电、其实啥正事不干——这种"僵尸态"比死机还可怕,因为你看不出它死了。ASL706S 的看门狗就是对付这个的。
它的 WDI 引脚需要 CPU 定期翻转(典型一点六秒以内必须来一次跳变)。只要 CPU 活着、主循环在正常溜达,就会周期性地喂这个"心跳"。一旦 CPU 跑飞、不再喂狗,超过一点六秒,WDO 引脚就会报警。系统可以把 WDO 接到 CPU 的非屏蔽中断,让 CPU 自己醒过来做紧急恢复;或者干脆把 WDO 和手动复位并在一起,直接再拉一次硬复位,把僵尸彻底拍醒。一颗料,既当闹钟又当板砖。
喂狗这件事看似简单,实则大有讲究。有经验的嵌入式工程师绝不会把喂狗指令随手撒在代码里,比如放在某个定时器中断里——因为一旦主程序已经跑飞、只剩中断还在机械地喂狗,看门狗就被"骗"住了,你以为它在守护,其实系统早成了僵尸。正确的做法是把喂狗动作绑定在主循环真正"干完一轮活"的关键路径上:只有当程序完整地跑过了采集、处理、通信这一整圈,确认每个环节都健康,才允许喂一次狗。这样一旦任何一环卡死,狗就必然饿死、必然报警。ASL706S 一点六秒的超时窗口,给了主循环足够的余量去完成一整轮正常工作,又不至于在真出问题时拖太久才发现——这个时间档位是为典型星载控制周期量身定的。
图:ASL706S:复位与看门狗时序
人工兜底:手动复位 MR 不是摆设
ASL706S 还留了一个手动复位脚 MR,低有效,一点二伏就能触发。在地面调试时,工程师拿镊子一短接,就能手动拉复位,省得每次都断电重上。在轨虽然没人去按,但 MR 的价值在于"可被其他监控逻辑遥控"——比如星务计算机发现某个分系统异常,可以通过逻辑把 MR 拉低,主动让某块板重启,而无需整星掉电。
而且 MR 内部有去抖和延时,按一下不是毛刺式的一瞬,而是产生一段干净的复位。这让"遥控重启"变得可靠:你发一条指令,它给出一次标准复位,而不是一串乱抖的尖峰。对需要远程维护的航天器来说,这种可控的"软重启"通道,是排故的救命绳。
电源要不行了:PFI 提前拉响警报
最凶险的还不是跑飞,是电源慢慢垮。比如某个 LDO 老化、或者母线被阴影吞了、电池快见底,电压会一点点往下出溜。等掉到 CPU 最低工作点之下才复位,往往已经晚了——flash 可能写坏、状态已经乱了。ASL706S 的电源失效比较器 PFI/PFO 就是干"提前量"的。
PFI 引脚接一个分压电阻,去监测某路你关心的电压,参考点是内部一点二伏。你设好分压比,比如想在某路掉到四伏就报警,就让 PFI 在四伏时正好等于一点二伏。一旦被监测电压滑过这条线,PFO 立刻变低,系统可以抢在电压崩盘前,把重要数据落盘、把姿态控制交班、进入安全模式。这比等 RESET 触发早了不知道多少,是"体面退场"和"当场暴毙"的区别。
这个"提前量"到底有多值钱,得看你保护的是什么。对一块正在往非易失存储器里写关键遥测数据的板子来说,最怕的就是写到一半突然断电——那会留下一个"写坏了一半"的坏块,轻则丢一批数据,重则整个文件系统损坏、下次上电起不来。有了 PFO 这声提前的警报,CPU 就能在电压真正跌破工作点之前,把手头的写操作干净地收尾、把文件系统标记成一致状态,再从容进入低功耗保护。等电池或母线恢复后,系统能干干净净地重新起来,就像什么都没发生过。这种"优雅降级"的能力,是高可靠系统和普通系统最本质的分水岭:普通系统追求的是"尽量别断电",而高可靠系统承认"断电迟早会发生",转而把功夫下在"断电时如何不留后遗症"上,PFI/PFO 正是实现后者的关键钩子。
抗辐照余量:它自己也得活下来
整篇都在讲 ASL706S 怎么守护别人,可它自己一旦被粒子打挂,整板就失去了监护。所以它自身的抗辐照指标和 CPU 同样重要:单粒子翻转、单粒子闩锁都大于等于三十七兆电子伏每平方厘米每毫克,总剂量大于等于十万拉德硅。在轨几年,它不会被辐照慢慢推偏阈值,也不会因一次撞击就闩锁变砖。
值得强调的是,复位芯片是"系统级安全件"。它的失效模式必须可控:要么正确动作,要么安静地待着,绝不能乱发复位把正常系统搞瘫痪,也不能该发不发让系统裸奔。ASL706S 这类宇航级料在设计和筛选上,把这类失效模式都压到了极低概率,才敢放在生命线上。
上电复位与运行看门狗:两件事的解耦
细心的人会注意,ASL706S 同时管着"上电复位"和"运行看门狗"两件看似不同的事。它们其实被巧妙解耦了:上电复位只在电压越阈的前后那二百毫秒里动作,管的是"起跑";看门狗则在系统跑起来之后才计时,管的是"别跑飞"。两者的触发条件、时间窗口完全分开,互不干扰。
这种解耦在场景里很要紧。如果上电复位的逻辑和运行看门狗的逻辑缠在一起,你可能会在系统正常跑的时候,因为一次短暂的电源小波动被误复位,或者反过来,看门狗的计时被上电过程打乱,导致该报警时没报警。ASL706S 把两件事用内部独立的状态机分开处理,上电那段只认电压,运行那段只认心跳,干净利落。设计者不用在外围用一堆逻辑门去拼这种时序,一颗料内部就理顺了——这既是省料,更是少出错。
一颗料如何管住整柜:多板系统的复位分配
卫星不是一块板,而是一柜板:星务、姿控、通信、电源、载荷,各是一块。如果每块板都各放一颗监控芯片,固然简单,但整柜的复位节奏会乱——你希望关键板先稳、非关键板后启,或者某块异常时只复它自己、不波及其他。ASL706S 的手动复位脚 MR 就派上用场了:它可以被星务计算机通过逻辑统一调度。
一个典型做法是,星务板上的主控用 GPIO 去控制各分系统板的 MR,实现"分级复位"。哪块板卡死,星务就拉哪块的 MR,精准重启,其余照常工作。而 ASL706S 本身的复位和看门狗,负责守住自己那块板不裸奔。于是你得到了两层守护:板级有 ASL706S 兜底,柜级有星务统一编排。这种"局部守门员加全局调度"的结构,是航天器可靠性的标准打法,而 ASL706S 正是那个可靠的局部守门员。
故障注入测试:在地面先把太空的霉运演一遍
航天项目有个铁规矩:天上可能出的每一种霉运,地面要先演一遍。工程师会故意拉低电压、停掉看门狗心跳、制造电源跌落、甚至用粒子加速器打芯片,看系统是不是按设计反应。ASL706S 在这类故障注入测试里,是最容易被"考"的料之一——它的反应必须可预期:电压低于阈值就拉复位,心跳停了就报警,一点不含糊。
这一点对测试本身太重要了。如果监控芯片行为抽风,今天这样明天那样,测试判据就没法写,整星联试永远过不了。ASL706S 这类宇航级料,参数和行为在全温、全寿、全辐照寿命里都有保证,测试时你才知道"预期"长什么样,才能写死判据、才能签放行。场景里,它让"地面把霉运演完、天上才敢飞"这件事变得可执行。一颗行为可预期的守门员,是整星可靠性验证能闭环的前提。
小结:没人按的复位键,才是好复位键
回头看,ASL706S 在星载计算机里做的四件事——上电按稳、跑飞看门、人工兜底、电源预警——合起来就是一句话:让一块没人能上去摸的板子,永远处在"要么好好跑、要么干净重启、要么体面待机"的状态。它小到一颗 SOP8,却卡在整板可靠性的咽喉上。
这里也藏着一个值得所有嵌入式工程师反复咀嚼的设计哲学:可靠性不是靠让主控"永不出错"来实现的,而是靠承认"主控一定会出错"、然后给它配一个绝不会跟着一起出错的独立监护者。ASL706S 的所有价值,都建立在它相对于主 CPU 的"独立性"上——它有自己的电压基准、自己的计时逻辑、自己的抗辐照余量,不依赖 CPU 的时钟、不共享 CPU 的状态。正因为独立,当 CPU 犯病时它才能保持清醒、才能出手施救。这种"用一个简单而独立的看护者,去守护一个复杂而易错的主体"的思路,从星载计算机到工业 PLC,从医疗设备到汽车电子,无处不在。理解它怎么干活,比记住它的型号有用百倍:因为航天器上每一个"自动复位",背后都站着这样一位沉默的守夜人。