Post Go back to editing

Rx Line MATLAB Model

Category: Hardware
Product Number: ADRV9002

Hi, 

I am trying to understand the Receiver operation, based on the data sheet i have created a MATLAB model to understand the gain and ADC performance.

Based on the datasheet and this model, I don't see the expected Rx power in the receive window. I have been inputting a 45Mhz Signal at -40dBm

I have tested using automatic gain control and manual gain control.

my model shows that at -40 dBm I should expect to receive -28.5 dBfs, in TES i see -34.73 dBfs at gain index 255.

Any idea on why my measurements don't match the expected power? 

clear all;

%The power at the RF Transceiver’s ADC is equal to:
%DTRM_inputPower + RF_frontEndGain + RF_transceiverGain
%e.g. -42 dBm + 30.6dB + 19.9dB = 8.5dBm
%RF_FrontEndGain = 30.6; %dB
RF_FrontEndGain = 0; % There's no RF front-end gain here so changed to 0dB (note gain is in dB not dBm)
RF_TransceiverGain = 20; %dB - change this based on Gain Index value 21 dB = 255 (Max Gain Index)

prompt = ("Enter DTRM Input power (dBm): ");
DTRM_inputPower = input(prompt);

ADC_Power = DTRM_inputPower + RF_FrontEndGain + RF_TransceiverGain;
fprintf('ADC Power = %0.2f dBm\n' , ADC_Power);

% The voltage at the ADC is equal to:
% sqrt(ADC_impedance * 10^(RF_transceiverPowerAt_ADC/10)/1000)
% e.g. with 8.5dBm at the ADC, ADC_voltage = sqrt(100 * 10^(8.5/10)/1000) = 0.8414V
% Note that the ADC impedance is 100 ohms, not 50 ohms

Z_ADC = 100;
%RF_transceiverPowerAt_ADC = 8.5; %dBm
V_ADC = sqrt(Z_ADC * 10 ^ (ADC_Power/10)/1000);
fprintf('ADC Voltage= %fV\n', V_ADC);


N_bits = (16-1); 
Vmax_ADC = 0.850; %v

%The DTRM output is equal to:
% %out.DTRM_out = 2^(N_bits-1) * V_ADC/ADC_maxVoltage; 
% %e.g. if ADC voltage = 0.8414V, 
% %out.DTRM_out = 2^(16-1) * 0.8414/0.850 = 32436

 DTRM_out =  2^N_bits * V_ADC/Vmax_ADC; 
 %dBFS = 20 * log10(32436/2^(N_bits)); %-0.09 %dBFS
 dBFS = 20 * log10(DTRM_out/2^(N_bits)); %-0.09 %dBFS (32436 was an example value, you need to feed in the DTRM_out value)
 
fprintf('dBFS = %0.2f dBFS\n', dBFS);

Thank you

Parents
  • Hi Oliver, I notice you mention using 45MHz signal at -40dBm but your screenshot shows 4500MHz, could you please clarify? Thanks, -Stefan

  • Hi gvozden.

    Typo in my original post, signal input was 4500MHz.

  • Hi Oliver,

    Please find the power calculation below: 

    Rx_Input = -16; %dBm
    TIA_Gain = 20; % dB
    FSIP = -11.4; % dBm
    ADC_fullscale = FSIP + Frontend_gain; % dBm
    Interface_gain = 0; %dB
    Attenuation = 0; % Gain Index 255
    Mismatch_loss = 1.3; %~1.3dB insertion loss @901 MHz
    Rx_Power_TES = Rx_Input+TIA_Gain-ADC_fullscale+Interface_gain-Attenuation-Mismatch_loss; %dBFS

    In this case, we have RX input power to be -16dBFS we have taken account for the cable loss. The TIA gain is 20dB, FSIP (Full scale in power) is -11.4dBm, interface gain is 0dB, attenuation is 0dB, insertion loss is ~1.3dB @ 900 MHz you can find all the values in the user guide.

    The below plot shows the insertion loss with respect to frequency  

    The calculated value comes to -5.9dBFS which is equivalent to the value shown in TES i.e., -6.07dBFS as you can see below 

    Regards,

    Rahul 

Reply
  • Hi Oliver,

    Please find the power calculation below: 

    Rx_Input = -16; %dBm
    TIA_Gain = 20; % dB
    FSIP = -11.4; % dBm
    ADC_fullscale = FSIP + Frontend_gain; % dBm
    Interface_gain = 0; %dB
    Attenuation = 0; % Gain Index 255
    Mismatch_loss = 1.3; %~1.3dB insertion loss @901 MHz
    Rx_Power_TES = Rx_Input+TIA_Gain-ADC_fullscale+Interface_gain-Attenuation-Mismatch_loss; %dBFS

    In this case, we have RX input power to be -16dBFS we have taken account for the cable loss. The TIA gain is 20dB, FSIP (Full scale in power) is -11.4dBm, interface gain is 0dB, attenuation is 0dB, insertion loss is ~1.3dB @ 900 MHz you can find all the values in the user guide.

    The below plot shows the insertion loss with respect to frequency  

    The calculated value comes to -5.9dBFS which is equivalent to the value shown in TES i.e., -6.07dBFS as you can see below 

    Regards,

    Rahul 

Children
  • Thank you Rahul,

    i remember seeing in the evaluation board user guide that that ADC power is 8.5dB, at full scale power so lines 2,3 and 4 make sense.

    Where does TIA and front end gain? come from? as i don't have a front end wouldn't that be 0 dB as well? 

    will the insertion loss need to be changed based on my input frequency too? 

    As for the rest of the MATLAB code i created, do i not need to worry about N number of bits or ADC voltage to model the receiver line? 

    Thanks Again

  • Hi Oliver,

    As stated in the user guide the ADRV9001 provides 20dB gain to the signal 

    The TIA_Gain and Frontend gain are the same. Apologies for the mistake in the code, I have corrected it now. Yes the insertion loss changes with the frequency as you can from the Figure 264 from the user guide. 

    Yes, you dont need to worry about the  N number of bits or ADC voltage since we are using the FSIP which is Full Scale in Power. 

    Regards

    Rahul