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修订历史记录

示例 17 - 单次 PWM 生成

此示例演示如何配置 CLB 逻辑块以充当单次 PWM 发生器。该示例使用组合逻辑 (LUT)、状态机 (FSM)、计数器和 HLC 来演示收到外部/软件触发时的单次 PWM 输出生成功能。

GUID-A90DD559-F896-486B-9D79-D2CC981BB1E6-low.gif图 4-13 示例 17:单次 PWM 输出

CLB 逻辑块配置为在接收到触发信号时模拟单次触发计时器。计时器从零开始计数,达到匹配值、然后停止计数,直到接收到下一个触发信号。输出在计数器正在计数时被驱动为高电平,在计数器达到最大值并停止计数时被驱动为低电平。上述逻辑是使用 LUT、FSM 和计数器实现的。另一个计数器用于确保后续系统仅响应上升沿事件,不响应输入电平。该示例还使用 HLC 子模块和 CLB 中断机制支持可变脉冲宽度。HLC 用于在每个第 3 个触发信号事件(由另一个计数器跟踪)之后生成中断,并且脉冲宽度由应用更新。示例中配置的输出脉冲范围是 0.2μs - 0.8μs,每个中断 ISR 的阶跃增加 50ns。PWM 寄存器配置为使用活动和影子寄存器,这也是使用 HLC 块完成的。

整体 CLB 配置如图 4-14 所示。

GUID-474D1B1A-0D76-4D36-A8F4-6DE2D6CEEC0C-low.gif图 4-14 示例 17:整体 CLB 配置

该示例支持两种配置模式:基于软件的触发和基于外部信号的触发。可以通过将 EXAMPLE_MODE 设置为 0/1 来选择所需的模式。对于基于软件的触发,您可以在 CCS“Expressions”窗口中手动将 SOFT_TRIGGER 从 0 更新为 1,并观察示波器上的单次脉冲输出。请注意,在将该变量设置为“1”之前,该变量已设置为“0”,因为 CLB 系统仅响应上升沿。而对于基于外部信号的触发,EPWM 模块配置为生成 1MHz 的触发信号,并且导通时间非常短(10% 占空比)。GPIO0 上生成的此 EPWM 信号在内部路由为 CLB 的触发信号输入,因此无需外部连接。

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

  1. 在 CCS v9.0 或更高版本中,依次点击“Project”->“Import CCS Projects…”。
  2. 导航到 CLB 工具示例目录。路径为:
    1. [C2000Ware]\driverlib\f28004x\examples\clb\ccs,在后续描述中,假设使用上述 C2000Ware 目录。
  3. 选择工程“clb_ex17_one_shot_pwm”并点击“Finish”。
  4. 在 CCS Project Explorer 窗口中,展开工程“clb_ex17_one_shot_pwm”并打开文件“clb_ex17_one_shot_pwm.syscfg”。
  5. 检查逻辑块的配置并观察 LUT_0 和 FSM_0、COUNTER_0、COUNTER_1、COUNTER_2、HLC 和输出 LUT 中的逻辑表达式。
  6. 将 EXAMPLE_MODE 配置为 0/1,以在软件/外部触发信号模式下运行。
  7. 在 CCS 菜单中依次选择“Project”->“Build Project”。
  8. [可选] – 有关如何运行 CLB 仿真的说明,请参阅节 3.5.3
  9. 在 F28004x 控制卡上加载示例。
  10. 如果选择了软件触发信号模式:
    1. 向 CCS“Expressions”窗口添加 SOFT_TRIGGER 变量。
    2. 将 GPIO2 连接到示波器并确保示波器处于“One-shot”模式而不是“FREE_RUN”模式。
    3. 运行示例并在窗口中设置 SOFT_TRIGGER = 1,您应该能够在示波器上观察到单个脉冲。
    4. 首先设置 SOFT_TRIGGER = 0,然后设置 SOFT_TRIGGER = 1 以生成下一个脉冲。
    5. 每次重复上述步骤以提供上升沿触发信号。
    6. 每三次触发后,脉冲将增加 50ns。
  11. 如果选择了外部触发信号模式:
    1. 将 GPIO0(触发信号)和 GPIO2(输出)连接到示波器并将示波器配置为 FREE_RUN 模式。
    2. 在触发信号的每三个上升沿之后,您应该观察到输出脉冲宽度的线性变化。