编辑推荐: |
本文主要介绍如何利用失效模式、影响及诊断分析(FMEDA)工具对FPGA控制的驱动系统进行功能安全分析,并通过诊断方法增强其安全性,希望对您的学习有所帮助。
本文来自于猿力部落,由火龙果软件Linda编辑、推荐。 |
|
采用小型高速旋转电机的电机控制应用,以及碳化硅(SiC)和氮化镓(GaN)开关晶体管的出现,推动了对具有高频控制回路更新功能的紧凑型驱动系统的需求。现场可编程门阵列(FPGA)可为这类控制提供所需的速度和灵活性。驱动系统还必须符合功能安全标准。本文阐述了如何利用失效模式、影响及诊断分析(FMEDA)工具对FPGA控制的驱动系统进行功能安全分析,并通过诊断方法增强其安全性,从而达到ISO
26262汽车安全完整性等级B(ASIL B)或IEC 61508安全完整性等级2(SIL 2)的要求。

01. 简介
由于FPGA具有运算速度快、输入/输出(I/O)接口灵活且支持并行处理的特点,其被广泛用于驱动系统中,以实现快速开关控制和先进控制算法。研究人员通常会使用高性能FPGA,但伺服驱动系统或混合动力电动汽车等商业应用场景则需要成本更低的FPGA硬件,且采用单个FPGA实现“片上驱动”(drive
on chip)的设计方案能为这类应用带来收益(见图1)。

图1:基于Altera MAX® 10 FPGA的示例驱动系统(完整系统)
实际应用中的驱动系统往往与安全相关,需要实现特定的安全目标,并达到规定的安全完整性等级。然而,按照IEC
61508或ISO 26262等功能安全标准的要求,从量化失效率和故障检测覆盖率的角度对系统功能安全进行分析颇具挑战性。增强功能安全的方法通常包括增加冗余设计,例如采用两个FPGA而非一个、在FPGA架构中设置两个锁步运行的处理器,甚至在FPGA的所有逻辑电路中采用三模冗余设计。
1.1 功能安全背景
安全的定义是避免人员受到不合理的伤害或健康损害,这种伤害或损害可能是直接的,也可能是间接的(例如由系统损坏或环境危害导致)。功能安全指的是用于保障安全的系统能够正确运行,其范畴包括通过诊断手段检测潜在危险状态,并采取缓解措施的机制。
安全标准规定了安全关键型应用应遵循的安全生命周期,核心目标是最大限度地降低系统失效风险。
失效可分为系统性失效和随机性故障两类:
· 系统性失效:主要指缺陷(如软件错误、规格定义错误等)。通过遵循严格的、符合最新技术水平的质量管理和开发流程,可将系统性失效降至最低。
· 随机性失效:由元器件失效或电磁干扰等外部因素引发的硬件错误。安全系统的设计需能检测随机性失效,并通过相应措施使系统进入安全状态。
1.2 FPGA驱动控制系统
本研究采用MAX® 10 FPGA来验证低成本驱动系统方案的可行性。MAX 10 FPGA集成了逻辑单元、M10K
RAM存储块、数字信号处理(DSP)模块、模数转换器(ADC)和片上闪存(On-Chip Flash)。若终端应用对资源的需求超出片上资源容量,MAX
10 FPGA还可与DDR3同步动态随机存取存储器(SDRAM)、静态随机存取存储器(SRAM)和闪存等外部存储器进行接口连接。
该系统采用存储器映射接口连接所有知识产权(IP)组件,其中Nios II软核处理器作为数据主控器。驱动子系统产生的中断信号可使处理器控制软件与脉冲宽度调制(PWM)信号及ADC采样数据保持同步。处理器的中断服务程序(ISR)从接口IP组件中读取数据,通过软件执行控制计算,并将输出数据写入接口IP组件(包括驱动子系统的PWM
IP)。
MAX 10 FPGA的ADC以2路、每路1兆样本/秒(1Msample/s)的速率工作,通过多路复用可处理16路反馈信号,用于采集电机的电压和电流数据。该架构支持多个驱动子系统实例,因此可轻松将设计扩展至多轴电机控制(见图2)。

