我们参考一个商业化的电子系统,了解车载电子系统功能安全部分的设计思路,这将影响FPGA系统状态机的设计。
通知方式与信息输出
故障分类
a)单点故障指标的安全机制
1)SPAD检查(传感器):检查像素前端电路的故障;
2)SPAD访问检查(传感器):检查控制像素前端电路的信号线故障;
3)数据路径检查(传感器):检查信号处理电路的故障;
4)有效SPAD像素区域检查(传感器):检查SPAD控制电路的故障;
5)SRAM检查(传感器):检查SRAM的错误;
6)ROM检查(传感器):检查ROM的错误;
7)OTP检查(传感器):纠正OTP数据错误;
8)内部同步检查(传感器):检查传感器内部同步信号生成电路的故障;
9)控制流监控(传感器):检查软件处理过程的故障;
10)看门狗定时器(传感器):检查CPU的故障;
11)协议检查(传感器):检查通信协议的故障;
12)寄存器检查(传感器):检查寄存器的故障;
13)温度计检查(传感器):检查传感器内部温度和温度计的故障;
14)参考电压检查(传感器):检查传感器内部电压、偏置电流、电压生成电路的故障;
15)电源检查(传感器):检查电源电压的故障;
16)运行时BIST(传感器):控制SPAD检查、SPAD访问检查、数据路径检查、有效SPAD像素区域检查、寄存器检查的执行;
17)外部同步检查(传感器):检查与外部同步信号的故障;
18)软件栈检查(传感器):检查对栈存储区域外部的非法访问故障;
19)OTP CRC校验(传感器):检查OTP数据的错误及OTP数据读取路径上的数据损坏;
20)时钟监控器(传感器/主机):检查传感器内部时钟频率及时钟生成电路的故障;
21)通信CRC检查(传感器/主机):检查主机与传感器之间通信数据的错误;
22)端到端E2E数据保护(主机):检查MIPI发送器的故障;
23)MIPI数据卡滞监控器(主机):检查MIPI数据的卡滞故障;
24)输出状态监控器(主机):检查传感器状态的故障;
25)输入电压监控器(主机):检查电源电压的故障;
26)激光驱动器监控器(主机):检查TRG_O信号及激光驱动器的故障。
b)潜伏故障指标的安全机制
1)逻辑内建自测试(传感器):检查安全功能逻辑电路中的故障;
2)存储器内建自测试(传感器):检查传感器中SRAM存储单元的故障;
3)初始存储器检查(传感器):检查传感器中软件所用SRAM及存储器访问路径的故障;
4)XERROR引脚检查(主机):检查XERROR引脚的卡滞故障。
c)除故障诊断之外的安全机制
1)错误控制模块ECM:收集各安全机制上报的信息并通知主机。当检测到故障时,ECM会将信息上报主机,支持系统执行降级运行、安全停机、报警等响应动作,这正是功能安全的核心目标,即将器件故障的影响控制在非危险范围,避免因传感器失效引发事故。
d)故障检查覆盖了:存储器(栈、OTP、SRAM)、通信链路(MIPI、主机-传感器交互)、硬件电路(时钟、激光驱动器、逻辑单元)、电源系统(输入电压)、外部接口(XERROR引脚)。
e)

