[求助] 数码管做电子钟

刘123   2018-9-1 17:11 楼主
我写的这个程序,想让数码管个位到九之后,产生一个脉冲,然后十位+1,但是板子上显示个位到九之后,然后个位数变到0之后,十位才+1,不知道是上面原因,哪位大佬指导一下,谢谢!

  • 电子钟程序

回复评论 (8)

看时序啊,你的pulse10s是在 counter1s等于9的时候加置1的,而counter10s是在pulse10s置1后的下一个时钟周期才加1的,所以就出现了你说的情况啊。
点赞  2018-9-1 17:44
引用: 00750 发表于 2018-9-1 17:44
看时序啊,你的pulse10s是在 counter1s等于9的时候加置1的,而counter10s是在pulse10s置1后的下一个时钟周 ...

那怎么能把脉冲提前一个时钟呢?或者还有上面改进的办法,求指导,谢谢
点赞  2018-9-1 17:48
给你参考下:
always @(posedge clk_1hz)//秒功能进程
  begin
    if(ge==4'b1001)
      begin
         ge=4'b0000;
         if(shi==3'b101)
           shi=3'b000;
         else
           shi=shi+1'b1;
      end
      
    else
      ge=ge+1'b1;
  end
点赞  2018-9-1 19:37
你把你的10s的计数器和1s计数器分成两个process就好了
点赞  2018-9-2 13:25
引用: 郝旭帅 发表于 2018-9-2 13:25
你把你的10s的计数器和1s计数器分成两个process就好了

改到两个进程中,这个pulse10s会持续两个时钟周期,十位会从零变到1之后,下个时钟还会+1,怎么让这个pulse10s只持续一个时钟呢?让他+1之后瞬间变到0

  • 2RB7ZPB}9{~SIV2GBAXYJV4.png
点赞  2018-9-2 19:05
没有人指导吗!!!!!!!!!!!!!
点赞  2018-9-2 19:52
引用: 刘123 发表于 2018-9-2 19:52
没有人指导吗!!!!!!!!!!!!!

自己弄明白了,自己解答一下吧,在counter1=9的时候,脉冲并没有置0,所以在后面加个脉冲置0的语句就OK了!
点赞  2018-9-2 21:07
引用: 刘123 发表于 2018-9-2 19:05
改到两个进程中,这个pulse10s会持续两个时钟周期,十位会从零变到1之后,下个时钟还会+1,怎么让这个pul ...

首先你在等于各位计数到9的时候拉高脉冲,其次是,十位清零的时候不是十位等于6,而是十位等于5,个位等于9的时候
点赞  2018-9-6 14:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复