source: trunk/MultiChannelUSB/analyser.v@ 89

Last change on this file since 89 was 89, checked in by demin, 15 years ago

remove debug output

File size: 1.7 KB
Line 
1module analyser
2 (
3 input wire clk, reset,
4 input wire data_ready,
5 input wire [1:0] uwt_flag,
6 output wire peak_ready
7 );
8
9 reg flag_reg, flag_next;
10 reg [1:0] state_reg, state_next;
11 reg [4:0] counter_reg, counter_next;
12 reg peak_ready_reg;
13
14 wire counter_max = (&counter_reg);
15 wire peak_ready_int = (flag_reg & data_ready & uwt_flag[0] & counter_max);
16
17 always @(posedge clk)
18 begin
19 if (reset)
20 begin
21 flag_reg <= 1'b0;
22 state_reg <= 2'd0;
23 counter_reg <= 5'd0;
24 end
25 else
26 begin
27 flag_reg <= flag_next;
28 state_reg <= state_next;
29 counter_reg <= counter_next;
30 end
31 end
32
33 always @*
34 begin
35 flag_next = flag_reg;
36 state_next = state_reg;
37 counter_next = counter_reg;
38 case (state_reg)
39 0: // skip first 16 samples
40 begin
41 flag_next = 1'b0;
42 if (data_ready)
43 begin
44 counter_next = counter_reg + 5'd1;
45 if (counter_max)
46 begin
47 state_next = 2'd1;
48 end
49 end
50 end
51
52 1: // skip first 16 minima
53 begin
54 flag_next = 1'b0;
55 if (data_ready & uwt_flag[1])
56 begin
57 counter_next = counter_reg + 5'd1;
58 if (counter_max)
59 begin
60 state_next = 2'd2;
61 end
62 end
63 end
64
65 2:
66 begin
67 flag_next = 1'b1;
68 if (data_ready)
69 begin
70 if (~counter_max)
71 begin
72 counter_next = counter_reg + 5'd1;
73 end
74 if (peak_ready_int)
75 begin
76 counter_next = 5'd0;
77 end
78 end
79 end
80
81 default:
82 begin
83 flag_next = 1'b0;
84 state_next = 2'd0;
85 counter_next = 5'd0;
86 end
87 endcase
88 end
89
90 assign peak_ready = peak_ready_int;
91
92endmodule
Note: See TracBrowser for help on using the repository browser.