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

示例 6 – 信号生成和检查

该示例使用 CLB1 生成矩形波,并使用 CLB2 检查 CLB1 生成的矩形波是否未超过定义的占空比和周期限制。

CLB1:此示例使用 CLB 的计数器和 FSM 子模块来实现矩形脉冲发生器。计数器 0 根据用户编程的匹配 1 和匹配 2 值生成事件。匹配 2 值定义了所生成波形的周期,而(匹配 2 – 匹配 1)值用于确定开启时间。状态机使用这些来自计数器的事件生成波形 – 在发生匹配 1 事件时设置输出,在发生匹配 2 事件时清除输出。因此状态位 S0 反映了生成的输出波形。该输出又从 CLB1 输出 4 引出,以通过 CLB 交叉开关将输出传递到 CLB2。In0 用作软件的波形生成使能。它也通过 CLB1 输出 5 传递到 CLB2。

CLB2:此示例使用 CLB 的 LUT、计数器、FSM、HLC 子模块在 CLB1 生成的输出上实现校验器。以下是到 CLB2 的信号连接。

CLB1 输出 4 → CLB 交叉开关 AUXSIG0 → CLB2 输入 1(通过全局多路复用器)

CLB1 输出 5 → CLB 交叉开关 AUXSIG1 → CLB2 输入 2(通过全局多路复用器)

计数器 0 在输入 1 上接收的信号开启时间期间进行计数。计数器 0 匹配 1 值设置为占空比的限制值。如果发生匹配 1 事件,则意味着开启时间已超过所需的值。

计数器 1 复位并在输入 1 上接收的信号的上升沿开始计数。计数器 1 匹配 1 值设置为周期的限制值。如果发生匹配 1 事件,则意味着周期已超过所需的值。

状态机 (FSM1 S0) 用于检测输入 1 上接收的信号的上升沿,并进而用作计数器 1 的复位。

每当发生上述任何计数器匹配 1 事件时,就会使用 HLC 向 CPU 生成一个中断 – 作为错误指示器。

图 4-11 概述了逻辑块的工作方式。匹配 1 事件会生成一个 CPU 中断,目的是在 CLB2 内部检测到错误条件时触发 CLB 中断。

GUID-A00C9161-57C3-4D78-A295-6ED69D140810-low.gif图 4-11 示例 6:占空比超过预设值
GUID-27C9208A-3F5A-4E6B-A64A-8A4684BE3164-low.gif图 4-12 示例 6:周期超过预设值

下半部分显示 CLB 计数器,该计数器在开启时间开始时开始计数。在第一个图描述了占空比检查,第二个图描述了周期检查。如果达到匹配 1 值,则在任一情况下都会生成一个中断。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. 13.选择工程“clb_ex6_siggen”并点击“Finish”。
  4. 14.在 CCS Project Explorer 窗口中,展开工程“clb_ex6_siggen”并打开文件“clb_ex6_siggen.syscfg”。
  5. 在 CCS 菜单中,依次选择“Project”→“Build Project”。

在 CCS 窗口中打开 SysCfg 文件 (clb_ex6_siggen.syscfg) 并检查 CLB1 模块的计数器 0 中的匹配 1/2 设置。更改这些值,以更新生成的输出的占空比和周期。

检查 CLB2 模块中计数器 0/1 的匹配 1 设置。更改这些值,以更新在生成的输出上所检查的占空比和周期。

使用默认值运行程序并验证 CLB 中断是否不会触发。然后,更改值以生成错误(例如:将 CLB2 计数器 1 匹配 1 更改为 400)。重新构建并运行程序,以查看 CLB2 中断服务程序中的代码停止。