ADRV9002
Recommended for New Designs
The ADRV9002 is a highly integrated RF transceiver that has dual-channel transmitters, dual-channel receivers, integrated synthesizers, and digital signal...
Datasheet
ADRV9002 on Analog.com
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
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
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
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