U9361C/F/G/M RCal Measurement Guide 85
Programming with MATLAB
Calibration Table Setup for VMA
% IF path, Start and Stop Frequency, is determined by the IF BW
% Determine IF path given IF BW
Info_BW = query(my_SA, 'DDEM:BAND?')
Info_BW_num = str2num(Info_BW)
if Info_BW_num <= 10E6
IF_path = 'B10M'
elseif Info_BW_num > 10E6 && Info_BW_num <= 25E6
IF_path = 'B25M'
elseif Info_BW_num > 25E6 && Info_BW_num <= 40E6
IF_path = 'B40M'
elseif Info_BW_num > 40E6 && Info_BW_num <= 160E6
IF_path = 'B160M'
elseif Info_BW_num > 160E6 && Info_BW_num <= 255E6
IF_path = 'B255M'
elseif Info_BW_num > 255E6 && Info_BW_num <= 510E6
IF_path = 'B510M'
elseif Info_BW_num > 510E6 && Info_BW_num <= 1000E6
IF_path = 'B100M'
end
% Assume Single-Carrier (Add additional frequency range for OFDM)
center_frequency_num = str2num(center_frequency)
freq_start = num2str(center_frequency_num)
freq_stop = num2str(center_frequency_num)
% Now populate an RCal State with the instrument parameters
fprintf(my_SA, ':SYST:CAL:CGR %d', cal_group)
fprintf(my_SA, ':SYST:CAL:ROW1:FREQ:STAR %s', freq_start);
fprintf(my_SA, ':SYST:CAL:ROW1:FREQ:STOP %s', freq_stop);
% Given Mechanical Attenuation State, go +/- x dB in 2 dB steps
mech_atten_num = str2num(mech_atten)
mech_atten_start = num2str(mech_atten_num - (mech_atten_range/2))
mech_atten_stop = num2str(mech_atten_num + (mech_atten_range/2))
mech_atten_step = '2'
fprintf(my_SA, ':SYST:CAL:ROW1:ATT:TYPE STEP');
fprintf(my_SA, ':SYST:CAL:ROW1:ATT:STAR %s', mech_atten_start);
fprintf(my_SA, ':SYST:CAL:ROW1:ATT:STOP %s', mech_atten_stop);
fprintf(my_SA, ':SYST:CAL:ROW1:ATT:STEP %s', mech_atten_step);
% Bypass electronic attenuation if it is disabled or 0dB
% QUERY automatically returns ['x' char newline]
if elec_atten == ['0' char newline]
fprintf(my_SA, ':SYST:CAL:ROW1:EATT:TYPE BYP');
else
elec_atten_num = str2num(elec_atten)
elec_atten_start = num2str(elec_atten_num -
(elec_atten_range/2))
elec_atten_stop = num2str(elec_atten_num +