这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 关于时钟的调试的功能,有些迷惑,请大神指教解答!!万分感谢!!!

共1条 1/1 1 跳转至

关于时钟的调试的功能,有些迷惑,请大神指教解答!!万分感谢!!!

菜鸟
2014-10-31 19:56:17     打赏

各位大神请赐教:
        最近在弄个程序,现在遇到的情况如下:
在一个always模块A中建一个reg型的变量num按键加一,然后是加到9之后,也就是按键按下了九次,但是我希望在另外的一个always模块B中根据某一条件判断成立后将其清零,重新开始检测按键计数,希望各位大神给出一点建议!!!!!!不胜感激啊!!!已经纠结了好几天的,中间试过了重新定义一个寄存器变量和wire型变量,也将这两个模块合在一起,但是还是无法再num记到9的时候,清零重新计按键的按下的个数。
我试着在always模块A中给num在满足条件下清零,但是出现错误,查阅资料后发现同一个reg型变量是不可以在不同的always模块中进行赋值驱动的。
部分程序如下:
(1 )always模块B的程序如下:
always @( posedge clk or negedge rstn  )
begin
  if (!rstn )
    begin
     d0<= 1'b0 ;
     fenge_num <= 4'b0000 ;
    end
else if (key5[0])  //如果确实是检测到了高脉冲,也就是按键发生变化。
   begin   //控制分的个位数调整
    d0 <= ~d0 ;//寄存器发生翻转。
    if( fenge_num < 9 )
     begin
      fenge_num <= fenge_num + 4'b0001 ;
     end
    else if ( (fen_ge + fenge_num) == 4'b1001 )
      begin
       fenge_num <= 4'b0000 ;
       end
     else
       fenge_num <= 4'b0000 ;  
    end
end
(2)always模块A的程序如下:
always @( posedge clk_div1 or negedge rstn  )   
begin
    if (!rstn)    //实行复位操作,然后就是执行显示0.
   begin
     miao_ge <= 4'b0000 ;
       miao_shi <= 3'b000 ;
     fen_ge <= 4'b0000 ;
     fen_shi <= 3'b000 ;
     shi_ge <= 4'b0000 ;
     shi_shi <= 2'b00 ;
   end
     else if (miao_ge == 4'b1001)
     begin
      miao_ge <= 4'b0000 ;
       if (miao_shi == 3'b101)
        begin
         miao_shi <= 3'b000 ;
          if( (fen_ge +reg_num == 4'b1001))
           begin
             fenge_num <= 4'b0000 ;
   
              fen_ge <= 4'b0000 ;
        
             if (fen_shi == 3'b101)
              begin

(3)主要是现在程序模块always中实现fenge_num重新清零,但是出现问题了!!!!
望大家赐教啊!!!程序主要是想实现按键控制时钟分的个数调整。现在的板子上的情况是:
不按按键的话,时钟计时各方面都是准确的,但是在实现按键调整分的个位(fenge)时,可以调整,但是假如调到8的时候,当秒的十位计满后分的个位加一,但是fen的个位加到9之后又跳回到8,即分个位
调整应该是没有清零,而是直接在原来的基础上再进行秒的十位计满后分的个位数自加一!!!!所以问题就来了!!!!!

(4)谢谢啊!!!刚学没有多久,问题有点没描述清楚,请大家见谅啊!!

/*程序主要是实现六个数码管显示时分秒,然后可以实现复位功能,按键可调整时分秒
,在这里板子上只有三个按键可以使用,另外的一个按键是复位按键;
(1)显然我们需要六个寄存器来存储时分秒的个位十位,然后就是一部分是动态扫描,而动态扫描的
时间时1ms,进行六个数码管扫描;数码管是1s显示,也就是需要实现两次分频操作来得到1ms和1s
(2)按键操作:

(3)存在一个问题就是当时钟时的十位数在处于处于0的时候,十位数可以很好的表现计时,
当十位数处于1的时候,也可以很好的计时,但是当时的十位数处于2时,个位数需要的显示的是0~3???
这个目前会在程序中出现。?????

*/




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]