Index: /trunk/MultiChannelUSB/Paella.v
===================================================================
--- /trunk/MultiChannelUSB/Paella.v	(revision 161)
+++ /trunk/MultiChannelUSB/Paella.v	(revision 162)
@@ -116,11 +116,11 @@
 	wire	[4*12-1:0]	int_mux_data [N-1:0];
 
-	wire	[1:0]	amp_flag [2*N-1:0];
-	wire	[11:0]	amp_data [2*N-1:0];
-
-	wire	[1:0]	amp_mux_flag [1:0];
-	wire	[11:0]	amp_mux_data [1:0];
-
-	wire			cnt_good [N-1:0];
+	wire	[1:0]	amp_flag [3*N-1:0];
+	wire	[11:0]	amp_data [3*N-1:0];
+
+	wire	[1:0]	amp_mux_flag [2:0];
+	wire	[11:0]	amp_mux_data [2:0];
+
+	wire			cnt_good [3:0];
 	wire	[15:0]	cnt_bits_wire;
 
@@ -228,8 +228,8 @@
 		.lpm_width(14),
 		.lpm_widths(2)) amp_mux_unit_1 (
-		.sel(cfg_bits[8][1:0]),
+		.sel(cfg_bits[6][1:0]),
 		.data({
-			{amp_flag[4], amp_data[4]},
 			{amp_flag[2], amp_data[2]},
+			{amp_flag[1], amp_data[1]},
 			{amp_flag[0], amp_data[0]}}),
 		.result({amp_mux_flag[0], amp_mux_data[0]}));
@@ -240,10 +240,22 @@
 		.lpm_width(14),
 		.lpm_widths(2)) amp_mux_unit_2 (
-		.sel(cfg_bits[8][5:4]),
+		.sel(cfg_bits[6][5:4]),
 		.data({
 			{amp_flag[5], amp_data[5]},
-			{amp_flag[3], amp_data[3]},
-			{amp_flag[1], amp_data[1]}}),
+			{amp_flag[4], amp_data[4]},
+			{amp_flag[3], amp_data[3]}}),
 		.result({amp_mux_flag[1], amp_mux_data[1]}));
+
+	lpm_mux #(
+		.lpm_size(3),
+		.lpm_type("LPM_MUX"),
+		.lpm_width(14),
+		.lpm_widths(2)) amp_mux_unit_3 (
+		.sel(cfg_bits[6][9:8]),
+		.data({
+			{amp_flag[8], amp_data[8]},
+			{amp_flag[7], amp_data[7]},
+			{amp_flag[6], amp_data[6]}}),
+		.result({amp_mux_flag[2], amp_mux_data[2]}));
 
 	generate
@@ -329,9 +341,9 @@
 				.frame(sys_frame),
 				.reset(1'b0),
-				.cfg_data(cfg_bits[6][11:0]),
+				.cfg_data(cfg_bits[7][11:0]),
 //				.cfg_data(cfg_bits[6+2*j][11:0]),
 				.inp_data(clp_data[j]),
-				.out_flag(amp_flag[0+2*j]),
-				.out_data(amp_data[0+2*j]));
+				.out_flag(amp_flag[0+j]),
+				.out_data(amp_data[0+j]));
 
 			amplitude #(.width(12)) amplitude_unit_2 (
@@ -339,14 +351,24 @@
 				.frame(sys_frame),
 				.reset(1'b0),
-				.cfg_data(cfg_bits[7][11:0]),
+				.cfg_data(cfg_bits[8][11:0]),
 //				.cfg_data(cfg_bits[7+2*j][11:0]),
 				.inp_data(clp_data[j]),
-				.out_flag(amp_flag[1+2*j]),
-				.out_data(amp_data[1+2*j]));
+				.out_flag(amp_flag[3+j]),
+				.out_data(amp_data[3+j]));
+
+			amplitude #(.width(12)) amplitude_unit_3 (
+				.clock(sys_clock),
+				.frame(sys_frame),
+				.reset(1'b0),
+				.cfg_data(cfg_bits[9][11:0]),
+//				.cfg_data(cfg_bits[7+2*j][11:0]),
+				.inp_data(clp_data[j]),
+				.out_flag(amp_flag[6+j]),
+				.out_data(amp_data[6+j]));
 
 		end
 	endgenerate
 