图2:基于Altera MAX® 10 FPGA(仅限FPGA)的示例驱动系统
系统的标准PWM频率为8千赫兹(kHz),控制频率为16 kHz;同时也支持更高频率的运行模式,例如16
kHz的PWM频率搭配32 kHz的控制回路。系统包含一个用于启动控制的中央驱动状态机、应对故障情况的快速关断逻辑,以及一个或多个驱动子系统。
完整的系统包括印刷电路板(PCB)、板级组件(电源、无源元件、连接器)、电机位置编码器和功率晶体管。完整系统的失效率为所有板级组件失效率的总和。
本文仅考虑FPGA器件本身的失效率,该失效率可分为硅芯片(silicon die)失效率和封装(package)失效率两部分:
· 硅芯片失效率:进一步细分为永久性失效率和瞬态失效率。其中,瞬态故障主要由α辐射和中子粒子扰动引发,这类扰动主要影响存储结构,但也可能改变触发器的状态。对于现代亚微米级集成电路(IC),其瞬态失效率通常高于永久性失效率。
· 封装失效率:主要与封装材料失效和键合失效相关。
1.3 本文研究目标
本文介绍一种系统架构、诊断方法及 FMEDA 分析方案,通过采用适当的诊断方法和
FMEDA分析,使系统达到 ISO 26262 ASIL B 或 IEC 61508 SIL 2 的安全等级需求。
02. 研究方法
为降低实现功能安全的成本,对系统功能安全进行客观评估至关重要。这一评估过程可通过设计失效模式、影响及诊断分析(FMEDA)工具来完成。该工具需结合多种数据进行分析,包括永久性失效预估数据、辐射诱发瞬态失效数据、器件设计数据,以及拟采用的安全设计方案细节(包括其诊断功能,参考文献中针对高级驾驶辅助系统(ADAS)应用的案例),进而计算用于判定系统所达安全完整性等级的相关指标。
2.1 FMEDA工具
本研究的FMEDA分析采用英特尔(Intel)开发的基于微软Excel的FMEDA工具,该工具包含在英特尔功能安全数据包(FSDP)中。该FMEDA工具可提供不同故障类别的相关信息,即硅芯片相关的永久性故障和瞬态故障,以及封装相关的故障;同时还能计算ISO
26262标准要求的单点故障指标(SPFM)和潜在故障指标(LFM),以及IEC 61508标准要求的安全失效分数(SFF)和诊断覆盖率(DC)。
在计算硅芯片相关故障指标时,该工具未将封装失效率纳入考量,原因是封装的失效单位时间(FIT)涵盖了多种不同的物理失效模式,目前尚无标准方法可用于计算封装失效对芯片详细功能的影响。因此,本文呈现的故障指标未包含封装失效率。若需在分析中纳入封装失效率,一种可行方法是:除了芯片固有的(基于硅芯片的)FIT值外,为设计中的每个模块分配一定比例的封装
FIT 值,这样就能将相关诊断措施对封装失效的检测效果纳入分析范围。
该工具采用IEC TR 62380标准中规定的方法,基于可配置的任务剖面(器件工作条件)估算晶体管的FIT值,再根据该FIT值计算FPGA中各类资源(逻辑单元、存储器、I/O接口、DSP模块、布线资源、锁相环(PLL)等)的FIT值。
分析设计方案所遵循的FMEDA流程(见图3)包含以下步骤:

