功能描述
比较器
- 高位比较器 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,触发读取影子寄存器更新。斜坡模块的更新参考斜坡模块。
LDAC 的输出电压的更新,只支持寄存器更新模式,不支持斜坡模块更新,寄存器的更新模式与 HDAC 的一致。
斜坡模块
对于斜坡模块的典型应用,是 CPM 可以利用此功能产生与输入电压相关的 PWM 信号,例如电源应用上的反馈电压控制 PWM 占空比。
如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 信号,这样的情况下,斜坡控制模块不会停止,会继续按照新的一轮寄存器值进行递减计数。
数字输出控制
数字输出控制逻辑以高位比较器的输出为例,后续会进行四级的逻辑操作,依次是:
- 比较器输出,此时的信号为异步信号 COH_ASYNC,该通路可以支持输出反相功能。
- 输出同步,采用 SYS_CLK 对比较器的输出信号进行同步,得到同步信号 COH_SYNC。
- 输出滤波,采用数字滤波器,对上级信号进行数字滤波,得到信号 COH_SYNC_FLT。
- 输出锁存,采用 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 中断的产生。 触发中断的方式支持两种触发模式,电平模式或边沿模式。
-
电平模式:支持高/ 低电平触发中断
-
边沿模式:支持上升沿/ 下降沿/ 双沿触发中断