现在,基于雷达和摄像头的应用正广泛被用于实现更安全的驾驶。诸如自动巡航控制和道路偏离警示等先进驾驶辅助系统(ADAS)应用,一开始都还只是非常便利的特性,而今已在汽车的控制上扮演着非常积极主动的角色,支持一些像车道维持辅助(LKA)等功能。以往的高性能CPU被认为是最适合这些应用的组件,但在权衡运算性能与低功耗后,工程师开始考虑采用FPGA组件。
ADAS必须符合特殊的功能安全要求。2011年发布针对载重3.5吨以下客车的ISO26262标准,其目的在于降低因系统故障导致危险情况的风险。这项标准采用严密的设计过程,并在应用执行过程检测随机的硬件故障,以减少系统性故障。
应用开发人员定义了特定的安全目标,并针对每项目标分配相应的汽车安全完整性层级(ASIL)。应用中最高层级的ASIL通常定义每个组件至停产(EOL)以前所需遵循的开发与作业要求。图1显示从客户需求角度来看ADAS目前应该符合的ASIL范围。
图1:汽车ADAS应用的ASIL市场需求范围
ASIL-B是市场上的最低层级,有些应用必须采用ASIL-D以上层级才能支持特定功能。越来越多的ASIL有更严格的要求。同样地,在某些特定建置中,在组件或系统上产生的ASIL也可能带来不必要的复杂度,影响了开发的成本和进度。因此,进一步分析这些系统概念,推出安全的概念和要求后,可以把应用 分成几种不同的步骤,使其分别具有不同的ASIL,同时也使其更易于实现有效地安装作业。
例如,前端摄像头应用利用了ADAS中常见的单一影像传感器。图2显示系统的高层级处理架构图。
图2:单个前端摄像头ADAS的高层级处理
影像传感器连接至图像处理器,如Altera Cyclone V SoC。信号处理链和数据流被分成四个部份。首先,透过将影像转换成更实用的表现形式,在像素级执行底层处理。然后,在线性或块状影像上执行中层级处理,利用相应的算法提取边缘等特征。接下来执行高层级处理,在视频帧基础上提取数据,用于侦测与分类对象。最后系统必须追踪对象,如果需要采取措施时,则与刹车或转向电子控制单元(ECU)进行通讯。
底层和中层级处理可在FPGA上有效地进行,但是用户也可以在用于 Cyclone V SoC硬处理器系统(HPS)的Cortex-A9处理器等CPU上实现某些中层级处理。高层级处理主要在于句柄,可映像到HPS中的一个或两个 Cortex-A9。该处理链的最后步骤在于对象追踪与决策,可在外部微控制器上完成这一步。
在整个处理过程中,每一步骤都在于简化输入数据组以取得更有意义的数据,而随着数据减少意味着提高了安全阈值。因此,底层构建可被分成质量管理(QM)或者底层ASIL(如ASIL- A)。原因在于单一像素期间出现的故障对后续算法性能的影响很小或可被忽略。在此例中,假设中层级处理符合ASIL-A或ASIL-B,辨识目标并进行分类的高层级处理功能应符合ASIL-B。对对象进行分类后产生目标列表,并提供给微控制器进行对象追踪和决策。这是信号链最关键的部分,应该符合对汽车的行为有直接影响的ASIL-D要求。
在这类应用中,最好能对数据流进行更全面的分析,每一级的安全临界定义对整个系统的性能会产生直接影响。对运算级的较早部份投入太高的安全要求,由于对系统整体安全的影响很小,因而可能难以满足系统性能目标。但是,处理链底层也会出现故障,对系统安全功能产生较大的影响。例如,底层处理功能的永久故障导致高层数据永久损害,但是,合理的检查很容易检测到这类故障,而且也不至于对于系统性能造成什么影响。
图3:单前端摄像机系统实例
图3显示单前端摄像头系统实例的高层级结构。由一个外部电源管理电路为Cyclone V SoC供电。当供电电压不在额定工作范围时,单独的电压监控功能会产生重设。外部内存连接至四路串行外围接口(quad SPI)模块,在系统启动过程中加载应用程序,在配置FPGA时会使用这些模块。
在执行应用程序代码以及储存数据和视频帧时,则可使用DDR内存。通过SPI连接外部微控制器,进行对象检测和最终决策,再通过CAN接口与汽车基础架构的其他部份进行通讯。
图4:Cyclone V SoC模块视图
在应用中所使用的图像处理器模块如图4所示。视频端口接收来自影像传感器的数据,并将其传送至影像预处理模块。这一模块显示底层的图像处理阶段。在此例中,数据通过影像预处理模块后,经由FPGA至HPS (F2H)网桥写入DDR内存,也可被传送至下一级,实现更高效率处理。第二级的中层级处理由各种图像处理模块完成。透过HPS至FPGA (H2F)网桥读取原先储存在DDR内存中的数据,再次将其写入DDR内存中。在此例中,由HPS完成高层级的处理。
现在,让我们了解一下可用于检测设计中不同区域是否出现故障的诊断功能。其中有些诊断功能能够检测到永久故障,有的只能探测到瞬时故障,或者可侦测各种故障。瞬时故障是一种出现后又消失的故障。对于这一分析,应该考虑实现某些功能时内存中出现的故障,以及实现功能时逻辑中可能出现的故障。
在应用软件使用影像传感器之前,必须对其进行配置,而在应用程序执行过程中也应该持续修改配置以适应不同的光照条件。影像传感器对于应用作业至关重要,因此,建议在容错时间间隔(FTTI)期间对其配置至少进行一次检查。这并不一定能够涵盖传感器中所有可能的故障,但能管理好配置缓存器组(如表1)。
表1:影像传感器配置诊断功能整理
汽车中使用的某些传感器支持用户在每一帧的辅助扫描线中传送一些配置缓存器数据。透过这一功能,用户可以检查每一帧的传感器设置,不需要通过I2C接口来读取缓存器。传送帧资料时就可以在FPGA中实现这种检查,而不需要在CPU上花费财力。
通过底层图像处理,一个像素的变化并不至于对实际应用的行为产生很大的影响,因此,在很多情况下,可以忽略这类故障。但是,有时故障会导致帧遗失或者整个帧损坏的故障,这必须能够有效的检测到。
大部份的影像传感器包含传送有效定义测试帧的功能,而不需要传送正常的影像数据。定义好输入数据后,也就定义了图像处理模块的输出数据。然后进行后续测试。例如,通过对输出数据进行循环冗余校验(CRC),能够发现系统中出现的任何永久故障。这种测试可涵盖完整数据路径中的永久故障。
另外,还应该探测FPGA中一个模块向另一个模块进行传输时的数据变化。前述的测试模式或测试帧方法可涵盖大部份的永久故障,但检测不到瞬时故障。必须通过各种传输或信息冗余技术才能检测到这类故障。
中层级图像处理实现了边缘或者角度检测算法,还可以应用特征提取算法。因此,只查看影像中关注的特征,使其所产生的数据减少。数据减少后,由于故障导致后续更高层级的处理步骤失去目标,因而使遗失特征的风险增加了。
高层级图像处理阶段包括对象检测和目标分类。从软件术语的角度来讲,这一级主要涉及句柄,因而非常适合在CPU上执行。HPS采用了几种硬件功能(例如,ECC、MMU、定时器),在HPS中进行故障诊断。
功能安全重要的另一面是确保减少系统性故障。这通过使用可靠的开发过程和工具来实现。ISO26262标准详细规定了功能安全的管理要求,例如,对安全生命周期和支持过程中不同的行为进行一致性测量,类似配置和修改管理。如果所使用的工具可能造成应用故障,那么应该分析这些工具,进行测量以减小故障发生的概率。
ADAS是确保越来越拥挤的道路更加安全的下一波创新。这些系统的性能是现有以及未来的可用商品的挑战,而FPGA在这方面有很大的优势。实现专用诊断能够扩大系统的诊断覆盖。很多产品在设计时并没有体现功能安全,而通过使用具有功能安全的平台和开发环境,与擅长功能安全的合作伙伴合作,这些都有利于系统的整体实现。