ZHCU712B april   2020  – july 2023

 

  1.   1
  2.   CLB 工具
  3.   商标
  4. 1引言
    1. 1.1 CLB 工具概述
    2. 1.2 CLB 配置过程概述
  5. 2开始使用
    1. 2.1 CLB 相关配套资料
      1. 2.1.1 基础资料
      2. 2.1.2 入门资源
      3. 2.1.3 专家资料
    2. 2.2 引言
    3. 2.3 安装
      1. 2.3.1 用于编译 SystemC 的安装
      2. 2.3.2 安装仿真查看器
  6. 3使用 CLB 工具
    1. 3.1 导入空 CLB 工程
    2. 3.2 更新变量路径
    3. 3.3 配置 CLB 逻辑块
    4. 3.4 创建 CLB 方框图
    5. 3.5 使用仿真器
      1. 3.5.1 “Statics”面板
      2. 3.5.2 创建输入激励
      3. 3.5.3 运行仿真
      4. 3.5.4 布线信号说明
  7. 4示例
    1. 4.1 基础示例
      1. 4.1.1  空 CLB 工程
      2. 4.1.2  示例 3 – PWM 生成
      3. 4.1.3  示例 7 – 状态机
      4. 4.1.4  示例 13 – 推挽接口
      5. 4.1.5  示例 14 – 多逻辑块
      6. 4.1.6  示例 15 – 逻辑块间延迟
      7. 4.1.7  示例 16 - 胶合逻辑
      8. 4.1.8  示例 18 - AOC
      9. 4.1.9  示例 19 - AOC 释放控制
      10. 4.1.10 示例 20 - CLB XBAR
    2. 4.2 入门示例
      1. 4.2.1  示例 1 – 组合逻辑
      2. 4.2.2  示例 2 – GPIO 输入滤波器
      3. 4.2.3  示例 4 – PWM 保护
      4. 4.2.4  示例 5 – 事件窗口
      5. 4.2.5  示例 6 – 信号生成和检查
      6. 4.2.6  示例 8 – 外部与门
      7. 4.2.7  示例 9 – 计时器
      8. 4.2.8  示例 10 – 具有两种状态的计时器
      9. 4.2.9  示例 11 – 中断标签
      10. 4.2.10 示例 12 – 输出相交
      11. 4.2.11 示例 17 - 单次 PWM 生成
      12. 4.2.12 示例 21 - 时钟预分频器和 NMI
      13. 4.2.13 示例 22 - 串行器
      14. 4.2.14 示例 23 - LFSR
      15. 4.2.15 示例 24 - 锁定输出屏蔽
      16. 4.2.16 示例 25 - 输入流水线模式
      17. 4.2.17 示例 26 - 计时流水线模式
    3. 4.3 专家示例
      1. 4.3.1 示例 27 - SPI 数据导出
      2. 4.3.2 示例 28 - SPI 数据导出 DMA
      3. 4.3.3 示例 29 - 时间戳
      4. 4.3.4 示例 30 - 循环冗余校验
      5. 4.3.5 CLB TDM 串行端口
      6. 4.3.6 CLB LED 驱动器
      7. 4.3.7 FPGA/CPLD 到 C2000 示例
  8. 5在现有 DriverLib 工程中启用 CLB 工具
  9. 6常见问题解答 (FAQ)
  10. 7修订历史记录

示例 5 – 事件窗口

该示例使用 CLB 的计数器、FSM 和 HLC 子模块来实现事件计时功能,该功能可以检测中断服务程序是否花费过长的时间来响应中断。该示例将四个 PWM 模块配置为在向上计数模式下运行,并在发生计时器零匹配事件时生成从低到高变化的边沿。零匹配事件还触发 PWM ISR,就该示例而言,该 ISR 包含长度可变的虚拟有效负载。在 ISR 结束时,对 CLB GP 寄存器执行写操作,以指示 ISR 已结束。

CLB 模块在检测到 PWM 计时器零事件后启动一个计时器。计时器“匹配 2”计数被设置为相应 PWM ISR 的最大预期持续时间。如果在达到匹配 2 计数之前未对 GP 寄存器进行写入操作,则 HLC 会触发 CLB 中断。四个 PWM 模块和 CLB 逻辑块的配置类似。

图 4-10 概述了一个逻辑块的工作方式。上半部分显示了 PWM 模块的配置,该配置用于生成固定频率波形,每个计数器零匹配处具有上升沿,比较 A 匹配处具有下降沿。零匹配事件会生成一个 CPU 中断,目的是当 PWM ISR 未在指定时间内完成时触发 CLB 中断。

GUID-2B094A29-5265-44BD-96D5-40B3C51123BD-low.gif图 4-10 示例 5:事件窗口配置

下半部分显示 CLB 计数器,该计数器在 PWM ISR 开始时开始计数。如果 ISR 在达到匹配 2 值之前没有响应,则会生成一个中断。CLB ISR 包含一条“ESTOP”指令,其作用类似于程序中的软件断点。

要运行该示例,请执行以下过程:

  1. 在 CCS v9.0 或更高版本中,依次点击“Project”->“Import CCS Projects…”。
  2. 导航到 CLB 工具示例目录。路径为:
    1. [C2000Ware]\driverlib\f2837xd\examples\cpu1\clb\ccs 或
    2. [C2000Ware]\driverlib\f28004x\examples\clb\ccs 或
    3. [C2000Ware]\driverlib\f2838x\examples\c28x\clb\ccs

    在后续描述中,假设使用上述 C2000Ware 目录。

  3. 选择工程“clb_ex5_event_window”并点击“Finish”。
  4. 在 CCS Project Explorer 窗口中,展开工程“clb_ex5_event_window”并打开文件“clb_ex5_event_window.syscfg”。
  5. 在 CCS 菜单中,依次选择“Project”→“Build Project”。

打开 CCS“Expressions”窗口并添加四个程序变量:“payload_x”,其中“x”为 1 到 4。请注意,在程序开始时,所有有效负载变量均已设置为 45。有效负载在每个 PWM ISR 中实现为“for”循环,每次迭代需要 12 个周期,因此有效负载 45 对应于大约 540 个周期。

打开 .syscfg 文件并检查四个 CLB 模块的计数器 0 中的匹配 2 设置。请注意,所有计时器限制都设置为 3200。

使用默认有效负载运行程序并验证 CLB 中断是否不会触发。然后,停止该程序并增加任何有效负载。重新运行该程序并确定是否超出了任何 ISR 限制。请记住,由于 PWM 未同步,因此最坏情况的 ISR 延迟是所有有效负载的总和加上中断开销。