Index: trunk/3DEES/Paella.v
===================================================================
--- trunk/3DEES/Paella.v	(revision 183)
+++ trunk/3DEES/Paella.v	(revision 184)
@@ -94,5 +94,5 @@
 
 	wire			cls_flag;
-	wire	[5:0]	cls_data;
+	wire	[6:0]	cls_data;
 
 	wire	[1:0]	amp_mux_flag [2:0];
@@ -200,5 +200,5 @@
 			assign int_mux_data[j] = {
 //				{4'd0, cls_flag, 7'd0},
-				{6'd0, cls_data},
+				{5'd0, cls_data},
 				{4'd0, amp_flag[j][0], 7'd0},
 				amp_data[j][11:0],
@@ -292,9 +292,9 @@
 				.reset(1'b0),
 //				.del_data({6'd0, 6'd32, 6'd32, 6'd32}),
-				.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]}),
+				.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]}),
 				.amp_data({6'd0, 6'd20, 6'd20, 6'd20}),
 //				.tau_data({16'd0, 16'd19835, 16'd19835, 16'd19835}),
 // exp(-32/1000)*1024*20
-				.tau_data({16'd0, cfg_bits[34+6*j], cfg_bits[32+6*j], cfg_bits[30+6*j]}),
+				.tau_data({16'd0, cfg_bits[38+6*j], cfg_bits[36+6*j], cfg_bits[34+6*j]}),
 				.inp_data({
 					19'd0, cic_data[j*3+2][18:0], cic_data[j*3+1][18:0], cic_data[j*3+0][18:0]}),
@@ -340,5 +340,6 @@
 //			12'd20, 12'd20, 12'd20, 12'd20, 12'd2000, 12'd20,
 //			12'd20, 12'd2000, 12'd2000, 12'd20, 12'd1000, 12'd1000}),
-		.cfg_data({cfg_bits[29][11:0], cfg_bits[28][11:0],
+		.cfg_data({cfg_bits[33][11:0], cfg_bits[32][11:0],
+			cfg_bits[31][11:0], cfg_bits[30][11:0], cfg_bits[29][11:0], cfg_bits[28][11:0],
 			cfg_bits[27][11:0], cfg_bits[26][11:0], cfg_bits[25][11:0], cfg_bits[24][11:0], 
 			cfg_bits[23][11:0], cfg_bits[22][11:0], cfg_bits[21][11:0], cfg_bits[20][11:0],
@@ -356,5 +357,5 @@
 		.reset(cfg_bits[0][5]),
 		.hst_good(cls_flag & cfg_bits[6][0]),
-		.hst_data(cls_data),
+		.hst_data(cls_data[5:0]),
 		.bus_ssel(bus_ssel[2]),
 		.bus_wren(bus_wren),
Index: trunk/3DEES/UserInterface.tcl
===================================================================
--- trunk/3DEES/UserInterface.tcl	(revision 183)
+++ trunk/3DEES/UserInterface.tcl	(revision 184)
@@ -46,22 +46,26 @@
         {1_0} 0
         {1_1} 6
+        {1_2} 7
+        {1_3} 8
         {2_0} 1
-        {2_1} 7
+        {2_1} 9
+        {2_2} 10
+        {2_3} 11
         {3_0} 2
-        {3_1} 8
-        {3_2} 9
-        {3_3} 10
+        {3_1} 12
+        {3_2} 13
+        {3_3} 14
         {4_0} 3
-        {4_1} 11
-        {4_2} 12
-        {4_3} 13
+        {4_1} 15
+        {4_2} 16
+        {4_3} 17
         {5_0} 4
-        {5_1} 14
-        {5_2} 15
-        {5_3} 16
+        {5_1} 18
+        {5_2} 19
+        {5_3} 20
         {6_0} 5
-        {6_1} 17
-        {6_2} 18
-        {6_3} 19
+        {6_1} 21
+        {6_2} 22
+        {6_3} 23
     }
 # -------------------------------------------------------------------------
@@ -69,24 +73,28 @@
     variable cfgThrs
     array set cfgThrs {
-        0  8
-        6  50
-        1  8
-        7  50
-        2  10
-        8  31
-        9  52
-        10 79
-        3  60
-        11 135
-        12 171
-        13 233
-        4  249
-        14 348
-        15 495
-        16 693
-        5  505
-        17 606
-        18 707
-        19 808
+        0     8
+        6   150
+        7   200
+        8  3000
+        1     8
+        9   150
+        10  200
+        11 3000
+        2    10
+        12   31
+        13   52
+        14   79
+        3    60
+        15  135
+        16  171
+        17  233
+        4   249
+        18  348
+        19  495
+        20  693
+        5   505
+        21  606
+        22  707
+        23  808
     }
 
@@ -334,5 +342,4 @@
 
         set thrs [frame ${master}.thrs]
-        set bins [frame ${master}.bins]
         set clip [frame ${master}.clip]
 
@@ -340,5 +347,5 @@
 
         set column 0
-        foreach {input} [list "ADC" "noise thrs" "e/p thrs"] {
+        foreach {input} [list "ADC" "thrs 1" "thrs 2" "thrs 3" "thrs 4"] {
             label ${config(thrs)}.label_${column} -text "${input}"
             grid ${config(thrs)}.label_${column} -row 0 -column ${column} -sticky ew -padx 5 -pady 7
@@ -346,8 +353,8 @@
         }
 
-        foreach {ch id} [array get adcCodes {[1-2]}] {
+        foreach {ch id} [array get adcCodes] {
             label ${config(thrs)}.chan_${ch} -text "${id} "
             grid ${config(thrs)}.chan_${ch} -row ${ch} -column 0 -sticky ew -padx 5 -pady 7
-            foreach {num} [list 0 1] {
+            foreach {num} [list 0 1 2 3] {
                 set column [expr {$num + 1}]
                 set value $cfgCodes(${ch}_${num})
@@ -360,28 +367,4 @@
 
         grid $config(thrs) -row 0 -column 0 -sticky news -padx 10
-
-        set config(bins) [labelframe ${bins}.frame -borderwidth 1 -relief sunken -text {Thresholds}]
-
-        set column 0
-        foreach {input} [list "ADC" "thrs 1" "thrs 2" "thrs 3" "thrs 4"] {
-            label ${config(bins)}.label_${column} -text "${input}"
-            grid ${config(bins)}.label_${column} -row 0 -column ${column} -sticky ew -padx 5 -pady 7
-            incr column
-        }
-
-        foreach {ch id} [array get adcCodes {[3-6]}] {
-            label ${config(bins)}.chan_${ch} -text "${id} "
-            grid ${config(bins)}.chan_${ch} -row ${ch} -column 0 -sticky ew -padx 5 -pady 7
-            foreach {num} [list 0 1 2 3] {
-                set column [expr {$num + 1}]
-                set value $cfgCodes(${ch}_${num})
-                spinbox ${config(bins)}.thrs_${value} -from 0 -to 4095 \
-                  -increment 10 -width 10 -textvariable [myvar thrs($value)] \
-                  -validate all -vcmd {::mca::validate 4095 4 %P}
-                grid ${config(bins)}.thrs_${value} -row ${ch} -column ${column} -sticky w -padx 5 -pady 7
-            }
-        }
-
-        grid $config(bins) -row 0 -column 0 -sticky news -padx 10
 
         set config(clip) [labelframe ${clip}.frame -borderwidth 1 -relief sunken -text {Signal clipping}]
@@ -409,15 +392,12 @@
         grid $config(clip) -row 0 -column 0 -sticky news -padx 10
 
-        grid ${thrs} -row 0 -column 2 -sticky news
-        grid ${bins} -row 0 -column 1 -sticky news
+        grid ${thrs} -row 0 -column 1 -sticky news
         grid ${clip} -row 0 -column 0 -sticky news
 
         grid columnconfigure ${master} 0 -weight 1
         grid columnconfigure ${master} 1 -weight 1
-        grid columnconfigure ${master} 2 -weight 1
         grid rowconfigure ${master} 0 -weight 1
 
         grid rowconfigure ${thrs} 0 -weight 0
-        grid rowconfigure ${bins} 0 -weight 0
         grid rowconfigure ${clip} 0 -weight 0
     }
@@ -433,5 +413,5 @@
             set b $decay($i).0
             set value [expr int(exp(-${a}/${b})*1024*20)]
-            append command [format {000200%02x0004%04x} [expr {30 + 2 * (${i} - 1)}] $value]
+            append command [format {000200%02x0004%04x} [expr {34 + 2 * (${i} - 1)}] $value]
         }
 
@@ -446,5 +426,5 @@
         set command {}
         for {set i 1} {$i <= 6} {incr i} {
-            append command [format {000200%02x0004%04x} [expr {31 + 2 * (${i} - 1)}] $delay($i)]
+            append command [format {000200%02x0004%04x} [expr {35 + 2 * (${i} - 1)}] $delay($i)]
         }
 
@@ -460,5 +440,5 @@
 
         set command {}
-        for {set i 0} {$i <= 19} {incr i} {
+        for {set i 0} {$i <= 23} {incr i} {
             append command [format {000200%02x0004%04x} [expr {10 + ${i}}] $thrs($i)]
         }
Index: trunk/3DEES/classifier.v
===================================================================
--- trunk/3DEES/classifier.v	(revision 183)
+++ trunk/3DEES/classifier.v	(revision 184)
@@ -5,13 +5,13 @@
 	(
 		input	wire					clock, frame, reset,
-		input	wire	[14*width-1:0]	cfg_data,
+		input	wire	[18*width-1:0]	cfg_data,
 		input	wire	[6*width-1:0]	inp_data, // {D3, D2, D1, S2, S1_S, S1_F}
 		input	wire	[5:0]			inp_flag,
-		output	wire	[5:0]			out_data,
+		output	wire	[6:0]			out_data,
 		output	wire					out_flag
 	);
 
 	reg					out_flag_reg [2:0], out_flag_next [2:0];
-	reg		[5:0]		out_data_reg [2:0], out_data_next [2:0];
+	reg		[6:0]		out_data_reg [2:0], out_data_next [2:0];
 	reg		[5:0]		inp_flag_reg, inp_flag_next;
 	reg		[width-1:0]	inp_data_reg [5:0], inp_data_next [5:0];
@@ -22,5 +22,5 @@
 	wire	[width-1:0]	inp_data_wire [5:0];
 	wire	[3:0]		int_pipe_wire [5:0];
-	wire	[13:0]		int_comp_wire;
+	wire	[15:0]		int_comp_wire;
 
 	integer i;
@@ -35,11 +35,15 @@
 
 	generate
-		assign int_comp_wire[0] = (inp_data_reg[0] > cfg_data[width-1:0]);
-		assign int_comp_wire[1] = (inp_data_reg[1] > cfg_data[2*width-1:width]);
+		assign int_comp_wire[0] = inp_flag_reg[0] & (inp_data_reg[0] < cfg_data[width-1:0]);
+		assign int_comp_wire[1] = inp_flag_reg[0] & (inp_data_reg[0] > cfg_data[2*width-1:1*width]) & (inp_data_reg[0] < cfg_data[3*width-1:2*width]);
+
+		assign int_comp_wire[2] = inp_flag_reg[1] & (inp_data_reg[1] < cfg_data[4*width-1:3*width]);
+		assign int_comp_wire[3] = inp_flag_reg[1] & (inp_data_reg[1] > cfg_data[5*width-1:4*width]) & (inp_data_reg[1] < cfg_data[6*width-1:5*width]);
+
 		for (j = 0; j < 4; j = j + 1)
 		begin : CLASSIFIER_COMPARTORS
-			assign int_comp_wire[j*3+0+2] = (inp_data_reg[j+2] > cfg_data[(j*3+0+2)*width+width-1:(j*3+0+2)*width]);
-			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]);
-			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]);
+			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]);
+			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]);
+			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]);
 		end
 	endgenerate
@@ -168,7 +172,9 @@
 				out_flag_next[2] = out_flag_reg[1] & (out_data_reg[1] > out_data_reg[0]);
 
-				int_pipe_next[0] = {int_pipe_reg[0][14:0], int_comp_wire[0]};
-				int_pipe_next[1] = {int_pipe_reg[1][14:0], int_comp_wire[1]};
-				for (i = 2; i < 8; i = i + 1)
+				for (i = 0; i < 4; i = i + 1)
+				begin
+					int_pipe_next[i] = {int_pipe_reg[i][14:0], int_comp_wire[i]};
+				end
+				for (i = 4; i < 8; i = i + 1)
 				begin
 					int_pipe_next[i] = {int_pipe_reg[i][14:0], inp_flag_reg[i-2]};
@@ -176,5 +182,5 @@
 				for (i = 8; i < 20; i = i + 1)
 				begin
-					int_pipe_next[i] = {int_pipe_reg[i][14:0], int_comp_wire[i-6]};
+					int_pipe_next[i] = {int_pipe_reg[i][14:0], int_comp_wire[i-4]};
 				end
 
@@ -182,20 +188,20 @@
 				begin
 					case (int_pipe_wire[i+2][2:0])
-						3'b000: int_data_next[i] = 2'd0;
-						3'b001: int_data_next[i] = 2'd1;
-						3'b011: int_data_next[i] = 2'd2;
-						3'b111: int_data_next[i] = 2'd3;
+						3'b000: int_data_next[i] = 2'b00;
+						3'b001: int_data_next[i] = 2'b01;
+						3'b011: int_data_next[i] = 2'b10;
+						3'b111: int_data_next[i] = 2'b11;
 						default: int_data_next[i] = 2'd0;
 					endcase
 				end
 
-				int_temp_next[0] = {int_pipe_wire[1], int_pipe_wire[0][3]^int_pipe_wire[0][2]};
+				int_temp_next[0] = {int_pipe_wire[1], ^int_pipe_wire[0]};
 				int_temp_next[1] = {1'b0, int_pipe_wire[0]};
 
 				case (int_temp_reg[0][4:0])
-					5'b00011: out_data_next[0][3:0] = {2'd0, int_data_next[0]};
-					5'b00111: out_data_next[0][3:0] = {2'd1, int_data_next[1]};
-					5'b01111: out_data_next[0][3:0] = {2'd2, int_data_next[2]};
-					5'b11111: out_data_next[0][3:0] = {2'd3, int_data_next[3]};
+					5'b00011: out_data_next[0][3:0] = {2'b00, int_data_next[0]};
+					5'b00111: out_data_next[0][3:0] = {2'b01, int_data_next[1]};
+					5'b01111: out_data_next[0][3:0] = {2'b10, int_data_next[2]};
+					5'b11111: out_data_next[0][3:0] = {2'b11, int_data_next[3]};
 					default: out_flag_next[0] = 1'b0;
 				endcase
@@ -203,14 +209,14 @@
 				case (int_temp_reg[1][3:0])
 					// S1_F, electron
-					4'b0100: out_data_next[0][5:4] = 2'd0;
+					4'b0001: out_data_next[0][6:4] = 3'b100;
 
 					// S1_F, proton
-					4'b0101: out_data_next[0][5:4] = 2'd1;
+					4'b0010: out_data_next[0][6:4] = 3'b101;
 
 					// S1_S, electron
-					4'b1000: out_data_next[0][5:4] = 2'd2;
+					4'b0100: out_data_next[0][6:4] = 3'b110;
 
 					// S1_S, proton
-					4'b1010: out_data_next[0][5:4] = 2'd3;
+					4'b1000: out_data_next[0][6:4] = 3'b111;
 
 					default: out_flag_next[0] = 1'b0;
