I'm trying to understand how the USRP TX-A and TX-B outputs (on the Basic TX daughterboards) are generated, and how they are related to each other. This has been discussed here before [1] but I think that diagram and explanation were not quite complete. I think I've got it now. Can anyone here confirm my understanding?
When I run usrp_siggen with -f1e5 -c1M flags to modulate a 1 MHz carrier with a 100 kHz signal, I get a 1.1 MHz cos wave on TX-A and a 1.1 MHZ sine wave on TX-B (shown on a scope, or by usrp_fft.py with RX-A connected to TX-A or TX-B). That is, the I get the sum of the carrier and the signal frequencies on both A and B, but B is shifted 90 degrees after A. As I understand it, here's what's going on in the USRP (actually in the AD9862). This is the standard way to do quadrature modulation, which is mentioned in the data sheet [2] and explained in an article [3]. It's a way to do single sideband modulation (so we get only the sum frequency 1.1 MHz but not the difference) cos x * cos y cos x cos x * cos y - sin x * sin y = cos(x + y) I ------->(X)----------------->(-)---------> TX-A ^ ^ | cos y / from | / USB [ NCO ] / . | / . | sin y / \ v / v Q ------->(X)------------ ... (+)------> TX-B sin x sin x * sin y sin x * cos y + cos x * sin y = sin(x + y) This diagram shows the complete path for TX-A. It is similar to the TX-A path diagram in [1], except there is an additional block after the multiplier to compute the difference cos x*cos y - sin x * sin y, to get cos(x + y). Moreover, in the TX-B path there are (in effect) two more multipliers to compute sin x * cos y and cos * sin y, and an adder to compute the sum sin x * cos y + cos x * sin y to get sin (x + y). To reduce clutter I haven't shown these two multipliers in my diagram either. This explanation is also consistent with other observations. For example running usrp_siggen with flags -a0 -o9999 -c1M to send no modulating signal but just a constant offset of 9999 (or whatever) on I and zero on Q, TX-A and TX-B produce cosine and sine waves at the carrier frequency with amplitudes proportional to the value of the -o flag (replace cos x with 9999 and sin x with 0 in the formulas above). Is this correct? Is there anything I've overlooked? Jon Jacky [1] Block diagram of FPGA interface (thread in discuss-gnuradio) http://lists.gnu.org/archive/html/discuss-gnuradio/2005-04/msg00201.html [2] AD9862 data sheet (get PDF data sheet linked to this summary page) http://www.analog.com/en/prod/0%2C2877%2CAD9862%2C00.html [3] Fundamentals of digital quadrature modulation (get PDF version w/figures) http://rfdesign.com/mag/radio_fundamentals_digital_quadrature/index.html _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio