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

示例 2 – GPIO 输入滤波器

此示例演示了如何使用有限状态机 (FSM) 和计数器来实现简单的“干扰”滤波器,该滤波器可以(例如)应用于传入 GPIO 信号以消除不需要的短时脉冲。

图 4-7 大体上显示了干扰滤波器的功能。输入的数字信号以 CLB 时钟速率进行采样,计数器对输入为高电平或低电平的连续采样的数量进行计数。如果该数量等于或大于指定的采样窗口,则该滤波器输出的值与输入的值相同;否则该滤波器的输出保持不变。图 4-7 大体上显示了该滤波器的功能。

GUID-BD7925B8-1358-4E6C-AA7F-C4944BC544F4-low.gif图 4-7 示例 2:GPIO 干扰示例

CLB 配置使用一个 LUT4 对输入信号进行反相,并使用两个计数器对脉冲数进行计数:一个计数器用于高电平脉冲,另一个计数器用于低电平脉冲。当任何一个计数器达到采样窗口长度时,其“匹配 1”输出端都会出现一个脉冲。在该示例中,滤波器采样窗口长度设置为八。FSM 锁存该脉冲并实现一个简单的逻辑方程,以确定其“S0”状态输出所需的电平。使用一个输出 LUT 将 FWM 输出传送至外设信号多路复用器,以连接至 GPIO0。图 4-8 显示了 CLB 配置。

GUID-3D57DDAF-0D4D-46B8-B92B-BD0FE0515AF7-low.gif图 4-8 示例 2:CLB 配置

示例代码对 ePWM1 模块进行配置,以生成测试激励。

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

  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. 选择工程“glitch_filter”并点击“Finish”。
  4. 在 CCS Project Explorer 窗口中,展开工程“glitch_filter”并打开文件“tile.syscfg”。
  5. 检查逻辑块的配置并查看子模块 LUT4_0、COUNTER_0、COUNTER_1 和 FSM_0 的设置。验证配置与上面示例说明中的配置是否相符。
  6. 在 CCS 菜单中,依次选择“Project”→“Build Project”。
  7. [可选] – 有关如何运行 CLB 仿真的说明,请参阅节 3.5.3

如果在 F28379D LaunchPad 板上运行该程序,则可以分别在引脚 J4/40 和 J4/39 上监视 PWM 信号 1A 和 1B。设置示波器,以在该程序运行时在这些引脚上监视信号。如果在安装了 F280049 或 F28388D controlCARD 的实验套件上运行该程序,则可以分别在引脚 49 和 51 上找到这些信号。

打开一个“CCS Expressions”窗口并添加程序变量“cglitch”。运行该程序,同时观察 PWM 信号 1A 和 1B。暂停该程序并更改“cglitch”的值,然后重新启动该程序(如果将表达式窗口设置为“continuous refresh”,则执行该过程会更容易)。如果值为 7 或更小,则滤波器应消除干扰,因为其宽度小于采样窗口的宽度。当“cglitch”高于 7 时,两个输出上都应出现干扰。另请注意,与 PWM1B 上的边沿相比,PWM1A 上的边沿具有较小的延迟。这是所使用的滤波方法导致的结果。

图 4-9 显示了在干扰宽度低于和高于采样窗口设置 8 时输出引脚处的预期波形。

GUID-EEBFFD9A-4F8F-4024-B38B-7970D94DF56E-low.gif图 4-9 示例 2:GPIO 干扰宽度