分享一个按键程序,通过仿真和实物验证
// key.vmodule key(
input clk, //时钟周期须约为1MS
input rst,
input keypin,//按键按下时电平为0
output reg keydir,//1 按键被按下0 按键未被按下
output reg keyinc,
output reg keydec
);
reg keyval;
reg keycnt;
always @(negedge rst or posedge clk) begin
if(!rst) begin
keyval <= 0;
keycnt <= 0;
keydir <= 0;
keyinc <= 0;
keydec <= 0;
end else begin
keyval <= keypin;
if(keypin == keyval) begin
if(keycnt< 11)
keycnt <= keycnt + 1;
if(keycnt == 10) begin
case(keyval)
3'b011: keydir <= 1;
3'b101: keyinc <= 1;
3'b110: keydec <= 1;
endcase
end
end else begin
keycnt <= 0;
end
end
if(keydir == 1) keydir <= 0; //按键输出信号只需要持续1个时钟周期
if(keyinc == 1) keyinc <= 0;
if(keydec == 1) keydec <= 0;
end
endmodule
不错,赞一个 很好,赞一个 还行,顶一个 mark
.
页:
[1]