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

示例 3 – PWM 生成

此示例将 CLB 逻辑块配置为辅助 PWM 发生器。该示例利用组合逻辑 (LUT)、状态机 (FSM)、计数器和高级控制器 (HLC) 来演示使用 CLB 的 PWM 输出生成功能。

PWM 发生器以 CLBCLK 频率运行。使用 FSM 来设置/清除 PWM。在发生 CMP 匹配事件时设置 PWM,该事件与 COUNTER_0 的 match2 相关。在发生零匹配事件 (Z) 时清除 PWM。此事件与 COUNTER_0 match1 输出相关。

PWM 寄存器配置为使用活动和影子寄存器,这是使用 HLC 块完成的。使用 HLC 在发生周期匹配事件 match1 时生成一个中断。在发生中断时,会将新的计数器匹配值加载到 HLC 寄存器 (R0) 中。然后将新计数器匹配值移动到 COUNTER_0 的 match2 寄存器中。这会更新 CMP 匹配值,进而更新正占空比的值。在此示例中,用户在正占空比的两个值之间进行交替。图 4-1 大体上显示了 PWM 发生器的功能。请注意下一个周期中的占空比是如何变化的。

GUID-5DCAF45F-4D7E-4C4B-9942-4C3C9E50391E-low.gif图 4-1 示例 3:生成的 PWM 波形

CLB 逻辑块采用 PWM 使能信号作为输入,并向 CPU 生成一个中断。CLB 逻辑块配置为使用计数器进行向上计数,直到达到所需的周期和比较事件值。在输出“匹配 2”处计数器达到比较事件匹配值时,该输出被驱动为高电平并保持高电平,直到在输出“匹配 1”处达到周期匹配的计数器值或触发计数器复位。当发生周期事件或复位时,计数器重置为 0,输出被驱动为低电平,并且计数器开始向上计数。使用在 FSM 中输入的逻辑方程来配置该输出逻辑。在此示例中,周期为 300 个 CLBCLK 周期 (3µs)。比较事件在 100 个 CLBCLK 周期 (1μs) 或 150 个 CLBCLK 周期 (1.5μs) 时发生。

通过将 FSM 的输出馈送到 OUTLUT_4 中,可以查看 PWM 信号。为了在示波器上查看该输出,必须通过输出交叉开关将其传输到 GPIO 多路复用器。

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

  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_ex3_auxiliary_pwm”并点击“Finish”。
  4. 在 CCS Project Explorer 窗口中,展开工程并打开文件“clb_ex3_aux_pwm.syscfg”。
  5. 检查逻辑块的配置并观察 LUT4_0、COUNTER_0、FSM_0 中的逻辑表达式以及 HLC 和输出 LUT 的配置。
  6. 在 CCS 菜单中,依次选择“Project”→“Build Project”。
  7. 通过打开“Debug/syscfg/clb.html”文件,查看 CLB 逻辑块方框图
  8. [可选] – 有关如何运行 CLB 仿真的说明,请参阅节 3.5.3
  9. 要查看 PWM 和中断信号,请设置示波器并当程序正在运行时监控以下引脚。下表显示了每个相应电路板要监测的引脚。
    信号 F28379D LaunchPad F280049 controlCARD F28388D controlCARD
    Interrupt 引脚 J4/40 上的 GPIO0 引脚 49 (GPIO0) 引脚 49 (GPIO0)
    辅助 PWM 引脚 J4/34 上的 OutputXBAR1 信号 引脚 53 (OutputXBAR1) 引脚 53 (OutputXBAR1)
  10. 打开 CCS“Expressions”窗口并添加程序变量 dutyValue。当程序正在运行时,您将注意到每次提供 CLB 中断服务信号时,CMPA 值都会在 100 和 150 个 CLBCLK 周期之间交替。信号应如上面的时序图所示。请注意,PWM 周期保持不变,但正占空比在 50% 和 66% 之间进行交替。可以在中断服务例程中修改 dutyValue 变量。