得益于摩尔定律,汽车电气系统经历了快速的技术增长。现代化的汽车已获得长足发展,不再是耦合了 AM 无线电的简单发动机电气系统。如今现代化的汽车搭载了多种高级电子系统,能够执行发动机控制、高级驾驶员辅助系统 (ADAS)、牵引力与稳定性控制、信息娱乐等功能,此外还针对某些尖端应用提供了自主操作能力。
这种汽车内电子系统部署的显著增长也带来了几个必须由设计人员解决的挑战:
·性能–需要实时、低时延与高确定性的性能以实现例如 ADAS、ECU、牵引力与稳定性控制等多种车载功能。
·安全–汽车电子系统实现关键功能,故障会导致受伤或死亡。因此,系统必须实现信息安全保障与防篡改技术,以防止未授权的修改。
·安全性–必须符合 ISO26262规定的汽车安全完整性水平。
·接口–必须能够连接多种传感器、驱动器与其他制动器。
·功率效率–必须在有限的功耗预算内高效运行。
·软件定义–具备高灵活性以适应多种市场中的不同标准与条件。
为应对这些挑战,汽车电子系统开发人员正在部署片上异构系统 (SoC) 器件。异构器件将一个处理单元(通常为多核)与一个或多个异构协同处理器(例如 GPU、DSP 或可编程逻辑)相结合。
将处理单元与可编程逻辑相结合可构成紧密集成型系统,以便利用可编程逻辑的固有并行特性。该特性支持使用可编程逻辑 (PL) 实现高性能算法和接口连接,同时由处理系统实现更高级的决策制定、通信与系统管理功能。完成结合后,便可使可编程逻辑分担处理任务,从而创建更具响应性、确定性并且能效更高的解决方案。
就接口连接而言,异构 SoC 可支持多种业界标准接口,这些接口可通过处理系统或可编程逻辑实现。得益于 IO 结构的灵活性,可使用可编程逻辑实现关键的原有接口与定制接口。然而,这需要添加一个外部 PHY 来实现协议的物理层,从而提供任意连接。
某些异构 SoC 面向多个器件级与系统级安全功能提供支持,便于轻松实现。这些器件能够对启动和配置过程进行加密与验证。如果处理器内核是基于 ARM 处理器的,那么可使用 Trustzone 保证软件环境安全。有了 Trustzone,开发团队便可创建正交环境,通过使用程序管理器,对软件访问底层硬件进行限制。此外,这里也提供几个额外的设计选择,例如功能隔离,可以在设计中实现,以进一步加强取决于需求的安全解决方案。
传统的异构 SoC 开发流程把设计划分为处理器系统和可编程逻辑两大部分。这种方法在过去需要两个独立的开发团队,这会增加非重复性工程成本、开发时间与技术风险。此外,该方法还将设计功能固定在处理器内核或可编程逻辑中,使后期优化难以进行。
人们所需的开发工具应该可实现整个器件的软件定义开发,并有能力根据需要将功能从处理器内核转移到可编程逻辑,而且非 HDL 专家也能完成。
这正是系统优化编译器的用武之地。系统优化编译器能利用 C、C++或 OpenCL™等高级语言以软件方式定义整个系统行为。然后,使用系统优化编译器执行处理器系统与可编程逻辑之前的功能分区,该编译器能够使功能无缝移动,以便选择是在处理器系统中运行还是在可编程逻辑中实现。
图 1 - 使用系统优化编译器选择要加速的功能。
通过使用处理系统内部的内置定时器来为功能执行时间计时,可找出造成瓶颈的功能,从而创建瓶颈功能列表。这些瓶颈功能便成为候选,以备通过使用系统优化编译器在可编程逻辑中实现加速。
处理系统与可编程逻辑之间的移动是通过系统优化编译器的高层次综合(可将 C、C++、OpenCL 程序转换为 Verilog 或 VHDL 描述的工具)与软件定义连接框架之间的结合来实现的。软件定义连接框架能够无缝地将 HLS 结果连接至软件应用,设计团队使用这种方法,一键点击就能在处理器和可编程逻辑间移动功能。当然在用户把功能移动到可编程逻辑时,他们也得到了明显的性能提升,自然这是使用可编程逻辑的结果。与 CPU/GPU 解决方案相比,在 PL 中进行加速还能提高确定性并降低时延,这对诸如 ECU 和 ADAS 的应用来说是至关重要的。
图 2 - 使用系统优化编译器对资源与性能进行估算。
库支持
很多汽车应用都是使用业界标准开源库进行开发,例如在 ADAS 系统中使用 OpenCV 或 Caffe,或在 ECU 中使用标准数学库。为加快这些应用的开发,系统优化编译器需要能够支持多个 HLS 库,以便开发人员在其应用中使用。系统优化编译器应支持多个关键库,其中包括:
·OpenCV –能够加速计算机视觉功能
·Caffe –能够加速机器学习推理引擎
·数学库–提供标准数学库的可综合实现。
·IP 库–为实现 FFT、FIR 和移位寄存器 LUT 功能提供 IP 库。
·线性代数库–提供通用线性代数功能库。
·任意精度数据类型库–使用有符号和无符号整数支持非2次幂的任意长度数据。该库允许开发人员更高效地使用 FPGA 资源。
这些库的提供为开发团队提供相当大的支持,让开发团队不必开发类似的功能。
真实实例
很多汽车应用的关键元素是保护数据以防止未授权修改,避免导致不安全操作。用来保护存储数据与传输数据安全的一种常用算法是高级加密标准 (AES)。AES是在高级层面描述的,但最适合在可编程逻辑架构中实现的算法的范例。为了演示使用系统优化编译器的优势,已开发一款面向三种常用操作系统的简单 AES 256 应用。该实例最初只在处理器系统中执行,然后在可编程逻辑中实现功能的加速。
图 3 - 当使用系统优化编译器时,不同操作系统的 AES 加速结果。
结论
异构 SoC 能够解决汽车电子系统设计人员面临的挑战。通过使用高级语言,系统优化编译器能够对这些器件进行开发,一旦使用处理器完成对应用功能的开发与原型设计后,处理器系统与可编程逻辑之间的功能分区即可得到优化,从而缩短开发时间,实现更安全、响应性更强、能效更高的解决方案。