图3:FMEDA流
1. 架构设计(Architecture):用户定义其设计方案的模块级架构。
2. 安全隔离(Safety Separation):用户在工具中输入设计模块列表,并将每个模块标记为“与安全相关(Safety-Related
Yes)”或“与安全无关(Safety-Related No)”。默认情况下,基于IEC 61508-6标准表B.1,“安全故障比例”
设定为50%;若能获得更精确的估算值,可对该比例进行调整。
3. 资源使用提取(Resource usage extraction):用户在英特尔Quartus
II软件中对FPGA设计进行编译,从报告中提取设计中每个模块的资源使用信息,并将这些信息输入至FMEDA工具。
4. 添加安全机制(Add safety mechanisms):为每个模块添加初始的安全机制(诊断措施)。
5. 计算指标(Calculate Metrics):工具自动计算相关故障指标;用户可重复上述步骤对设计方案进行优化,直至达到目标故障指标要求。
通过识别FPGA中FIT值最高的资源,可确定诊断措施的重点实施对象。FPGA架构中不同元件(如逻辑单元、I/O电路、配置RAM(CRAM)、静态RAM(SRAM))的FIT值均需单独估算。
2.2 ISO 26262故障指标(SPFM、LFM、PMHF)
· 单点故障指标(SPFM):反映系统对单点故障和残余故障的抵御能力,这种抵御能力可通过安全机制的覆盖作用或设计本身实现。SPFM值越高,表明系统硬件中的单点故障和残余故障比例越低。
· 潜在故障指标(LFM):反映系统对潜在故障的抵御能力,可通过安全机制对故障的覆盖、驾驶员在安全目标被破坏前识别故障,或设计本身实现。LFM值越高,表明系统硬件中的潜在故障比例越低。
SPFM和LFM需针对整个设计方案进行计算,且必须分别满足永久性故障和瞬态故障的指标要求。
· 随机硬件失效概率指标(PMHF):指危害未检测故障和多点故障的单位时间失效率(以 FIT 为单位)。其中,多点故障指安全机制中的失效,以及需多个故障同时发生才会引发的故障。为简化分析,本文的故障分析未考虑多点故障。
2.3 IEC 61508故障指标(SFF、PFH)
· 安全失效分数(SFF):反映系统对故障的抵御能力。SFF值越高,表明安全故障和危害已检测故障的比例越高。SFF
需按模块分别计算,且需同时涵盖永久性故障和瞬态故障,最终取各模块 SFF 的最小值作为系统 SFF。
· 每小时失效概率(PFH):指危害未检测故障的单位时间失效率(以FIT为单位)。
2.4 安全目标
针对本研究中的驱动系统,设定的安全目标如下:若发生危险的硬件或软件错误,系统需检测到该错误,并在500毫秒(ms)内使驱动系统停止运行,从而进入安全状态。此外,还可添加额外的人员保护安全机制(如光幕)——当人员进入机器的危害区域时,光幕可触发驱动系统停止运行,但本文未对这类机制进行研究。
需通过风险分析确定应用的安全完整性等级(SIL)(参见IEC 61508-5标准)。SIL等级从SIL
1(低风险)到SIL 4(极高风险)不等,每个SIL等级都对应一组必须满足的故障指标。注:汽车领域采用类似的安全等级划分,即从ASIL
A(低风险)到ASIL D(极高风险)。
本文将安全目标设定为中等水平,即达到SIL 2/ASIL B等级。系统运行模式为 “高需求模式(High-Demand)”,且FPGA被视为
“B类(复杂)组件”。基于上述假设,所需满足的故障检测指标如下:
· 故障指标:SFF/SPFM>90%,LFM>60%;
· 完整系统(含控制器、传感器和执行器)的(危险)失效概率:PFH/PMHF<1×10-6
失效/小时(即1000 FIT)。通常将系统失效率的10%分配给FPGA;
· 控制器的(危险)失效概率:PFH/PMHF<1×10-7失效/小时(即100 FIT)。
系统的过程安全时间(PST)/容错时间间隔(FTTI)为500 ms。本研究为FPGA分配的诊断时间为100
ms,即所有诊断措施必须在100 ms内启动并完成检测。
2.5 诊断措施
诊断机制既可以是控制器内部的(如对内部存储器采用错误检测码(EDC)),也可以是外部的(如电源监控器)。部分诊断措施可通过软件实现(如将只读存储器(ROM)内容与预计算的校验和进行比对)。
需对每种诊断机制的诊断覆盖率(DC)进行评估(诊断覆盖率指该机制能检测到的故障占其覆盖功能范围内总故障的比例),且诊断运行时间必须小于过程安全时间(PST)。诊断覆盖率的评估具有一定主观性,且在很大程度上依赖于所选的故障模型,因此安全标准中规定了一系列标准诊断技术及其对应的诊断覆盖率,可供参考(参见
IEC 61508-2附录A表A.1-A.14)。适用于FPGA的诊断措施在标准中对应的表格包括“电气和电子元件”、“处理单元”、“存储器”、“I/O接口”、“数据通路”、“看门狗”和“时钟”等相关表格。

表1:各模块类型对应的示例诊断措施
必须确保能在系统启动时向设计中注入故障,以检查是否存在永久性故障阻碍诊断措施正常运行。本研究对设计中的不同模块进行了分析,确定了可应用于各模块的多种示例诊断措施(见表1);随后将这些诊断措施与IEC
61508和ISO 26262标准中的技术和措施表格进行映射,以估算其诊断覆盖率(DC)(见表2)。

表2:诊断类型及覆盖率与标准的映射关系
MAX 10 FPGA芯片内置的一项重要诊断功能是对用于存储FPGA配置信息的SRAM(即CRAM)进行错误检测循环冗余校验(EDCRC)。该EDC功能可检测出CRAM中超过99%的4位错误,且无需额外占用FPGA资源。
本研究采用了单粒子翻转(SEU)诊断IP核,该IP核可对EDCRC诊断措施进行故障注入测试;同时采用了时钟检查器IP核,用于检测时钟频率故障。这些诊断IP核均包含在功能安全数据包(FSDP)中。
随后,本研究对两种采用不同诊断措施组合的架构进行了分析。
2.6 架构1:双核锁步Nios处理器
Nios II双核锁步(DCLS)架构(见图4)可提供稳健的解决方案,符合SIL 3等级要求,对处理器及其嵌入式存储器的永久性故障和瞬态故障的诊断覆盖率均达到99%。必要时,可采用基于软IP核的EDC功能对嵌入式SRAM存储块(M10K)进行保护。

