如何利用Verilog语言实现按键消抖?

如何利用Verilog语言实现按键消抖?,第1张

我知道的已有3种:

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_...


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12454189.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存