X2 X2M200 Sampling Rate

Discussion in 'X2 & X4 SoC' started by Davide Bongiovanni, May 3, 2017.

  1. Davide Bongiovanni

    Davide Bongiovanni New Member

    Is there a way of outputting the sampling rate from the X2M200 module? If not, what's an approximate value of the X2 chip sampling rate?
     
  2. Davide Bongiovanni

    Davide Bongiovanni New Member

    Found it, it's around 39 GSps.

    How would one go about calculating the minimum detectable difference in range?
    I came up with the formula \Delta d_{min} = c / (2 f_s), but this gives a value of around 4mm, but as demonstrated in the respiration demos, the sensor is able to detect sub-millimeter movement. How is this possible?
     
  3. NSANGOU CHOUAIBOU

    NSANGOU CHOUAIBOU Active Member

    Hi David,
    First of all, I think you are making a confusion between sampling rate of the RF signal and the UWB pulse width. The sampling rate will help in the correct signal sampling based on the Nyquist criteria, the pulse with will give you time of flight.
    The minimum detectable range is based on the Heisenberg's uncertainty (You can't simultaneouly be well localized both in time and frequency). As you pulse is UWB, your minimum pulse widht is based on this principle. for 1ns pulse you will have a minimum of 30 cm between your radar and your target to prevent range ambiguty problem.

    Best regards,
    Chouaibou.
     
  4. Davide Bongiovanni

    Davide Bongiovanni New Member

    I was actually trying to calculate the minimum differential range that the radar can detect. For example, if you have an obstacle 1m from the radar, what's the minimum distance by which you can move the obstacle before the radar will detect that it moved?
     
  5. Olav Liseth

    Olav Liseth Administrator Staff Member

    Hi Davide,

    The range accuracy is mainly dependent on the SNR. The pulse is sampled at higher frequencies than the Nyquist criterion. I will not go into theory or detection methods at this time, but i made a small example in python for you. I will sample two pulses, where the second one is delayed by 20 ps, which is less than this system's sampling rate, fs = 23.238 GHz.

    Consider the following python code:

    Code:
    from pylab import *
    ## Pulse generator
    # Center frequency
    fc = 7.29e9
    # Pulse duration
    tau = 0.67e-9
    
    ## Sampler
    # Sampling rate
    fs = 23.238e9
    # Number of bins in frame
    nbins = 64
    
    # delay to pulse
    t0 = 1.3e-9
    t1 = t0 + 20e-12
    
    # Time array
    t = np.arange(0, nbins / fs, 1 / fs)
    
    # Sample frames
    frame1 = exp(-((t - t0) / tau) ** 2) * cos(2 * pi * fc * (t - t0))
    frame2 = exp(-((t - t0) / tau) ** 2) * cos(2 * pi * fc * (t - t1))
    
    # Plot frames
    plot(t*1e9, frame1, 'b-x', label='t0')
    plot(t*1e9, frame2, 'r-x', label = 't0 + %g ns'%((t1-t0)*1e9))
    legend()
    grid()
    xlabel("Time (ns)")
    ylabel("Amplitude")
    _=xticks(t[1::2]*1e9)
    
    upload_2017-5-8_13-53-49.png

    The time difference of the two pulses can be used to calculate the distance or to analyze movement of the object. One example of calculating the distance is to downconvert and use the amplitude + phase difference.
     
  6. NSANGOU CHOUAIBOU

    NSANGOU CHOUAIBOU Active Member

    Hi Olav,
    Following your answer to Davide post, I would like to know why have choosen 64 bins in your example as X2 radar chip has 256 samplers for a default distance of 1 meter.

    B.R
    Chouaibou.
     
  7. Olav Liseth

    Olav Liseth Administrator Staff Member

    Simply for visibility in the plot, you can change the parameters in the script if you need the parameters to be similar to X2 or X4.
     
  8. NSANGOU CHOUAIBOU

    NSANGOU CHOUAIBOU Active Member

    Hi Olav,
    Thank you for your reply.

    B.R
    Chouaibou.
     
  9. MohammadHajj123

    MohammadHajj123 New Member

    Hello all,
    How can I calculate the breath frequency to give me a number through X2M200 ?
    If anyone can submit for me a code for that, I will be so thankful for him.
    Regards ,
     
  10. NSANGOU CHOUAIBOU

    NSANGOU CHOUAIBOU Active Member

    Hi MohammadHajj,
    Please find below the link for the latest CPP/PYTHON/MATLAB examples for ModuleConnector based XeThru moudule development :
    https://github.com/xethru/ModuleConnector-Examples

    You can modify python by loadin respiration profile (x2m200.load_profile(XTS_ID_APP_RESPIRATION_2)), and reading respiration data message (rdata = x2m200.read_message_respiration_sleep()) and then retrieve the RPM or disdance from the message.

    BR,
    Chouaibou.