Quartus 12 小时时钟(同步)

Posted

技术标签:

【中文标题】Quartus 12 小时时钟(同步)【英文标题】:Quartus 12 Hours Clock (Synchronous) 【发布时间】: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)

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

【问题讨论】:

【参考方案1】:

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

秒的十位数字等于5吗?

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

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

【讨论】:

谢谢!这样就行了。出于某种原因,我认为执行仅在秒十计数器从 5 --> 0 翻转时触发为脉冲。但是你说它在秒十达到 5 时变高,并且不会再次变低,直到它会归零吗? @oldmanB 正确。结转只是一个信号,表明“我目前处于最大值”。它实际上可能只是用于决定何时翻转为零的内部信号的外部化版本。

以上是关于Quartus 12 小时时钟(同步)的主要内容,如果未能解决你的问题,请参考以下文章

quartus ii 波形调试时怎样将时钟脉冲调为1khz

quartus里用原理图的方法进行仿真时,为啥输出比输入延迟了一个时钟周期,有啥解决的办法吗?

如何将 tktimepicker 默认时钟类型从 12 小时更改为 24 小时?

quartus中dll为什么写入不了

Quartus中添加时序约束

js实现12小时时钟