ZHCAEQ3 November   2024 F29H850TU , F29H859TU-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1实时控制简介
  5. 2C29 CPU 及其主要特性
    1. 2.1 并行架构和编译器优化
  6. 3C29 性能基准测试
    1. 3.1 使用 ACI 电机控制的信号链基准测试
    2. 3.2 实时控制和 DSP 性能
      1. 3.2.1 影响结果的示例和因素
        1. 3.2.1.1 饱和(或限制)示例
        2. 3.2.1.2 死区示例
        3. 3.2.1.3 空间矢量生成 (SVGEN) 示例
        4. 3.2.1.4 软件流水线
      2. 3.2.2 客户控制和数学运算基准测试
    3. 3.3 通用处理 (GPP) 性能
      1. 3.3.1 影响结果的示例和因素
        1. 3.3.1.1 不连续性管理
        2. 3.3.1.2 Switch() 示例
    4. 3.4 基于模型的设计基准测试
    5. 3.5 应用基准测试
      1. 3.5.1 单相 7kW OBC 说明
      2. 3.5.2 基于 Vienna 整流器的三相功率因数校正
      3. 3.5.3 单相位逆变器
      4. 3.5.4 机器学习
    6. 3.6 闪存存储器效率
    7. 3.7 代码尺寸效率
  7. 4总结
  8. 5参考资料

C29 CPU 及其主要特性

图 2-1 所示为 C29 CPU 的方框图、其主要特性和优势。

 C29 架构方框图图 2-1 C29 架构方框图

VLIW CPU:C29 基于超长指令字 (VLIW) 架构设计。支持 16 位、32 位和 48 位的可变长度指令。指令数据包大小从 16 位到 128 位,可实现更高的代码密度,同时在单个 CPU 周期内最多执行八条 16 位指令。

CPU 内存总线:128 位宽程序总线,可以提取一个 128 位宽指令数据包以供 CPU 执行。两条 64 位读取总线,支持并行读取两个 64 位数据,同时一条 64 位写入总线可在单个周期内写入 64 位数据到内存。

字节寻址能力和数据类型:C29 支持字节寻址,并且数据类型与其他常见的 CPU 架构(如 ARM)完全兼容。

CPU 寄存器:提供三组寄存器:Ax、Dx 和 Mx。Ax 寄存器包括 16 个 32 位寄存器 (A0-A15) 或 8 个 64 位寄存器 (XA0-XA14),主要用于地址生成,并在流水线早期阶段执行某些整数运算以提升性能。DX 寄存器包括 16 个 32 位寄存器 (D0-D15) 或 8 个 64 位寄存器 (XD0-XD14),用于整数定点运算。MX 寄存器包括 32 个 32 位寄存器 (M0-M31) 或 16 个 64 位寄存器 (XM0-XM30),用于浮点运算。

功能单元:总共有 24 个功能单元,分别与 Ax、Dx 和 Mx 寄存器组及特殊功能寄存器相关联。每个功能单元支持一组特定指令,其中某些功能单元存在多个实例。例如,AX 寄存器文件配有 4 个比较单元,每个周期可以评估两条 switch 语句的情况,从而提高 switch 语句的执行效率。MX 寄存器组配有 2 个浮点乘法单元和 3 个浮点加法/减法单元,能够每两周期执行一次 FFT 蝶形变换运算。

三角函数加速器 (TMU):支持三角运算,扩展了对 64 位双精度浮点运算的支持,同时兼容 32 位单精度浮点运算。

中断:C29 支持常规中断 (INT) 和优化型实时中断 (RTINT)。RTINT 使用专用的硬件中断堆栈,在 RTINT 发生时,CPU 上下文会自动保存到此堆栈中。这种方式比基于软件的上下文保存机制要快。除了速度更快之外,周期数也是固定的,因此可以提高确定性。而基于软件的上下文保存机制可能需要可变数量的周期数。支持硬件中断优先级排序,减少了通过软件确定优先级的开销。

功能安全:如需实现较高的 ASIL 等级要求,需要在单个或多个 CPU 内运行的多线程代码之间实现隔离。功能安全和信息安全单元 (SSU) 提供了这种隔离能力。SSU 虽然形式简单,但是允许用户定义多个关联的存储器区域(称为访问保护区域 (APR)),这些区域可以通过一个称为 LINK 的概念关联在一起,形成一个隔离的线程。一个线程由代码、数据、堆栈和外设组成。特定代码 LINK 可以通过读取、写入或两者兼具的权限访问特定数据 LINK。相对于传统 MPU,SSU 的优势权限是基于正在执行的代码强制实施的。因此,不需要重新编程 MPU。每个线程都有一个硬件堆栈,堆栈在 CPU 中自动切换,实现完全隔离。在操作系统(例如 AUTOSAR)中,这种高效切换使实时 ISR 可作为 CAT1 中断独立运行,不受操作系统干扰,并与 AUTOSAR 应用程序完全隔离。因此,单个 C29 CPU 内核可以运行操作系统和控制任务,而不会影响控制性能。

信息安全:当代码执行在不同线程的堆栈之间切换时,强制执行入口点和出口点。入口点和出口点指预先定义的、一个线程调用或分支到另一个线程,或从另一个线程返回的点。如果调用、分支到其他地址,或者从其他地址返回,则会触发异常,从而避免安全攻击。SSU 还支持通过称为 ZONE 的机制进行固件更新和调试。每个 ZONE 都具有独立的密码和调试设置。ZONE 支持安全的多方写作开发,每个开发方都可以独立定义密码,阻止其他方查看代码,同时控制代码的调试权限。

表 2-1 C29 主要特性
特性 备注
易于使用
  • 字节可寻址 CPU
  • 具有 4GB 地址范围的线性和统一存储器映射
  • 全面保护式流水线
  • 在没有缓存存储器的情况下进行确定性执行
改进并行性
  • 并行执行 1 到 8 条指令
  • 并行执行定点、浮点和寻址运算
  • 针对决策代码和实时控制的专门指令(例如:if-then-else 语句,三角和多相向量转换操作)
提高总线吞吐量
  • 每个周期能够获取多达 128 位指令字
  • 每个周期能够执行 8、16、32、64 位双读取操作和单写入操作
  • 改进的寻址模式减少了内存和外设资源访问的开销
代码效率
  • 支持可变长度指令集(16 位、32 位和 48 位)
  • 关键操作编码为 16 位和 32 位操作码,以提高代码密度
  • 丰富的指令集通过最简洁的指令优化了运算
ASIL-D 安全能力
  • 支持锁步和分离锁定模式
  • 集成 ECC 逻辑可实现端到端安全互连
  • 使用 SSU 可以完全隔离单独的代码线程(包括堆叠)
  • 在硬件中从一个线程切换到另一个线程的零 CPU 开销自动实现了出色的实时性能
多区域安全
  • 运行时内容保护和代码的 IP 保护
  • 为每个区域设置单独的密码以控制访问
增强调试和跟踪功能
  • 专用数据记录和代码流跟踪指令
  • 跟踪数据能够记录在片上 RAM 中或通过串行通信外设导出