故障通知方式
a)传感器内置的错误收集单元ECM会汇总安全机制的故障检测结果,并向主机发起通知。
b)传感器支持三种故障通知方式:XERROR引脚、错误状态寄存器、EBD。若仅使用单一通知方式,无法保证通知的准确性。因此建议组合使用多种通知方式进行校验。传感器检测故障的故障检测时间间隔FDTI是基于XERROR引脚通知定义的,因此主机需为所有安全机制启用XERROR引脚的故障通知功能。
c)XERROR引脚
1)传感器向主机发送通知的方式为XERROR引脚。当XERROR引脚输出低电平时,主机应判定传感器存在故障,并需在故障检测后的故障响应时间间隔FRTI内,将系统切换并维持在安全状态。XERROR引脚是硬件级、非依赖软件通信的通知方式。在软件通信故障(如SPI/I2C通信中断)的情况下,XERROR仍能独立向主机发出故障信号,其优先级最高。
2)在以下场景中,XERROR引脚会输出低电平:
①从复位释放(XCLR引脚为高电平)到传感器确认INCK频率的阶段;
②OTP CRC检查运行的阶段;
③DIG-TEST状态的阶段。
d)错误状态寄存器
1)传感器提供错误状态寄存器用于故障状态通知,寄存器的每一位对应一个安全机制。主机可以通过读取该寄存器判断是否检测到故障。当传感器监测到故障时,会立即在错误状态寄存器中反映该故障。
2)主机通过SPI/I2C通信读取错误状态寄存器,若判断为故障,需在故障监测后的FRTI内,将系统切换并维持在安全状态。
e)EBD
1)传感器会在输出帧的EBD数据中携带故障检测结果,EBD包含于MIPI输出数据内。主机可通过EBD识别故障类型,但故障通知可能延迟至下一次测距周期。此外,当传感器不处于active状态时,主机无法接收EBD,这意味着EBD的故障通知不会在FDTI内完成。
f)故障通知控制寄存器
1)若要启用/禁用XERROR引脚的故障通知功能,需使用故障通知控制寄存器(SM_ECTL_0/1/2)和故障通知设置反馈寄存器(SM_ECTL_SET)。主机需在传感器待机情况下配置这些寄存器。
2)若要修改各故障通知的设置,需先将故障通知控制寄存器(SM_ECTL_0/1/2)中对应故障的位域设为0或1,再将故障通知设置反馈寄存器(SM_ECTL_SET)设为1。待通知方式的设置修改完成后,故障通知设置反馈寄存器会恢复为0。
3)如要禁用SRAM检查错误通知设置与ROM检查错误通知设置,需将0x77377377写入SM_EXTL_0中,将故障通知设置反馈寄存器设为1,随后确认故障通知设置反馈寄存器是否恢复为0。
4)仅通过修改SM_ECTL_0/1/2寄存器不会直接生效,必须通过将SM_ECTL_SET设为1,才能触发传感器加载新的通知配置。配置完成后,SM_ECTL_SET自动恢复为0,为主机提供配置已生效的明确反馈。避免了主机发送配置指令后,因通信丢包/传感器未响应导致的配置失效风险。
传感器故障时系统进入安全状态的机制
a)当传感器通过XERROR引脚向主机通知故障,或主机自行检测到传感器故障时,主机需在故障识别后的故障响应时间间隔FRTI内,将系统切换至安全状态。若传感器向主机通知故障,主机可借助SM_ESTS寄存器确定后续操作。若主机自行检测到传感器故障,则需根据故障类型制定后续操作策略。若系统未及时进入安全态(如继续依赖错误数据),会将传感器故障放大为系统级危险事件。FRTI本质是通过时间上限,把故障的影响锁定在可控窗口内。
b)当传感器向主机通知SRAM1位数据错误纠正或ROM1位数据错误纠正时,由于该故障已被自动纠正,主机可继续使用测距数据。主机既可以清除该故障,也可提前通过修改SM_ECTL寄存器禁用相关故障通知。
c)当传感器通知或主机检测到:SRAM/ROM地址错误或2位以上数据错误、看门狗定时器、寄存器检查、软件栈检查、OTP CRC检查、逻辑内建自测试、存储器内建自测试、初始存储器检查、时钟监控器类故障时,主机必须立即停止使用测距数据,且需复位传感器。
d)当传感器通知或主机检测到:SPAD检查、SPAD访问检查、数据通路检查、激活态SPAD像素区域检查、内部同步检查、控制流监控、协议检查、温度传感器检查、基准电压检查、电源检查、外部同步检查、通信CRC检查、端到端E2E数据保护、MIPI数据卡滞监控器、输出状态监控器、输入电压监控器、激光驱动器监控器,主机必须立即停止使用测距数据,若故障已清除且未再次检测到故障,主机可重新使用测距数据。但故障通知/检测前后时段的测距数据不得使用。此外,若因故障本身导致无法清除故障,或因故障根源未解决导致故障复现,则需复位传感器。
e)当主机检测到XERROR引脚检查故障时,传感器此时无法通过XERROR引脚通知该故障。这并不代表测距数据存在错误,但主机在每次使用测距数据时,都必须检查SM_ESTS寄存器,以确认未监测到其他故障。
f)若要清除传感器的故障,需使用错误清除寄存器SM_ECLR与错误清除设置反馈寄存器SM_ECLR_SET。在错误清除寄存器中,将需清除故障对应的位域设为1,同时将错误清除设置反馈寄存器设为1。当错误清除设置反馈寄存器恢复为0时,清除操作完成。需注意:此过程仅清除故障检测结果,故障可能会被再次检测到。
除故障诊断外的其他安全机制
a)错误收集模块ECM:各安全机制会将故障检测结果上报至ECM,ECM依据通知方式的配置,向主机推送故障检测信息。

