我的设计最终的功能是实现阈值的设置
目前已经实现了按键消抖和正常的加减法
消抖部分代码如下:
在设计过程中出现了按键key的值变化即加减,与设计初衷不符,最后加上了倒数第13行的判断,此步非常重要,再次判断此时的按键值,保证按键依旧是按下的。
module key_debounce(
input clk, //外部50M时钟
input rstn, //外部复位信号
input [3:0] key, //外部按键输入
output reg key_flag, //按键数据有效信号
output reg [3:0] key_value //按键消抖后的数据
);
reg [31:0] delay_cnt;
reg [ 3:0] key_reg;
always @(posedge clk or negedge rstn) begin
if (!rstn) begin
key_reg <= 4'b1111;
delay_cnt <= 32'd0;
end
else begin
key_reg <= key;
if(key_reg != key) //一旦检测到按键状态发生变化(有按键被按下或释放)
delay_cnt <= 32'd10; //给延时计数器重新装载初始值(计数时间为20ms)
else if(key_reg == key) begin //在按键状态稳定时,计数器递减,开始20ms倒计时
if(delay_cnt > 32'd0)
delay_cnt <= delay_cnt - 1'b1;

最低0.47元/天 解锁文章
1106





