The AD9361 Tx Quadrature calibration algorithm use calibration signals generated by two internal Numerically Controlled Oscillators (NCOs) in order to optimally configure the transmit chain(s). The two NCOs are referred to as the Rx NCO and the Tx NCO, and are controlled by registers 0x0A0 and 0x0A3. The user must determine the optimal configuration of these two registers. This document explains how these registers may be optimally configured.
The frequency of the NCOs is controllable through register writes:
Table 1: NCO Frequency Bits
The frequencies of the two NCOs should be equal. However the settings of the bits noted in may not be the same, as the NCO frequency settings depend on the frequencies of the CLKRF (clock frequency of the RxFIR input) and CLKTF (clock frequency of the TxFIR output) which may not be equal. The equations which set the frequencies are as follows:
It is important that this frequency be chosen such that it is within the baseband bandwidth of both the Tx and Rx chains to ensure that the analog and digital filtering does not attenuate these signals.
Rx NCO Phase Offset
The Rx NCO Phase Offset compensates for the delay of the signal through the signal path. There are 32 possible phase settings for the NCO Phase Offset which are programmed in 0x0A0[D4:D0]. The correct phase offset to use depends on the delay in the signal path, which is directly related to the digital filter settings.
In order to find the optimal Rx NCO Phase Offset, the 32 possible settings should be analysed based on the Quadrature Error (Image Size) and LO leakage out of the Tx when these NCO settings are used. The procedure for finding the correct NCO Phase Error is as follows:
1. Configure the part as per the custom profile required.
2. Set the part up to transmit a single tone within the B/W of the custom profile and move the ENSM into Tx state (FDD or TDD).
3. Choose the NCO frequency settings, ensuring that the Rx and Tx frequencies are the same.
a. Set the Rx NCO frequency bits 0x0A0[D6:D5] as per Equation 1.
b. Read the value of 0x0A3.
c. Set the Tx NCO Frequency bits 0x0A3[D7:D6] as per Equation 2, making sure not to modify bits [D5:D0].
4. Then for all values, i, between 0 and 31:
a. Transition the part into the Alert state.
b. Turn off Rx tracking if enabled by your custom profile (0x169 = 0xC0).
c. Read the value of 0x0A0.
d. Set the NCO Phase Delay 0x0A0[D4:D0]=i, making sure not to change bits [D6:D5].
e. Rerun quadrature calibration (0x016=0x10).
f. Turn back on Rx tracking if originally enabled (0x169 = 0xCF).
g. Transition the part into the Tx state.
h. Note the level of the LO leakage and the Image at the Tx output.
5. Select the optimal value of 0x0A0[D4:D0], based on the largest amount of Image and LO rejection and include the settings used for 0x0A0 and 0x0A3 in your custom profile with which you configure the AD9361.
Having run this sequence the user should obtain a number of measurements as per Figure 2. A graph can then be compiled of these results as shown in Figure 1. All values are in decimal in figures 1 and 2.
Figure 2--Click on the picture above to enlarge
In Figure 2, the largest tone to the right hand side of each plot is the desired single tone. The smaller tone in the middle of each plot is the undesired local oscillator (LO) feedthrough and the tone to the far left of each plot is the undesired image.
As shown in Figure 1, a range of Rx NCO phase delay of between 17 and 24 would result in good Tx Quadrature calibration results. In this case, an Rx NCO phase delay of 21 (0x0A0[D4:D0]=0x15) would be selected as the optimal setting. This is chosen based on being a local minima for both the LO feed through and image. It is also close to the mid-point of acceptable values.
We recommend to use latest ADI drivers.
AD9361 No-OS Software [Analog Devices Wiki]
Are you enabling QEC after setting this registers every time.
From values used you are not setting any RX and TX NCO frequency, please follow all the steps described in above document.
We are using the AD9361 trasceiver in our products. From the customer scripts, the SPI registers have the values as given below.
SPIWrite A0, 15
SPIWrite A3, 0
With this set of values, the LO feedthrough in TX output is at -30 dBm. We have tried changing these registers with all the combination possible. But -30dBm is the best we can get in the output.
In the figure 2 from your post it shows -55 dBm for A0 = 21 (0x15). We need to bring down the LO feedthrough to this value.
Can you please suggest any other settings that can give this -55dBm LO feedthrough.
Also I have tried changing the AUX DAC registers. However the best LO feedthrough is still -30 dBm.