ZHCU712B april 2020 – july 2023
该示例使用 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 中断。
下半部分显示 CLB 计数器,该计数器在开启时间开始时开始计数。在第一个图描述了占空比检查,第二个图描述了周期检查。如果达到匹配 1 值,则在任一情况下都会生成一个中断。CLB ISR 包含一条“ESTOP”指令,其作用类似于程序中的软件断点。
要运行该示例,请执行以下过程:
在后续描述中,假设使用上述 C2000Ware 目录。
在 CCS 窗口中打开 SysCfg 文件 (clb_ex6_siggen.syscfg) 并检查 CLB1 模块的计数器 0 中的匹配 1/2 设置。更改这些值,以更新生成的输出的占空比和周期。
检查 CLB2 模块中计数器 0/1 的匹配 1 设置。更改这些值,以更新在生成的输出上所检查的占空比和周期。
使用默认值运行程序并验证 CLB 中断是否不会触发。然后,更改值以生成错误(例如:将 CLB2 计数器 1 匹配 1 更改为 400)。重新构建并运行程序,以查看 CLB2 中断服务程序中的代码停止。