传感器内部,各安全机制将故障检测结果发送至ECM。ECM联动错误状态寄存器,通过I2C/SPI通信向主机传递错误状态寄存器数值、通过 MIPI发送器传递EBD,同时输出XERROR信号。主机通过I2C/SPI、MIPI、XERROR接口接收对应信息
b)主机应通过XERROR信号检测传感器故障,并通过读取错误状态寄存器或EBD获取传感器故障信息。若传感器推送故障通知,主机需在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
由传感器执行诊断的安全机制
SPAD Check
a)功能目的/功能描述:SPAD检查是用于检测像素前端电路故障的安全机制。SPAD检查会向像素前端电路输入若干模拟SPAD像素输出的测试图案,再检查数字信号处理后的输出数据。若数字信号处理的输出数据与预期数据不一致,SPAD检查会判定像素前端电路存在故障;若检测到故障,ECM 会向主机推送该故障通知。

b)对主机的要求:传感器启动后,主机需将传感器状态切换至模拟测试态(ANA-TEST)以执行SPAD检查。若传感器推送故障通知,主机需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
c)时序图

SPAD Access Check
a)功能目的/功能描述:SPAD访问检查是用于检测像素前端电路控制线故障的安全机制。SPAD访问检查会向像素前端电路输入若干控制信号测试图案,并检查数字信号处理后的输出数据。数字信号处理电路包含多个并行处理模块,在SPAD访问检查中,各模块的输出应保持一致。传感器通过比对各并行处理模块的输出来检测像素前端电路控制线的故障;若检测到故障,ECM会向主机推送该故障通知。

b)对主机的要求:若传感器推送故障通知,主机需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
c)时序图

data path check
a)功能目的/功能描述:数据通路检查是用于检测数字信号处理电路故障的安全机制。数据通路检查会向数字信号处理电路中的多个并行处理单元输入若干测试图案,通过比对各模块的输出来检测数字信号处理电路的故障;若检测到故障,ECM会向主机推送该故障通知。
b)对主机的要求:若传感器推送故障通知,主机需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
active spad-pixel area check
a)功能目的/功能描述:激活态SPAD像素区域检查是用于检测SPAD控制模块故障的安全机制。激活态SPAD像素区域检查会将实际的SPAD像素激活区域,与主机指定的区域设置进行比对;若比对结果不匹配,ECM会将其作为故障通知给主机。
b)对主机的要求:若传感器推送故障通知,主机需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
sram/rom/OTP check
a)功能目的/功能描述:SRAM检查是用于检测SRAM中数据错误与地址错误的安全机制。SRAM检查通过ECC与奇偶校验实现数据错误的检测/纠正,同时通过奇偶校验检测地址错误。若检测到任意错误,ECM会将其作为故障通知给主机。OTP检查会计算ECC(纠错码),并将ECC与源数据一同写入OTP;在读取OTP数据时,OTP检查通过ECC纠正 1 位数据错误。传感器不会将OTP数据的1位纠错情况通知给主机。

b)对主机的要求:若传感器通知2位及以上数据错误或地址错误,主机需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施保障整个系统的安全;若仅通知1位数据错误纠正,主机可继续使用测距数据。
c)时序图

internal sync check
a)功能目的/功能描述:内部同步检查是用于检测内部同步信号生成电路故障的安全机制。内部同步检查会单独设置冗余的同步信号生成电路(作为安全机制,与功能用的同步信号生成电路相区分),通过比对各电路的输出信号来检测故障;若比对结果不一致,ECM会将其作为故障通知给主机。即传感器内同时存在功能用的同步信号生成、发射器时序控制电路,以及安全用的冗余同步信号生成、发射器时序控制电路;内部同步检查通过比对两类电路输出的同步信号,若不一致则判定为故障,再由ECM向主机推送故障通知。

b)对主机的要求:若传感器推送故障通知,主机需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
c)时序图

control flow monitoring
a)功能目的/功能描述:控制流监控是用于检测软件处理故障的安全机制。软件进程每次执行时都会记录自身的执行情况,控制流监控会检查该记录,以检测软件进程的缺失或冗余问题。

b)对主机的要求:若传感器推送故障通知,主机需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
watchdog timer check
a)功能目的/功能描述:看门狗定时器是用于检测CPU操作故障的安全机制。传感器正常运行时,CPU会周期性更新看门狗定时器的递减计数器。看门狗定时器监控该递减计数器是否被周期性更新。在以下情况中,ECM会将其作为故障通知给主机:递减计数器在一段时间内未被更新;递减计数器的更新时间早于设计时序。

b)对主机的要求:若传感器推送故障通知,主机需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
protocol heck
a)功能目的/功能描述:协议检查是用于检测主机与传感器之间SPI/I2C通信故障的安全机制。

