|
- // key.v
- module key(
- input clk, //时钟周期须约为1MS
- input rst,
- input[2:0] keypin, //按键按下时电平为0
- output reg keydir, //1 按键被按下 0 按键未被按下
- output reg keyinc,
- output reg keydec
- );
- reg[2:0] keyval;
- reg[3:0] 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
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|