改搭可编程FPGA SoC ADAS系统性故障锐减
扫描二维码
随时随地手机看文章
基于雷达(RADAR)和摄影机设计的应用正大举进驻汽车驾驶安全领域。最初,自适应巡航控制和道路偏离警报等先进驾驶辅助系统(ADAS)只是一些非常便利的功能,而现在,它们在车辆控制上扮演更积极主动的角色,支持实现车道维持辅助(LKA)等功能。以前的高性能中央处理器(CPU)被认为是最适合这些应用的组件,但车厂须要综合考虑运算性能和低功率消耗,这促使工程师转向采用现场可编程门阵列(FPGA)组件。
ADAS须要满足特殊的功能安全要求。在2011年,ISO发布针对载重3.5吨以下客车的ISO26262标准,以降低系统出现故障后造成危险的风险。这个标准要求采用严密的设计过程,在应用执行过程中探测随机硬件故障,以减少系统性故障。
提升ADAS功能安全 FPGA SoC受青睐
应用开发人员定义了专门的安全目标,针对每个目标分配相应的汽车安全完整性等级(ASIL)。对于应用中最高级别的ASIL-D,通常定义了每一个组件从开发直至运作到寿命终了时应满足的要求。图1显示了从客户需求角度来看,ADAS应符合的ASIL目前的范围。
图1 ADAS所需ASIL规范等级
ASIL-B是市场上的最低级别,而某些应用则要求采用ASIL-D,以支持某些功能。越来越多的ADAS应用对ASIL有更严格的要求。在某些具体实现中,组件的通用ASIL或者项目(系统)等级都会带来不必要的复杂度,影响开发成本和进度。分析系统概念,得出安全概念和要求后,还可以把应用分成几种不同的步骤,具有不同的ASIL,如此一来,系统设计则可更容易实现,而且实现的效率更高。
例如,前方摄影机应用使用ADAS中常见的一个影像传感器,如图2显示的高阶结构图。一个影像传感器连接至图像处理器,该处理器可以是Altera Cyclone FPGA系统单芯片(SoC)或其他方案。讯号处理链路和数据流被分成四个部分。首先,透过把影像变换成更实用的表现方式,在像素层级上进行底层处理。然后,对影像或者区块图像进行中间层级处理,使用相应的算法,提取出边缘等特征。下一步,则会进行高阶处理,提取出每一个图帧的数据,探测目标并进行分类。然后,系统会追踪目标,如果需要采取措施,则与煞车或者转向引擎控制单元(ECU)进行通讯。
图2 高阶单一前方摄影机ADAS
除了能够在FPGA上非常高效率的实现底层和中间层级处理,用户也可以在Cyclone V系列FPGA SoC硬式核心处理器系统(HPS)的Cortex-A9等处理核心实现某些中间层级处理。高阶处理主要是句柄,可以映像到HPS中的一个或者两个Cortex-A9上。处理链路的最后一步是目标追踪和判断,可以在外部微控制器(MCU)上完成这一个步骤。
在整个处理过程中,工程师可将输入数据进行简化,以得到更有意义的数据,数据减少意味提高安全临界值。因此,底层实现可以分成质量管理(QM)或底层ASIL(例如ASIL-A)。会这样做的原因是因为单一个像素期间出现的故障对后续算法的性能影响很小,因此可以忽略。在这个例子中,假设中间层级处理符合ASIL-A或ASIL-B,识别目标并进行分类的高阶处理功能应符合ASIL-B。对目标进行分类后,会产生目标表,并提供给微控制器,进行目标追踪和判断。这是讯号链路最关键的部分,我们认为它应该符合ASIL-D,这对汽车的行为有直接影响。
实现分级安全处理 FPGA兼顾设计可靠度/效率
在这类应用中,最好对数据流进行更全面的分析,每一个层级的安全临界定义对整个系统的性能会产生直接影响。对前面运算层级有太高的安全要求会导致难以满足系统性能目标,而且对系统整体安全的影响很小。不过,处理链路底层也会出现故障,对系统安全功能产生较大的影响,例如,底层处理功能的永久故障会导致高层上的数据永久损害,透过合理性检查很容易探测到这类故障,对系统性能的影响相对较小。
图3显示单一前方摄像机系统实例的高阶结构图。由一个外部电源管理电路为Cyclone V SoC提供电源,当供电电压不在额定运作范围内时,单独的电压监控功能会产生重置,外部非挥发性内存连接至四路串行周边接口(Quad SPI)模块,系统启动过程中加载应用程序,配置FPGA时会使用这些模块。我们使用双倍数据率(DDR)内存来执行应用程序代码、储存数据和影像图帧,透过SPI连接外部微控制器,进行目标探测和最终判断,并利用控制器局域网络(CAN)接口与汽车底盘的其他部分进行通讯。
图3 单一前方摄影机系统实例
此应用所使用的图像处理器模块如图4所示。视讯端口接收来自影像传感器的数据,将其传送至图像处理模块,这一个模块相当于底层图像处理层级,在这个例子中,数据透过图像处理模块后,通过FPGA至HPS(F2H)桥接被写入到DDR内存中,也可以传送至下一层级,实现的效率更高。第二级是中间层级处理,由各种图像处理模块来完成,透过HPS至FPGA(H2F)桥接读出以前储存在DDR内存中的数据,再次将其写入到DDR内存中。在这个例子中,由HPS完成高阶处理层级。
图4 Cyclone V SoC电路架构图
发挥可编程效益 FPGA全方位探测系统故障
接下来的段落将说明用于探测设计中,不同区域是否有故障的诊断功能。一些诊断功能能够探测到永久故障,而有的只能探测到暂时性故障,也有的能探测各种故障。暂时性故障是一种出现后又消失的故障,对于这一类情形,设计人员应考虑实现某些功能时内存中出现的故障,以及实现功能时逻辑中可能出现的故障。
在应用软件使用影像传感器之前,工程师应对其进行配置,在应用程序执行过程中不断修改配置以适应不同的光线条件。影像传感器对于应用操作非常关键,因此,建议在容错时间间隔(FTTI)期间对其配置至少进行一次检查,这并不一定能覆盖传感器所有可能的故障,但可以管理好配置缓存器组(表1)。[!--empirenews.page--]
表1
汽车使用的某些传感器支持在每个图帧辅助扫描线中,传送某些配置缓存器数据。透过此功能,用户可以检查每一个图帧的传感器设置,不须要透过I2C接口来读取缓存器,也不须要CPU进行运算,传送图帧数据时就能在FPGA中实现这种检查。
透过底层图像处理,一个像素的变化不太可能对实际应用的行为产生很大的影响,因此在大多数情况下,设计人员可以忽略这类故障,但是仍应检查会导致图帧丢失或者整个图帧被损坏的故障。
大部分影像传感器含有传送定义好的测试图帧的功能,不须要传送正常的影像数据,定义好输入数据后,也就定义了图像处理模块的输出数据,接着进行后续测试。例如透过对输出数据进行循环冗余校验码(CRC),可找到系统中出现的任何永久故障,这种测试覆盖整个数据传输链路中的永久故障。
此外,工程师还应该探测到FPGA中一个模块向另一个模块传输数据时数据的变化。前面段落提到的测试样板或测试图帧方法涵盖大部分永久故障,但探测不到暂时性故障,各种传输或者信息冗余技术则能够探测到这类故障。
中间层图像处理实现了边缘或角落探测算法,还可以应用特征提取算法,因此,只查看影像中关注的特征,减少产生的数据,数据减少后,故障会导致后续处理步骤中丢失目标,因此,丢失特征的风险就会增大。
高阶图像处理阶段包括目标探测和目标分类,从软件术语的角度来说,这一个层级主要是句柄,因此,非常适合在CPU上运行。HPS采用几种硬件功能,例如错误码修正(ECC)、内存管理单元(MMU)、看门狗,在HPS中进行故障诊断。
符合ISO26262规范 ADAS确保行车安全
功能安全重要的另一面是确保减少系统性故障,这可透过使用可靠的开发过程和工具来实现。ISO26262标准详细规定功能安全的管理要求,例如,对安全生命周期和支持过程中不同的行为进行一致性测量,像是配置和修改管理。如果使用工具有可能造成应用故障,就应该分析这些工具,进行测量以减低故障发生的机率。
ADAS是确保越来越拥挤的道路更加安全的下一波创新,这些系统的性能需求给现有和未来的标准商用现货(COTS)产品带来挑战,很多COTS产品在设计时并没有体现功能安全,而可程序化FPGA在这方面有很大的优势,实现专用诊断能扩大系统的诊断涵盖范围。因此,使用具有功能安全的平台和开发环境,与擅长功能安全的合作伙伴合作,都有利于系统的整体实现。