input ext_clk_25m, //外部输入25MHz时钟信号
input ext_rst_n, //外部输入复位信号,低电平有效
input[0:0] switch, //拨码开关SW3输入,ON -- 低电平;OFF -- 高电平
input key_upup,key_down, //up和down两个导航按键输入,未按下为高电平,按下后为低电平
);
//-------------------------------------
//按键抖动判断逻辑
wire key; //所有按键值相与的结果,用于按键触发判断
reg[3:0] keyr; //按键值key的缓存寄存器
assign key = key_upup & key_down;
always @(posedge ext_clk_25m or negedge ext_rst_n)
if (!ext_rst_n) keyr <= 4'b1111;
else keyr <= {keyr[2:0],key};
wire key_neg = ~keyr[2] & keyr[3]; //有按键被按下
wire key_pos = keyr[2] & ~keyr[3]; //有按键被释放
|