Wiki

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
university:tools:pluto:users:non_quad [25 Jul 2019 06:00] – add attributes Robin Getzuniversity:tools:pluto:users:non_quad [01 Feb 2021 14:47] (current) Iulia Moldovan
Line 21: Line 21:
 {{ :university:tools:pluto:users:loopback.png?500 |}} {{ :university:tools:pluto:users:loopback.png?500 |}}
  
-By looking at the frequency domain of the signal we are sending, we can see even after 300 years, the math holds up.+By looking at the digital loopback time and frequency domain of the signal we are sending, we can see even after 300 years, the math holds up. (The time domain signal looks like only one (green = ''I'' ), since the other channel (red = ''Q'') is exactly the same and behind it.
  
-{{ :university:tools:pluto:users:dds_loopback.png?700 |}} +^  Digital Loopback Time Domain  ^  Digital Loopback Frequency Domain 
- +{{:university:tools:pluto:users:dds_lookback_time.png?direct&450|}} | {{ :university:tools:pluto:users:dds_loopback.png?direct&450 |}} |
-We can send that out the RF, by disabling loopback and setting the Rx and Tx LO to the same value.+
  
 ===== Sending only I or only Q ===== ===== Sending only I or only Q =====
Line 33: Line 32:
 {{:university:tools:pluto:users:i_only.png?400|}} {{:university:tools:pluto:users:i_only.png?400|}}
  
-The rest of the tests are the same as the above.+The rest of the tests are the same as the above. Take note that even though we are sending the same magnitude of I as before, the power in the signal is less (the peaks in the FFT drop), since we are sending half the power, (only I, no Q). 
 + 
 +^  Digital Loopback Time Domain  ^  Digital Loopback Frequency Domain 
 +| {{:university:tools:pluto:users:dds_loopback_time_i.png?direct&400|}} | {{:university:tools:pluto:users:dds_looback_i.png?direct&400|}} | 
 + 
 +===== Sending the data ===== 
 + 
 +We can send that out the RF, by disabling loopback and setting the Rx and Tx LO to the same value. The results shown during the receiving section are RF loopback (The BIST Loopback setting is set to ''Disable'', and the Rx and Tx SMA connectors are connected via an SMA cable, which is referred to as "Analog Loopback").
  
 ====== Receiving a "real" signal ====== ====== Receiving a "real" signal ======
Line 39: Line 45:
 Receiving is where things can be more complicated. Most (all) integrated transceivers include some sort of Quadrature tracking corrections which try to ensure the signals are correct, and any imperfections in the chip or external circuitry (balun, non-differential traces, etc) are removed. Receiving is where things can be more complicated. Most (all) integrated transceivers include some sort of Quadrature tracking corrections which try to ensure the signals are correct, and any imperfections in the chip or external circuitry (balun, non-differential traces, etc) are removed.
  
-While the frequency domain plot does look close to the same, but we can see that the amplitude is jumping up and down by a few dB(which is impossible to show in a static picture like this).+While the frequency domain plot looks the same, we can see that the amplitude is jumping up and down by a few dB (which is impossible to show in a static picture like this).
  
-{{ :university:tools:pluto:users:rf_lo_same.png?700 |}}+^  Analog Loopback, Frequency Domain, ACG On, Quadrature tracking On  ^  
 +{{:university:tools:pluto:users:rf_lo_same.png?700|}} |
  
-Its easier to look at this in the time domain. Here the amplitude difference between I & Q is random based on the random difference between the phase of the Rx and Tx PLL.+It'easier to look at this in the time domain. Here the amplitude difference between I & Q is random based on the random difference between the phase of the Rx and Tx PLL. This is indeed completely random and will change any time either PLL settings are touched. Moving one LO to a different setting, and back again, will change this phase offset (which manifest itself as a magnitude difference between I and Q).
  
-{{ :university:tools:pluto:users:lo_same_time.png?700 |}}+^  Analog Loopback, Time Domain, I & Q Data, ACG On, Quadrature tracking On   ^  
 +{{:university:tools:pluto:users:lo_same_time.png?700|}} |
  
-You can change this magnitude difference by using the Phase Rotation control in IIO oscilloscope. It doesn't change the phase relationship between I and Q, but does change the effective sample time relative to the PLL, and therefore changes their relative magnitude. By changing this, you can effectively make either of the I or Q zero, and only receive the signal the other (Q or I), indicating that the received signal is "real" (all information can be received just on one signal channel, and it has no phase or quadrature information. +You can change this magnitude difference digitally by post-processing the sampled data, by using the Phase Rotation control in IIO oscilloscope. It doesn't change the phase relationship between I and Q, but it does change the effective sample time relative to the PLL, and therefore changes their relative magnitude. By changing this, you can effectively make either of the I or Q zero, and only receive the signal the other (Q or I), indicating that the received signal is "real" (all information can be received just on one signal channel, and it has no phase or quadrature information.
  
-{{ :university:tools:pluto:users:rx_rot.png?300 |}}+^  Analog Loopback, Time Domain, I & Q Data  ^  
 +{{ :university:tools:pluto:users:rx_rot.png?300 |}} 
 + 
 +The easiest way to ignore these things is to look at the overall magnitude of the signal ie - set up a math equation in IIO-Scope with ''%%ssqrtf((voltage0*voltage0)+(voltage1*voltage1))*((voltage0 > 0)-(voltage0 < 0))%%''. This is the equivalent the <m>sign(I) * sqrt{I^2 + Q^2}</m>. This will ensure that any I/Q magnitude difference doesn't affect the investigation. 
 + 
 +^ I / Q Rotation ^ I, Q, and mag data ^ 
 +| 0  | {{ :university:tools:pluto:users:lo_same_time_0_offset.png?direct&400 |}} | 
 +| 50 degrees  | {{ :university:tools:pluto:users:lo_same_time_52_offset.png?direct&400 |}} | 
 +| 70 degrees  | {{ :university:tools:pluto:users:lo_same_time_77offset.png?direct&400 |}} |  
 +| mag only | {{ :university:tools:pluto:users:lo_same_time_mag_only.png?direct&400 |}} | 
 + 
 +You can see from the data (and the math) that we can rotate I/Q and it doesn't change the overall attitude of the signal. It's sometimes difficult to see the ''I'' (green), ''Q'' (red), and ''Mag'' (blue) since they may by hidden (behind) other channels.
  
 By capturing 1048576 samples (or at 3MSPS, 349525.333 us) you can see what looks like some weird sort of steps. These perturbations are caused by two state machines inside the AD9363 fighting against each other. (1) Automatic Gain Control (ACG) and (2) Quadrature tracking corrections.  By capturing 1048576 samples (or at 3MSPS, 349525.333 us) you can see what looks like some weird sort of steps. These perturbations are caused by two state machines inside the AD9363 fighting against each other. (1) Automatic Gain Control (ACG) and (2) Quadrature tracking corrections. 
  
-{{ :university:tools:pluto:users:acg_q_on.png?700 |}}+^  Analog Loopback, Time Domain, I & Q Data, ACG On, Quadrature tracking On  ^  
 +{{ :university:tools:pluto:users:acg_q_on.png?700 |}} |
  
-The ACG is reacting to magnitude changes caused by the Quadrature tracking corrections misinterpreting that "real" signal that is being sent, is actually a signal on the positive side of the LO, and an image on the negative side of the LOTurning the ACG to manual mode can help isolate the effects of the IQ Correction. Here is a picture of the same setup with the ACG set to manual mode.+Here the green signal is the ''I'', and the blue is the overall magnitudeSince, during this run, the ''I'' was showing most the perturbations, and it is small compared to Q, the overall magnitude does not change that much, but it does have undesired step changes, that can be easily fixed when we understand what is happening.
  
-{{ :university:tools:pluto:users:agc_off_iq_on.png?600 |}}+The first step is to understand that the ACG is reacting to magnitude changes caused by the Quadrature tracking corrections. Turning the ACG to manual mode can help isolate the effects of the IQ Correction. Here is a picture of the same setup with the ACG set to manual mode. 
 + 
 +^  Analog Loopback, Time Domain, I & Q Data, ACG Off, Quadrature tracking On  ^ 
 +{{ :university:tools:pluto:users:off_iq_on.png?600 |}} |
  
 Here we can see multiple times where the Quadrature tracking corrections are trying to suppress what it believes is an image until it gives up, resets, and starts over. This results in what appears to be amplitude errors in the signal. Here we can see multiple times where the Quadrature tracking corrections are trying to suppress what it believes is an image until it gives up, resets, and starts over. This results in what appears to be amplitude errors in the signal.
 +
 +<WRAP important>
 +The problem statement is simple - there is no way for a Quadrature tracking correction algorithm to understand if a "real" signal is being sent, or if in fact something is quadrature, is an image, and needs to be suppressed. The only thing that understands that is the sentient being between the chair and the keyboard. 
 +</WRAP>
  
 ====== Removing issues. ====== ====== Removing issues. ======
Line 75: Line 102:
 ===== Offset Tuning ===== ===== Offset Tuning =====
  
-The easiest way to look at things is via the magnitude of the signal ie - set up a math equation in IIO-Scope with ''%%sqrtf((voltage0*voltage0)+(voltage1*voltage1))%%''. This will ensure that any I/Q phase difference doesn't affect the results. Here when Rx and Tx PLL are the same, we can see the same issue.+Here when Rx and Tx PLL are the same, we can see the Quadrature tracking issue.
  
 {{ :university:tools:pluto:users:0khz_offset.png?600 |}} {{ :university:tools:pluto:users:0khz_offset.png?600 |}}
Line 116: Line 143:
 For those using a National Instruments USRP Radio, this can be controlled via ''[[https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a586c52db545664cb2caf830ac90c051e|set_rx_iq_balance()]]'' method. For those using a National Instruments USRP Radio, this can be controlled via ''[[https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a586c52db545664cb2caf830ac90c051e|set_rx_iq_balance()]]'' method.
  
 +===== SDRangel =====
 +
 +[[https://github.com/f4exb/sdrangel|SDRAngel]] also can turn on/off Quadrature tracking with it's Hardware control buttons.
 +
 +{{:university:tools:pluto:users:sdrangel_controls.png?direct|}}
 +
 +  * ''RFDC'' : RF DC Correction tracking
 +  * ''BBDC'' : BaseBand DC Correction tracking
 +  * ''IQ'' : Quadrature tracking 
 ===== Scope ===== ===== Scope =====
  
 This issue will exist on all integrated devices which have some sort of Quadrature tracking feature, including all hardware based on ADI and [[https://github.com/f4exb/sdrangel/issues/378#issuecomment-513012883|other manufactures]]. It's not something specific to the ADALM-PLUTO, or the AD9363. This issue will exist on all integrated devices which have some sort of Quadrature tracking feature, including all hardware based on ADI and [[https://github.com/f4exb/sdrangel/issues/378#issuecomment-513012883|other manufactures]]. It's not something specific to the ADALM-PLUTO, or the AD9363.
university/tools/pluto/users/non_quad.1564027237.txt.gz · Last modified: 25 Jul 2019 06:00 by Robin Getz