1:设计一个20ms的循环定乱族时器,20ms扫描一次,key_reg[1:0]用于扫描纪录并用来判断下降沿。
2:参见特权同学的消抖方法。
3:自己刚学时写的:在系统时钟上升沿,用if语句对key低电平(有效电平)判断,低的话cnt +1,加到20ms的值时,就让20ms的值付给cnt,只要禅稿按键一直按着,cnt就是20ms的值,else if判断cnt是否等于20ms值,若果是,则设置key_flag位有效,else 语句key_flag无效。这样可保证一次按键哗袭弊只有一个系统时钟的有效信号。
按键去抖 最经典的程序,你应该能看懂,自己试着改一下吧盯迹,这样才能进旅则颤步啊always @ (posedge clk or negedge rst_n)
if (!rst_n)
begin
d1 <= 1'b0
d2 <= 1'b0
d3 <= 1'b0
end
else
begin
if ( led_ctrl[0] ) d1 <= ~d1
if ( led_ctrl[1] ) d2 <= ~d2
if ( led_ctrl[2] ) d3 <= ~d3
end
assign led_d5 = d1 ? 1'b1 : 1'b0
assign led_d3 = d2 ? 1'b1 : 1'b0
assign led_d4 = d3 ? 1'b1 : 1'拆败b0
按键低电悔银平有效,led灯低电平时亮。按键按下亮,松开灭。程序较简单,为组合逻辑电路,没有按键防抖扰前烂功缓漏能。module
led(led,key)
input
key
output
led
reg
led_out
always@(key)
if(!key)
led_out=1'b0
else
led_out=1'b1
assign
led=led_...
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)