[USRP-users] Removing DC offset on USRP B200
olivergwayne at gmail.com
Mon Oct 16 12:42:30 EDT 2017
How do i produce a sum of multiple tones using the uhd libraries?
tx_waveforms.cpp lets me set a center frequency with uhd::tune_request_t
tune_request(LO_freq), but what I want is to see an output A1*sin(f1*t +
phi1) + A2 * sin(f2*t + phi2) + ...
Along similar lines, how do I change the amplitudes and phases of each
waveform from the uhd libraries?
When you say fiddle with the iq corrections, I can do that from within
Thanks for the help, I'm fairly new to SDR.
On Sat, Oct 14, 2017 at 8:30 AM, Marcus Müller via USRP-users <
usrp-users at lists.ettus.com> wrote:
> Hi Oliver,
> haven't quite thought through an understanding of what you're currently
> doing, but:
> Since the FPGA image already comes with a convenient-to-use DUC – why not
> just produce a constant, and tune digitally to a non-zero frequency? That
> way, the CORDICs inside the duc_chain will simply generate your sine for
> you, presumably at a much higher resolution than your 1024 element sine
> table, for free.
> To test: use your PC to send a constant, use a uhd.tune_request_t(LO_frequency+tone_frequency,
> If there's still a LO leakage on the output, you can manually fiddle with
> the IQ corrections inside the AD9361.
> Best regards,
> On 12.10.2017 02:23, Oliver Wayne via USRP-users wrote:
> 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 = 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
> USRP-users mailing listUSRP-users at lists.ettus.comhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
> USRP-users mailing list
> USRP-users at lists.ettus.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the USRP-users