XIVN1987 发表于 2014-9-25 11:09:12

分享一个按键程序,通过仿真和实物验证

// key.v
module 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


狂奔的蜗牛Y 发表于 2014-9-25 12:19:08

不错,赞一个

dantherman 发表于 2014-9-25 12:21:10

很好,赞一个

zhaotyue 发表于 2014-9-25 20:45:09

还行,顶一个

cyberkyg 发表于 2014-9-25 21:00:56

mark            
.
页: [1]
查看完整版本: 分享一个按键程序,通过仿真和实物验证