发布网友 发布时间:2023-10-10 01:53
共1个回答
热心网友 时间:2024-12-02 19:56
//以下程序如果要正常运行,需要加入按键去抖部分追答所以你要添加去抖呀 在去抖程序中可设置时间,比如说5秒内,按多少次都只加/减1,超过5秒后再进行下次计算;还需要我写去抖程序吗?
always@( posedge clk )
begin
if( !rst )
begin
bt1_flag <= 1'b0;
bt2_flag <= 1'b0;
bt1_buf[WIDTH-1:0] <= 'b0; //调整WIDTH可以调整去抖精度
bt2_buf[WIDTH-1:0] <= 'b0;
end
else
begin
bt1_buf[WIDTH-1:0] <= {bt1_buf[WIDTH-2:0],button1};
bt2_buf[WIDTH-1:0] <= {bt2_buf[WIDTH-2:0],button2};
if (bt1_buf[WIDTH-1:0] == 'h00ff) //调整这个数值,可以调整去抖精度,现在0和f的个数相同,是中间去抖
begin
bt1_flag <= 1'b1; //按下一次只会产生一次脉冲无论你按多久,如果产生多个的话,加大WIDTH的数值,建议63以上试试,反正越大越好,==后面的常数也需要相应的调整
bt2_flag <= 1'b1;
end
else
begin
bt1_flag <= 1'b0;
bt2_flag <= 1'b0;
end
end
end
//我我之前发的程序中的“case ( {button1,button2} )”改为“case ( {bt1_flag,bt2_flag} )”,即可。