IQ data from raw RF data

Discussion in 'General' started by Jameson, Sep 6, 2018.

  1. Jameson

    Jameson New Member

    Hello All,

    Although the X4 chip outputs baseband data, I would like to get higher resolution measurements by demodulating the raw RF data to complex IQ form for further processing. Any ideas on how to do this? I am using an X4M300 in XEP mode, so I can already get the raw RF data.

    I believe it will involve a complex demodulator off-chip if the X4 can't return that data, however, I'm not too sure how to implement this with pulsed radar since most of the examples are for LFM pulsed radar.

    Thank you
  2. Georg Michel

    Georg Michel New Member

    Hi Jameson,

    the X4 can deliver complex baseband data. But this does not increase the resolution. It is just a way to remove redundant information from the modulated RF and to save memory. Actually the X4 samples the raw RF data and downconverts it numerically. You can do this on your own but I see no advantage in this.

    Olav Liseth likes this.
  3. Jameson

    Jameson New Member

    If there is no resolution benefit, why is the RF data provided for the X4 Chip?

    Are there any advantages to using it?


    Hi Jameson,
    The raw rf radar data can be processed diffently.

    kind regards,
    Last edited: Sep 8, 2018
  5. Georg Michel

    Georg Michel New Member

    This should be answered by an X4 expert. The only advantage I can think of is to relieve the X4 from doing the downconversion, in order to have more capacity for other time critical tasks.
  6. Sigurd Pleym

    Sigurd Pleym New Member Staff Member

    The downconversion is performed in dedicated digital logic in an asic. You cannot use the X4 to perform other tasks if relieved of the downconversion.

    It is easy do to downconversion yourself, we can give you the equations. What is the advantage of doing it yourself ? Well , you can choose another set of filter coefficients or another decimation ratio if desired. Some also prefer doing signal processing directly on the RF data. In the previous platforms, we only provided RF data, so there are some legacy there.

    Personally I would use the downconverted data, we provide the alternative so you can choose for yourself.



    Hi Georg Michel,
    Yes you are wright, I am not an X4 expert. My apologies if my answer is wrong.

  8. Jameson

    Jameson New Member

    Thank you very much, Sigurd. That's very helpful to know. I would indeed like the equations. I greatly appreciate the work that Xethru has put into simplifying the data processing. I would just like to do a sanity check on the data I'm getting and to help better my understanding.

  9. jclay

    jclay New Member

    How is the sub-mm accuracy achieved as claimed: "Novelda’s XeThru X4 is an ultra wide band (UWB) impulse radar chip. It provides product developers with sub-mm movement sensing accuracy at distances from 0 to 25 meters depending on target size" Can you explain or direct me a white paper that details how this sub-mm movement is detected using the I/Q data stream.
  10. Jameson

    Jameson New Member

    I would also like to know this answer. I was only able to find this white paper directly related to Novelda's SoC:

    However, there are other research papers on IEEE Xplore that are not open access.
  11. Chris Langer

    Chris Langer New Member

    I would like to know too!
  12. jclay

    jclay New Member

    Is it possible to detail how to pick another filter coefficients or decimation ration? Also, how is the I/Q actually generated since there is just A/D conversion and no I/Q mixer in the X4 chip?
  13. Olav Liseth

    Olav Liseth Administrator Staff Member

    Hi Jeff,

    The decimation factor of 8 is fixed. As Sigurd wrote, the downconvertion is done digitally by special HW. We provide filters for the supported frequency bands, which are automatically configured.

    Not sure what you want to achieve, but sounds like off-chip downconvertion and decimation is your option.


  14. jclay

    jclay New Member

    Can you provide us with algorithm or code for downconversion and decimation? Or possibly a white paper describing the method. We would like to experiment with the decimation ratio to investigate the accuracy of the phase. We have
    been able to quantify the phase of the I/Q signal appears to have a resolution of 20mm per 360 degrees of
    I/Q phase. The phase direction does correlate with the target movement and does wrap around properly. Is this in agreement with your measurements? Only problem is the phase appears noisy. Could this be improved by a boxcar average on each bin in the I/Q data?
  15. Sigurd Pleym

    Sigurd Pleym New Member Staff Member

    Here is pseudo code for this:
    float fc = carrierFreq;

    // init demodulation vectors
    for (uint32_t i=0; i<numSamples; i++)
    demod_I_ =cos(2*pi_f* fc/Fs * i); // make i-channel demodulation vector. Must be equal to length of frame
    demod_Q_ = -sin(2*pi_f* fc/Fs * i); // make q-channel demodulation vector. Must be equal to length of frame


    Put your i-channel rf-data in float *ichannel and qchannel in float *qchannel
    Now to create i-channel do ichannel * demod_I, qchannel*demod_Q

    If your decimation factor = 1 you dont need to worry about lowpass filter

    I hope you get the idea. This is just normal demodulation

  16. Sigurd Pleym

    Sigurd Pleym New Member Staff Member

    On second thought, you must have a lowpass filter that removes the mirror band that is shifted to -2fc. You also want a Lowpass filter to remove other unwanted highfrequency characteristics that might linger.
    My point with the need for lowpass filter was that when doing downsampling, you also want to avoid having noise at higher frequencies being downfolded into your baseband , thus increasing the noisefloor.

    Sorry for the glitch in the matrix
  17. Olav Liseth

    Olav Liseth Administrator Staff Member

    Hi jeff,

    Here's another example:

    1. Read RF frame
    2. Multiply frame with complex sine with frequency = to transmitted pulse center frequency
    3. Low pass the result

    Python example:
    # frame = radar rf frame
    fc=7.29e9 # lower PG setting
    fs = 23.328e9
    csine = np.exp(-1j*fc/fs*2*np.pi*np.arange(len(frame)))
    cframe = frame * csine
    # Lowpass filter the result
    Here's the frequency response from the different steps, I used a 26 taps hamming window for the low pass fitlering:
    Last edited: Sep 20, 2018
  18. Jameson

    Jameson New Member

    Thank you very much Olav and Sigurd,

    *With respect to Olav's post. The code shows fs=23.238e9, but in the X4 datasheet states 23.328 Ghz sampling rate. Is this an error in the code, or the datasheet?

    *Sigurd, what is the pi_f in your code? Is that PI * Fc, or Pi * Fs?

    Much Appreciated,
  19. Olav Liseth

    Olav Liseth Administrator Staff Member

    Thanks Jameson, you and the data sheet are correct, I've edited my post as well.
  20. Sigurd Pleym

    Sigurd Pleym New Member Staff Member

    pi_f = float pi (as opposed to double pi). ie pi_f is a 32-bit floating point constant for pi. The pseudo code I showed you was C++ code we used for the X2 platform. With the X4 the baseband downconversion is performed in the chip itself. Olav's python code (with slight correction of the sampling rate Fs) is for the x4. If you do it in scripted language like matlab or python it is more easy to just express the complex demodulation like Olav does in his example.

    Have fun :)