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