Index: trunk/3DEES/Paella.v
===================================================================
--- trunk/3DEES/Paella.v	(revision 180)
+++ trunk/3DEES/Paella.v	(revision 181)
@@ -290,10 +290,10 @@
 				.frame(sys_frame),
 				.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, 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]}),
 				.amp_data({6'd0, 6'd20, 6'd20, 6'd20}),
-				.tau_data({16'd0, 16'd19835, 16'd19835, 16'd19835}),
+//				.tau_data({16'd0, 16'd19835, 16'd19835, 16'd19835}),
 // exp(-32/1000)*1024*20
-//				.tau_data({16'd0, cfg_bits[33+6*j], cfg_bits[32+6*j], cfg_bits[30+6*j]}),
+				.tau_data({16'd0, cfg_bits[33+6*j], cfg_bits[32+6*j], cfg_bits[30+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]}),
@@ -322,5 +322,6 @@
 				.frame(sys_frame),
 				.reset(1'b0),
-				.min_data(13'd20),
+//				.min_data(13'd20),
+				.min_data(cfg_bits[10+j][12:0]),
 				.max_data(13'd4095),
 				.inp_data(clp_data[j]),
@@ -335,7 +336,11 @@
 		.frame(sys_frame),
 		.reset(1'b0),
-		.cfg_data({12'd20, 12'd20,
-			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({12'd20, 12'd20,
+//			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_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],
+			cfg_bits[19][11:0], cfg_bits[18][11:0], cfg_bits[17][11:0], cfg_bits[16][11:0]}),
 		.inp_data({amp_data[5][11:0], amp_data[4][11:0], amp_data[0][11:0],
 			amp_data[0][11:0], amp_data[1][11:0], amp_data[0][11:0]}),
Index: trunk/3DEES/UserInterface.tcl
===================================================================
--- trunk/3DEES/UserInterface.tcl	(revision 180)
+++ trunk/3DEES/UserInterface.tcl	(revision 181)
@@ -32,12 +32,64 @@
     variable adcCodes
     array set adcCodes {
-        1 {ADC 1}
-        2 {ADC 2}
-        3 {ADC 3}
-        4 {ADC 4}
-        5 {ADC 5}
-        6 {ADC 6}
-    }
-
+        1 {S1_F}
+        2 {S1_S}
+        3 {S2}
+        4 {D1}
+        5 {D2}
+        6 {D3}
+    }
+
+# -------------------------------------------------------------------------
+
+    variable cfgCodes
+    array set cfgCodes {
+        {1_0} 0
+        {1_1} 6
+        {2_0} 1
+        {2_1} 7
+        {3_0} 2
+        {3_1} 8
+        {3_2} 9
+        {3_3} 10
+        {4_0} 3
+        {4_1} 11
+        {4_2} 12
+        {4_3} 13
+        {5_0} 4
+        {5_1} 14
+        {5_2} 15
+        {5_3} 16
+        {6_0} 5
+        {6_1} 17
+        {6_2} 18
+        {6_3} 19
+    }
+# -------------------------------------------------------------------------
+
+    variable cfgThrs
+    array set cfgThrs {
+        0  20
+        6  2000
+        1  20
+        7  2000
+        2  20
+        8  200
+        9  2000
+        10 3000
+        3  20
+        11 200
+        12 2000
+        13 3000
+        4  20
+        14 200
+        15 2000
+        16 3000
+        5  20
+        17 200
+        18 2000
+        19 3000
+    }
+
+    
 # -------------------------------------------------------------------------
 
@@ -253,22 +305,21 @@
     CfgDisplay instproc start {} {
         variable adcCodes
-        my instvar config
+        variable cfgThrs
+
+        foreach {ch id} [array get adcCodes] {
+            my set delay($ch) 32
+            my set decay($ch) 1000
+        }
+
+        foreach {i value} [array get cfgThrs] {
+            my set thrs($i) $value
+        }
 
         trace add variable [myvar decay] write [myproc decay_update]
         trace add variable [myvar delay] write [myproc delay_update]
         trace add variable [myvar thrs] write [myproc thrs_update]
-
-        foreach {ch id} [array get adcCodes] {
-            ${config(clip)}.delay_${ch} set 32
-            ${config(clip)}.decay_${ch} set 1000
-        }
-
-        for {set i 0} {$i <= 3} {incr i} {
-            ${config(thrs)}.thrs_${i} set 100
-        }
-
-        for {set i 4} {$i <= 19} {incr i} {
-            ${config(bins)}.thrs_${i} set 100
-        }
+        
+        my delay_update
+        my thrs_update
     }
 
@@ -277,4 +328,5 @@
     CfgDisplay instproc setup {} {
         variable adcCodes
+        variable cfgCodes
         my instvar number master
         my instvar config
@@ -294,10 +346,10 @@
 
         foreach {ch id} [array get adcCodes {[1-2]}] {
-            label ${config(thrs)}.chan_${ch} -text "${ch} "
+            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] {
                 set column [expr {$num + 1}]
-                set value [expr {2 * ($ch - 1) + $num}]
-                puts "${num} ${ch} ${value}"
+                set value $cfgCodes(${ch}_${num})
+                puts "${ch} ${num} ${value}"
                 spinbox ${config(thrs)}.thrs_${value} -from 0 -to 4095 \
                   -increment 10 -width 10 -textvariable [myvar thrs($value)] \
@@ -319,10 +371,10 @@
 
         foreach {ch id} [array get adcCodes {[3-6]}] {
-            label ${config(bins)}.chan_${ch} -text "${ch} "
+            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 [expr {4 * ($ch - 2) + $num}]
-                puts "${num} ${ch} ${value}"
+                set value $cfgCodes(${ch}_${num})
+                puts "${ch} ${num} ${value}"
                 spinbox ${config(bins)}.thrs_${value} -from 0 -to 4095 \
                   -increment 10 -width 10 -textvariable [myvar thrs($value)] \
@@ -344,5 +396,5 @@
 
         foreach {ch id} [array get adcCodes] {
-            label ${config(clip)}.chan_${ch} -text "${ch} "
+            label ${config(clip)}.chan_${ch} -text "${id} "
             grid ${config(clip)}.chan_${ch} -row ${ch} -column 0 -sticky ew -padx 5 -pady 7
             spinbox ${config(clip)}.delay_${ch} -from 0 -to 62 \
@@ -381,5 +433,5 @@
             set a $delay($i).0
             set b $decay($i).0
-            set value [expr int(exp(-${a}/${b})*1024*17)]
+            set value [expr int(exp(-${a}/${b})*1024*20)]
             append command [format {000200%02x0004%04x} [expr {30 + 2 * (${i} - 1)}] $value]
         }
@@ -492,6 +544,6 @@
                 incr column
             }
-            foreach {ch dummy} $adcList {
-                label $config($osc).chan_${ch} -text "${ch} "
+            foreach {ch id} $adcList {
+                label $config($osc).chan_${ch} -text "${id} "
                 grid $config($osc).chan_${ch} -row ${ch} -column 0 -sticky ew
                 foreach {code input} $inpList {
Index: trunk/3DEES/classifier.v
===================================================================
--- trunk/3DEES/classifier.v	(revision 180)
+++ trunk/3DEES/classifier.v	(revision 181)
@@ -12,10 +12,11 @@
 	);
 
-	reg					int_case_reg, int_case_next;
 	reg					out_flag_reg, out_flag_next;
 	reg		[5:0]		out_data_reg, out_data_next;
+	reg		[5:0]		inp_flag_reg, inp_flag_next;
 	reg		[width-1:0]	inp_data_reg [5:0], inp_data_next [5:0];
 	reg		[15:0]		int_pipe_reg [19:0], int_pipe_next [19:0];	
 	reg		[1:0]		int_data_reg [3:0], int_data_next [3:0];
+	reg		[4:0]		int_temp_reg [1:0], int_temp_next [1:0];
 
 	wire	[width-1:0]	inp_data_wire [5:0];
@@ -60,4 +61,5 @@
 		if (reset)
 		begin
+			inp_flag_reg <= {(6){1'b0}};
 			out_data_reg <= {(6){1'b0}};
 			out_flag_reg <= 1'b0;
@@ -74,7 +76,12 @@
 				int_data_reg[i] <= {(2){1'b0}};
 			end
+			for (i = 0; i < 2; i = i + 1)
+			begin
+				int_temp_reg[i] <= {(5){1'b0}};
+			end
 		end
 		else
 		begin
+			inp_flag_reg <= inp_flag_next;
 			out_data_reg <= out_data_next;
 			out_flag_reg <= out_flag_next;
@@ -90,4 +97,8 @@
 			begin
 				int_data_reg[i] <= int_data_next[i];
+			end
+			for (i = 0; i < 2; i = i + 1)
+			begin
+				int_temp_reg[i] <= int_temp_next[i];
 			end
 		end
@@ -96,4 +107,5 @@
 	always @*
 	begin
+		inp_flag_next = inp_flag_reg;
 		out_data_next = out_data_reg;
 		out_flag_next = out_flag_reg;
@@ -110,10 +122,15 @@
 			int_data_next[i] = int_data_reg[i];
 		end
+		for (i = 0; i < 2; i = i + 1)
+		begin
+			int_temp_next[i] = int_temp_reg[i];
+		end
 
 		if (frame)
 		begin
+			inp_flag_next = inp_flag;
 			for (i = 0; i < 6; i = i + 1)
 			begin
-				inp_data_next[i] = inp_flag[i] ? inp_data_wire[i] : {(width){1'b0}};
+				inp_data_next[i] = inp_data_wire[i];
 			end
 		
@@ -125,4 +142,6 @@
 					int_pipe_next[i] = {(16){1'b0}};
 				end
+				int_temp_next[0] = {(5){1'b0}};
+				int_temp_next[1] = {(5){1'b0}};
 				out_data_next = {(6){1'b0}};
 			end
@@ -134,5 +153,5 @@
 				for (i = 2; i < 8; i = i + 1)
 				begin
-					int_pipe_next[i] = {int_pipe_reg[i][14:0], inp_flag[i-2]};
+					int_pipe_next[i] = {int_pipe_reg[i][14:0], inp_flag_reg[i-2]};
 				end
 				for (i = 8; i < 20; i = i + 1)
@@ -151,6 +170,9 @@
 					endcase
 				end
-
-				case ({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][3]^int_pipe_wire[0][2]};
+				int_temp_next[1] = {1'b0, int_pipe_wire[0]};
+
+				case (int_temp_reg[0][4:0])
 					5'b00011: out_data_next[3:0] = {2'd0, int_data_next[0]};
 					5'b00111: out_data_next[3:0] = {2'd1, int_data_next[1]};
@@ -160,7 +182,7 @@
 				endcase
 	
-				case (int_pipe_wire[0])
+				case (int_temp_reg[1][3:0])
 					// S1_F, electron
-					4'b0001: out_data_next[5:4] = 2'd0;
+					4'b0100: out_data_next[5:4] = 2'd0;
 										
 					// S1_F, proton
@@ -168,5 +190,5 @@
 										 
 					// S1_S, electron
-					4'b0010: out_data_next[5:4] = 2'd2;
+					4'b1000: out_data_next[5:4] = 2'd2;
 										 
 					// S1_S, proton
@@ -179,6 +201,7 @@
 	end
 
-//	assign out_data = {2'd0, int_data_reg[1]};
-//	assign out_data = {2'd0, int_pipe_wire[7:4]};
+//	assign out_data = {1'd0, int_pipe_wire[1+2][2:0], int_data_reg[1]};
+//	assign out_data = {1'd0, int_comp_wire[0], int_temp_reg[1][3:0]};
+//	assign out_data = {1'd0, int_temp_reg[0][4:0]};
 	assign out_data = out_data_reg;
 	assign out_flag = out_flag_reg;
