This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 占空比测量逻辑

Guru**** 669750 points
Other Parts Discussed in Thread: CD4063B, SN74F521
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/logic-group/logic/f/logic-forum/1052697/duty-cycle-measurement-logic

主题中讨论的其他器件:CD4063BSN74F521

大家好、

我想为我们的一位客户设计一个具有可调节截止频率的占空比测量逻辑。

即50%占空比是理想状态。 大于或小于该值的任何值都是错误。 如果该误差低于特定阈值、例如占空比小于30%或大于70%、则需要触发警报。

PWM 脉冲为5V 信号。 频率是固定的。 在本例中为482Hz。  

我可以使用微控制器轻松实现它、但是、我们希望用户自行配置阈值电平(可能使用电位器)、并且希望使其与计时器无关、因为同时会有许多此类信号。 这可能是我的控制器的重脉冲检测代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jigar、

    据我所知、与 CPLD 相比、没有"简单"的 TI 器件或电路组合能够以更低的成本/电路板面积/工作量解决此问题。 我的建议是:

    • 在 CPLD 中使用一个计数器、根据 CPLD 的"高频"时钟获得足够高的占空比高分辨率测量值。 可以通过将 CPLD 高频时钟分频来降低时间分辨率;这可以最大限度地减少所需的逻辑元件数量(可能基于测量电位器的 ADC 的分辨率、 或一些其他占空比分辨率限制)、并允许您忽略 CPLD 中的时序分析(因为即使是较长的异步逻辑链也会相对于较慢的时钟快速完成)。
    • 根据需要实例化尽可能多的块、以监控每个 PWM 信号。 每个块由以下部分组成:
      • 计数器(从0开始、在 PWM 的上升沿开始升序、在 PWM 的下降沿停止升序或进行大于比较)
      • 某处提供了具有高/低输入的幅度比较器
      • 锁存低比较并在 PWM 下降沿重新启动计数器的逻辑
      • 逻辑、以便在高电平变为高电平时立即锁存高比较
      • 计数器的异步复位和从块外部锁存(即为警报提供服务的 MCU)
    • 将上述模块的 PWM 输入连接到您的应用中的 PWM 信号(您可能需要一个电平转换器来匹配 CPLD I/O 电平)。 将比较器输出连接到单个 I/O、以便您可以在稍后解码哪个 I/O 出现故障、并在内部解码到巨型或门、以便仅将一个警报中断发送回您的微控制器。
    • 精度取决于482Hz 时钟和 CPLD 高频时钟之间的绝对频率误差。 理想情况下、您可以找到具有 PLL 的 CPLD 并调整系统基准频率、因此482Hz 和高频时钟是锁频的。 如果这是不可能的、您可以对每个 PWM 上升沿的高频时钟数量进行计数、并在需要时自动应用一些偏移以校正频率不匹配。
    • 您可能需要一种在加电后与 CPLD 进行通信的方法、这种方法可能就像例示一个 SPI/I2C/UART、并为高/低限值设置一些可寻址的"寄存器"、可能是每个块的 PWM 高/低警报状态等
    • 限制可由 MCU 定期采样并通过通信接口发送到 CPLD、也可由 CPLD 拥有自己的可使用的 ADC 外设。 考虑在上述每个测量块中添加一个针对高/低限值的寄存器缓冲器、这样、只有在计数器重新启动时才会加载新限值。

    对于极性相反方向的解决方案、您可以使用以下方法构建极低成本的解决方案:

    • 电流源(例如、可调节串联 LDO/基准、在输出和调节引脚之间连接一个电阻器)
    • 电流源输出端的电容器用于生成斜坡、放电 NFET 由反相 PWM 输入驱动
    • 由 PWM 输入驱动的开关的采样保持电路(有一些具有两个运算放大器的简单设计)
    • 一个用于设置高/低阈值的双比较器(以及一个与低比较器正输入相连的放电 NFET、由 PWM 输入驱动)
    • 或门进入 S-R 锁存器以稳定警报

    从概念上讲、这非常简单:控制电流源电容器的斜坡速率、以便在一个482Hz 周期后实现已知的合理电压(可能是 VCC/2)、在 PWM 为高电平时实现斜坡、在 PWM 为低电平时实现采样/保持。 如果斜坡电压过高或过低、触发警报。 BOM 成本可能会更高、电路板面积将远远大于使用 CPLD 的同类电路、但它实际上并不需要编程。 将存在与电路间和温度相关的变化、但有许多方法可以通过稍微调整比较器限制来校准此值。

    另一个想法:您可以使用边沿敏感相位检测器和分立式分频器电路获得一个 CD4046 PLL 以锁定每个482Hz 时钟信号。 然后、您可以在 N 分频器级上使用一个或多个离散幅度比较器(例如 CD4063B 或 SN74F521)、并且与~Ω PWM 的低比较、并且 S-R 会锁存 ORD 警报输出。 这种方法占用了大量布板空间、但成本低廉、并且可与482Hz 时钟信号进行自校准。 遗憾的是、它涉及使用 CD4046。

    另一个想法:如果您的微控制器具有482Hz 时钟的通用频率基准、您可以让微控制器(或其他一些合成器/分频器)生成一些精确的二进制倍数、例如(482 * 2^8) Hz 时钟、 并使用一些串行移位寄存器预设两个纹波计数器、以便最终位在低/高限值时变为高电平。 这可能比之前的两个分立式解决方案少一些器件、但仍占用大量布板空间。 它还需要一个能够生成482Hz 的某个二进制倍数的中央频率基准、这可能不可用;这可能可以通过始终有效 PWM 输入上的 CD4046来处理、但我不建议这样做。

    此致、

    Derek Payne