From 5d69a524f81f234b3fbc41d49ba18d6f6886baba Mon Sep 17 00:00:00 2001
From: jcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>
Date: Thu, 3 Aug 2006 04:51:51 +0000
Subject: Houston, we have a trunk.

git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@3122 221aa14e-8319-0410-a670-987f0aec2ac5
---
 usrp/fpga/sdr_lib/rx_dcoffset.v | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 usrp/fpga/sdr_lib/rx_dcoffset.v

(limited to 'usrp/fpga/sdr_lib/rx_dcoffset.v')

diff --git a/usrp/fpga/sdr_lib/rx_dcoffset.v b/usrp/fpga/sdr_lib/rx_dcoffset.v
new file mode 100644
index 0000000000..3be475ed60
--- /dev/null
+++ b/usrp/fpga/sdr_lib/rx_dcoffset.v
@@ -0,0 +1,22 @@
+
+
+module rx_dcoffset (input clock, input enable, input reset, 
+		    input signed [15:0] adc_in, output signed [15:0] adc_out,
+		    input wire [6:0] serial_addr, input wire [31:0] serial_data, input serial_strobe);
+   parameter 		  MYADDR = 0;
+   
+   reg signed [31:0] 		 integrator;
+   wire signed [15:0] 		 scaled_integrator = integrator[31:16] + (integrator[31] & |integrator[15:0]);
+   assign 			 adc_out = adc_in - scaled_integrator;
+
+   // FIXME do we need signed?
+   //FIXME  What do we do when clipping?
+   always @(posedge clock)
+     if(reset)
+       integrator <= #1 32'd0;
+     else if(serial_strobe & (MYADDR == serial_addr))
+       integrator <= #1 {serial_data[15:0],16'd0};
+     else if(enable)
+       integrator <= #1 integrator + adc_out;
+
+endmodule // rx_dcoffset
-- 
cgit v1.2.3