Edit online

功能描述

Read time: 3 minute(s)

比较器



1. CPM 内置比较器
CPM 内置比较器所示,CPM 内置两路比较器:
  • 高位比较器 COMPH
    • 正端电压输入选择外部输入信号 CPM_HP。

    • 负端电压输入可以选择外部输入信号 CPM_HN,或者 HDAC 的信号。HDAC 的输出信号可以由软件配置寄存器控制,或内置的斜波功能模块控制。

  • 低位比较器 COMPL
    • 正端电压输入选择外部输入信号 CPM_LP。

    • 负端电压输入可以选择外部输入信号 CPM_LN,或者 LDAC 的信号。LDAC 的输出信号只能通过软件配置寄存器控制。

当比较器的正端输入电压大于负端输入电压时,比较器输出高电平,否则输出低电平。

DAC

功能描述

高/ 低位的比较器,均对应着一个内置的 12-bit 的 DAC,即 HDAC 和 LDAC 。HDAC 与 LDAC 规格基本一致。 这里以 HDAC 为例,通过配置输出寄存器 DACH_VALS,HDAC 则输出相应的电压 HDAC_OUT,输出的关系为: HDAC_OUT = VCC33_IO * (DACH_VALS / 4096), 其中 VCC33_IO 为 IO 输入电压。

DAC 更新

HDAC 的输出电压的更新,支持两种模式,一种是寄存器更新,另一种是斜坡模块控制更新,如HDAC 结构框图所示。 其中寄存器的更新,支持时钟信号 SYS_CLK 或同步信号 SYNC,触发读取影子寄存器更新。斜坡模块的更新参考斜坡模块



2. HDAC 结构框图

LDAC 的输出电压的更新,只支持寄存器更新模式,不支持斜坡模块更新,寄存器的更新模式与 HDAC 的一致。



3. LDAC 结构框图

斜坡模块

对于斜坡模块的典型应用,是 CPM 可以利用此功能产生与输入电压相关的 PWM 信号,例如电源应用上的反馈电压控制 PWM 占空比。



4. HDAC 斜坡模块

HDAC 斜坡模块所示,RAMP_Module 斜坡模块产生信号 RAMP_OUT,控制 HDAC 的输出电压值,产生一个递减输出的斜坡信号,控制的相关配置寄存器如下描述:

  • 斜坡信号通过寄存器 RAMP_MAX_REFS、RAMP_DEC_VALS 和 RAMP_DLYS 进行控制。

  • 寄存器 RAMP_MAX_REFS 为控制斜坡信号的起始点,斜坡信号从寄存器 RAMP_MAX_REFS 所设置的数值开始进行递减,该寄存器采用影子更新的方式,更新的触发信号为同步信号 SYNC。

  • 寄存器 RAMP_DEC_VALS 为控制斜坡信号的每次递减的幅度值,该寄存器采用影子更新的方式,更新的触发信号为同步信号 SYNC。

  • 寄存器 RAMP_DLYS 用于控制斜坡模块启动的 Delay 时间长度(单位是 SYS_CLK),该寄存器采用影子更新的方式,更新的触发信号为同步信号 SYNC。

  • 在每次同步信号 SYNC 的到来,都会进行影子寄存器的更新,也就是采用 RAMP_MAX_REFS、RAMP_DEC_VALS 和 RAMP_DLYS 的当前值控制斜坡信号的产生。

  • 斜坡信号每次递减的时钟频率为 CPM 模块的 SYS_CLK。

