This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

IWR6843AOPEVM: SNR calculation

Part Number: IWR6843AOPEVM

Hi,

I'm looking to compare the power calculated by MMWave Studio with the expected power from the radar equation.

At a static corner located 13.29 meters away, with a cross-section of approximately 20 dBsm, the received power measures at -55.96 dBFS.

According to the radar equation, we anticipate:

Pr = Pt * Gr * Gt * lambda^2 * sigma * N * (RET-ADCstart) /  ( (4pi)^3 * NF * R^4 )

where: Pt = 12 dBm, Gr=Gt=5dB. lambda=5mm, sigma=20dBsm, N=31 (chirps in frame), RET=11usec (Ramp End Time), ADCstart=5.12usec, NF=14.4dB, R=13.29m.

This yields: Pr = -163 dB (or decrease 10log10(2^16-1) and get -211 dBFS).

The results from the radar equation and MMWave Studio should closely align, yet there seems to be a significant discrepancy. Where could I have gone wrong?

Thanks in advance,

Shlomi

  • HI, there:

    For the equation you have, it is more like a SNR calculation than a power equation.  Below is the power equation from the TI radar training https://www.ti.com/video/5415203482001 .  Power equation does not have the chirp duration, NF, and number of chirps in the equation. 

    Best,

    Zigang

  • Hello Zigang,

    Thank you for your response.

    After substituting the provided parameters into the equation, I still obtain Pr = -111.93 dB, which remains significantly distant from the -55 dBFS measurement I've obtained in mmwave studio (see calculation in the next message).

    Could you offer an explanation for this discrepancy?

    Thanks,

    Shlomi

  • Below is the code along with its outputs, which show values considerably distant from -55 dBFS. Could you please clarify the reasons behind this distinction?

    Code:

    Kb = 1.38e-23
    T = 290
    sigma_dbsm = 20
    Pt_dBm = 12
    Gt_dB = 5
    Gr_dB = 5
    R_m = 13.29
    IF_BW = min(0.9*12.5e6, 10e6)

    Pt = 10**((Pt_dBm-30)/10)
    Gt = 10**(Gt_dB/10)
    Gr = 10**(Gr_dB/10)
    sigma = 10**(sigma_dbsm/10)

    hann = np.hanning(64)
    correction_factor = 10*np.log10(2**16-1) + 20*np.log10(64/sum(hann)*4)
    Pr = Pt * Gr * Gt * lambda_m**2 * sigma / ((4*np.pi)**3 * R_m**4)

    print(f"Pr_dB={10*np.log10(Pr)} [dB]")
    print(f"Pr_dBFS={10*np.log10(Pr)-correction_factor} [dBFS]")

    Noise = Kb*T*IF_BW
    print(f"N={10*np.log10(Noise)-correction_factor} [dBFS]")

    Outputs:

    Pr_dB=-111.9378950716518 [dB]
    Pr_dBFS=-178.30121633974926 [dBFS]
    N=-200.34055042509556 [dBFS]

  • Hi, Shlomi:

    The received power is at the input of the RX chain.   The dBFs is at the input of the ADC.  I believe you need to apply the RX gain from the RX input to get the input to the ADC input.   In addition, you dBm to dBFs is not correct either. 

    Check the following e2e thread about dBm to dBFs conversion. 

    AWR1243: dBFs scaling in Radar Studio Post Processing in complex 1x, complex 2x and real mode - Sensors forum - Sensors - TI E2E support forums

    Best,

    Zigang

  • Sorry, I was wrong, the -55dBFs is not at the input of ADC, but at the 2D FFT output, so you will have to add the 2D FFT gain to the calculation. 

    Pr_dBm + RX_gain + dBmTodBFs_conversion + 10*log10(rangeFFTSize) + 10*log10(DopplerFFTSize)

    Best,

    Zigang

  • Hi Zigang,

    It seems there's no connection to the correction factor in the Pr_dBFS formula. I modified the code as you suggested, and now the output is closer to -55dBFS. Specifically, Pr is -58.96dBFS. I didn't utilize Rx_gain since it's already factored into Gr in the following code.

    Could you confirm if the code accurately describes the transition from received power to the power in dBFS after the 2D FFT?

    Thanks,
    Shlomi

    Code:
    Kb = 1.38e-23
    T = 290
    sigma_dbsm = 20
    Pt_dBm = 12
    Gt_dB = 5
    Gr_dB = 5
    R_m = 13.29

    Pt = 10**((Pt_dBm-30)/10)
    Gt = 10**(Gt_dB/10)
    Gr = 10**(Gr_dB/10)
    sigma = 10**(sigma_dbsm/10)

    rangeFFTSize = 64
    DopplerFFTSize = 31

    Pr = Pt * Gr * Gt * lambda_m**2 * sigma / ((4*np.pi)**3 * R_m**4)
    Pr_dBm = 10*np.log10(Pr) + 30

    dBmTodBFs_conversion = -10

    Pr_dBFS = Pr_dBm + dBmTodBFs_conversion + 10*np.log10(rangeFFTSize) + 10*np.log10(DopplerFFTSize)
    print(f"Pr={np.round(Pr_dBFS,2)} [dBFS]")
  • Hi, there:

    That is my understanding.   You can play with range FFT size or Doppler FFT size to see whether the same formula still holds. 

    Best,

    Zigang

  • Hi,

    Let's approach the issue from a different angle.

    In the mmwave studio screenshot below, a corner with an RCS of 21dBSm is detected at 5.856m.

    The received power from this corner registers at -45.8dBFS. Additionally, the average power of high-velocity cells, representing the noise level (please correct me if this assumption is wrong), is -94.39dBFS. Consequently, the corner is detected with an SNR of 48.59dB.

    I endeavored to replicate this SNR result by independently processing the raw data bin file in Python.

    Initially, I ensured that the time domain plot matched exactly by selecting the same subframe and channel, confirming successful bin file reading.

    Then, I conducted range windowing and FFT on both axes, calculating the 10*log10 of the absolute value of the result.

    Subsequently, I observed the target at the correct range with a strength of 50.7 dB. However, the noise level extracted from the same range at the highest velocity bin was 25.6 dB, resulting in an SNR of 25.1 dB, which does not align with the 48.59 dB reported by mmwave studio.

    Could you assist in identifying the inconsistency?

    Thanks in advance,

    Shlomi

    Screenshot from mmwave studio:

    Python processing

  • HI, there:

    You need to take 20*log10() when plotting the 2D FFT output from linear in amplitude to dB.

    Best,

    Zigang

  • Got it, thanks for clearing that up.

    It's evident that there's still a discrepancy between the measured and theoretical SNR.

    In the code provided below, you'll notice the theoretical SNR calculation -

    For R=5.85m, I should incorporate additional losses of 7dB to roughly match the SNR reported by mmWave Studio.

    For R=12m or 20m, I should consider additional losses of 10dB to achieve a similar outcome. These values seem unusually high for additional losses; typically, we expect around 5dB.

    1. Can you provide any insight into this inconsistency?

    2. Does it seem reasonable to expect 10dB of additional losses?

    3. Why do we observe different additional loss values for the 5.85m range compared to the higher ranges?

    Range [m]

    Measured SNR [dB]

    Theoretical SNR [dB] (L=10dB)

    5.856

    47.8

    44.66

    12.84

    31.37

    31

    19.37

    23.84

    23.88

    Appreciate your input in advance,

    Shlomi

    Python Code:

    Kb = 1.38e-23
    T = 290
    sigma_dbsm = 21.78
    Pt_dBm = 10 # AOP device - 10dBm, non-AOP device - 12dBm
    Gt_dB = 5
    Gr_dB = 5
    R_m = 5.85
    Ramp_End_Time = 11e-6
    ADC_Start_Time = 5.12e-6
    ToT = 31*(Ramp_End_Time - ADC_Start_Time) # Time-on-Target
    NF_dB = 14
    L_dB = 7

    Pt = 10**((Pt_dBm-30)/10)
    Gt = 10**(Gt_dB/10)
    Gr = 10**(Gr_dB/10)
    sigma = 10**(sigma_dbsm/10)
    NF = 10**(NF_dB/10)
    L = 10**(L_dB/10)
    SNR = Pt * Gt * Gr * lambda_m**2 * sigma * ToT / ( (4*np.pi)**3 * Kb * T * NF * L * R_m**4 )

    Result:

    SNR = 47.681488878872464 [dB]

  • HI, there:

    Can you send over the chirp configuration? 

    Best,

    Zigang

  • Hi, 

    Sure, below are the parameters utilized for mentioned chirp configuration:

    Start frequency 60GHz

    Frequency slope 65 MHz/usec

    Sampling rate 12.5MHz

    Number of samples 64

    Chirp loops 31

    Idle time 5usec

    ADC valid start time 5.12usec

    Ramp end time 11usec

    Frame periodicity 0.8msec

    Thanks,

    Shlomi

  • HI, Shlomi:

    Matching the measurement SNR vs. the theoretical calculated SNR is always challenge.  An expert with similar experiment will get back to you within a day or two. 

    Best,

    Zigang

  • Hi Shlomi,

    When I calculate the signal and noise power for the reflector placed at 5.856 meters, I get the following, which corresponds to your signal power from the screenshot. Does this align with your expectation?

    Additionally, your noise power seems reasonable to me. For a true estimate of the noise power, you would need to account for the different types of phase noise in the system. After speaking with our designers, your value is within reason.

    Best,

    Nate

  • Hi Nathan,

    Thanks for getting back to me.

    From my understanding, the integration time should be calculated as 31 x (Ramp End Time - ADC start time), with 31 being the number of chirps. This affects the thermal noise calculation and as a result the SNR. Let me know if I've overlooked anything.

    Regarding Rx gain, it appears irrelevant for SNR calculation since it affects both target and noise power equally. But it explains the coherence between the calculated and measured received power. 

    It seems our theoretical calculations align closely, except for the integration time. Hence, is it reasonable to account for 7-10 dB additional losses to explain the disparity between measured and theoretical SNR calculations?

    According to your calculations the SNR is 38.74dB when L=0 (additional losses). According to my calculation the SNR is 54.26dB, again with zero additional losses. 

    Thanks,
    Shlomi

  • Hi Shlomi,

    The integration time doesn't get multiplied by the number of chirps if you're only looking at a single chirp, which is why I didn't multiply by 31. mmwave studio only looks at a single chirp at a time.

    Best,

    Nate

  • Hi Nathan,

    We are specifically discussing SNR calculation directly from the graph of zero velocity vs. high velocity bin.

    In this graph, the noise floor decreases as the number of chirps increases, according to the following formula:

    N = K*T*NF*L*RX_gain/ToT

    where the time on target, ToT= N(RampEndTime - ADCstart).

    Noise figure (NF) and number of chirps (N) should, somehow, be a part of an SNR equation, I don't see it in your excel, that is the major difference between our calculations.

    I agree that the received power is not influenced by the number of chirps (in this graph), but as I mentioned, the noise floor is, and as a result, the SNR is affected, this graph is a representation of the 2D FFT graph which is indeed takes into account the number of chirps during the FFT.

    Do you agree? If so, at  r = 5.856m, we theoretically get an SNR of 54 dB, while the measured SNR is 47.8 dB. My question is: Is it correct to assume an additional 7 dB for losses (L) in this range?

    Thanks,

    Shlomi

  • Hi Shlomi,

    How did you create the graph on the top right? Studio seems to indicate that the chirp number you're using is 1 of 31. If you're only using 1 chirp, then you can't distinguish between low-doppler and high-doppler bins because velocity information comes from the FFT over multiple chirps. Did you modify studio to show the information on the top right graph? Or was this an option in the unmodified code?

    Additionally - where did you get this equation from? Does this not indicate that as losses increase, noise power increases? It also looks like you're substituting time on target for bandwidth, which I think works for a single chirp, but may not make sense for multiple chirps.

    N = K*T*NF*L*RX_gain/ToT

    Best,

    Nate

  • Hi Nate,

    I appreciate your prompt response.

    I'm utilizing 2 subframes within a frame. In the top-right graph, I have the option to select the specific frame for analysis, with the 4 graphs adjusting accordingly.

    It's crucial to understand that altering the chirp number does not affect the two top graphs, as they pertain to full-subframe processing.

    In the top-right subplot, the blue line represents the received power from the top-left subplot at the zero-velocity bin, while the black line (noise level) signifies the average of high velocities for each range. Since they lack target data, they reflect the noise level.

    To validate these observations, you can utilize the Advanced Chirp Configuration tab in mmwave studio and set up two similar subframes with identical chirp configurations. This will automatically generate the top-right graph as seen in my screenshot.

    Regarding the noise floor equation, based on the discussion thread [link], the noise level should be calculated by dividing by Time-on-Target, which equals the number of chirps multiplied by the chirp time.

    As for the additional losses, considering our agreement on the received power calculation [ Pt * Gt * Gr * lambda^2 * sigma * Rx_gain / ( (4pi)^3 * R^4 ) ], and recognizing the black line in the top-right subplot as the noise level, we can infer that the SNR is the received power divided by the noise level. However, considering the SNR equation includes additional losses and ToT, if we acknowledge that ToT is part of the noise level as per the previous thread, we can conclude that additional losses are part of the noise floor equation.

    I look forward to hearing your thoughts on this matter.

    Thanks,
    Shlomi

  • HI Shlomi,

    The webinar referenced in your link uses this equation.

    Based off it, the noise could be calculated as (k T NF)/T_f, but I don't think you should multiply this by losses in your formula, rather, you should divide by losses since more losses will mean less noise power. 

    Best,

    Nate

  • Hi Nate,

    So, we're aligned that the noise floor is calculated by dividing by the time-on-target, which equals N*(Ramp_End_Time - ADC_Start_Time) where N is the number of chirps in a frame. Do we agree so far?

    If so, and we also agree that from the top-right subplot we can calculate the SNR as SNR = Pr / N where Pr is the received power (blue line) and N is the noise floor (black line).

    We've agreed on the formula for Pr, so if you're with me so far, you agree that the noise level includes time-on-target in its formula.

    As we know, additional losses should exist in the denominator of the SNR equation. If we agreed on the Pr equation, the only place these losses could be is in the noise floor formula, as a multiplier.

    Moreover, if we refer back to the measured vs. theoretical table I described earlier (quoted below), we see that with additional losses of 10dB, the measured and theoretical results are similar. Otherwise, there's a 10dB difference that needs explanation.

    By the way, if I split the SNR from the table into Pr and N, the measured and theoretical received power are similar, while the noise floor shows about a 10dB difference, which I attribute to the additional losses.

    Please share your thoughts.

    Thanks,

    Shlomi

    Range [m]

    Measured SNR [dB]

    Theoretical SNR [dB] (L=10dB)

    5.856

    47.8

    44.66

    12.84

    31.37

    31

    19.37

    23.84

    23.88

  • HI Shlomi,

    I understand what you mean now. I think the reason for the additional 10 dB of losses here is because of phase noise. Your equation for noise figure uses the datasheet value for the noise figure, which refers to the noise figure of the RX chain alone. If you account for the additional phase noise introduced by the TX+RX pair, your equivalent noise figure increases by about 13 dB. I apologize that I won't be able to share much more information about this because it relates to TI-protected IP. However, understand that I have discussed this with our design team and we think this is the cause for the discrepancy you're seeing.

    Best,

    Nate

  • Hi Nate,

    Do we have any rule of thumb for the value of the TX+RX noise figure?

    Are you suggesting that the NF in the SNR equation should be doubled? For example, if the receiver's NF is 13dB, should I use 26dB as the NF in the SNR equation?

    From my measurements, I've observed a disparity of 7-10 dB between the measured and theoretical results, but I haven't seen a 13 dB difference.

    Can you elaborate on the TX+RX noise figure in the AWR2544LOP?

    Thanks,
    Shlomi