b)对主机的要求:若传感器推送故障通知,主机需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
thermometer check
a)功能目的/功能描述:温度计检查是用于检测温度及温度计故障的安全机制。温度计检查会使用传感器上部署的两个温度计(分别位于北侧、南侧)的测量值,当满足以下任一条件时判定为故障:任意一个温度计的测量值超出阈值(上限或下限);两个温度计的测量值差值超出阈值。若检测到故障,ECM会将其通知给主机。

b)对主机的要求:若传感器推送故障通知,主机需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
logic bist check
a)功能目的/功能描述:逻辑内建自测试(Logic BIST) 是用于检测安全机制相关逻辑电路故障的安全机制。Logic BIST执行逻辑电路自诊断:当传感器状态从待机态切换至数字测试态(DIG-TEST)后,Logic BIST启动;即使Logic BIST中检测到故障,存储器内建自测试(Memory BIST)也会在Logic BIST之后自动执行,Logic BIST的故障通知会在Memory BIST完成后发出。在Logic BIST与Memory BIST执行期间,XERROR引脚会置为低电平:若未检测到故障,Memory BIST完成后XERROR引脚恢复为高电平;若检测到故障,Memory BIST 完成后XERROR引脚保持低电平(即使传感器状态切换至初始化1态)。

b)对主机的要求:主机必须在一个车辆周期内将传感器状态切换至数字测试态(DIG-TEST)一次,使传感器执行Logic BIST。若传感器推送故障通知,主机需停止使用测距数据,并采取适当措施保障激光雷达系统的整体安全。
(还有一些其他的检查项,但原理类似)
由传感器和主机共同执行诊断的安全机制
clk monitor check
a)功能目的/功能描述:时钟监视器监控以下信号:INCK或MIPI DMCK信号、传感器内部生成的时钟、PLL锁定信号。具体分工:
1)传感器监控内部生成的时钟频率,若时钟频率与预期值不一致,传感器判定为故障;
2)传感器无法检测INCK引脚输入的时钟故障,需由主机通过INCK或MIPI DMCK频率来检测该故障;
3)传感器监控PLL锁定信号,若PLL未锁定,传感器判定为故障。
若检测到故障,ECM会将其通知给主机。

b)对主机的要求:主机需要监控INCK或MIPI DMCK的频率,若频率与预期不符,需判定为故障。若传感器推送故障通知,或主机检测到INCK/MIPI DMCK故障,主机需停止使用测距数据,并在激光雷达系统的FRTI周期内采取措施保障系统安全。
c)时序图

d)

该时序图假设在以下条件下检测故障:主机在MIPI输出数据时,开始对DMCK进行计数;主机确认DMCK计数值与预期一致。
communication CRC check
a)功能目的/功能描述:通信CRC校验是用于检测主机与传感器之间SPI/I2C通信错误的安全机制。通信CRC校验会同时检查传感器发往主机和主机发往传感器的两类数据。
b)①主机向传感器通知CRC计算启动,传感器随即开始对接收数据进行CRC计算;②主机向传感器传输数据,传感器对接收数据计算 CRC,同时主机也需对发送数据计算CRC;③主机向传感器通知CRC计算结束,传感器停止CRC计算;④主机将自身计算的CRC数据写入传感器寄存器;⑤主机向传感器发起CRC校验请求,传感器将自身计算的CRC与主机写入的CRC进行比对;⑥若检测到故障,传感器会向主机推送故障通知。

c)仅对主机发往传感器的数据做通信CRC校验不足以全面检测故障,至少需在FDTI周期内对传感器发往主机的数据执行一次通信CRC校验。

d)


传感器发送通信数据时通信CRC校验的流程:①主机向传感器通知CRC计算启动,传感器随即开始对发送数据执行CRC计算;②传感器向主机传输数据,传感器与主机均对该传输数据计算CRC;③主机向传感器通知CRC计算结束,传感器停止CRC计算;④主机通过SPI/I2C通信获取传感器计算得到的CRC数据;⑤主机将自身计算的CRC与传感器计算的CRC进行比对,若二者不一致,主机判定为故障。
e)对主机的要求:若传感器推送故障通知,或主机自身检测到故障,主机需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。通信CRC校验可能因外部噪声等因素误检测到故障,因此即使检测到故障,也建议尝试多次通信。
f)CRC计算有明确的技术参数(16位多项式、初始值0xFFFF等),消息长度限制在4096字节内。
g)时序图

