Changeset 181 for trunk


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

working classifier

Location:
trunk/3DEES
Files:
3 edited

Legend:

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

    r180 r181  
    290290                                .frame(sys_frame),
    291291                                .reset(1'b0),
    292                                 .del_data({6'd0, 6'd32, 6'd32, 6'd32}),
    293 //                              .del_data({6'd0, cfg_bits[35+6*j][5:0], cfg_bits[33+6*j][5:0], cfg_bits[31+6*j][5:0]}),
     292//                              .del_data({6'd0, 6'd32, 6'd32, 6'd32}),
     293                                .del_data({6'd0, cfg_bits[35+6*j][5:0], cfg_bits[33+6*j][5:0], cfg_bits[31+6*j][5:0]}),
    294294                                .amp_data({6'd0, 6'd20, 6'd20, 6'd20}),
    295                                 .tau_data({16'd0, 16'd19835, 16'd19835, 16'd19835}),
     295//                              .tau_data({16'd0, 16'd19835, 16'd19835, 16'd19835}),
    296296// exp(-32/1000)*1024*20
    297 //                              .tau_data({16'd0, cfg_bits[33+6*j], cfg_bits[32+6*j], cfg_bits[30+6*j]}),
     297                                .tau_data({16'd0, cfg_bits[33+6*j], cfg_bits[32+6*j], cfg_bits[30+6*j]}),
    298298                                .inp_data({
    299299                                        19'd0, cic_data[j*3+2][18:0], cic_data[j*3+1][18:0], cic_data[j*3+0][18:0]}),
     
    322322                                .frame(sys_frame),
    323323                                .reset(1'b0),
    324                                 .min_data(13'd20),
     324//                              .min_data(13'd20),
     325                                .min_data(cfg_bits[10+j][12:0]),
    325326                                .max_data(13'd4095),
    326327                                .inp_data(clp_data[j]),
     
    335336                .frame(sys_frame),
    336337                .reset(1'b0),
    337                 .cfg_data({12'd20, 12'd20,
    338                         12'd20, 12'd20, 12'd20, 12'd20, 12'd2000, 12'd20,
    339                         12'd20, 12'd2000, 12'd2000, 12'd20, 12'd1000, 12'd1000}),
     338//              .cfg_data({12'd20, 12'd20,
     339//                      12'd20, 12'd20, 12'd20, 12'd20, 12'd2000, 12'd20,
     340//                      12'd20, 12'd2000, 12'd2000, 12'd20, 12'd1000, 12'd1000}),
     341                .cfg_data({cfg_bits[29][11:0], cfg_bits[28][11:0],
     342                        cfg_bits[27][11:0], cfg_bits[26][11:0], cfg_bits[25][11:0], cfg_bits[24][11:0],
     343                        cfg_bits[23][11:0], cfg_bits[22][11:0], cfg_bits[21][11:0], cfg_bits[20][11:0],
     344                        cfg_bits[19][11:0], cfg_bits[18][11:0], cfg_bits[17][11:0], cfg_bits[16][11:0]}),
    340345                .inp_data({amp_data[5][11:0], amp_data[4][11:0], amp_data[0][11:0],
    341346                        amp_data[0][11:0], amp_data[1][11:0], amp_data[0][11:0]}),
  • trunk/3DEES/UserInterface.tcl

    r180 r181  
    3232    variable adcCodes
    3333    array set adcCodes {
    34         1 {ADC 1}
    35         2 {ADC 2}
    36         3 {ADC 3}
    37         4 {ADC 4}
    38         5 {ADC 5}
    39         6 {ADC 6}
    40     }
    41 
     34        1 {S1_F}
     35        2 {S1_S}
     36        3 {S2}
     37        4 {D1}
     38        5 {D2}
     39        6 {D3}
     40    }
     41
     42# -------------------------------------------------------------------------
     43
     44    variable cfgCodes
     45    array set cfgCodes {
     46        {1_0} 0
     47        {1_1} 6
     48        {2_0} 1
     49        {2_1} 7
     50        {3_0} 2
     51        {3_1} 8
     52        {3_2} 9
     53        {3_3} 10
     54        {4_0} 3
     55        {4_1} 11
     56        {4_2} 12
     57        {4_3} 13
     58        {5_0} 4
     59        {5_1} 14
     60        {5_2} 15
     61        {5_3} 16
     62        {6_0} 5
     63        {6_1} 17
     64        {6_2} 18
     65        {6_3} 19
     66    }
     67# -------------------------------------------------------------------------
     68
     69    variable cfgThrs
     70    array set cfgThrs {
     71        0  20
     72        6  2000
     73        1  20
     74        7  2000
     75        2  20
     76        8  200
     77        9  2000
     78        10 3000
     79        3  20
     80        11 200
     81        12 2000
     82        13 3000
     83        4  20
     84        14 200
     85        15 2000
     86        16 3000
     87        5  20
     88        17 200
     89        18 2000
     90        19 3000
     91    }
     92
     93   
    4294# -------------------------------------------------------------------------
    4395
     
    253305    CfgDisplay instproc start {} {
    254306        variable adcCodes
    255         my instvar config
     307        variable cfgThrs
     308
     309        foreach {ch id} [array get adcCodes] {
     310            my set delay($ch) 32
     311            my set decay($ch) 1000
     312        }
     313
     314        foreach {i value} [array get cfgThrs] {
     315            my set thrs($i) $value
     316        }
    256317
    257318        trace add variable [myvar decay] write [myproc decay_update]
    258319        trace add variable [myvar delay] write [myproc delay_update]
    259320        trace add variable [myvar thrs] write [myproc thrs_update]
    260 
    261         foreach {ch id} [array get adcCodes] {
    262             ${config(clip)}.delay_${ch} set 32
    263             ${config(clip)}.decay_${ch} set 1000
    264         }
    265 
    266         for {set i 0} {$i <= 3} {incr i} {
    267             ${config(thrs)}.thrs_${i} set 100
    268         }
    269 
    270         for {set i 4} {$i <= 19} {incr i} {
    271             ${config(bins)}.thrs_${i} set 100
    272         }
     321       
     322        my delay_update
     323        my thrs_update
    273324    }
    274325
     
    277328    CfgDisplay instproc setup {} {
    278329        variable adcCodes
     330        variable cfgCodes
    279331        my instvar number master
    280332        my instvar config
     
    294346
    295347        foreach {ch id} [array get adcCodes {[1-2]}] {
    296             label ${config(thrs)}.chan_${ch} -text "${ch} "
     348            label ${config(thrs)}.chan_${ch} -text "${id} "
    297349            grid ${config(thrs)}.chan_${ch} -row ${ch} -column 0 -sticky ew -padx 5 -pady 7
    298350            foreach {num} [list 0 1] {
    299351                set column [expr {$num + 1}]
    300                 set value [expr {2 * ($ch - 1) + $num}]
    301                 puts "${num} ${ch} ${value}"
     352                set value $cfgCodes(${ch}_${num})
     353                puts "${ch} ${num} ${value}"
    302354                spinbox ${config(thrs)}.thrs_${value} -from 0 -to 4095 \
    303355                  -increment 10 -width 10 -textvariable [myvar thrs($value)] \
     
    319371
    320372        foreach {ch id} [array get adcCodes {[3-6]}] {
    321             label ${config(bins)}.chan_${ch} -text "${ch} "
     373            label ${config(bins)}.chan_${ch} -text "${id} "
    322374            grid ${config(bins)}.chan_${ch} -row ${ch} -column 0 -sticky ew -padx 5 -pady 7
    323375            foreach {num} [list 0 1 2 3] {
    324376                set column [expr {$num + 1}]
    325                 set value [expr {4 * ($ch - 2) + $num}]
    326                 puts "${num} ${ch} ${value}"
     377                set value $cfgCodes(${ch}_${num})
     378                puts "${ch} ${num} ${value}"
    327379                spinbox ${config(bins)}.thrs_${value} -from 0 -to 4095 \
    328380                  -increment 10 -width 10 -textvariable [myvar thrs($value)] \
     
    344396
    345397        foreach {ch id} [array get adcCodes] {
    346             label ${config(clip)}.chan_${ch} -text "${ch} "
     398            label ${config(clip)}.chan_${ch} -text "${id} "
    347399            grid ${config(clip)}.chan_${ch} -row ${ch} -column 0 -sticky ew -padx 5 -pady 7
    348400            spinbox ${config(clip)}.delay_${ch} -from 0 -to 62 \
     
    381433            set a $delay($i).0
    382434            set b $decay($i).0
    383             set value [expr int(exp(-${a}/${b})*1024*17)]
     435            set value [expr int(exp(-${a}/${b})*1024*20)]
    384436            append command [format {000200%02x0004%04x} [expr {30 + 2 * (${i} - 1)}] $value]
    385437        }
     
    492544                incr column
    493545            }
    494             foreach {ch dummy} $adcList {
    495                 label $config($osc).chan_${ch} -text "${ch} "
     546            foreach {ch id} $adcList {
     547                label $config($osc).chan_${ch} -text "${id} "
    496548                grid $config($osc).chan_${ch} -row ${ch} -column 0 -sticky ew
    497549                foreach {code input} $inpList {
  • 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.