-	histogram32 histogram32_unit (
+	histogram32 histogram32_unit_1 (
 		.clock(sys_clock),
 		.frame(sys_frame),
@@ -361,5 +383,5 @@
 		.bus_busy(bus_busy[2]));
 
-	counter hst_counter_unit (
+	counter hst_counter_unit_1 (
 		.clock(sys_clock),
 		.frame((sys_frame) & (~amp_mux_flag[0][1])),
@@ -376,9 +398,37 @@
 		.cnt_good(cnt_good[0]));
 
+	histogram32 histogram32_unit_2 (
+		.clock(sys_clock),
+		.frame(sys_frame),
+		.reset(cfg_bits[0][5]),
+		.hst_good((amp_mux_flag[0][0]) & (cnt_good[1]) & (cfg_bits[14][1])),
+		.hst_data(amp_mux_data[0]),
+		.bus_ssel(bus_ssel[3]),
+		.bus_wren(bus_wren),
+		.bus_addr(bus_addr[12:0]),
+		.bus_mosi(bus_mosi),
+		.bus_miso(bus_miso[3]),
+		.bus_busy(bus_busy[3]));
+
+	counter hst_counter_unit_2 (
+		.clock(sys_clock),
+		.frame((sys_frame) & (~amp_mux_flag[0][1])),
+//		.frame(sys_frame),
+		.reset(cfg_bits[0][8]),
+		.setup(cfg_bits[14][0]),
+		.count(cfg_bits[14][1]),
+		.bus_ssel(bus_ssel[6]),
+		.bus_wren(bus_wren),
+		.bus_addr(bus_addr[1:0]),
+		.bus_mosi(bus_mosi),
+		.bus_miso(bus_miso[6]),
+		.bus_busy(bus_busy[6]),
+		.cnt_good(cnt_good[1]));
+
 	histogram16 histogram16_unit (
 		.clock(sys_clock),
 		.frame(sys_frame),
 		.reset(cfg_bits[0][11]),
-		.hst_good((cnt_good[2]) & (~cnt_good[1])),
+		.hst_good((cnt_good[3]) & (~cnt_good[2])),
 		.hst_data(cnt_bits_wire),
 		.bus_ssel(bus_ssel[8]),
@@ -394,6 +444,6 @@
 //		.frame(sys_frame),
 		.reset(cfg_bits[0][12]),
-		.setup((sys_frame) & (~cnt_good[1])),
-		.count((cnt_good[2]) & (cfg_bits[16][1])),
+		.setup((sys_frame) & (~cnt_good[2])),
+		.count((cnt_good[3]) & (cfg_bits[16][1])),
 		.bus_ssel(bus_ssel[9]),
 		.bus_wren(bus_wren),
@@ -402,9 +452,9 @@
 		.bus_miso(bus_miso[9]),
 		.bus_busy(bus_busy[9]),
-		.cnt_good(cnt_good[1]));
+		.cnt_good(cnt_good[2]));
 
 	counter rmt_counter_2 (
 		.clock(sys_clock),
-		.frame((sys_frame) & (~cnt_good[1])),
+		.frame((sys_frame) & (~cnt_good[2])),
 		.reset(cfg_bits[0][13]),
 		.setup(cfg_bits[16][0]),
@@ -416,5 +466,5 @@
 		.bus_miso(bus_miso[10]),
 		.bus_busy(bus_busy[10]),
-		.cnt_good(cnt_good[2]));
+		.cnt_good(cnt_good[3]));
 
 	lpm_counter	#(
