我尝试使用多个LPM计数器在Quartus中构建一个12小时的时钟,并要求它同步运行,所有lpm计数器都由一个时钟源驱动。
我把BDF和两个计数器放在一起测试秒数,一个mod-10计数器处理'数字,另一个mod-6计数器处理'数字'数字。 mod-10的执行驱动mod-6计数器上的时钟使能引脚。一切都在模拟中按预期工作。
我试图复制这个模块作为分钟计数器,除了我得到非常奇怪的结果与分钟'那些' mod-10计数器。每当秒数'数秒'反击5,分钟'分钟'开始计算每个时钟脉冲,直到前一个计数器再次滚动到零。
这是我的BDF图片,以及波形模拟:
我不确定是什么造成了这个问题,因为根据我的理解,来自后十位的cout只有在它翻到0时才会声明,并且只有足够长的时间以便分钟一个人增加一次。
出于好奇心的缘故,我换了两个中间计数器,看看这个问题是否与mod6 cout如何驱动mod10有关,但得到了相同的结果,(除了mod十次点击9,然后触发了mod6计算每个clk脉冲直到mod10翻到0)
任何帮助都将不胜感激,谢谢。
答案 0 :(得分:0)
您在分钟内增加个位数的条件是:
秒的十位数是否等于5?
因此,您将每秒从50增加到:59。
你需要在秒内将数字的状态设为一个因子 - 最简单的方法是使用前一阶段的进位来执行AND。