请问大牛 这个消抖 中的sample_pulse 怎么理解啊
module tt(reset,clk,key,led);inputreset;
inputclk;
inputkey;
output led;
reg cnt;
always @ ( posedge clk )
if ( !reset )
cnt <= 18'd0;
else
cnt <= cnt + 1'b1;
wire sample_pulse ;
assign sample_pulse =( cnt == 18'h3ffff);
reg low_sw;
always @( posedge clk )
if ( !reset )
low_sw <= 1'b1;
else
if (sample_pulse )
low_sw <= key;
//在整个 low_sw(active_low)有效过程中取一个控制量作为 led 的控制信号
//本实例中使用 low_sw 的下降沿
reg low_sw_r; //将 low_sw 信号锁存一个时钟周期,延时不是真的“锁存”
always @ ( posedge clk )
low_sw_r <= low_sw;
wire led_ctrl;
assign led_ctrl= low_sw_r & ( !low_sw);
reg led;
always @ ( posedge clk or negedge reset)
if ( !reset)
led<= 1'b0;
else
if ( led_ctrl )
led <= ~led;
endmodule
请问大牛 这个消抖 中的sample_pulse怎么理解啊 这种做法类似于中断检测中“查询中断”的做法,也就是定时(3ffff)去查询一下引脚的电平,也可以理解为去采样一下引脚的电平。
按键可能发生在0-3ffff之间的任何一个时刻,但是sample_pulse只是在某一个时刻去采样一次而已,持续时间为1个时钟周期,然后把key值传递进来,如果有下降沿,那么led灯就翻转一次状态
页:
[1]