Hello,

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
something like

sine[0] = 340;
sine[1] = 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] = 0;
sine[1] = 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
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#
a263ab7f0364c03e8a6e330c546769e4f.

thanks
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to