以下为斜坡信号 RAMP_OUT 产生的例子:



  • 在 T0 时刻,为同步信号 SYNC 到来的时刻,触发 RAMP_MAX_REFS、RAMP_DEC_VALS 和 RAMP_DLYS 的影子寄存器的更新,并且触发斜坡控制开始启动,由于此次 RAMP_DLYS 设置为 0,所以 RAMP_OUT 从当前的 RAMP_MAX_REFS 开始递减。
  • 在 T1 时刻,RAMP_OUT 控制 HDAC 的输出低于 CPM_HP 的电压值是,CPMH 的输出比较信号 COH_SYNC_FLT 进行翻转,此时会触发斜坡模块停止递减,并且输出恢复至当前的 RAMP_MAX_REFS,那么相应的 HDAC 的输出也便会起始值,所以比较器的输出再次反转。
  • 在 T2 时刻,也是同步信号 SYNC 到来的时刻,触发新的一轮影子寄存器更新,由于此轮的 RAMP_DLYS 为非 0 值,所以在延迟 (RAMP_DLYS * TSYS_CLY) 的时间后,也就是在 T3 时刻,斜坡控制才开始启动。
  • 在 T3~T4 时间段,RAMP_OUT 没有达到低于 CPM_HP 的电压水平,还没有发生比较器的反转,此时的斜坡还在持续递减。
  • 在 T4 时刻,同步 SYNC 信号到来,此时会在更新新的影子寄存器,继续按照之前的描述一样进行工作,在 T5 时刻比较器发生了反转,触发斜坡信号停止并且恢复至 RAMP_MAX_REFS。
  • 在 T6 时刻,由于输入信号 CPM_HP 发生了跳变,导致比较器的信号反转,但是此时也到来了 SYNC 信号,这样的情况下,斜坡控制模块不会停止,会继续按照新的一轮寄存器值进行递减计数。
注: 斜坡控制模块进行的递减计数的数据位宽是 16-bit,数字处理的最后对计算的结果进行高 12-bit 的截取,作为 RAMP_OUT 信号输出给 HDAC。

数字输出控制



5. 数字输出控制逻辑

数字输出控制逻辑以高位比较器的输出为例,后续会进行四级的逻辑操作,依次是:

  1. 比较器输出,此时的信号为异步信号 COH_ASYNC,该通路可以支持输出反相功能。
  2. 输出同步,采用 SYS_CLK 对比较器的输出信号进行同步,得到同步信号 COH_SYNC。
  3. 输出滤波,采用数字滤波器,对上级信号进行数字滤波,得到信号 COH_SYNC_FLT。
  4. 输出锁存,采用 SR 锁存器,锁存输出结果后与 COH_ASYNC 进行 OR 逻辑,得到信号 COH_LT。

上述的信号,作为信号源,通过寄存器的选择可以使能作为 COH_PWM、COH_GPIO 或 COH_IRQ 输出。

数字输出的控制,低位比较器与高位比较器进行相同的处理。

数字滤波器

数字滤波器实现的方式,等效如下的 C 代码实现:

//当输出为 0 的时候,则观察采样窗口里面的数据为 1 的数量

if (FILTER_OUTPUT == 0) {

  //当采样窗口里数据为 1 的数量大于阈值,那么则输出信号翻转

  if (Num_1s_in_SAMPWIN >= THRESH) {

        FILTER_OUTPUT = 1;
  }
}

//当输出为 1 的时候,则观察采样窗口里面的数据为 0 的数量

else {

    //当采样窗口里数据为 0 的数量大于阈值,那么则输出信号翻转

    if (Num_0s_in_SAMPWIN >= THRESH) {

        FILTER_OUTPUT = 0;
    }
}

比较器输出选择

高低位比较器的输出均可以选择作为:

  • EPWM 的保护信号(COH_PWM、COL_PWM、COHL_PWM),触发 EPWM 进入故障保护状态
  • IRQ 信号(COH_IRQ、COL_IRQ),触发进入中断函数
  • GPIO 信号(COH_GPIO、COL_GPIO、COHL_GPIO),将比较的输出信号通过 GPIO 管脚输出片外

中断信号

通过寄存器 COH_IRQ_EN/ COL_IRQ_EN 使能,可选择比较器的输出信号 COH_IRQ、COL_IRQ 触发 CPM 中断的产生。 触发中断的方式支持两种触发模式,电平模式或边沿模式。

  • 电平模式:支持高/ 低电平触发中断

  • 边沿模式:支持上升沿/ 下降沿/ 双沿触发中断