Ignore:
Timestamp:
Jan 15, 2014, 4:51:59 PM (11 years ago)
Author:
demin
Message:

working classifier

File:
1 edited

Legend:

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

    r180 r181  
    1212        );
    1313
    14         reg                                     int_case_reg, int_case_next;
    1514        reg                                     out_flag_reg, out_flag_next;
    1615        reg             [5:0]           out_data_reg, out_data_next;
     16        reg             [5:0]           inp_flag_reg, inp_flag_next;
    1717        reg             [width-1:0]     inp_data_reg [5:0], inp_data_next [5:0];
    1818        reg             [15:0]          int_pipe_reg [19:0], int_pipe_next [19:0];     
    1919        reg             [1:0]           int_data_reg [3:0], int_data_next [3:0];
     20        reg             [4:0]           int_temp_reg [1:0], int_temp_next [1:0];
    2021
    2122        wire    [width-1:0]     inp_data_wire [5:0];
     
    6061                if (reset)
    6162                begin
     63                        inp_flag_reg <= {(6){1'b0}};
    6264                        out_data_reg <= {(6){1'b0}};
    6365                        out_flag_reg <= 1'b0;
     
    7476                                int_data_reg[i] <= {(2){1'b0}};
    7577                        end
     78                        for (i = 0; i < 2; i = i + 1)
     79                        begin
     80                                int_temp_reg[i] <= {(5){1'b0}};
     81                        end
    7682                end
    7783                else
    7884                begin
     85                        inp_flag_reg <= inp_flag_next;
    7986                        out_data_reg <= out_data_next;
    8087                        out_flag_reg <= out_flag_next;
     
    9097                        begin
    9198                                int_data_reg[i] <= int_data_next[i];
     99                        end
     100                        for (i = 0; i < 2; i = i + 1)
     101                        begin
     102                                int_temp_reg[i] <= int_temp_next[i];
    92103                        end
    93104                end
     
    96107        always @*
    97108        begin
     109                inp_flag_next = inp_flag_reg;
    98110                out_data_next = out_data_reg;
    99111                out_flag_next = out_flag_reg;
     
    110122                        int_data_next[i] = int_data_reg[i];
    111123                end
     124                for (i = 0; i < 2; i = i + 1)
     125                begin
     126                        int_temp_next[i] = int_temp_reg[i];
     127                end
    112128
    113129                if (frame)
    114130                begin
     131                        inp_flag_next = inp_flag;
    115132                        for (i = 0; i < 6; i = i + 1)
    116133                        begin
    117                                 inp_data_next[i] = inp_flag[i] ? inp_data_wire[i] : {(width){1'b0}};
     134                                inp_data_next[i] = inp_data_wire[i];
    118135                        end
    119136               
     
    125142                                        int_pipe_next[i] = {(16){1'b0}};
    126143                                end
     144                                int_temp_next[0] = {(5){1'b0}};
     145                                int_temp_next[1] = {(5){1'b0}};
    127146                                out_data_next = {(6){1'b0}};
    128147                        end
     
    134153                                for (i = 2; i < 8; i = i + 1)
    135154                                begin
    136                                         int_pipe_next[i] = {int_pipe_reg[i][14:0], inp_flag[i-2]};
     155                                        int_pipe_next[i] = {int_pipe_reg[i][14:0], inp_flag_reg[i-2]};
    137156                                end
    138157                                for (i = 8; i < 20; i = i + 1)
     
    151170                                        endcase
    152171                                end
    153 
    154                                 case ({int_pipe_wire[1], int_pipe_wire[0][3]^int_pipe_wire[0][2]})
     172                               
     173                                int_temp_next[0] = {int_pipe_wire[1], int_pipe_wire[0][3]^int_pipe_wire[0][2]};
     174                                int_temp_next[1] = {1'b0, int_pipe_wire[0]};
     175
     176                                case (int_temp_reg[0][4:0])
    155177                                        5'b00011: out_data_next[3:0] = {2'd0, int_data_next[0]};
    156178                                        5'b00111: out_data_next[3:0] = {2'd1, int_data_next[1]};
     
    160182                                endcase
    161183       
    162                                 case (int_pipe_wire[0])
     184                                case (int_temp_reg[1][3:0])
    163185                                        // S1_F, electron
    164                                         4'b0001: out_data_next[5:4] = 2'd0;
     186                                        4'b0100: out_data_next[5:4] = 2'd0;
    165187                                                                               
    166188                                        // S1_F, proton
     
    168190                                                                                 
    169191                                        // S1_S, electron
    170                                         4'b0010: out_data_next[5:4] = 2'd2;
     192                                        4'b1000: out_data_next[5:4] = 2'd2;
    171193                                                                                 
    172194                                        // S1_S, proton
     
    179201        end
    180202
    181 //      assign out_data = {2'd0, int_data_reg[1]};
    182 //      assign out_data = {2'd0, int_pipe_wire[7:4]};
     203//      assign out_data = {1'd0, int_pipe_wire[1+2][2:0], int_data_reg[1]};
     204//      assign out_data = {1'd0, int_comp_wire[0], int_temp_reg[1][3:0]};
     205//      assign out_data = {1'd0, int_temp_reg[0][4:0]};
    183206        assign out_data = out_data_reg;
    184207        assign out_flag = out_flag_reg;
Note: See TracChangeset for help on using the changeset viewer.