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

示例 1 – 组合逻辑

该示例的目的是防止 同一对 PWM 同时出现高电平或低电平输出。PWM 模块 1 和 2 配置为基于固定频率向上计数模式生成相同的波形。PWM2 的时基与 PWM1 的时基同步,如图 4-2 所示。

GUID-79C1911B-3899-4CCA-BA7A-84A2D838E643-low.gif图 4-2 示例 1:EPWM 同步

生成 PWM 波形,以故意迫使每个模块中的两个输出在不同的时间变为高电平和低电平,如图 4-3 所示。

GUID-30DCE84A-BBB3-4E38-A918-83216C721971-low.gif图 4-3 示例 1:PWM 测试模式

目的是使用 CLB 修改这些波形,以避免同时为高电平或同时为低电平的情况。这展示了一个简单的组合逻辑示例。该逻辑以三种模式工作:正常、高电平有效和低电平有效。在正常模式下,PWM 信号未经修改地通过 CLB。在高电平有效模式下,该逻辑防止在 PWM 引脚上同时出现逻辑“1”输出。类似地,在低电平有效模式下,两个 PWM 引脚上一定不会同时出现逻辑“0”输出。例如,如果逻辑处于低电平有效模式,并且两个 PWM 信号都为低电平,则两个 PWM 的输出将被强制为高电平。有关更多详细信息,请参阅表 4-2。可以使用一个 2 位字段来选择模式,如表 4-1 所示。

表 4-1 示例 1:操作模式
模式名称 类型 [模式 1] [模式 0]
M0 正常 0 0
M1 低电平有效 0 1
M2 高电平有效 1 0
M3 保留 1 1

图 4-4 显示了实现这些信号的逻辑电路。输出信号的名称后附加了“_m”,表示它们可能已由 CLB 修改。

GUID-ACF3E632-FB10-4D50-B5A2-FB3733643EB5-low.gif图 4-4 示例 1:逻辑图

可以使用两个 4 输入 LUT 来实现上述逻辑:每个输出信号一个。因此,仅涉及一个 CLB 逻辑块的一小部分。在该示例中,CLB 仅修改了来自 PWM1 模块的信号。来自 PWM2 的信号直接传送到器件引脚以进行比较。图 4-5 显示了 PWM1 的输入和输出波形(模式 1 和模式 2)。此图像以绿色突出显示 CLB 逻辑强制输出为高电平或低电平的区域。

GUID-9EA4F431-6C74-40BF-B83C-59909B30E1CD-low.gif图 4-5 示例 1:生成的 PWM
表 4-2 PWM 输出
工作模式 原始 PWM A 输出 原始 PWM B 输出 PWM A 输出 PWM B 输出
正常 0 0 0 0
0 1 0 1
1 0 1 0
1 1 1 1
低电平有效 0 0 1 1
0 1 0 1
1 0 1 0
1 1 1 1
高电平有效 0 0 0 0
0 1 0 1
1 0 1 0
1 1 0 0

使用 4 路输入 LUT 0 和 1 来实现所需的逻辑。它们中的每一个都连接到两个 PWM 信号以及软件“mode”变量的两个 LSB,这两个 LSB 被写入到 GPREG 寄存器中。CLB 输出连接到 PWM1A 和 PWM1B 信号,然后这些信号分别传递到 GPIO 引脚 0 和 1。图 4-6 从概念上显示了与 CLB 逻辑块之间的往返连接。

GUID-8B33A471-C3A3-43BF-9D24-80E6928AEF71-low.gif图 4-6 示例 1:CLB 配置

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

  1. 依次点击“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_ex1_combinatorial_logic”并点击“Finish”。
  4. 在 CCS Project Explorer 窗口中,展开工程“clb_ex1_combinatorial_logic”并打开文件“clb_ex1_combinatorial_logic.syscfg”。
  5. 检查逻辑块的配置并观察 LUT4_0 和 LUT4_1 中的逻辑表达式以及输出 LUT 的配置。
  6. 在 CCS 菜单中,依次选择“Project”→“Build Project”。
  7. 监测引脚。
    1. 列出了用于观察 F28379D 的 PWM 的 Launchpad 引脚和 F28388D 的 Experimenter 套件引脚,但未列出其他器件的 Launchpad 引脚。有关可用引脚及其配置的更多信息,请参阅器件数据表
  8. 打开 CCS“Expressions”窗口。
  9. [可选] – 有关如何运行 CLB 仿真的说明,请参阅节 3.5.3

如果在 F28379D LaunchPad 板上运行该程序,则可以分别在引脚 J4/40 和 J4/39 上监视 PWM 信号 1A 和 1B。设置示波器,以在该程序运行时在这些引脚上监视信号。

如果在安装了 F28388D controlCARD 的实验套件上运行该程序,则可以分别在引脚 49 和 51 上找到这些信号。

打开一个“CCS Expressions”窗口并添加程序变量“mode”。如果将模式设置为默认值 0,PWM 信号会在不进行任何修改的情况下通过 CLB。停止该程序并将模式更改为 1,然后重新启动该程序。信号应如上面的时序图所示。重复该过程将模式更改为 2,并验证信号是否如先前的时序图所示。