请大家看看我的小i程序有什么问题(请尽量指出)

2019-03-25 08:51发布

我写了一个程序,但在处理按键的模块,就出现问题。发觉Verilog HDL,跟C语言很不同。有时问题,想不出原因。
下面是我的处理按键的模块的程序,我的目的是,按一按键,LED就亮或灭。
帮我看看,问题出在哪里。谢
我采用的普通C语言处理按键的方法。10MS检查一次,连续检查到两次,即认为按下一次

module KEY(led1,led2,odata,key,clk);
output led1;
output led2;
output[7:0] odata;           ////数据输出到其他模块
input key;
input clk;

reg led1;
reg led2;
reg[24:0] clkcount;
reg keydowntag;
reg[2:0] readkey;
//reg[[7:0]  adder;
reg[7:0]  odata;
reg[7:0]  dbuf;
reg[1:0]  keystate;

always @(posedge clk)
begin
clkcount=clkcount+1'b1;
end

always @ (clkcount[23])
begin
      if(key==0)                              // //当按键按下时
     begin
         if(readkey>=2)                   //当检测到2次按键信号时
          begin
               if(keystate==KEYUP)
                begin
                      keystate=2;
                       dbuf=dbuf+1;
                       odata=dbuf;
                       led1=~led1;
                       led2=1;
                       readkey=0;
                       end
                end
               else
               begin
               readkey=readkey+1;
               if(keystate==KEYDOWN)
               begin
               keystate=KEYHOLD;
              readkey=0;
              end
          end
      end
     else
     begin
     readkey=0;
      keystate=KEYUP;
  
     end
end

endmodule 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。