Changeset 183


Ignore:
Timestamp:
Jan 24, 2014, 3:33:37 PM (11 years ago)
Author:
demin
Message:

fix classifier and add bin number to osc mux

Location:
trunk/3DEES
Files:
3 edited

Legend:

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

    r182 r183  
    8888        wire                    trg_flag;
    8989
    90         wire    [4*12-1:0]      int_mux_data [N-1:0];
     90        wire    [5*12-1:0]      int_mux_data [N-1:0];
    9191
    9292        wire    [1:0]   amp_flag [3*N-1:0];
     
    121121
    122122        assign  tmp_data        =       12'd0;
     123/*
    123124        assign  sys_clock       =       CLK_100MHz;
    124 /*
     125*/
    125126        sys_pll sys_pll_unit(
    126127                .inclk0(CLK_100MHz),
    127128                .c0(sys_clock));
    128 */
     129
    129130/*
    130131        sys_pll sys_pll_unit(
     
    152153                .adc_frame(sys_frame),
    153154                .adc_data({
    154                         adc_data[5], adc_data[3], adc_data[2],      // D3, D1, S2
    155                         adc_data[4], adc_data[1], adc_data[0]}));   // D2, S1_S, S1_F
     155                        adc_data[5], adc_data[3], adc_data[4],      // D3, D1, D2
     156                        adc_data[2], adc_data[1], adc_data[0]}));   // S2, S1_S, S1_F
    156157
    157158        wire    [15:0]          cfg_bits [63:0];
     
    198199                begin : MUX_DATA
    199200                        assign int_mux_data[j] = {
    200 //                              {6'd0, cls_data},
    201201//                              {4'd0, cls_flag, 7'd0},
     202                                {6'd0, cls_data},
    202203                                {4'd0, amp_flag[j][0], 7'd0},
    203204                                amp_data[j][11:0],
     
    211212
    212213        lpm_mux #(
    213                 .lpm_size(4*6),
     214                .lpm_size(5*6),
    214215                .lpm_type("LPM_MUX"),
    215216                .lpm_width(12),
     
    226227               
    227228                        lpm_mux #(
    228                                 .lpm_size(4*6),
     229                                .lpm_size(5*6),
    229230                                .lpm_type("LPM_MUX"),
    230231                                .lpm_width(12),
  • trunk/3DEES/UserInterface.tcl

    r182 r183  
    9696    variable inpCodes
    9797    array set inpCodes {
    98         0 {r}
    99         1 {c}
    100         2 {a}
    101         3 {f}
     98        0 {rs}
     99        1 {cs}
     100        2 {av}
     101        3 {af}
     102        4 {bn}
    102103    }
    103104
     
    504505        trace add variable [myvar polar] write [myproc polar_update]
    505506
    506         $config(1).chan_0_1 select
    507         $config(2).chan_0_2 select
    508         $config(3).chan_0_3 select
    509         $config(4).chan_0_4 select
    510         $config(5).chan_0_5 select
    511         $config(6).chan_2_1 select
     507        $config(1).chan_1_1 select
     508        $config(2).chan_1_2 select
     509        $config(3).chan_1_3 select
     510        $config(4).chan_1_4 select
     511        $config(5).chan_1_5 select
     512        $config(6).chan_2_4 select
    512513
    513514        foreach {ch dummy} [array get adcCodes] {
     
    536537        foreach {osc title} $oscList {
    537538            set config($osc) [labelframe ${mux}.$osc -borderwidth 1 -relief sunken -text $title]
    538             set column 1
    539539            foreach {code input} $inpList {
     540                set column [expr {$code + 1}]
    540541                label $config($osc).input_${input} -text " ${input}"
    541542                grid $config($osc).input_${input} -row 0 -column ${column} -sticky w
    542                 incr column
    543543            }
    544544            foreach {ch id} $adcList {
     
    552552                }
    553553            }
    554             set column [expr {($osc - 1) % 6}]
    555             set row [expr {($osc - 1) / 6}]
     554            set column [expr {($osc - 1) % 3}]
     555            set row [expr {($osc - 1) / 3}]
    556556            grid $config($osc) -row ${row} -column ${column} -sticky news -padx 10
    557557        }
     
    559559        set config(key) [labelframe ${key}.frame -borderwidth 1 -relief sunken -text {legend}]
    560560
    561         label $config(key).r -text "r - raw signal"
    562         grid $config(key).r -row 0 -column 0 -sticky news
    563 
    564         label $config(key).f -text "c - filtered and clipped signal"
    565         grid $config(key).f -row 0 -column 1 -sticky news
    566 
    567         label $config(key).d -text "a - amplitude"
    568         grid $config(key).d -row 0 -column 2 -sticky news
    569 
    570         label $config(key).c -text "f - amplitude flag"
    571         grid $config(key).c -row 0 -column 3 -sticky news
     561        label $config(key).rs -text "rs - raw signal"
     562        grid $config(key).rs -row 0 -column 0 -sticky news
     563
     564        label $config(key).cs -text "cs - filtered and clipped signal"
     565        grid $config(key).cs -row 0 -column 1 -sticky news
     566
     567        label $config(key).av -text "av - amplitude value"
     568        grid $config(key).av -row 0 -column 2 -sticky news
     569
     570        label $config(key).af -text "af - amplitude flag"
     571        grid $config(key).af -row 0 -column 3 -sticky news
     572
     573        label $config(key).bn -text "bn - bin number"
     574        grid $config(key).bn -row 0 -column 4 -sticky news
     575
     576        label $config(key).bf -text "bf - bin flag"
     577        grid $config(key).bf -row 0 -column 5 -sticky news
    572578
    573579        grid $config(key) -row 0 -column 0 -sticky news -padx 10
     
    603609        grid columnconfigure $config(key) 2 -weight 1
    604610        grid columnconfigure $config(key) 3 -weight 1
     611        grid columnconfigure $config(key) 4 -weight 1
     612        grid columnconfigure $config(key) 5 -weight 1
    605613
    606614
     
    608616        grid columnconfigure ${mux} 1 -weight 1
    609617        grid columnconfigure ${mux} 2 -weight 1
    610         grid columnconfigure ${mux} 3 -weight 1
    611         grid columnconfigure ${mux} 4 -weight 1
    612         grid columnconfigure ${mux} 5 -weight 1
    613618    }
    614619
     
    981986
    982987        ${config}.thrs_check select
    983         ${config}.thrs_field set 30
     988        ${config}.thrs_field set 60
    984989    }
    985990
  • trunk/3DEES/classifier.v

    r181 r183  
    1212        );
    1313
    14         reg                                     out_flag_reg, out_flag_next;
    15         reg             [5:0]           out_data_reg, out_data_next;
     14        reg                                     out_flag_reg [2:0], out_flag_next [2:0];
     15        reg             [5: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];     
     18        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];
    2020        reg             [4:0]           int_temp_reg [1:0], int_temp_next [1:0];
     
    4242                        assign int_comp_wire[j*3+1+2] = (inp_data_reg[j+2] > cfg_data[(j*3+1+2)*width+width-1:(j*3+1+2)*width]);
    4343                        assign int_comp_wire[j*3+2+2] = (inp_data_reg[j+2] > cfg_data[(j*3+2+2)*width+width-1:(j*3+2+2)*width]);
    44                 end                                                                                       
     44                end
    4545        endgenerate
    46                                
     46
    4747        generate
    4848                for (j = 0; j < 4; j = j + 1)
     
    5656                end
    5757        endgenerate
    58                
     58
    5959        always @(posedge clock)
    6060        begin
     
    6262                begin
    6363                        inp_flag_reg <= {(6){1'b0}};
    64                         out_data_reg <= {(6){1'b0}};
    65                         out_flag_reg <= 1'b0;
     64                        for (i = 0; i < 3; i = i + 1)
     65                        begin
     66                                out_data_reg[i] <= {(6){1'b0}};
     67                                out_flag_reg[i] <= 1'b0;
     68                        end
    6669                        for (i = 0; i < 6; i = i + 1)
    6770                        begin
     
    8487                begin
    8588                        inp_flag_reg <= inp_flag_next;
    86                         out_data_reg <= out_data_next;
    87                         out_flag_reg <= out_flag_next;
     89                        for (i = 0; i < 3; i = i + 1)
     90                        begin
     91                                out_data_reg[i] <= out_data_next[i];
     92                                out_flag_reg[i] <= out_flag_next[i];
     93                        end
    8894                        for (i = 0; i < 6; i = i + 1)
    8995                        begin
     
    104110                end
    105111        end
    106        
     112
    107113        always @*
    108114        begin
    109115                inp_flag_next = inp_flag_reg;
    110                 out_data_next = out_data_reg;
    111                 out_flag_next = out_flag_reg;
     116                for (i = 0; i < 3; i = i + 1)
     117                begin
     118                        out_data_next[i] = out_data_reg[i];
     119                        out_flag_next[i] = out_flag_reg[i];
     120                end
    112121                for (i = 0; i < 6; i = i + 1)
    113122                begin
     
    134143                                inp_data_next[i] = inp_data_wire[i];
    135144                        end
    136                
    137                         if (out_flag_reg)
    138                         begin
    139                                 out_flag_next = 1'b0;
     145
     146                        if (out_flag_reg[2])
     147                        begin
     148                                for (i = 0; i < 3; i = i + 1)
     149                                begin
     150                                        out_data_next[i] = {(6){1'b0}};
     151                                        out_flag_next[i] = 1'b0;
     152                                end
    140153                                for (i = 0; i < 20; i = i + 1)
    141154                                begin
     
    144157                                int_temp_next[0] = {(5){1'b0}};
    145158                                int_temp_next[1] = {(5){1'b0}};
    146                                 out_data_next = {(6){1'b0}};
    147159                        end
    148160                        else
    149161                        begin
    150                                 out_flag_next = 1'b1;
     162                                out_data_next[0] = {(6){1'b0}};         
     163                                out_data_next[1] = out_data_reg[0];
     164                                out_data_next[2] = out_data_reg[1];
     165
     166                                out_flag_next[0] = 1'b1;                               
     167                                out_flag_next[1] = out_flag_reg[0];
     168                                out_flag_next[2] = out_flag_reg[1] & (out_data_reg[1] > out_data_reg[0]);
     169
    151170                                int_pipe_next[0] = {int_pipe_reg[0][14:0], int_comp_wire[0]};
    152171                                int_pipe_next[1] = {int_pipe_reg[1][14:0], int_comp_wire[1]};
     
    170189                                        endcase
    171190                                end
    172                                
     191
    173192                                int_temp_next[0] = {int_pipe_wire[1], int_pipe_wire[0][3]^int_pipe_wire[0][2]};
    174193                                int_temp_next[1] = {1'b0, int_pipe_wire[0]};
    175194
    176195                                case (int_temp_reg[0][4:0])
    177                                         5'b00011: out_data_next[3:0] = {2'd0, int_data_next[0]};
    178                                         5'b00111: out_data_next[3:0] = {2'd1, int_data_next[1]};
    179                                         5'b01111: out_data_next[3:0] = {2'd2, int_data_next[2]};
    180                                         5'b11111: out_data_next[3:0] = {2'd3, int_data_next[3]};
    181                                         default: out_flag_next = 1'b0;
     196                                        5'b00011: out_data_next[0][3:0] = {2'd0, int_data_next[0]};
     197                                        5'b00111: out_data_next[0][3:0] = {2'd1, int_data_next[1]};
     198                                        5'b01111: out_data_next[0][3:0] = {2'd2, int_data_next[2]};
     199                                        5'b11111: out_data_next[0][3:0] = {2'd3, int_data_next[3]};
     200                                        default: out_flag_next[0] = 1'b0;
    182201                                endcase
    183        
     202
    184203                                case (int_temp_reg[1][3:0])
    185204                                        // S1_F, electron
    186                                         4'b0100: out_data_next[5:4] = 2'd0;
    187                                                                                
     205                                        4'b0100: out_data_next[0][5:4] = 2'd0;
     206
    188207                                        // S1_F, proton
    189                                         4'b0101: out_data_next[5:4] = 2'd1;
    190                                                                                  
     208                                        4'b0101: out_data_next[0][5:4] = 2'd1;
     209
    191210                                        // S1_S, electron
    192                                         4'b1000: out_data_next[5:4] = 2'd2;
    193                                                                                  
     211                                        4'b1000: out_data_next[0][5:4] = 2'd2;
     212
    194213                                        // S1_S, proton
    195                                         4'b1010: out_data_next[5:4] = 2'd3;
    196                                                                                  
    197                                         default: out_flag_next = 1'b0;
     214                                        4'b1010: out_data_next[0][5:4] = 2'd3;
     215
     216                                        default: out_flag_next[0] = 1'b0;
    198217                                endcase
    199218                        end
     
    204223//      assign out_data = {1'd0, int_comp_wire[0], int_temp_reg[1][3:0]};
    205224//      assign out_data = {1'd0, int_temp_reg[0][4:0]};
    206         assign out_data = out_data_reg;
    207         assign out_flag = out_flag_reg;
     225        assign out_data = out_data_reg[2];
     226        assign out_flag = out_flag_reg[2];
    208227
    209228endmodule
Note: See TracChangeset for help on using the changeset viewer.