Index: trunk/MultiChannelUSB/analyser.v
===================================================================
--- trunk/MultiChannelUSB/analyser.v	(revision 75)
+++ trunk/MultiChannelUSB/analyser.v	(revision 76)
@@ -4,7 +4,5 @@
 		input	wire			data_ready,
 		input	wire	[1:0]	uwt_flag,
-		input	wire	[11:0]	uwt_data,
-		output	wire			peak_ready,
-		output	wire	[11:0]	peak
+		output	wire			peak_ready
 	);
 
@@ -12,5 +10,6 @@
 	reg		[3:0]	counter_reg, counter_next;
 	reg				peak_ready_reg, peak_ready_next;
-	reg		[11:0]	peak_reg, peak_next;
+
+	wire			counter_max = (&counter_reg);
 
 	always @(posedge clk)
@@ -21,5 +20,4 @@
 			counter_reg <= 4'd0;
 			peak_ready_reg <= 1'b0;
-			peak_reg <= 12'd0;
 		end
 		else
@@ -28,5 +26,4 @@
 			counter_reg <= counter_next;
 			peak_ready_reg <= peak_ready_next;
-			peak_reg <= peak_next;			
 		end
 	end
@@ -37,14 +34,12 @@
 		counter_next = counter_reg;
 		peak_ready_next = peak_ready_reg;
-		peak_next = peak_reg;
 		case (state_reg)
 			0: // skip first 16 samples
 			begin
-				peak_next = 12'd0;
 				peak_ready_next = 1'b0;
 				if (data_ready)
 				begin
 					counter_next = counter_reg + 4'd1;
-					if (&counter_reg)
+					if (counter_max)
 					begin
 						state_next = 2'd1;
@@ -58,5 +53,5 @@
 				begin
 					counter_next = counter_reg + 4'd1;
-					if (&counter_reg)
+					if (counter_max)
 					begin
 						state_next = 2'd2;
@@ -65,13 +60,17 @@
 			end
 
-			2: // calculate peak height
+			2:
 			begin
-				if (data_ready & uwt_flag[0])
+				if (data_ready & uwt_flag[0] & counter_max)
 				begin
-					peak_next = uwt_data;
+					counter_next = 4'd0;
 					peak_ready_next = 1'b1;
                 end
                 else
                 begin
+					if (~counter_max)
+					begin
+						counter_next = counter_reg + 4'd1;
+					end
 					peak_ready_next = 1'b0;
 				end
@@ -80,7 +79,7 @@
 			default:
 			begin
-				peak_next = 12'd0;
+				state_next = 2'd0;
+				counter_next = 4'd0;
 				peak_ready_next = 1'b0;
-				state_next = 2'd0;
 			end
 		endcase
@@ -88,4 +87,3 @@
 
 	assign	peak_ready = peak_ready_reg;
-	assign	peak = peak_reg;
 endmodule
