Changeset 186 for trunk


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

add fifth bin

Location:
trunk/3DEES
Files:
4 edited

Legend:

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

    r185 r186  
    9494
    9595        wire                    cls_flag;
    96         wire    [6:0]   cls_data;
     96        wire    [7:0]   cls_data;
    9797
    9898        wire    [1:0]   amp_mux_flag [2:0];
     
    200200                        assign int_mux_data[j] = {
    201201                                {4'd0, cls_flag, 7'd0},
    202                                 {5'd0, cls_data},
     202                                {4'd0, cls_data},
    203203                                {4'd0, amp_flag[j][0], 7'd0},
    204204                                amp_data[j][11:0],
     
    292292                                .reset(1'b0),
    293293//                              .del_data({6'd0, 6'd32, 6'd32, 6'd32}),
    294                                 .del_data({6'd0, cfg_bits[39+6*j][5:0], cfg_bits[37+6*j][5:0], cfg_bits[35+6*j][5:0]}),
     294                                .del_data({6'd0, cfg_bits[41+6*j][5:0], cfg_bits[39+6*j][5:0], cfg_bits[37+6*j][5:0]}),
    295295                                .amp_data({6'd0, 6'd20, 6'd20, 6'd20}),
    296296//                              .tau_data({16'd0, 16'd19835, 16'd19835, 16'd19835}),
    297297// exp(-32/1000)*1024*20
    298                                 .tau_data({16'd0, cfg_bits[38+6*j], cfg_bits[36+6*j], cfg_bits[34+6*j]}),
     298                                .tau_data({16'd0, cfg_bits[40+6*j], cfg_bits[38+6*j], cfg_bits[36+6*j]}),
    299299                                .inp_data({
    300300                                        19'd0, cic_data[j*3+2][18:0], cic_data[j*3+1][18:0], cic_data[j*3+0][18:0]}),
     
    341341//                      12'd20, 12'd2000, 12'd2000, 12'd20, 12'd1000, 12'd1000}),
    342342                .cfg_data({cfg_bits[33][11:0], cfg_bits[32][11:0],
     343                        cfg_bits[35][11:0], cfg_bits[34][11:0], cfg_bits[33][11:0], cfg_bits[32][11:0],
    343344                        cfg_bits[31][11:0], cfg_bits[30][11:0], cfg_bits[29][11:0], cfg_bits[28][11:0],
    344345                        cfg_bits[27][11:0], cfg_bits[26][11:0], cfg_bits[25][11:0], cfg_bits[24][11:0],
     
    357358                .reset(cfg_bits[0][5]),
    358359                .hst_good(cls_flag & cfg_bits[6][0]),
    359                 .hst_data(cls_data[5:0]),
     360                .hst_data(cls_data[6:0]),
    360361                .bus_ssel(bus_ssel[2]),
    361362                .bus_wren(bus_wren),
    362                 .bus_addr(bus_addr[6:0]),
     363                .bus_addr(bus_addr[7:0]),
    363364                .bus_mosi(bus_mosi),
    364365                .bus_miso(bus_miso[2]),
  • trunk/3DEES/UserInterface.tcl

    r184 r186  
    5656        {3_2} 13
    5757        {3_3} 14
     58        {3_4} 15
    5859        {4_0} 3
    59         {4_1} 15
    60         {4_2} 16
    61         {4_3} 17
     60        {4_1} 16
     61        {4_2} 17
     62        {4_3} 18
     63        {4_4} 19
    6264        {5_0} 4
    63         {5_1} 18
    64         {5_2} 19
    65         {5_3} 20
     65        {5_1} 20
     66        {5_2} 21
     67        {5_3} 22
     68        {5_4} 23
    6669        {6_0} 5
    67         {6_1} 21
    68         {6_2} 22
    69         {6_3} 23
     70        {6_1} 24
     71        {6_2} 25
     72        {6_3} 26
     73        {6_4} 27
    7074    }
    7175# -------------------------------------------------------------------------
     
    8286        11 3000
    8387        2    10
    84         12   31
    85         13   52
    86         14   79
    87         3    60
    88         15  135
    89         16  171
    90         17  233
    91         4   249
    92         18  348
    93         19  495
    94         20  693
    95         5   505
    96         21  606
    97         22  707
    98         23  808
    99     }
    100 
    101    
     88        12   10
     89        13   31
     90        14   52
     91        15   79
     92        3    10
     93        16   60
     94        17  135
     95        18  171
     96        19  233
     97        4    10
     98        20  249
     99        21  348
     100        22  495
     101        23  693
     102        5    10
     103        24  505
     104        25  606
     105        26  707
     106        27  808
     107    }
     108
     109
    102110# -------------------------------------------------------------------------
    103111
     
    109117        3 {af}
    110118        4 {bn}
     119        5 {bf}
    111120    }
    112121
     
    328337        trace add variable [myvar delay] write [myproc delay_update]
    329338        trace add variable [myvar thrs] write [myproc thrs_update]
    330        
     339
    331340        my delay_update
    332341        my thrs_update
     
    342351
    343352        set thrs [frame ${master}.thrs]
     353        set bins [frame ${master}.bins]
    344354        set clip [frame ${master}.clip]
    345355
     
    347357
    348358        set column 0
    349         foreach {input} [list "ADC" "thrs 1" "thrs 2" "thrs 3" "thrs 4"] {
     359        foreach {input} [list "ADC" "e thrs min" "e thrs max" "p thrs min" "p thrs max"] {
    350360            label ${config(thrs)}.label_${column} -text "${input}"
    351361            grid ${config(thrs)}.label_${column} -row 0 -column ${column} -sticky ew -padx 5 -pady 7
     
    353363        }
    354364
    355         foreach {ch id} [array get adcCodes] {
     365        foreach {ch id} [array get adcCodes {[1-2]}] {
    356366            label ${config(thrs)}.chan_${ch} -text "${id} "
    357367            grid ${config(thrs)}.chan_${ch} -row ${ch} -column 0 -sticky ew -padx 5 -pady 7
     
    367377
    368378        grid $config(thrs) -row 0 -column 0 -sticky news -padx 10
     379
     380        set config(bins) [labelframe ${bins}.frame -borderwidth 1 -relief sunken -text {Bins}]
     381
     382        set column 0
     383        foreach {input} [list "ADC" "thrs 0" "thrs 1" "thrs 2" "thrs 3" "thrs 4"] {
     384            label ${config(bins)}.label_${column} -text "${input}"
     385            grid ${config(bins)}.label_${column} -row 0 -column ${column} -sticky ew -padx 5 -pady 7
     386            incr column
     387        }
     388
     389        foreach {ch id} [array get adcCodes {[3-6]}] {
     390            label ${config(bins)}.chan_${ch} -text "${id} "
     391            grid ${config(bins)}.chan_${ch} -row ${ch} -column 0 -sticky ew -padx 5 -pady 7
     392            foreach {num} [list 0 1 2 3 4] {
     393                set column [expr {$num + 1}]
     394                set value $cfgCodes(${ch}_${num})
     395                spinbox ${config(bins)}.bins_${value} -from 0 -to 4095 \
     396                  -increment 10 -width 10 -textvariable [myvar thrs($value)] \
     397                  -validate all -vcmd {::mca::validate 4095 4 %P}
     398                grid ${config(bins)}.bins_${value} -row ${ch} -column ${column} -sticky w -padx 5 -pady 7
     399            }
     400        }
     401
     402        grid $config(bins) -row 0 -column 0 -sticky news -padx 10
    369403
    370404        set config(clip) [labelframe ${clip}.frame -borderwidth 1 -relief sunken -text {Signal clipping}]
     
    392426        grid $config(clip) -row 0 -column 0 -sticky news -padx 10
    393427
    394         grid ${thrs} -row 0 -column 1 -sticky news
     428        grid ${thrs} -row 0 -column 2 -sticky news
     429        grid ${bins} -row 0 -column 1 -sticky news
    395430        grid ${clip} -row 0 -column 0 -sticky news
    396431
    397432        grid columnconfigure ${master} 0 -weight 1
    398433        grid columnconfigure ${master} 1 -weight 1
     434        grid columnconfigure ${master} 2 -weight 1
    399435        grid rowconfigure ${master} 0 -weight 1
    400436
    401437        grid rowconfigure ${thrs} 0 -weight 0
     438        grid rowconfigure ${bins} 0 -weight 0
    402439        grid rowconfigure ${clip} 0 -weight 0
    403440    }
     
    413450            set b $decay($i).0
    414451            set value [expr int(exp(-${a}/${b})*1024*20)]
    415             append command [format {000200%02x0004%04x} [expr {34 + 2 * (${i} - 1)}] $value]
     452            append command [format {000200%02x0004%04x} [expr {36 + 2 * (${i} - 1)}] $value]
    416453        }
    417454
     
    440477
    441478        set command {}
    442         for {set i 0} {$i <= 23} {incr i} {
     479        for {set i 0} {$i <= 27} {incr i} {
    443480            append command [format {000200%02x0004%04x} [expr {10 + ${i}}] $thrs($i)]
    444481        }
     
    639676        my set data {}
    640677
    641         vector create [myvar xvec](64)
    642         vector create [myvar yvec](64)
    643 
    644         # fill one vector for the x axis with 64 points
    645         [myvar xvec] seq -0.5 63.5
     678        vector create [myvar xvec](80)
     679        vector create [myvar yvec](80)
     680
     681        # fill one vector for the x axis with 80 points
     682        [myvar xvec] seq -0.5 79.5
    646683
    647684        my setup
     
    684721        $graph grid configure -hide no
    685722        $graph legend configure -hide yes
    686         $graph axis configure x -min 0 -max 64
     723        $graph axis configure x -min 0 -max 80
    687724
    688725        set config [frame ${master}.config -width 170]
     
    845882        my instvar controller config number
    846883
    847         set size 64
     884        set size 80
    848885
    849886        set prefix [format {%x} [expr {$number + 2}]]
     
    892929
    893930    HstDisplay instproc register {} {
    894         my save_data [join [[myvar yvec] range 0 63] \n]
     931        my save_data [join [[myvar yvec] range 0 79] \n]
    895932    }
    896933
  • 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;
  • trunk/3DEES/histogram32.v

    r180 r186  
    44               
    55                input   wire                    hst_good,
    6                 input   wire    [5:0]  hst_data,
     6                input   wire    [6:0]   hst_data,
    77
    88                input   wire                    bus_ssel, bus_wren,
     
    1717        reg             [3:0]   int_case_reg, int_case_next;
    1818        reg                             int_wren_reg, int_wren_next;
    19         reg             [5:0]   int_addr_reg, int_addr_next;
     19        reg             [6:0]   int_addr_reg, int_addr_next;
    2020        reg             [31:0]  int_data_reg, int_data_next;
    2121
     
    3838                .intended_device_family("Cyclone III"),
    3939                .lpm_type("altsyncram"),
    40                 .numwords_a(64),
    41                 .numwords_b(128),
     40                .numwords_a(80),
     41                .numwords_b(160),
    4242                .operation_mode("BIDIR_DUAL_PORT"),
    4343                .outdata_aclr_a("NONE"),
     
    4949                .read_during_write_mode_port_a("NEW_DATA_NO_NBE_READ"),
    5050                .read_during_write_mode_port_b("NEW_DATA_NO_NBE_READ"),
    51                 .widthad_a(6),
    52                 .widthad_b(7),
     51                .widthad_a(7),
     52                .widthad_b(8),
    5353                .width_a(32),
    5454                .width_b(16),
     
    8686        begin
    8787                        int_wren_reg <= 1'b1;
    88                         int_addr_reg <= 6'd0;
     88                        int_addr_reg <= 7'd0;
    8989                        int_data_reg <= 32'd0;
    9090                        int_case_reg <= 4'b0;
     
    139139                        begin
    140140                                // write zeros
    141                                 int_addr_next = int_addr_reg + 6'd1;
     141                                int_addr_next = int_addr_reg + 7'd1;
    142142                                if (&int_addr_reg)
    143143                                begin
     
    187187                        begin
    188188                                int_wren_next = 1'b0;
    189                                 int_addr_next = 6'd0;
     189                                int_addr_next = 7'd0;
    190190                                int_data_next = 32'd0;
    191191                                int_case_next = 4'd0;
Note: See TracChangeset for help on using the changeset viewer.