首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

通过FPGA设计安全的高级辅助驾驶系统

通过FPGA设计安全的高级辅助驾驶系统

关键字:辅助驾驶系统   车辆控制   图像处理   FPGA  
随着道路上汽车数量的增加,我们需要更多的技术来进一步减少交通事故。过去几年,基于雷达和摄像机的新系统功能的出现使驾驶更加安全。很多高级辅助驾驶系统(ADAS)应用,如自动巡航控制、道路偏离报警、交通信号标志识别等,已经成为车辆上非常方便的功能,但对车辆行为没有影响或影响很小。然而,现在这些技术开始在车辆控制中扮演积极主动的角色,如车道辅助保持(LKA)或自动紧急刹车(AEB)等,以帮助实现减少交通事故的既定目标。这带来的挑战是,当系统出现故障时,必须确保系统不会对车辆和环境造成更大的损害。
本文以单前端摄像机系统为例,对其进行深入分析,介绍它如何通过使用Altera Cyclone V SoC确定关键数据流。在现有的诊断机制下,如何找到故障;并提供一些诊断实例,通过灵活的可编程FPGA,在系统级实现诊断。与使用通用微处理器、数字信号处理(DSP)和其他平台相比,在某些情况下,针对实际应用使用定制诊断方法可以提高应用性能。

ADAS应用中的FPGA

上文提到的很多应用都有相对较高的计算需求,需要从雷达或视频图像中提取特征信号,确定目标及其踪迹。这通常要求高性能多核CPU体系结构。这些CPU能够灵活地对特殊事件重新编程,但缺点是效率较低,因为有些功能并非必需或很少使用。

功耗是需重点关注的另一因素。很多系统位于后视镜前面的挡风玻璃下面,直接暴露在阳光下,或位于散热器前保险杠中,因此无法高效地散热。当使用高频运行的多核通用CPU体系结构时,很难满足性能和功耗要求。使用FPGA可同时解决这些问题。FPGA的功耗通常比标准逻辑高,但与通用计算体系结构相比,高效的定制实现某一算法实际上降低了功耗。FPGA的另一优点是,当实现流处理算法后,可以避免在内部和外部存储器之间传送数据。若使用外部DDR存储器进行数据处理,实际功耗会非常大。

就性能而言,流处理也降低了某些应用中遇到外部存储器带宽问题的风险。FPGA内在的可编程特性带来了通用计算体系结构所具有的某些优势。它甚至支持系列产品的在现场更新,实现在系统编程。在某些情况下,基于FPGA开发,要比基于CPU的高性能芯片体系结构容易得多。由于SoC越来越多,因此,FPGA能够很好地结合这两种体系结构,例如Altera Cyclone V SoC系列,它在一个芯片上集成了通用CPU系统和FPGA架构。Cyclone V SoC实现了两个ARM Cortex—A9 CPU,支持通用微控制器和处理器常用的很多外设。

性能安全

与目前市场上的其他解决方案相比,FPGA更加容易满足应用的功能安全需求。ADAS需要满足特殊的功能安全要求。2011年,发布了载重3.5吨以上的ISO26262标准,以降低系统出现故障后造成危险状态的风险。这一标准要求实现严密的设计过程,在应用执行过程中探测随机硬件故障,以减少系统性故障。它涉及到一个系统及多个系统的分析和开发,列出了系统中使用的每一硬件组件的指南(包括这些硬件组件上运行的软件),设定了产品整个安全生命周期中的要求。

应用开发人员定义了专门的安全目标,针对每一目标分配了相应的汽车安全完整性等级(ASIL)。对于应用中最高级别的ASIL,通常定义了每一组件从开发直至工作到寿命终了时应满足的要求。图1显示了ASlL目前的范围,来自ADAS需要遵守的客户需求。



图1 ADAS ASlL市场需求


ASIL-B是市场上的最低级别,而某些应用则要求采用ASIL-D以支持某些功能。越来越多的ASIL有更严格的要求。在某些具体实现中,组件的通用ASIL或者条目(系统)等级都会带来不必要的复杂度,对开发成本和进度有影响。建议应详细地了解应用需求。这一般通过分析系统概念,并从中得出安全概念和要求来实现。还可以把应用分成几种不同的步骤,具有不同的ASIL,更容易实现,效率更高。中间级图像处理

