Index: trunk/MultiChannelUSB/baseline.v
===================================================================
--- trunk/MultiChannelUSB/baseline.v	(revision 83)
+++ trunk/MultiChannelUSB/baseline.v	(revision 83)
@@ -0,0 +1,40 @@
+module baseline
+	(
+		input	wire			clk, reset,
+		input	wire			data_ready,
+		input	wire	[1:0]	uwt_flag,
+		input	wire	[11:0]	uwt_data,
+		output	wire	[11:0]	baseline
+	);
+
+	reg		[15:0]	buffer [15:0];
+	wire	[15:0]	sample;
+
+	integer			i;
+
+	assign	sample = {4'd0, uwt_data};
+	
+	always @(posedge clk)
+	begin
+		if (reset)
+		begin
+			for(i = 0; i <= 15; i = i + 1)
+			begin
+				buffer[i] <= 12'd0;
+			end
+		end
+		else
+		begin
+			if (data_ready & uwt_flag[1])
+			begin
+				for(i = 0; i < 15; i = i + 1)
+				begin
+					buffer[i+1] <= buffer[i] + sample;
+				end
+				buffer[0] <= sample;
+			end
+		end
+	end
+
+	assign	baseline = buffer[15][15:4];
+endmodule
Index: trunk/MultiChannelUSB/trigger.v
===================================================================
--- trunk/MultiChannelUSB/trigger.v	(revision 83)
+++ trunk/MultiChannelUSB/trigger.v	(revision 83)
@@ -0,0 +1,25 @@
+module trigger
+	(
+		input	wire			clk, reset,
+		input	wire			data_ready,
+		input	wire	[11:0]  data, threshold,
+		output	wire			trigger
+	);
+	
+	reg				int_trigger;
+
+	always @(posedge clk)
+	begin
+		if (reset)
+        begin
+			int_trigger <= 1'b0;
+        end
+        else if (data_ready)
+		begin
+			int_trigger <= (data >= threshold);
+		end
+	end
+	
+	assign trigger = int_trigger;
+
+endmodule
