Ignore:
Timestamp:
Dec 21, 2009, 5:09:06 PM (15 years ago)
Author:
demin
Message:

improve timings in all components

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MultiChannelUSB/analyser.v

    r76 r84  
    44                input   wire                    data_ready,
    55                input   wire    [1:0]   uwt_flag,
    6                 output  wire                    peak_ready
     6                output  wire                    peak_ready,
     7                output  wire                    peak_debug
    78        );
    89
     10        reg                             flag_reg, flag_next;
    911        reg             [1:0]   state_reg, state_next;
    10         reg             [3:0]   counter_reg, counter_next;
    11         reg                             peak_ready_reg, peak_ready_next;
     12        reg             [4:0]   counter_reg, counter_next;
     13        reg                             peak_ready_reg;
    1214
    1315        wire                    counter_max = (&counter_reg);
     16        wire                    peak_ready_int = (flag_reg & data_ready & uwt_flag[0] & counter_max);
    1417
    1518        always @(posedge clk)
     
    1720                if (reset)
    1821                begin
     22                        flag_reg <= 1'b0;
    1923                        state_reg <= 2'd0;
    20                         counter_reg <= 4'd0;
     24                        counter_reg <= 5'd0;
    2125                        peak_ready_reg <= 1'b0;
    2226                end
    2327                else
    2428                begin
     29                        flag_reg <= flag_next;
    2530                        state_reg <= state_next;
    2631                        counter_reg <= counter_next;
    27                         peak_ready_reg <= peak_ready_next;
     32                        peak_ready_reg <= peak_ready_int;
    2833                end
    2934        end
     
    3136        always @*
    3237        begin
     38                flag_next = flag_reg;
    3339                state_next = state_reg;
    3440                counter_next = counter_reg;
    35                 peak_ready_next = peak_ready_reg;
    3641                case (state_reg)
    3742                        0: // skip first 16 samples
    3843                        begin
    39                                 peak_ready_next = 1'b0;
     44                                flag_next = 1'b0;
    4045                                if (data_ready)
    4146                                begin
    42                                         counter_next = counter_reg + 4'd1;
     47                                        counter_next = counter_reg + 5'd1;
    4348                                        if (counter_max)
    4449                                        begin
     
    5055                        1: // skip first 16 minima
    5156                        begin
     57                                flag_next = 1'b0;
    5258                                if (data_ready & uwt_flag[1])
    5359                                begin
    54                                         counter_next = counter_reg + 4'd1;
     60                                        counter_next = counter_reg + 5'd1;
    5561                                        if (counter_max)
    5662                                        begin
     
    6268                        2:
    6369                        begin
    64                                 if (data_ready & uwt_flag[0] & counter_max)
     70                                flag_next = 1'b1;
     71                                if (data_ready)
    6572                                begin
    66                                         counter_next = 4'd0;
    67                                         peak_ready_next = 1'b1;
    68                 end
    69                 else
    70                 begin
    7173                                        if (~counter_max)
    7274                                        begin
    73                                                 counter_next = counter_reg + 4'd1;
     75                                                counter_next = counter_reg + 5'd1;
    7476                                        end
    75                                         peak_ready_next = 1'b0;
    76                                 end
     77                                        if (peak_ready_int)
     78                                        begin
     79                                                counter_next = 5'd0;
     80                                        end
     81                end
    7782                        end
    7883
    7984                        default:
    8085                        begin
     86                                flag_next = 1'b0;
    8187                                state_next = 2'd0;
    82                                 counter_next = 4'd0;
    83                                 peak_ready_next = 1'b0;
     88                                counter_next = 5'd0;
    8489                        end
    8590                endcase
    8691        end
    8792
    88         assign  peak_ready = peak_ready_reg;
     93        assign  peak_ready = peak_ready_int;
     94        assign  peak_debug = peak_ready_reg;
    8995endmodule
Note: See TracChangeset for help on using the changeset viewer.