1 //这是一个按键复位程序 2 module stable_key( 3 i_clkin, 4 i_inKey, 5 o_outKey 6 ); 7 8 input i_clkin; 9 input i_inKey; 10 output o_outKey; 11 12 reg key=1; 13 reg key_get = 1; //key输出指示信号 14 reg [20:0] cntK = 0; 15 reg o_outKey_r = 1; 16 17 always@(posedge i_clkin) 18 if(key != i_inKey) //首先判断i_inKey信号是否有电平变化, 19 begin //如果有电平变化,计数器和输出信号指示信号复位 20 cntK <= 0; 21 key_get <= 0; //按键消抖 22 end 23 else if(cntK == 1999999) 24 begin 25 o_outKey_r <= key; 26 cntK <= 0; 27 key_get <= 1; 28 end 29 else if(key_get == 0) 30 begin 31 cntK <= cntK + 21‘b1; 32 end 33 34 key <= i_inKey; 35 36 37 assign o_outKey = o_outKey_r; 38 endmodule
程序解释:
时间: 2024-11-10 07:48:20