我知道的已有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无效。这样可保证一次按键只有一个系统时钟的有效信号。
#include <stdioh>
void main()
{ float l,w;
float area,girth;
printf("please input length and width of the rectangle\n");
scanf("%f%f",&l,&w);
area=(lw);
girth=(2(l+w));
printf("area=%f,girth=%f\n",area,girth);
}
rst_n复位信号,通常是带n,即低电平有效;也就是说rst_n输入低电平时,内部寄存器复位。
比如:
always @ (posedge clk or negedge rst_n)
if (!rst_n)
reg1 <= 1'b0;
else
reg1 <= 1'b1;
此处可以看见,rst_n为高电平时,寄存器正常工作;低电平时,寄存器复位。
通常rst_n通过外部按键引入,例如:按键按下,则输入低电平,不按就输入高电平。
这个可以通过一个按键开关,和上拉电阻来实现。具体可以去查复位电路相关知识。
以上就是关于如何利用Verilog语言实现按键消抖全部的内容,包括:如何利用Verilog语言实现按键消抖、编写程序求矩形的面积和周长,矩形的长和宽由键盘输入、verilog 键盘ps2 接口驱动程序中有一个复位信号,请问是什么啊多大怎么接入啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)