Ignore:
Timestamp:
Mar 18, 2014, 3:10:11 PM (11 years ago)
Author:
demin
Message:

add fifth bin

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/3DEES/classifier.v

    r184 r186  
    55        (
    66                input   wire                                    clock, frame, reset,
    7                 input   wire    [18*width-1:0]  cfg_data,
     7                input   wire    [22*width-1:0]  cfg_data,
    88                input   wire    [6*width-1:0]   inp_data, // {D3, D2, D1, S2, S1_S, S1_F}
    99                input   wire    [5:0]                   inp_flag,
    10                 output  wire    [6:0]                   out_data,
     10                output  wire    [7:0]                   out_data,
    1111                output  wire                                    out_flag
    1212        );
    1313
    1414        reg                                     out_flag_reg [2:0], out_flag_next [2:0];
    15         reg             [6:0]           out_data_reg [2:0], out_data_next [2:0];
     15        reg             [7:0]           out_data_reg [2:0], out_data_next [2:0];
    1616        reg             [5:0]           inp_flag_reg, inp_flag_next;
    1717        reg             [width-1:0]     inp_data_reg [5:0], inp_data_next [5:0];
    18         reg             [15:0]          int_pipe_reg [19:0], int_pipe_next [19:0];
    19         reg             [1:0]           int_data_reg [3:0], int_data_next [3:0];
     18        reg             [15:0]          int_pipe_reg [23:0], int_pipe_next [23:0];
     19        reg             [2:0]           int_data_reg [3:0], int_data_next [3:0];
    2020        reg             [4:0]           int_temp_reg [1:0], int_temp_next [1:0];
    2121
    2222        wire    [width-1:0]     inp_data_wire [5:0];
    2323        wire    [3:0]           int_pipe_wire [5:0];
    24         wire    [15:0]          int_comp_wire;
     24        wire    [19:0]          int_comp_wire;
    2525
    2626        integer i;
     
    4343                for (j = 0; j < 4; j = j + 1)
    4444                begin : CLASSIFIER_COMPARTORS
    45                         assign int_comp_wire[j*3+0+4] = (inp_data_reg[j+2] > cfg_data[(j*3+0+6)*width+width-1:(j*3+0+6)*width]);
    46                         assign int_comp_wire[j*3+1+4] = (inp_data_reg[j+2] > cfg_data[(j*3+1+6)*width+width-1:(j*3+1+6)*width]);
    47                         assign int_comp_wire[j*3+2+4] = (inp_data_reg[j+2] > cfg_data[(j*3+2+6)*width+width-1:(j*3+2+6)*width]);
     45                        assign int_comp_wire[j*4+0+4] = (inp_data_reg[j+2] > cfg_data[(j*4+0+6)*width+width-1:(j*4+0+6)*width]);
     46                        assign int_comp_wire[j*4+1+4] = (inp_data_reg[j+2] > cfg_data[(j*4+1+6)*width+width-1:(j*4+1+6)*width]);
     47                        assign int_comp_wire[j*4+2+4] = (inp_data_reg[j+2] > cfg_data[(j*4+2+6)*width+width-1:(j*4+2+6)*width]);
     48                        assign int_comp_wire[j*4+3+4] = (inp_data_reg[j+2] > cfg_data[(j*4+3+6)*width+width-1:(j*4+3+6)*width]);
    4849                end
    4950        endgenerate
     
    5455                    assign int_pipe_wire[0][j] = (|int_pipe_reg[j]);
    5556                    assign int_pipe_wire[1][j] = (|int_pipe_reg[j+4]);
    56                         assign int_pipe_wire[j+2][0] = (|int_pipe_reg[j*3+0+8]);
    57                         assign int_pipe_wire[j+2][1] = (|int_pipe_reg[j*3+1+8]);
    58                         assign int_pipe_wire[j+2][2] = (|int_pipe_reg[j*3+2+8]);
    59                         assign int_pipe_wire[j+2][3] = 1'b0;
     57                        assign int_pipe_wire[j+2][0] = (|int_pipe_reg[j*4+0+8]);
     58                        assign int_pipe_wire[j+2][1] = (|int_pipe_reg[j*4+1+8]);
     59                        assign int_pipe_wire[j+2][2] = (|int_pipe_reg[j*4+2+8]);
     60                        assign int_pipe_wire[j+2][3] = (|int_pipe_reg[j*4+3+8]);
    6061                end
    6162        endgenerate
     
    6869                        for (i = 0; i < 3; i = i + 1)
    6970                        begin
    70                                 out_data_reg[i] <= {(6){1'b0}};
     71                                out_data_reg[i] <= {(7){1'b0}};
    7172                                out_flag_reg[i] <= 1'b0;
    7273                        end
     
    7576                                inp_data_reg[i] <= {(width){1'b0}};
    7677                        end
    77                         for (i = 0; i < 20; i = i + 1)
     78                        for (i = 0; i < 24; i = i + 1)
    7879                        begin
    7980                                int_pipe_reg[i] <= {(16){1'b0}};
     
    8182                        for (i = 0; i < 4; i = i + 1)
    8283                        begin
    83                                 int_data_reg[i] <= {(2){1'b0}};
     84                                int_data_reg[i] <= {(3){1'b0}};
    8485                        end
    8586                        for (i = 0; i < 2; i = i + 1)
     
    100101                                inp_data_reg[i] <= inp_data_next[i];
    101102                        end
    102                         for (i = 0; i < 20; i = i + 1)
     103                        for (i = 0; i < 24; i = i + 1)
    103104                        begin
    104105                                int_pipe_reg[i] <= int_pipe_next[i];
     
    127128                        inp_data_next[i] = inp_data_reg[i];
    128129                end
    129                 for (i = 0; i < 20; i = i + 1)
     130                for (i = 0; i < 24; i = i + 1)
    130131                begin
    131132                        int_pipe_next[i] = int_pipe_reg[i];
     
    152153                                for (i = 0; i < 3; i = i + 1)
    153154                                begin
    154                                         out_data_next[i] = {(6){1'b0}};
     155                                        out_data_next[i] = {(7){1'b0}};
    155156                                        out_flag_next[i] = 1'b0;
    156157                                end
    157                                 for (i = 0; i < 20; i = i + 1)
     158                                for (i = 0; i < 24; i = i + 1)
    158159                                begin
    159160                                        int_pipe_next[i] = {(16){1'b0}};
     
    164165                        else
    165166                        begin
    166                                 out_data_next[0] = {(6){1'b0}};         
     167                                out_data_next[0] = {(7){1'b0}};         
    167168                                out_data_next[1] = out_data_reg[0];
    168169                                out_data_next[2] = out_data_reg[1];
     
    172173                                out_flag_next[2] = out_flag_reg[1] & (out_data_reg[1] > out_data_reg[0]);
    173174
     175                                for (i = 0; i < 5; i = i + 1)
     176                                begin
     177                                        int_pipe_next[i] = {int_pipe_reg[i][14:0], int_comp_wire[i]};
     178                                end
     179                                for (i = 4; i < 8; i = i + 1)
     180                                begin
     181                                        int_pipe_next[i] = {int_pipe_reg[i][14:0], inp_flag_reg[i-2]};
     182                                end
     183                                for (i = 8; i < 24; i = i + 1)
     184                                begin
     185                                        int_pipe_next[i] = {int_pipe_reg[i][14:0], int_comp_wire[i-4]};
     186                                end
     187
    174188                                for (i = 0; i < 4; i = i + 1)
    175189                                begin
    176                                         int_pipe_next[i] = {int_pipe_reg[i][14:0], int_comp_wire[i]};
    177                                 end
    178                                 for (i = 4; i < 8; i = i + 1)
    179                                 begin
    180                                         int_pipe_next[i] = {int_pipe_reg[i][14:0], inp_flag_reg[i-2]};
    181                                 end
    182                                 for (i = 8; i < 20; i = i + 1)
    183                                 begin
    184                                         int_pipe_next[i] = {int_pipe_reg[i][14:0], int_comp_wire[i-4]};
    185                                 end
    186 
    187                                 for (i = 0; i < 4; i = i + 1)
    188                                 begin
    189                                         case (int_pipe_wire[i+2][2:0])
    190                                                 3'b000: int_data_next[i] = 2'b00;
    191                                                 3'b001: int_data_next[i] = 2'b01;
    192                                                 3'b011: int_data_next[i] = 2'b10;
    193                                                 3'b111: int_data_next[i] = 2'b11;
    194                                                 default: int_data_next[i] = 2'd0;
     190                                        case (int_pipe_wire[i+2][3:0])
     191                                                4'b0000: int_data_next[i] = 3'b000;
     192                                                4'b0001: int_data_next[i] = 3'b001;
     193                                                4'b0011: int_data_next[i] = 3'b010;
     194                                                4'b0111: int_data_next[i] = 3'b011;
     195                                                4'b1111: int_data_next[i] = 3'b100;
     196                                                default: int_data_next[i] = 3'b000;
    195197                                        endcase
    196198                                end
     
    200202
    201203                                case (int_temp_reg[0][4:0])
    202                                         5'b00011: out_data_next[0][3:0] = {2'b00, int_data_next[0]};
    203                                         5'b00111: out_data_next[0][3:0] = {2'b01, int_data_next[1]};
    204                                         5'b01111: out_data_next[0][3:0] = {2'b10, int_data_next[2]};
    205                                         5'b11111: out_data_next[0][3:0] = {2'b11, int_data_next[3]};
     204                                        5'b00011: out_data_next[0][4:0] = int_data_next[0];
     205                                        5'b00111: out_data_next[0][4:0] = int_data_next[1] + 4'd5;
     206                                        5'b01111: out_data_next[0][4:0] = int_data_next[2] + 4'd10;
     207                                        5'b11111: out_data_next[0][4:0] = int_data_next[3] + 4'd15;
    206208                                        default: out_flag_next[0] = 1'b0;
    207209                                endcase
     
    209211                                case (int_temp_reg[1][3:0])
    210212                                        // S1_F, electron
    211                                         4'b0001: out_data_next[0][6:4] = 3'b100;
     213                                        4'b0001: out_data_next[0][7:5] = 3'b100;
    212214
    213215                                        // S1_F, proton
    214                                         4'b0010: out_data_next[0][6:4] = 3'b101;
     216                                        4'b0010: out_data_next[0][7:5] = 3'b101;
    215217
    216218                                        // S1_S, electron
    217                                         4'b0100: out_data_next[0][6:4] = 3'b110;
     219                                        4'b0100: out_data_next[0][7:5] = 3'b110;
    218220
    219221                                        // S1_S, proton
    220                                         4'b1000: out_data_next[0][6:4] = 3'b111;
     222                                        4'b1000: out_data_next[0][7:5] = 3'b111;
    221223
    222224                                        default: out_flag_next[0] = 1'b0;
Note: See TracChangeset for help on using the changeset viewer.