新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于FPGA的汽车ECU设计

基于FPGA的汽车ECU设计

作者: 时间:2013-05-31 来源:网络 收藏
作为这种方案的替代,我们提出了一种基于可编程逻辑的设计。这种设计只采用一个单核处理器来发挥工机CPU的作用,但配有更智能的外设、协处理器乃至从处理器。所有这些计算单元都可以在FPGA架构中例化为新的软核处理器,比如赛灵思PicoBlaze和MicroBlaze,从FPGA的专用RAM模块运行自己的代码(各个软核处理器均分别配有专用程序存储器),此外,也可例化为定制的硬件加速器。两种方式的拓扑架构均由一个主机CPU和分担部分CPU任务的智能外设构成,从而可降低系统复杂性。这样,主机CPU负责管理软件中的整个应用层,而定制外没则负责管理BSW层,这两者以并行的方式彼此独立地自动运行。此外,这种外设设计的方法的优点还在于能够让主机CPU的软件执行更加线性化,即外设不会通过中断服务程序产生过多的请求CPU关注的中断。图3显示了这种系统的方框图及其对应为FPGA器件中综合的功能单元的组件细分情况。


图3 在FPGA中部署的汽车ECU方框图

FPGA方法能够实现与多处理器平台相媲美的系统性能,且和单核处理器一样简单易用,这主要归功于采用了可与主机处理器并行处理的功能强大的、自动化定制协处理器。

这种方法能够实现与多处理器平台相媲美的系统性能,而且就软件开发和维护而言,和单核处理器一样简单易行。通过使用专用硬件构建可与主机处理器并行处理的功能更强大的自动化定制协处理器,就可实现这种最佳平衡。

从概念上来说,可以通过将这些系统架构用RTE接口划分为顶层和底层两个彼此独立的主要层次来要简化设计。顶层相当于AUTOSAR的应用层,由负责管理车辆中最终用户功能的软件组件构成。而底层则由硬件和基础软件乃至RTE链路构成。应用层从数值上来说,可代表约90%的车载高级功能,而且所有RTE以上的源代码都可重复利用。

同时,底层包含能够赋予顶层灵活性和多用性的全部功能。底层可完成特定硬件平台上所有可重用功能的定制化。这样,顶层从本质上说是通过以有限状态机(FSM)形态实现的算法来实现对某些车辆负载、传感器和制动器的控制的一套软件功能。这些算法由CPU循环执行,并在操作系统控制的软件任务中调度。

底层还负责实现CPU连接的所有标准外设的驱动程序,例如A/D转换器、PWM控制器、定时器或者存储器控制器,从而让顶层的抽象具备可行性。底层负责管理那些需要得到实时响应的事件。在这方面可编程逻辑能够起到一定的作用。其构想为:让主机CPU将应用当作一个简单的免受通常硬件造成的外部事件影响的软件功能序列来处理,但要定期读或写RTE信号,让FSM进行相应的调整。底层对硬件事件进行隐藏与管理,然后在RTE中对其进行预处理并更新特定信号,或作为结果,根据自身具体任务安排实时地执行特定的行动。

将定制硬件控制器连接至系统CPU可以最大限度地降低对共享资源的需求,只要这些控制器能够自动运行。从操作系统的角度来看,这样做有助于降低系统的复杂性(避免仲裁、时延、重试机制等)。

采用专用硬件的另一项优势在于可以更简便地实现——般在软件中通过多线程才能实现的某些功能,因为硬件较软件内在更具并行性。另外,这种灵活的硬件能够采用并行和流水线硬件设计,将算法计算强度高的部分进行硬连接,而不是采用冯.诺伊曼(Von Neumann)计算机所采用的序列软件方法,从而减少执行时间。

用户可以将在MCU和BSW层中综合的外设和硬件协处理器设置成高智能化水平,以释放CPU时间,从而简化车载ECU的软件。

随着ECU平台日趋复杂化,系统所需的I/O线路数也在不断增加。在这方面FPGA较微控制器有明显的优势,因为FPGA一般能够提供多得多的用户引脚数。这一点一般与基于MCU的ECU有关,因为这种ECU需要采用执行并—串数据转换的外部芯片(比如数字移位寄存器或模拟多路复用器)来扩展ECU的输入和输出。采用FPGA可以绕开这些外部组件,进而缩减材料清单成本以及电子开发板的PCB尺寸。

先进的FPGA器件已经集成有模数转换器。这个特性对汽车设计意义重大,因为许多ECU使用模拟信号(比如电池电压)来实现所需的部分功能。在可编程逻辑器件中集成模数转换器为FPGA开辟了新的应用领域。

