按键的verilog问题

[复制链接]
2491|1
 楼主| hjl240 发表于 2013-4-30 15:00 | 显示全部楼层 |阅读模式
module key(clk,key_in,key_out);
input clk;
input[3:0]key_in;//按键输入
output[3:0]key_out;
reg[3:0]dout1,dout2,dout3;
reg[3:0]a;
reg i;
//assign key_out=a;
always@(posedge clk)//按键消抖
begin        
         dout1<=key_in;
         dout2<=dout1;
         dout3<=dout2;
         a<=(dout1|dout2|dout3);
end
always@(posedge clk)
begin        
         if(a[0]==0) i=i+1;//按键按下,计一次数
end


endmodule
怎么改,在每按一次键时,i只加1?
GoldSunMonkey 发表于 2013-5-1 16:05 | 显示全部楼层
设置一个信号,让该信号检测到你按键以后置高,然后过一个周期后让其变低。
同时让时钟检测你设置的该信号,自然可以加1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

56

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部