状态机实现按键消抖
module key_filter(Clk, //50M时钟输入Rst_n, //模块复位key_in, //按键输入key_flag, //按键标志信号key_state //按键状态信号);input Clk;input Rst_n;input key_in;output reg key_flag;output reg key_state;localparamIDEL = 4'b0001,FILTER0 = 4'b0010,DOWN = 4'b0100,FILTER1 = 4'b1000;reg [3:0]state;reg [19:0]cnt;reg en_cnt; //使能计数寄存器//对外部输入的异步信号进行同步处理reg key_in_sa,key_in_sb;always@(posedge Clk or negedge Rst_n)if(!Rst_n)beginkey_in_sa <= 1'b0;key_in_sb <= 1'b0;endelse beginkey_in_sa <= key_in;key_in_sb <= key_in_sa; endreg key_tmpa,key_tmpb;wire pedge,nedge;reg cnt_full;//计数满