与MCU类似,FPGA也提供远程更新功能。但在这里需要提醒的是,下载到FPGA巾的位流不仅涉及到软件代码,而且与硬件电路也息息相关。这意味着就算产品已经进入量产阶段,仍然可以通过系统更新或升级来修改硬件设计。汽车产业非常欣赏这种灵活性,因为它能够在产品发布后修改缺陷(软/硬件均可)。

在任何嵌入有符合ISO 26262安全相关要求的功能的ECU中,涉及该实现方案的软硬件必须根据其分类满足一定程度的保护要求。从软件的角度讲,它必须体现出抗干扰能力,即运行在ECU中的非安全相关代码一定不能危及同一ECU中安全相关类的代码的运行。这种隔离是保证安全相关功能与非安全相关功能在同一处理器上正确并行运行所必须的。一般来说,在可编程逻辑中管理这些指标比在MCU中具有更大的灵活性。

对于面向功能安全的存储器保护策略,有必要确保只能授权的安全软件组件有权对特定安全相关信号进行写入存取。在MCU器件环境中,存储器分区提供了一种故障约束机制,能够将软件应用彼此分离,避免其间发生数据错误。可编程逻辑很有可能实现一种更有效的自我保护机制。可编程逻辑可以通过专用的单个双端口存储器来管理与安全信号相关的RTE缓存,这样数据从写端口写入,从读端口读取。采用这种方法,可以采用专用的硬件控制器给写入或读取这些来自软件侧的信号设置不同的约束条件。这种方法也可以采用寄存器业实现。

能够在ECU系统中导入定制硬件解决方案是FPGA的一大优势,特别是对安全相关的功能而言。具体而言,对I/O引脚和GPIO控制器,在安全功能中涉及的引脚布局可以组合成定制的I/O端口,仅供ECU中的安全组件访问,与器件的其余引脚分离。这是将系统的安全相关引脚与非安全相关引脚分开的理想办法,从设计上避免了干扰的发生。任何对非安全引脚的访问都不会破坏安全引脚的状态,因为安全引脚只受安全相关代码的管理。这种构思的具体描述见图4。


图4 软/硬件联合设计的安全架构,可将安全相关端口和非安全相关端口隔离开来,以保证无干扰

另外,还能够根据应用或处理该应用的软件组件的需求定制每个GPIO端口的大小,从而避免将GPIO端口转换为不同应用共享的物理资源,如MCU端口的情况。用这种方法,FPGA中每一个由不同软件组件(比如车窗升降器、雨刷、外后视镜等)管理的应用都能够将自己特定的端㈠映射到系统存储映射中特定的寄存器。这在MCU平台上无法做到,因为MCU的端门有固定尺寸(一般为8、16或32位宽)且按字长寻址,而非按位寻址。因此在采用MCU的情况下,这种控制寄存器在程序执行的时候变成了有多个SWC访问的共享资源。

我们可以把用于GPIO控制器的策略扩展用于其它标准外设。这样AUTOSAR借助SWC概念在顶层提倡的功能分区和隔离思路也可以在可编程硬件的帮助下推广运用到较低层的资源上。这种技术如果采用基于标准MCU器件的静态硬件解决方案是无法实现的。

我们上文介绍的用于MCU标准外设的隔离策略也可以用于安全功能的各个通道或数据路径。这一特性尤其适用于按ISO 26262标准的ASIL分级组织的精细分类安全目标(见侧边栏)。此项功能可用于将各个通道或者数据路径分解成较低ASIL级别的冗余分区,这样每一个通道或路径都以冗余方式运行,后续根据各自的新级别予以实现。这种基于冗余的安全策略是选择可编程逻辑的又一理由,因为可编程逻辑能够在同一器件中多次例化多个相同、独立的处理引擎。另外,满足某个ASIL级别的要求用架构方法(硬件)往往比用抽象软件能够更轻松明晰地证明,特别是像抗干扰这样的功能。C编程语言中的栈溢出或是数据指针处理不当可能会给系统带来出乎意料的安全性问题。

这种基于冗余的安全策略是选择可编程逻辑的又一理由,因为可编程逻辑能够在同一器件中多次例化多个相同、独立的处理引擎。

可编程逻辑的灵活性及其对功能安全的适用性还带来另一项设计优势,就是可以采用三模冗余(TMR)策略。这是航空航天应用中用于缓解单粒子翻转(SEU)风险的常见方法。这种缓解方案由三个相同逻辑电路构成,并行执行相同的任务,对应的输出由一个多数表决电路进行比较。采用硬件实现这种策略效率很高。



评论


技术专区

关闭