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