@@ -423,7 +473,7 @@
 		.lpm_type("LPM_COUNTER"),
 		.lpm_width(16)) lpm_counter_component (
-		.sclr(((sys_frame) & (cnt_good[2]) & (~cnt_good[1])) | (cfg_bits[0][11])),
-		.clock(sys_clock),
-		.cnt_en((sys_frame) & (amp_mux_flag[1][0]) & (cnt_good[1]) & (cnt_good[2]) & (cfg_bits[16][1])),
+		.sclr(((sys_frame) & (cnt_good[3]) & (~cnt_good[2])) | (cfg_bits[0][11])),
+		.clock(sys_clock),
+		.cnt_en((sys_frame) & (amp_mux_flag[1][0]) & (cnt_good[2]) & (cnt_good[3]) & (cfg_bits[16][1])),
 		.q(cnt_bits_wire));
 
Index: /trunk/MultiChannelUSB/UserInterface.tcl
===================================================================
--- /trunk/MultiChannelUSB/UserInterface.tcl	(revision 161)
+++ /trunk/MultiChannelUSB/UserInterface.tcl	(revision 162)
@@ -248,4 +248,5 @@
         set hstmux(1) 0
         set hstmux(2) 0
+        set hstmux(3) 0
 
         trace add variable [myvar chan_val] write [myproc chan_val_update]
@@ -260,10 +261,11 @@
         $config(6).chan_3_1 select
 
+        $config(7).hstmux_1_1 select
+        $config(8).hstmux_2_2 select
+        $config(9).hstmux_3_1 select
+
         for {set i 1} {$i <= 3} {incr i} {
-          $config(7).polar_$i select
-        }
-
-        $config(8).hstmux_1_1 select
-        $config(9).hstmux_2_1 select
+          $config(10).polar_$i select
+        }
     }
 
@@ -305,22 +307,30 @@
         }
 
-        set config(7) [labelframe ${master}.mux_7 -borderwidth 1 -relief sunken -text {Polarity inversion} -font {-weight bold}]
-        set config(8) [labelframe ${master}.mux_8 -borderwidth 1 -relief sunken -text {Spectrum histogram} -font {-weight bold}]
+        set config(7) [labelframe ${master}.mux_7 -borderwidth 1 -relief sunken -text {Spectrum histogram 1} -font {-weight bold}]
+        set config(8) [labelframe ${master}.mux_8 -borderwidth 1 -relief sunken -text {Spectrum histogram 2} -font {-weight bold}]
         set config(9) [labelframe ${master}.mux_9 -borderwidth 1 -relief sunken -text {Rate histogram} -font {-weight bold}]
+
+        set config(10) [labelframe ${master}.mux_10 -borderwidth 1 -relief sunken -text {Polarity inversion} -font {-weight bold}]
+
         for {set i 1} {$i <= 3} {incr i} {
           set value [expr {$i - 1}]
 
-          checkbutton $config(7).polar_$i -text "ADC $i" -variable [myvar polar($i)]
-          grid ${config(7)}.polar_$i
-
-          radiobutton $config(8).hstmux_1_$i -text "ADC $i" -variable [myvar hstmux(1)] -value $value
-          grid ${config(8)}.hstmux_1_$i
-
-          radiobutton $config(9).hstmux_2_$i -text "ADC $i" -variable [myvar hstmux(2)] -value $value
-          grid ${config(9)}.hstmux_2_$i
-        }
-        grid $config(7) -row 3 -column 0 -sticky news -padx 10 -pady 50
-        grid $config(8) -row 3 -column 1 -sticky news -padx 10 -pady 50
-        grid $config(9) -row 3 -column 2 -sticky news -padx 10 -pady 50
+          radiobutton $config(7).hstmux_1_$i -text "ADC $i" -variable [myvar hstmux(1)] -value $value
+          grid ${config(7)}.hstmux_1_$i
+
+          radiobutton $config(8).hstmux_2_$i -text "ADC $i" -variable [myvar hstmux(2)] -value $value
+          grid ${config(8)}.hstmux_2_$i
+
+          radiobutton $config(9).hstmux_3_$i -text "ADC $i" -variable [myvar hstmux(3)] -value $value
+          grid ${config(9)}.hstmux_3_$i
+
+          checkbutton $config(10).polar_$i -text "ADC $i" -variable [myvar polar($i)]
+          grid ${config(10)}.polar_$i
+        }
+        grid $config(7) -row 3 -column 0 -sticky news -padx 10 -pady 30
+        grid $config(8) -row 3 -column 1 -sticky news -padx 10 -pady 30
+        grid $config(9) -row 3 -column 2 -sticky news -padx 10 -pady 30
+
+        grid $config(10) -row 4 -column 0 -sticky news -padx 10 -pady 10
 
         grid columnconfigure ${master} 0 -weight 1
