|
網路上有些Debounce程式你可以參考- P$ l3 ^; C" N4 _
/ ^6 i: i/ Z) u: N///////////////////////////////////////////////////////////////////////////////' I& ?. s, z+ U- J
//
5 _+ A3 ?! a% S- i, F// Pushbutton Debounce Module
" s* y; j6 ?& l4 {6 A3 f+ d; v. T//
7 l$ X. b i8 f; D* `) [///////////////////////////////////////////////////////////////////////////////& [. Z4 w5 X# [" z8 B
module debounce (reset, clk, noisy, clean);& L. N: ]2 O& j3 q, }" U$ X: T
input reset, clk, noisy;
. U$ `& D) d) `8 N output clean;
* ?! L( K5 f* b, ~- T/ ^% M5 H$ P! @7 X
parameter NDELAY = 650000;
) q/ z1 [' z# K1 G+ c8 r& y: |/ p parameter NBITS = 20;# O* Q! d I. E1 e9 W
- y; }# U) j0 C1 c) U# W reg [NBITS-1:0] count;8 H: b2 w# O3 q! |
reg xnew, clean;: M% P+ U: \7 \" i8 _. l4 N! C! s
! Q* \$ ?# n @3 o always @(posedge clk)8 j* ]4 s8 r1 X9 n
if (reset) begin xnew <= noisy; clean <= noisy; count <= 0; end
v+ B, J: T. |" _8 X% o; r/ `# `4 n else if (noisy != xnew) begin xnew <= noisy; count <= 0; end
) m5 \) E" q) c" M4 q else if (count == NDELAY) clean <= xnew;
$ w/ Y3 g/ {# d else count <= count+1;
) |6 C; X. Z {, Y' Y( |% X. V6 {; J2 c5 a5 g2 j' O4 `
endmodule |
|