ZHCU712B april 2020 – july 2023
该示例的目的是防止 同一对 PWM 同时出现高电平或低电平输出。PWM 模块 1 和 2 配置为基于固定频率向上计数模式生成相同的波形。PWM2 的时基与 PWM1 的时基同步,如图 4-2 所示。
生成 PWM 波形,以故意迫使每个模块中的两个输出在不同的时间变为高电平和低电平,如图 4-3 所示。
目的是使用 CLB 修改这些波形,以避免同时为高电平或同时为低电平的情况。这展示了一个简单的组合逻辑示例。该逻辑以三种模式工作:正常、高电平有效和低电平有效。在正常模式下,PWM 信号未经修改地通过 CLB。在高电平有效模式下,该逻辑防止在 PWM 引脚上同时出现逻辑“1”输出。类似地,在低电平有效模式下,两个 PWM 引脚上一定不会同时出现逻辑“0”输出。例如,如果逻辑处于低电平有效模式,并且两个 PWM 信号都为低电平,则两个 PWM 的输出将被强制为高电平。有关更多详细信息,请参阅表 4-2。可以使用一个 2 位字段来选择模式,如表 4-1 所示。
模式名称 | 类型 | [模式 1] | [模式 0] |
---|---|---|---|
M0 | 正常 | 0 | 0 |
M1 | 低电平有效 | 0 | 1 |
M2 | 高电平有效 | 1 | 0 |
M3 | 保留 | 1 | 1 |
图 4-4 显示了实现这些信号的逻辑电路。输出信号的名称后附加了“_m”,表示它们可能已由 CLB 修改。
可以使用两个 4 输入 LUT 来实现上述逻辑:每个输出信号一个。因此,仅涉及一个 CLB 逻辑块的一小部分。在该示例中,CLB 仅修改了来自 PWM1 模块的信号。来自 PWM2 的信号直接传送到器件引脚以进行比较。图 4-5 显示了 PWM1 的输入和输出波形(模式 1 和模式 2)。此图像以绿色突出显示 CLB 逻辑强制输出为高电平或低电平的区域。
工作模式 | 原始 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 逻辑块之间的往返连接。
要运行该示例,请执行以下过程:
在后续描述中,假设使用上述 C2000Ware 目录。
如果在 F28379D LaunchPad 板上运行该程序,则可以分别在引脚 J4/40 和 J4/39 上监视 PWM 信号 1A 和 1B。设置示波器,以在该程序运行时在这些引脚上监视信号。
如果在安装了 F28388D controlCARD 的实验套件上运行该程序,则可以分别在引脚 49 和 51 上找到这些信号。
打开一个“CCS Expressions”窗口并添加程序变量“mode”。如果将模式设置为默认值 0,PWM 信号会在不进行任何修改的情况下通过 CLB。停止该程序并将模式更改为 1,然后重新启动该程序。信号应如上面的时序图所示。重复该过程将模式更改为 2,并验证信号是否如先前的时序图所示。