@@ -332,5 +342,6 @@
         grid rowconfigure ${master} 2 -weight 0
         grid rowconfigure ${master} 3 -weight 0
-        grid rowconfigure ${master} 4 -weight 1
+        grid rowconfigure ${master} 4 -weight 0
+        grid rowconfigure ${master} 5 -weight 1
 
     }
@@ -364,7 +375,7 @@
         my instvar controller hstmux
 
-        set value [format {%x%x} $hstmux(2) $hstmux(1)]
-
-        $controller usbCmd 00020008000400${value}
+        set value [format {%x%x%x} $hstmux(3) $hstmux(2) $hstmux(1)]
+
+        $controller usbCmd 0002000600040${value}
     }
 
@@ -587,5 +598,5 @@
         }
 
-        set val_addr [format %02x [expr {6 + 2 * ${number}}]]
+        set val_addr [format %02x [expr {7 + ${number}}]]
 
         if {$thrs} {
@@ -793,5 +804,5 @@
         set size 4096
 
-        set prefix [format {%x} [expr {$number + 2}]]
+        set prefix [format {%x} [expr {2 + ${number}}]]
 
         set value [format {%08x} [expr {$size * 2}]]
@@ -802,5 +813,5 @@
         set yvec_new [usb::integrateBlt [myvar yvec] 0]
 
-        set prefix [format {%x} [expr {$number + 5}]]
+        set prefix [format {%x} [expr {5 + ${number}}]]
         set command 0001${prefix}000000200000003000400050000
 
@@ -872,9 +883,9 @@
         my set recs 0
 
-        vector create [myvar xvec](16384)
-        vector create [myvar yvec](16384)
-
-        # fill one vector for the x axis with 16384 points
-        [myvar xvec] seq -0.5 16384.5
+        vector create [myvar xvec](4096)
+        vector create [myvar yvec](4096)
+
+        # fill one vector for the x axis with 4096 points
+        [myvar xvec] seq -0.5 4095.5
 
         my setup
@@ -930,5 +941,5 @@
         $graph grid configure -hide no
         $graph legend configure -hide yes
-        $graph axis configure x -min 0 -max 16384
+        $graph axis configure x -min 0 -max 4096
 
         set config [frame ${master}.config -width 170]
@@ -1054,5 +1065,5 @@
 
         set number 0
-        set val_addr [format %02x [expr {7 + 2 * ${number}}]]
+        set val_addr [format %02x [expr {9 + ${number}}]]
 
         if {$thrs} {
@@ -1255,5 +1266,5 @@
         my instvar cntr cntr_val recs recs_val
 
-        set size 16384
+        set size 4096
 
         set prefix [format {%x} 8]
@@ -1311,5 +1322,5 @@
 
     CntDisplay instproc register {} {
-        my save_data [join [[myvar yvec] range 0 16383] \n]
+        my save_data [join [[myvar yvec] range 0 4095] \n]
     }
 
@@ -1831,6 +1842,10 @@
 
 set window [frame ${notebook}.hst_0]
-$notebook insert end -text "Spectrum histogram" -window $window -fill both
+$notebook insert end -text "Spectrum histogram 1" -window $window -fill both
 ::mca::HstDisplay hst_0 -number 0 -master $window -controller usb
+
+set window [frame ${notebook}.hst_1]
+$notebook insert end -text "Spectrum histogram 2" -window $window -fill both
+::mca::HstDisplay hst_1 -number 1 -master $window -controller usb
 
 set window [frame ${notebook}.cnt_0]
@@ -1852,4 +1867,6 @@
 hst_0 start
 
+hst_1 start
+
 cnt_0 start
 
