`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2021/11/03 21:30:16
// Design Name:
// Module Name: key_top
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module key_top(
input sys_clk_p,
input sys_clk_n,
input rst_n,
input key,
output reg[3:0] led
);
wire sys_clk;
IBUFDS sys_clk_ibufgds(
.O(sys_clk),
.I(sys_clk_p),
.IB(sys_clk_n)
);
parameter ms_1 = 200_000;
reg[31:0] timer;
reg key_rsp;
always @(posedge sys_clk or negedge rst_n)
begin
if(!rst_n)
begin
led<=4'b1111;
timer<=0;
key_rsp<=0;
end
else if (sys_clk)
begin
if(key) //按键未按下
begin
key_rsp<=0;
timer<=0;
end
else
begin
if(!key_rsp)
begin
timer<=timer+1;
if(timer==ms_1*80)
begin
key_rsp<=1;
led<=led-1;
end
end
end
end
end
ila_0 myila(
.clk(sys_clk),
.probe0(key),
.probe1(led[3]),
.probe2(led[2]),
.probe3(led[1]),
.probe4(led[0])
);
endmodule
verilog led 消抖计数器
猜你喜欢
转载自blog.csdn.net/weixin_39057744/article/details/121232537
今日推荐
周排行