【发布时间】:2013-11-17 02:49:42
【问题描述】:
我正在使用 DE2 板的按钮作为异步复位,但它无法工作。 这是我的 n 位寄存器模块:
module regne (D, Clock, Resetn, Q);
parameter n;
input [n-1:0] D;
input Clock, Resetn;
output reg [n-1:0] Q;
always @ (posedge Clock or negedge Resetn)
begin
if (Resetn == 0)
Q[n-1:0] <= 'b0;
else
Q[n-1:0] <= D[n-1:0];
end
endmodule
但是,重置失败。当我按下按钮时它什么也不做。我认为这是由按钮弹跳引起的。那么如何在 Verilog 中实现去抖动呢?
【问题讨论】:
-
如果你按住reset它仍然没有功能属性吗?如果不是,这是一个连接问题,而不是弹跳问题。如果长按确实会导致重置,则检查 DE2 板是否正在过滤输入。
-
您确定按钮是下拉按钮吗?当
Resetn为0时,您的代码将重置。尝试触发posedge Clock or posedge Resetn并使 if 语句读取为if (Resetn == 1)。 -
我确定 DE2 上的按钮是下拉的。即使我按住按钮一会儿它也不起作用
-
检查生成的比特流的管脚是否正确——正常情况下有多种日志文件包含此信息
标签: verilog debouncing