主要内容

本页采用了机器翻译。点击此处可查看英文原文。

基于模型引用的控制律加速器 (CLA) 建模

控制律加速器 (CLA) 是一种支持并行处理的协处理器。使用 CLA 处理时间关键型任务,可以释放其他 CPU 以同时执行其他系统级和更高级别的异步任务。CLA 协处理器还可以直接连接到硬件外设,例如模数转换器 (ADC) 和脉冲宽度调制器 (PWM),以最大限度地减少时间关键型任务的延迟。

使用 CLA 协处理器配置 C2000 模型

带有 CLA 协处理器的 C2000™ 处理器由 Task ManagerCLA Task Manager 模块和参考 Model 模块组成,这些模块包含要在系统中每个处理器上执行的任务。该模型包含 C2000 处理器和 CLA 处理器的示例模型,每个模型都有一个事件驱动任务。

注意

使用 CLA 的模型需要将 long long 模式设置为 off

配置 C2000 顶层模型

  1. 打开一个新的 Simulink 模型。将模型另存为 tif2838xD_top.slx

  2. tif2838xD_top.slx 模型配置为 C2000 应用程序。

  3. 打开建模选项选项卡,然后按 Ctrl+E(模型设置)打开配置参数对话框。

  4. 转至 Hardware Implementation > Hardware board,然后选择 TI F2838x

  5. 硬件板设置> Processing unit 中,选择 None

  6. 点击 Finish

配置 C2000 处理器模型

  1. 打开一个新的 Simulink 模型。将模型另存为 tif2838xD_c28xCPU1.slx

  2. tif2838xD_c28xCPU1.slx 模型配置为 C2000 应用程序。

  3. 打开建模选项选项卡,然后按 Ctrl+E(模型设置)打开配置参数对话框。

  4. 转至 Hardware Implementation > Hardware board,然后选择 TI F2838x

  5. 硬件板设置> Processing unit 中,选择 c28xCPU1

  6. 点击 Finish

  7. 将事件驱动和定时器驱动的任务添加到 C2000 处理器模型中。

  8. tif2838xD_top.slx 模型中,添加 CLA Task ManagerModel 模块。

  9. tif2838xD_c28xCPU1.slx 模型分配给 Model 模块,然后将任务连接到 Task Manager 模块。

配置 CLA 协处理器模型

  1. 打开一个新的 Simulink® 模型。将模型另存为 tif2838xD_CLA.slx

  2. tif2838xD_CLA.slx 模型配置为 C2000 应用程序。

  3. 打开建模选项选项卡,然后按 Ctrl+E(模型设置)打开配置参数对话框。

  4. 转至 Hardware Implementation > Hardware board,然后选择 TI F2838x

  5. 硬件板设置> Processing unit 中,选择 CPU1CLA1

  6. 点击 Finish

  7. 在 CLA 模型中添加事件驱动型任务。

  8. tif2838xD_top.slx 模型中,添加 CLA Task ManagerModel 模块。

  9. tif2838xD_CLA.slx 模型分配给 Model 模块,然后将任务连接到 CLA Task Manager 模块。

CLA 协处理器具有受限的区域内存访问。在代码生成和部署到硬件板的过程中,任务会自动映射到 CLA ROM 中的相应部分。您可以使用以下命令检查内存段中的输入端口、输出端口、信号、状态和内部数据:代码映射编辑器 - C (Embedded Coder) CLA 引用模型中的工具。

使用 CLA 协处理器配置 C2000 模型

本示例展示了如何创建包含 C2000 处理器和控制律加速器 (CLA) 协处理器的 C2000 模型。C2000 处理器模型包含一个定时器驱动的任务,该任务每 0.1 秒执行一次。CLA 协处理器模型包含一个由 ADC 事件驱动的任务,该任务由以下方式建模:ADC Read (SoC Blockset)ADC Interface (SoC Blockset)区块对。打开模型。

open_system("c2000_and_cla_setup_top_level_model.slx")

运行模型并检查任务执行情况。仿真数据检查器。作为独立的处理器,这些任务运行起来互不干扰。

plot.png

