verilog,信号变量的保持问题

我的想法是这样的:当我检测到有按键按下时,一个信号变量拉高,然后一个周期后,该变量变低。(此处按键是按下就松开的,不是常按)
verilog语言如何去实现呢?

边沿检测,很简单的,特权《深入浅出玩转FPGA》的按键消抖例程里面原理讲的很清楚,你去找一下视频吧,网上很多的
大概的程序
always @(posedge sys_clk or negedge rst_n)
begin
if(!rst_n)
key_r <= 0;
else
key_r <= key_in;
end
assign rise = key_in & ~key_r;
当key_in有上升沿的时候,rise拉高一个sys_clk周期
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-27
要消抖,一个周期肯定远小于你按下的那个时间的。追问

消抖做过了。 是啊,周期是几十ns,按下的时间是几十ms,这怎么解决

追答

按和松开的时候消抖就可以了,那个变量肯定是一直被拉高的

追问

那我想让变量只保持一个周期的高电平,怎么办

追答

另外再设一个变量,假设为inf_cur 。inf_cur 跟着按键变化而变化。
再就是自己真正的变量 inf。它只在inf_cur上升沿变化一个周期。

这样你可以编出来了么?

相似回答