【问题标题】:Quartus 12 Hours Clock (Synchronous)Quartus 12 小时时钟(同步)
【发布时间】:2017-08-22 10:10:23
【问题描述】:

我正在尝试使用多个 LPM 计数器在 Quartus 中构建一个 12 小时时钟,并要求它同步运行,所有 lpm 计数器都由单个时钟源驱动。

我将 BDF 与两个计数器组合在一起来测试秒数,一个 mod-10 计数器处理“个”数字,另一个 mod-6 计数器处理“十”数字。来自 mod-10 的进位驱动 mod-6 计数器上的时钟使能引脚。一切都在模拟中按预期工作。

我试图复制这个模块来作为分钟计数器工作,除了分钟'ones' mod-10 计数器得到非常奇怪的结果。每当秒“十”计数器达到 5 时,分钟“一”开始对每个时钟脉冲进行计数,直到前一个计数器再次归零。

这是我的 BDF 的图片,以及波形模拟:

我不确定是什么导致了这个问题,因为据我了解,第二个十位的 cout 应该只在它翻转到 0 时才被断言,并且只有足够长的时间才能使分钟的增量一次。

出于好奇,我交换了两个中间计数器,看看问题是否与 mod6 cout 驱动 mod10 的方式有关,但得到相同的结果,(除了 mod 10 命中 9,然后触发mod6 对每个 clk 脉冲进行计数,直到 mod10 翻转到 0)

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: clock synchronous quartus


    【解决方案1】:

    您在分钟内增加个位数的条件是:

    秒的十位数字等于5吗?

    因此,您将每秒从 :50 增加到 :59。

    您还需要将个位数在秒内的状态作为一个因素 - 最简单的方法是将前一阶段的进位与进位进行 AND 执行。

    【讨论】:

    • 谢谢!这样就行了。出于某种原因,我认为执行仅在秒十计数器从 5 --> 0 翻转时触发为脉冲。但是你说它在秒十达到 5 时变高,并且不会再次变低,直到它会归零吗?
    • @oldmanB 正确。结转只是一个信号,表明“我目前处于最大值”。它实际上可能只是用于决定何时翻转为零的内部信号的外部化版本。
    猜你喜欢
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 2018-03-10
    相关资源
    最近更新 更多