按键的verilog问题
-
-
zhangdanni
- LV0工程师
-
| 2013-04-30 14:58:00
- 浏览量 845
- 回复:4
module key(clk,key_in,key_out);
input clk;
inputkey_in;//按键输入
outputkey_out;
regdout1,dout2,dout3;
rega;
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) i=i+1;//按键按下,计一次数
end
endmodule
怎么改,在每按一次键时,i只加1?
module key(clk,key_in,key_out);
input clk;
inputkey_in;//按键输入
outputkey_out;
regdout1,dout2,dout3;
rega;
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) i=i+1;//按键按下,计一次数
end
endmodule
怎么改,在每按一次键时,i只加1?
具体是:按键按下才计时,不按不计时。
再做一个单脉冲发生器。
其实就是两个D触发器,加个与门或者或门(看按键的电平而定),这个在网上找找就有啦,很简单的。就搜FPGA按键消抖电路。