内容摘要:随着道路上汽车数量的增加,我们需要更多的技术来进一步减少交通事故。过去几年,基于雷达和摄像机的新系统功能的出现使驾驶更加安全。很多高级辅助驾驶系统(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需要遵守的客户需求。
ASIL-B是市场上的最低级别,而某些应用则要求采用ASIL-D以支持某些功能。越来越多的ASIL有更严格的要求。在某些具体实现中,组件的通用ASIL或者条目(系统)等级都会带来不必要的复杂度,对开发成本和进度有影响。建议应详细地了解应用需求。这一般通过分析系统概念,并从中得出安全概念和要求来实现。还可以把应用分成几种不同的步骤,具有不同的ASIL,更容易实现,效率更高。
ADAS单前端摄像机应用系统概念
本文举例的前端摄像机应用使用了ADAS中常见的一个图像传感器。图2显示了系统的整体框图。
一个图像传感器连接至图像处理器,即Altera Cyclone V SoC。信号处理链和数据流被分成4部分:
◆ 通过把图像变换成更实用的表示,在像素级上进行底层处理。
◆ 对行图像或者块图像进行中间级处理,使用相应的算法,例如Sobcl滤波器或者CANny边沿探测算法等,提取出边沿等特征。
◆ 进行高级处理,提取出每一帧的数据,探测目标并分类。
◆ 跟踪识别出的目标,决定在危险环境下是否需要采取措施,例如刹车或者换挡电子控制单元(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显示了单前端摄像机系统实例的总体结构图。由一个外部电源管理电路为Cyclone V SoC提供电源。当供电电压不在额定工作范围内时,单独的电压监控功能会产生复位。外部非易失存储器连接至四路串行外设(quad SPI)模块,用于系统启动过程中装入应用程序并配置FP GA。执行应用代码,存储数据和图像帧时,我们使用DDR存储器。通过SPI连接外部微控制器,进行目标探测和最终判决,通过CAN总线接口与汽车基础结构的其他部分进行通信。
图4显示了单前端摄像机应用中的图像处理器模块。由于具体实现各不相同,因此,并没有详细介绍FPGA的具体执行过程,但是对于在更高抽象级别上介绍不同分析步骤这样的目的来说已经足够了。
图像传感器配置
假设由HPS系统对传感器进行配置。图5显示了图像传感器配置涉及的模块。一个或者两个Cortex—A9CPU执行代码,数据通过I2C模块从DDR存储器传送至传感器。DDR存储器和L2高速缓存的单错误纠正双错误探测(SECDED)纠错码(ECC)功能保护相关的存储器。奇偶校验功能保护CPU的L1高速缓存。这包括TAGRAM,以及全局历史缓冲和分支预测单元的分支目标访问高速缓存。传感器配置相关的逻辑(CPU、L3互联、I2C等等)只能使用一次,没有特殊的诊断。要探测可能出现的故障时,可以采用写入和回读方法。例如,CPU0向传感器写入配置数据,CPU1将其回读。后续进行写入数据和回读数据对比,能够探测到写会话过程中引入故障。一个CPU写数据,另一个CPU读回数据,这样做的优点是能够探测到其中一个CPU中的永久故障。只有一个CPU用于写读会话时,可以采用各种软件来探测永久故障。但是,由于需要对CPU内部功能进行详细的分析,增加了软件的复杂度,因此,这实现起来难度很大。
汽车中使用的某些传感器支持在每一图像帧的辅助扫描线中传送某些配置寄存器数据。通过这一功能,可以检查每一帧的传感器设置,不需要通过I2C接口来读取寄存器。不需要CPU开销,传送帧数据时就可以在FPGA中实现这种检查。
上面所有的配置寄存器测试的优点是,不仅覆盖了Cyclone V SoC故障,而且还有传感器外部接口或者传感器内部带来的故障。某些应用会使用更复杂的处理器体系结构,在总线上进行内部诊断。但是内置诊断机制不一定覆盖I2C模块中的故障和外部故障,仍然需要考虑这些故障,采用与前面讨论的相似的机制。在这一场景中,增加的处理器诊断功能带来的优势有限。
底层图像处理
图6显示了图像处理级涉及到的模块。在很多情况下,图像传感器通过并行视频接口连接至图像处理器。对于Cyclone V SoC应用,可以例化Altcra视频和图像处理套装的视频端口,用于接收来自传感器的数据。然后,将这些数据传送至图像预处理模块。数据处理完成后,被写入到DDR存储器中。
本文关键字:暂无联系方式DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术
上一篇:采用SD卡存储配置数据的配置方案