RFX transceiver board receive VCO offset automated calibration

Hi All,

Before I go ahead and try to implement an auto calibration routine for
the Rx frequency offset of the receive subsystem on the RFX400/USRP, I
was wondering if anyone else had already implemented something similar,
or had any pointers for me. Basically what I want to do is create a
calibration routine that will determine the frequency offset between the
RFX400/USRP receive subsystem (nominally already set to equal the
frequency from a transmit source (e.g sig gen) and the transmit source,
and then nudge the tune frequency to null that offset. I find that my
RFX400 receiver after time to stabilise is around 3.2KHz in error, which
is well within it’s spec I know, however I want to automatically
determine this offset and null it out. I guess the actual fine frequency
adjustment will actually be occurring in the DDC, would that be correct?

One way to measure the frequency offset is to look at either the I or Q
waveform of the (unmodulated) downconverted RF signal. When an offset is
present between Tx source carrier and Rx subsystem the in-phase or
quadrature signal is a sinusoidal waveform with a frequency
corresponding to the magnitude of the offset involved. Use this to then
fine tune the RFX400/USRP.

So, has anyone done something similar before? Do you have any code you’d
be willing to share?

Thanks very much.

Cheers
Richard

=======================================================================
This email, including any attachments, is only for the intended
addressee. It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.

On 2/27/08, Richard C. [email protected] wrote:

Before I go ahead and try to implement an auto calibration routine for
the Rx frequency offset of the receive subsystem on the RFX400/USRP, I
was wondering if anyone else had already implemented something similar,
or had any pointers for me.

While what you describe is well-intentioned, it doesn’t solve the real
issue.

Basically what I want to do is create a
calibration routine that will determine the frequency offset between the
RFX400/USRP receive subsystem (nominally already set to equal the
frequency from a transmit source (e.g sig gen) and the transmit source,
and then nudge the tune frequency to null that offset. I find that my
RFX400 receiver after time to stabilise is around 3.2KHz in error, which
is well within it’s spec I know, however I want to automatically
determine this offset and null it out.

Do you want to null it out once, based on a your signal generator
input, and store that value somewhere? How would you use this value
in the future?

I guess the actual fine frequency
adjustment will actually be occurring in the DDC, would that be correct?

If that is how you were to implement it. If all you are doing is
applying a fixed correction based on this calibration technique you’ve
described, then it’s easier to just tune the daughterboard to the
corrected frequency. You’re correct that you will see the “beat
frequency” in the I or Q channel equal to the frequency offset between
the transmitter and receiver.

However, I don’t think this addresses the bigger issue, which is that
receiver frequency and time base offset will always exist, and must be
corrected in real-time if you are using a modulation technique that is
sensitive to these offsets. Even temperature differences in the
frequency reference in the USRP can cause many kilohertz drift,
especially if you are operating at high carrier frequencies, like
2-3GHz.

There are many techniques for receiver frequency and phase
synchronization. They generally involve a block to measure the
frequency/phase error, a loop filter to turn this error into an
appropriate control value, and an NCO to apply the actual fine
frequency/phase correction to the incoming signal. These would be
designed to work with the properties of the actual modulation you’d be
receiving.


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com/

Hi Johnathan,

thank you for your response. My applications is rather simple. I am not
performing any receiver (digital or analog demod) type functionality
where such a realtime tracking of the received carrier frequency would
need to be a part of the overall design. Rather I am receiving a
modulated RF carrier on one frequency and then retransmitting on another
(cross band repeater), or retransmitting at complex baseband to be used
as an input vector modulation source for an external RF signal
generator/Fading simulator. I don’t want the receive offset due to
RFX400/USRP oscillator/clock tolerances to cause the retransmitted
signal to be offset by an amount that could put it outside the fine
adjustment range of the RF modem receiver (3rd party device) under test.
At this stage my proposed calibration of the RFX400/USRP doesn’t need to
happen continuously, just once at the start of a test.

Cheers
Richard

Johnathan C. wrote:

applying a fixed correction based on this calibration technique you’ve
especially if you are operating at high carrier frequencies, like

=======================================================================
This email, including any attachments, is only for the intended
addressee. It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.

On 3/2/08, Richard C. [email protected] wrote:

At this stage my proposed calibration of the RFX400/USRP doesn’t need to
happen continuously, just once at the start of a test.

I see, thanks for the clarification. Your original proposal would
work fine for this, though I suggest you adjust frequency by changing
the daughterboard tuning frequency rather than by trying to fiddle
with the FPGA DDC.


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com/