图4:双核锁步Nios架构
其他诊断措施包括:通过软件一致性检查实现电机反馈信号诊断,通过硬件故障检测实现PWM输出和时钟诊断。若PWM检查器检测到失效或ADC检测到信号超出量程,驱动状态机将立即禁用电机和PWM输出。相关诊断措施的详细信息见表3。

表3:锁步Nios架构中采用的诊断措施
2.7 架构2:全冗余架构
本研究还考虑了全冗余架构(见图5):对设计中的大部分模块进行复制,并通过精确比较两个复制模块的输出结果实现诊断。通过模块复制与结果比对,可实现较高的诊断覆盖率(DC)。由于MAX
10开发板的现有设计限制,无法对外部存储器接口进行复制;但如果改用内部M10K存储块,并对互连资源进行复制,则可实现更高的模块独立性。

图5:全冗余架构
两个复制的Nios II处理器通过运行软件测试,对电机反馈信号的结果进行比较,并交叉校验两个处理器的计算结果。PWM检查器是一种硬件级诊断模块,每个时钟周期都会对PWM输出信号进行精确匹配检查。驱动状态机提供与锁步架构相同的保护功能。相关诊断措施的详细信息见表4。

表4:全冗余架构中采用的诊断措施
03. 结果
原始系统在设计时未考虑功能安全,因此未刻意设计任何安全诊断措施。系统的安全故障比例默认设置为50%,理论上应导致单点故障指标(SPFM)和潜在故障指标(LFM)均为50%。但由于
FPGA 的配置RAM(CRAM)已内置EDCRC诊断功能,而该功能的诊断覆盖率(DC)高达99%,且CRAM的规模庞大,因此启用该功能后,系统故障指标得到显著提升。此外,由于静态随机存取存储器(SRAM)的瞬态失效率远高于其他类型的FPGA晶体管,瞬态单点故障指标(Transient
SPFM)的提升更为明显(见表5)。
锁步架构使系统整体故障指标显著提升,已非常接近 ISO 26262 ASIL B 等级要求的 SPFM=90%;通过添加额外的诊断措施,可进一步提高故障指标。全冗余架构由于对大多数模块采用了中高诊断覆盖率的诊断措施,成功达到了
ASIL B等级的指标要求(见表5)。两种架构均满足ASIL B等级对PMHF(随机硬件失效概率指标)<100
FIT的要求。

表5:ISO 26262故障指标
对于IEC 61508标准,系统的安全失效分数(SFF)与SPFM指标结果相近(见表6),二者的差异主要源于以下两点要求:一是SFF需按模块分别计算,并取最小值作为系统SFF;二是SFF需同时涵盖永久性故障和瞬态故障。因此,若任一模块未采用诊断措施,其最大SFF仅为50%。两种架构均满足SIL
2等级对PFH(每小时失效概率)<100 FIT的要求。

表6:IEC 61508故障指标
04. 讨论
FPGA具有灵活的设计特性,可在控制器内部按需添加诊断机制并构建不同架构。专用的嵌入式诊断机制可与安全功能的执行并行运行,有助于缩短过程安全时间(PST)。可在Nios处理器软件中内置自测试功能和合理性检查功能,作为硬件诊断措施的补充。
IEC 61508和ISO 26262标准的故障指标既有相似之处,也存在差异,因此需根据适用标准计算相应的故障指标。
需为每个模块单独考虑诊断措施,这些诊断措施可处于系统级、组件级或模块内部级。安全失效分数(SFF)需按模块分别达标,模块的定义可灵活选择:若具备覆盖整个FPGA的诊断措施,可将整个FPGA视为一个组件级模块;也可将FPGA内部的逻辑模块(如存储器控制器、处理器)定义为模块。
除MAX 10 FPGA外,也可选用Cyclone V片上系统(SoC)FPGA作为替代方案,该型号FPGA额外集成了ARM
Cortex-A9双核硬核处理器子系统(Hard Processor Subsystem)。Cortex-A9处理器可提供更强大的计算平台,结合FPGA逻辑可实现更先进的诊断功能,例如将Nios
II双核锁步(DCLS)配置为安全处理器,或实现看门狗、检查器等其他定制化底层硬件诊断措施。
05. 结论
1. 借助FMEDA工具,结合FPGA编译报告中的数据,可计算系统故障指标;
2. FMEDA工具能够预测添加诊断措施后系统故障指标的变化情况;
3. FPGA的灵活性使控制器架构可灵活调整以添加内部诊断措施,仅需少量外部诊断措施即可使系统达到SIL
2/ASIL B等级的故障指标要求。
|