AnsweredAssumed Answered

IQ correction

Question asked by Daniel_Camara on Jun 26, 2015
Latest reply on Jul 1, 2015 by Daniel_Camara



  I am trying to apply the I/Q Correction [Analog Devices Wiki] on my program, but I guess there is something wrong either with the description or with my understanding of it. I tried many different things but no use!


  Genneral information:

    - FMCOMMS4

    - TX and RX connected by a loop-back cable

    - FDD

    - TX and RX: 2.4GHz

    - Gain: 0


  - First of all, to decrease the imbalance I tried to let the calib_mode in automatic, as it should decrease the imbalance.... (OK I also tried to put it in manual and try different values for the  "calib_mode tx_quad <value>" as described in AD9361 Transmit Quadrature Calibration (Tx Quad Cal) trying to find the one that gives me the lowest imbalance.... but it is more or less the same, and I perceived also that the values on subsequent transmissions may change in "range" (I don't know if I can say like that, but the fact is that the values of I and Q vary considerably) so I don't know if setting the tx_quad value manually is a good thing anyway.  What do you think, should I let it in automatic, or try to find the best tx_quad by changing gradually the configuration is a good thing?


  - The thing is that I am not sure that the formulas described in the I/Q Correction [Analog Devices Wiki] page (and in the pointed S.W. Ellingson's paper are correct). I found that the sin(psy) is in fact 2/alpha²<I''(t)Q''(t)>  instead simply 2/alpha<I''(t)Q''(t)>. However, I have now two problems, first is that when I apply the correction (the matrix multiplication) the I is, normally in the interval -1:1, but the Q goes wild! Hummm... well in fact to be honest no, it stays more or less in the same level I received (for the figure below more or less between -150 and +150).


The behavior is understandable, since the D on the matrix is the inverse of cos (psy), which should be between -1:1. So, in the best case, the value would not change (cos=1), but in general it even increases a little bit (cos <1)! So either I am doing something wrong, or the formula considers Q would be between -1:1, moreover, could be also that the advised method, and its formulas, have a problem somewhere!   A colleague here looked into it, and for him the formulas for C and D are wrong, they should be: 



Even though I am not sure it is correct, that certainly helps, but does not solve entirely the problem.


The second problem I have, and that I guess is harder to solve, is that from time to time (not always) the Q is way bigger than the I (see below image), and in that case, the sin is bigger than 1! (alpha is calculated over I², and sin is over I*Q, if Q is bigger... then even dividing the <I''(t)Q''(t)> by the alpha², it may be big enough to be bigger than 1). Well not only that is wrong but after that everything goes nuts, as I don't have even cos(psy) anymore .

I have no Simulink, so I cannot look the provided code to check the formulas. Is there any other implementation of it somewhere else?


What do you think should I do?!!??