[USRP-users] Removing DC offset on USRP B200
olivergwayne at gmail.com
Wed Oct 11 20:23:04 EDT 2017
I've implemented a DDS signal on the USRP device. In radio_legacy.v, I
input get_tx_I and get_tx_Q as my I and Q channels.
always @(posedge radio_clk) begin tx[31:16] <= (run_tx) ?
get_tx_I[31:16] : tx_idle[31:16]; // I channel tx[15:0] <= (run_tx) ?
get_tx_Q[31:16] : tx_idle[15:0]; // Q channel end These are 32 bit
registers and I calculate the value of get_tx_I and get_tx_Q in external
modules. Currently I use 10 bit registers in my sine lookup table, so
sine = 340;
sine = 342;
And I sum several of these sine terms, then set get_tx_I(Q) equal to their
sum. The problem is this has a DC offset, which means that that the local
oscillator signal also shows up in my spectrum, which I don't want. When I
try to kill the DC offset, so I write
sine = 0;
sine = 1;
Then I still get a local oscillator term, but also get garbage in the
spectrum. What's the optimal way to remove a DC offset? I was not sure
whether I should explicitly write out the negative value as two's
complement in the lookup table, or use something like
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the USRP-users