【工程师博客】万物皆无十全十美,但FPGA可能大有帮助

FPGA器件非常有用,通常与ADI公司的ADC或功率IC等器件一同纳入客户的设计中。FPGA可以实施微控制器及任何所需的胶连逻辑。在本博客中,我将讨论与功能安全和FPGA相关的一些问题。

首先,什么是FPGA?FPGA(现场可编程门阵列)是集成电路,但它并未采用专用的片内逻辑,而是由可重构逻辑和硬宏组成,包括ARM Cortex或A9系列等uC(一些uC也以HDL/软格式提供)。可重构逻辑通常采用逻辑块阵列的形式。FPGA制造商包括Xilinx、Altera(现已成为英特尔的一部分)、Lattice半导体和Microsemi。可重构意味着,使用FPGA可为你的硬件提供通常只存在于软件解决方案中的灵活性,包括快速更改你的“硬件”的能力,而如果使用分立IC,将需要数周或更久的时间,如果使用ASIC,将需要花费数月时间。但是,从安全的角度来看,这也意味着你会遇到一些令人头痛的软件问题。

FPGA的配置存储在片内闪存或EEPROM(针对一些FPGA)中,但是,较大的配置存储在片外闪存中,并在启动时加载到FPGA上的RAM。FPGA上的可重构逻辑通常使用HDL(硬件描述语言)确定,例如,与软件非常相似的Verilog或VHDL(我以后一定要写一篇博客,名叫“Verilog是软件吗?”)。

IEC 61508-2:2010附录F提供了有关在设计数字ASIC(表F.1)和FPGA(表F.2)时避免系统误差的指导。实际上,表F.1适用于FGPA芯片设计人员,例如Xilinx或Micro-semi的工程师,而表F.2适用于其客户,客户负责设计将在FPGA中实施的内容。

图1——IEC 61508-2:2010表F.2节选

两个表格提供类似的衡量措施列表,这些措施根据SIL分为HR或R。HR代表强烈推荐,R代表推荐。不同的人对R或HR含义的理解似乎也不一样,但对我而言,如果某个问题标记为“R”,则你应该提供为何不实施该措施的简短说明,如果某个问题标记为“HR”,则需要提供更加详细的原因,说明你为何不采纳撰写标准的专家的建议。一些项目实际标记为“HR*”,这可以理解为没有原因,只管去做吧(我们将忽略这是资料性附录,不应包含任何“应该”陈述的事实)。“R”、“HR”等下方的参考代表该技巧的实施工作量,但在这一点上,关于低或高工作量具体是指什么,标准没有明确指导。

FPGA实施的设计流程由以下步骤组成

  • 用HDL创建所需电路的描述(也可以是基于模型的输入)
  • 选择具备足够可重构逻辑的目标FPGA来处理你的HDL
  • 使用软件工具将行为代码合成到FPGA中可用的可重构资源上
  • 使用软件工具生成可加载到FPGA中的上述配置的位流表示形式

下面我想要介绍在安全应用领域,我认为FPGA使用方面存在的最大问题,也就是“软错误”。

之前的“安全至关重要”博客已经介绍过软错误。这些错误由封装材料中存在的α粒子或源于太空的中子引起,会导致RAM单元和FF中存储的值改变状态。虽然ASIC和FPGA可能包含存在类似软错误问题的RAM,但FPGA的问题在于,当可编程逻辑的配置存储在RAM单元中时,单位翻转便会有效地改变硬件。对于硬连线ASIC,逻辑功能冻结,不受α粒子和中子的影响,但对FPGA而言,这是真实存在的问题。如果软错误率为1000 FIT/兆位(参见IEC 61508-7:2010),那么带有100万个配置位的FPGA的软FIT将为1000。

两年前,我在阿尔伯克基参加了一场雷神公司FPGA研讨会,会上提出的指导引述了NASA和美国空军的要求,称由于SEU(单粒子翻转),在可靠性计算中,对于成熟稳定的部件,应使用1e-4/h的故障率,对于不稳定部件,应使用1e-2/h的故障率,甚至有一些组织假设故障率为1!我曾见过有公司为软件强制执行相同的故障率假设(它采用的是医疗标准)。

我注意到,IEC 62380:2004允许计算FPGA的硬性FIT,即使这样,与uC和DSP的3.4e-6相比,每个晶体管的20e-5/h的λ1值也相对较高。

在安全领域,FPGA的其他问题包括:

  • 过时——FPGA通常利用创新的技术设计而成,可能会过时——要实现ASIC在65nm的性能,考虑到可重构逻辑伴随产生的开销,你可能需要拥有一个在20nm设计的FPGA
  • 上电顺序和EMC引起的单位和多位翻转
  • 如何实施片内硬件容错(参见IEC 61508-2:2010中的第13条)
  • 实现高数字故障覆盖率。表F.1要求数字ASIC的故障覆盖率在98.5%以上,但对编程后的FPGA没有最低要求
  • IEC TS 61508-3-1:2016的相关性
  • 与实施类似功能的ASIC相比,FPGA很可能比较昂贵
  • FPGA用户在实施HDL代码时需要承担额外的责任,HDL编码可能不是公司的核心竞争力所在
  • 与专用工业或汽车IC相比,温度范围有限
  • 功率相对较高(如果没有其他影响,至少会导致可靠性降低)
  • 与基于串行接口的逻辑可编程性有关的网络安全问题

“万物皆无十全十美是宇宙的基本规则之一。完美根本不存在……而如果没有不完美,我们都不会存在。” - 斯蒂芬·霍金

尽管存在上述问题,但FPGA的灵活性(尤其是对于快速原型制作和快速上市)、一个硬件解决方案可以针对多个终端应用进行定制,无需重新设计PCB,这个事实和与几乎所有器件相连接的能力使之变得真正有用。尤其对于低容量和概念验证设计而言,更是如此。例如,要想找到一个带有MIPI接口的出色工业处理器并非易事,但对于FPGA,你只需用HDL实施胶连逻辑即可。

有关使用FPGA以实施安全功能的更多信息,请参见

  • FPGA入门——Altera提供的免费在线“书籍”
  • IEC 62256-2:2017——核电站 - 事关安全的仪器仪表和控制系统 - 执行B和C类功能的系统的HDL编程集成电路的开发
  • IEC 62256-1:2012——核电站 - 事关安全的仪器仪表和控制系统 - 执行A类功能的系统的HDL编程集成电路的开发
  • NT技术报告——使用硬件描述语言的安全关键功能的设计与安全验证准则


违禁词
[edited by: ternence at 4:17 AM (GMT 0) on 19 Aug 2019]