OpenCores
URL https://opencores.org/ocsvn/i2c_to_wb/i2c_to_wb/trunk

Subversion Repositories i2c_to_wb

[/] [i2c_to_wb/] [trunk/] [src/] [glitch_filter.v] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 qaztronic
// --------------------------------------------------------------------
2
//
3
// --------------------------------------------------------------------
4
 
5
 
6
`include "timescale.v"
7
 
8
 
9
module
10
  glitch_filter
11
  #(
12
    parameter SIZE = 3
13
  )
14
  (
15
    input in,
16
    output reg out,
17
 
18
    output rise,
19
    output fall,
20
 
21
    input clk,
22
    input rst
23
  );
24
 
25
 
26
  // --------------------------------------------------------------------
27
  //  in sync flop
28
  reg in_reg;
29
  always @(posedge clk)
30
    in_reg <= in;
31
 
32
 
33
  // --------------------------------------------------------------------
34
  //  glitch filter
35
  reg [(SIZE-1):0] buffer;
36
  always @(posedge clk)
37
    buffer <= { buffer[(SIZE-2):0], in_reg };
38
 
39
  wire all_hi = &{in_reg, buffer};
40
  wire all_lo = ~|{in_reg, buffer};
41
 
42
  wire out_en = (all_hi & in_reg) | (all_lo & ~in_reg);
43
 
44
  always @(posedge clk)
45
    if( out_en )
46
      out <= buffer[(SIZE-1)];
47
 
48
 
49
  // --------------------------------------------------------------------
50
  //  outputs  
51
  assign fall = all_lo & out;
52
  assign rise = all_hi & ~out;
53
 
54
 
55
endmodule
56
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.