注意:尝试构建模型时,请确保将代码生成文件夹结构参数设置为目标环境子文件夹

  • 在 MATLAB 命令提示符中运行以下 API,将代码生成文件夹结构参数设置为目标环境子文件夹

cfg = Simulink ('getConfig');

cfg.CodeGenFolderStructure = 'TargetEnvironmentSubfolder';

Simulink ('setConfig', 'config', cfg);

  • 或者,打开模型。导航至“建模”选项卡> “环境” > Simulink 首选项” > “常规”,并将“代码生成文件夹结构”参数设置为“目标环境子文件夹”。

使用软件触发器链接任务执行

CPU 可以使用软件中断,通过 Software Trigger CPU<->CLA 模块在 CLA 协处理器上启动任务。您可以使用此模块从处理器上的 C2000 启动指定的任务,从而释放 C2000 处理器,使其在系统执行期间充当监督角色。Software Trigger CPU<->CLA 也可以在 CLA 内部使用,以在 CPU 上启动任务。

您可以按照以下步骤向 CPU 添加 Software Trigger CPU<->CLA,以在 CLA 上启动任务。

  1. 在 CPU 引用模型中选择一个现有任务。

  2. 在任务中添加 Software Trigger CPU<->CLA 代码块。

    注意

    Software Trigger CPU<->CLA 块必须位于周期性任务的原子子系统块中。

  3. 将输入端连接到布尔信号。您可以指定 Software Trigger CPU<->CLA 模块在上升沿或信号为高电平时触发。

  4. 输出端连接到 Outport 模块。

  5. Software Trigger CPU<->CLA 块中,将 Task number 设置为 CLA 任务。

  6. 在 CPU 引用模型中,选择 Software Trigger CPU<->CLA 模块连接到顶层 SoC 模型的 Outport 模块。

  7. Signal Attributes 面板中,选择–-- Refresh Data Types –--来刷新 Data type 选择。然后将 Data type 设置为 Bus: rteEvent

  8. Output as nonvirtual bus in parent model

  9. 点击 OK 将更改应用到 Outport ”块。

  10. 在顶层模型中,将 C2000 引用模型的消息输出连接到 CLA Task Manager 模块。

    注意

    分配的任务必须与 Software Trigger CPU<->CLA 中指定的任务编号匹配。

使用 Interprocess Data ReadInterprocess Data ChannelInterprocess Data Write 块三元组在两个处理器之间交换数据。该块三元组模拟了 C2000 处理器和 CLA 协处理器之间的数据交换。当模型生成代码时,ePIE 表中会发生中断,数据通过共享内存(例如 LSn RAM 传输),替换为指定 C2000 处理器的块三元组。

CPU 与 CLA 协处理器之间的同步

本示例展示了如何从 C2000 处理器启动控制律加速器 (CLA) 协处理器上的任务。C2000 处理器可以使用以下方式在 CLA 协处理器上启动任务:Software Trigger CPU<->CLA堵塞。该模型展示了 C2000 处理器上的定时器驱动任务,该任务触发并执行 CLA 上的 CLA 任务。

CPU 与 CLA 协处理器之间的数据交换

此示例显示了 C2000 处理器和 CLA 协处理器之间可用于传输数据的基本连接。C2000 处理器和 CLA 协处理器可以与进程间数据通道 (SoC Blockset)、进程间数据读取 (SoC Blockset)、进程间数据写入 (SoC Blockset) 模块共享数据。该模型展示了由 C2000 处理器上的任务管理器 (SoC Blockset) 模块驱动的定时器驱动任务,该任务通过处理器间数据通道模块向 CLA 协处理器传输随机数。当 CLA 处理器接收到数据时,CLA 任务触发并读取数据包。

open_system("CPU_to_CLA_synchronization_top_level_model");

该图显示了仿真数据检查器查看应用程序中 CPU 任务 Task1 触发 CLATask 的任务。

plot.png

该图显示了仿真数据检查器应用程序中的数据和任务视图。CPU 和 CLA 测量之间的延迟是由于 CPU 完成传输和 CLA 任务开始所致。

另请参阅

| | | | |