新闻中心

EEPW首页>汽车电子>设计应用> 通过FPGA设计安全的高级辅助驾驶系统

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

作者: 时间:2016-10-29 来源:网络 收藏

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

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

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

高级图像处理

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

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

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

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

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

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

结论

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


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