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/uwt_bior31.v

    r72 r84  
    1616        localparam      index2          =       2 << (L - 1);
    1717        localparam      index3          =       3 << (L - 1);
    18         localparam      peak_index      =       ((3 << (L - 1)) + 1) >> 1;
     18        localparam      peak_index      =       ((index3 + 1) >> 1) + 1;
    1919        localparam      peak_shift      =       ((L - 1) << 1) + (L - 1);
    2020        localparam      zero            =       32'h80000000;
     
    2626        reg             [31:0]  a_reg, a_next;
    2727        reg             [31:0]  peak_reg, peak_next;
     28
     29        reg             [31:0]  tmp1_reg, tmp1_next;
     30        reg             [31:0]  tmp2_reg, tmp2_next;
     31
     32        reg                             less_reg, less_next;
     33        reg                             more_reg, more_next;
    2834
    2935        reg             [1:0]   flag_reg;
     
    3945                        peak_reg <= 0;
    4046                        flag_reg <= 0;
     47                        tmp1_reg <= 0;
     48                        tmp2_reg <= 0;
     49                        less_reg <= 1'b0;
     50                        more_reg <= 1'b0;
    4151
    4252                        for(i = 0; i <= index3; i = i + 1)
     
    5161                        peak_reg <= peak_next;
    5262                       
    53                         flag_reg[0] <= (d_reg > zero) & (d_next <= zero);
    54                         flag_reg[1] <= (d_reg < zero) & (d_next >= zero);
    55        
     63                        tmp1_reg <= tmp1_next;
     64                        tmp2_reg <= tmp2_next;
     65                        less_reg <= less_next;
     66                        more_reg <= more_next;
     67
     68                        flag_reg[0] <= (more_reg) & (~more_next);
     69                        flag_reg[1] <= (less_reg) & (~less_next);
     70                       
    5671                        // Tapped delay line: shift one
    5772                        for(i = 0; i < index3; i = i + 1)
     
    7085                // The coefficients are [1, 3, -3, -1] and [1, 3, 3, 1]
    7186
     87                tmp1_next = tap[index3] + {tap[index2][30:0], 1'b0} + tap[index2];
     88                tmp2_next = {tap[index1][30:0], 1'b0} + tap[index1] + tap[0];
     89               
     90                d_next = zero - tmp1_reg + tmp2_reg;
     91                a_next = tmp1_reg + tmp2_reg;
     92               
     93                more_next = (d_reg > zero);
     94                less_next = (d_reg < zero);
     95
     96/*             
    7297                d_next = zero - (tap[index3])
    7398                           - (tap[index2] << 1) - tap[index2]
     
    76101               
    77102                a_next = (tap[index3])
    78                            + (tap[index2] << 1) + tap[index2]
     103                           + {tap[index2] << 1} + tap[index2]
    79104                           + (tap[index1] << 1) + tap[index1]
    80105                           + (tap[0]);
    81 
     106*/
    82107                peak_next = (tap[peak_index] >> peak_shift);
    83108        end
Note: See TracChangeset for help on using the changeset viewer.