只查看图像中关注的特征,减少了生成数据。数据减少后,由于故障会导致后续处理步骤中丢失目标,因此,丢失特征的风险增大了,也增大了应用程序出现错误的风险。图8显示了中间级图像处理涉及的模块。




图8 中间级图像处理涉及的模块




需要读回前面图像预处理级产生的数据以及存储在外部DDR存储器中的数据,以便进行各种图像处理。由于前面的数据附加了CRC校验和,因此,可以再次对其进行检查,查看数据存储在外部存储器期间是否被修改,或者传送至FPGA时是否被修改。

最好在这一处理级实现一些存储器缓冲,以便临时存储数据。可以再次针对这些存储器例化奇偶校验或SECDED ECC,实现相对较高的诊断覆盖。

探测逻辑本身的故障吋,可以把两个相同的逻辑模块放到一起,锁定它们。为能够对常见的故障进行探测,可以针对它们使用不同的时钟网络,或者运行一个具有两周期时钟延时的逻辑模块。对两个模块的输出进行连续对比,能够探测到一个模块中出现的故障。

在这一中间处理级产生了新数据后,需要再次写入外部DDR存储器。与前面的步骤相同,可以对新数据计算校验和,将这一校验和写入到存储器中。DDR存储器控制器中的存储器保护功能会探测地址故障,避免覆写其他关键的应用数据。

高级图像处理

高级图像处理阶段包括目标探测和目标分类。从软件术语的角度来讲,这一级主要是控制代码,因此,非常适合在CPU上运行。在我们的应用实例中,可以在HPS中开发这类功能。图9显示了高级图像处理涉及到的模块。

虽然实现了两个CPU,但是并没有运行在锁定模式下,即在程序执行过程中,一个CPU进行检查,另一个自动探测故障。如果一个执行安全关键代码或者数据的CPU出现了故障,那么,应用程序应保证对计算结果进行检查。这可以通过在相同的CPU或者另一个CPU上冗余执行代码来完成。如果一个CPU出现了永久故障,在一个CPU上相同的代码执行了两遍,那么,CPU中的故障可能会产生两次错误的结果,从而不会被探测到。可以通过实现两种不同的程序来避免这一问题,但是,其缺点是增加了开发工作量,针对同一程序开发两种不同的版本。另一种选择是在第二个CPU上运行冗余计算。一个CPU中的永久故障不会影响另一个CPU,因此,只要故障不是在共享资源中,那么,不需要运行不同的软件就能够探测到错误执行。运行算法两次,然后对比结果,也可以探测到瞬时故障。对于软件在两个CPU上执行的情况,很有可能相同的代码并没有在两个CPU的同一周期中执行,因此,进行计算然后对比冗余执行的输出即可发现故障。在不同的时间执行代码的优点是能够有效地测出常见的故障。



图9 高级图像处理涉及到的模块


正如前面所提到的,由SECDED ECC或者奇偶校验功能来保护处理过程所涉及到的存储器。

而在L3互联、DDR存储器控制器、片内RAM控制器的其他逻辑中还可能会出现故障。对于较大的数据,可以采用CRC校验和来保护数据不会被修改。为中间级处理模块生成的数据建立了校验和后,可以在用于后面的操作之前对其进行检查。对于较小的数据,存储这些数据,读回就可以确定传输是否正确。对于读取用于处理的数据,可以读两遍,在使用之前进行对比。当数据规模有限时这不会产生太大的处理开销,但是能够很好地测出故障。

用于探测故障的其他特性包括每一Cortex-A9处理器中的存储器管理单元(MMU)、DDR存储器控制器中的存储器保护特性,以及看门狗定时器。

结论

ADAS是确保越来越拥挤的道路更加安全的下一波创新。这些系统的性能需求给现有以及未来的标准商用货架(COTS)产品带来了挑战,而可编程FPGA在这方面有很大的优势。实现定制码型发生器或者定制看门狗定时器等专用诊断功能,能够提高对系统的诊断覆盖范围,而这些功能很难在标准产品上实现。流处理是图像处理的第一步,减少了存储器读写操作,因此,能够减少故障的发生,降低功耗,提高应用性能。很多COTS产品在设计时并没有体现功能安全,使用具有功能安全的平台和开发环境,与擅长功能安全的合作伙伴合作,都有利于系统的整体实现。
返回列表