always@(posedge clk) begin //消抖计时
if(in == 1'b1) //抖动即重新开始
cnt_xd <= 0;
else if(cnt_xd == xd)
cnt_xd <= xd;
else
cnt_xd <= cnt_xd + 1;
end
always@(posedge clk) begin
if(cnt_xd == 0)
key_out <= 0;
else if(cnt_xd == (xd - 21'b1))//产生1个时间单位按键信号
case(in) //根据键入得到对应的值
1'b1: key_out <= 0;
1'b0: key_out <= 1;
endcase
else
key_out <= 0; //0表示无按键按下
end