流程:①主机将寄存器SY_CRC_EN写为1,传感器在SY_CRC_EN=1期间计算CRC;②通信CRC校验会对主机写访问时通过SDI引脚传输的所有地址和数据执行CRC计算;注意:若在写访问的CRC计算周期(SY_CRC_EN=1期间)执行读访问,CRC计算值无法保证有效性;③主机将SY_CRC_EN写为0,此时传感器会将待传输的地址和数据对应的CRC值、总字节数,分别存入寄存器SY_CRC_RDATA_CRC和SY_CRC_RDATA_BYTECNT;④主机将(2)(3)中计算得到的预期CRC值和总字节数,写入寄存器SY_CRC_RCMP_CRC和SY_CRC_RCMP_BYTECNT;⑤主机将寄存器SY_CRC_RCMP_EXEC写为1,此时传感器会将自身计算的CRC值(SY_CRC_RDATA_)与主机计算的CRC值(SY_CRC_RCMP_)比对;若不一致,会通过SM_ESTS寄存器、EBD、XERROR引脚向主机推送故障通知。主机需根据自身设置的故障通知模式检查传感器故障,若检测到故障,需采取措施防止安全目标失效。
当主机通过 SPI 通信向传感器寄存器写入数值时,传感器会通过SDO引脚输出寄存器中存储的数据。若主机在CRC计算周期内同时执行读访问和写访问,SDO数据的CRC计算必须包含这些旧寄存器值。
由主机执行诊断的安全机制
E2E data protection check
a)功能目的/功能描述:E2E数据保护是用于检测MIPI发送器故障的安全机制。传感器中的E2E数据保护会计算MIPI数据的EBD数据与有效载荷的校验和,并将这些校验和随MIPI数据一同发送给主机。主机计算MIPI数据的EBD与有效载荷的校验和,若主机计算的校验和与传感器计算的校验和不一致,主机需判定为故障。

b)对主机的要求:主机需计算接收到的MIPI数据的校验和,并将计算结果与接收到的校验和进行比对。若比对结果不一致,主机应判定为故障。若主机检测到故障,需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
mipi stuck check
a)功能目的/功能描述:MIPI卡滞监视器是用于检测传感器输出的MIPI数据出现卡滞故障的安全机制。MIPI卡滞监视器会检查MIPI数据中包含的以下有效载荷数据:EBD中的时隙号、测距数据中的宏像素号。
b)对主机的要求:传感器每次输出MIPI数据时,都会更新EBD中的时隙号。主机需检查该时隙号;若时隙号未更新,主机判定为故障。测距数据中的每个宏像素数据都对应唯一的宏像素号。主机需检查该宏像素号;若主机检测到某一宏像素号在一次测距数据中出现超过两次,主机判定为故障。
output status monitor
a)功能目的/功能描述:输出状态监视器是用于检测COMREADY引脚故障与状态机故障的安全机制。输出状态监视器会监控传感器输出的 COMREADY信号:该信号用于通知主机是否允许与传感器进行SPI/I2C通信。当主机将F_SYNC切换为低电平后,SPI/I2C通信会被禁止,且传感器应将COMREADY引脚切换为低电平;若主机将F_SYNC切换为低电平后,COMREADY引脚未切换为低电平,主机需判定为故障。

b)对主机的要求:主机需监控COMREADY信号,确认其状态变化是否正常。若主机检测到故障,需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
c)主机应在传感器设备状态为Active且F_SYNC信号切换为低电平时,开始监控COMREADY信号。若测量时间T超过特定时长2.0ms后,COMREADY信号仍为高电平,则应判定COMREADY引脚故障;若检测到故障,需采取措施防止安全目标失效。

input voltage monitor
a)功能目的/功能描述:主机监控VDDLSC与VSSLSC之间的电压。若电压值超出规定范围,主机判定为故障。
b)对主机的要求:若主机检测到故障,需停止使用测距数据,并在激光雷达系统的故障响应时间间隔FRTI内采取适当措施,保障整个系统的安全。
(此外还有激光器检测、XERROR检测,原理类似。)
生成模拟错误的步骤
a)模拟错误仅会模拟向主机发送的错误通知,不会模拟对输出数据等的实际影响。无论各安全机制检测实际故障的时机如何,只要传感器处于待机或激活状态,即可生成模拟错误。注意:一次只能生成一个模拟错误。
b)以注入CLK监视器错误为例:①将传感器切换至待机或激活状态;②将错误注入寄存器的错误位设置为1(SM_EINJ=0x100,其中SM_EINJ[8]是CLK监视器的错误注入位);③将错误注入锁定寄存器设置为解锁码(SM_EINJ_LOCK=0xA5A5);④将错误注入触发寄存器设置为1(SM_EINJ_TRG=1);⑤确认错误注入触发寄存器回退为0。此时模拟错误已产生。