Minor changes from lab pc

This commit is contained in:
Silas Labor Zizou
2025-04-08 13:29:12 +02:00
parent 8c49ec62e0
commit f93d61f5d8
5 changed files with 78 additions and 23 deletions

View File

@@ -220,10 +220,10 @@ classdef AwgKeysight
v = visadev('TCPIP0::zizou.tf.uni-kiel.de::hislip0::INSTR'); v = visadev('TCPIP0::zizou.tf.uni-kiel.de::hislip0::INSTR');
case awg_model.M8199B case awg_model.M8199B
v = visadev('TCPIP0::localhost::hislip0::INSTR'); v = visadev('TCPIP0::localhost::hislip0::INSTR');
case awg_model.M8199A
v = visadev('TCPIP0::Zizou::hislip2::INSTR');
case awg_model.M8199A_ILV case awg_model.M8199A_ILV
v = visadev('TCPIP0::Zizou::hislip0::INSTR'); v = visadev('TCPIP0::Zizou::hislip2::INSTR');
case awg_model.M8199A_ILV
v = visadev('TCPIP0::Zizou::hislip0::INSTR');
end end
debug = 0; debug = 0;
@@ -327,13 +327,13 @@ classdef AwgKeysight
elseif obj.model == awg_model.M8199B || obj.model == awg_model.M8199A || obj.model == awg_model.M8199A_ILV elseif obj.model == awg_model.M8199B || obj.model == awg_model.M8199A || obj.model == awg_model.M8199A_ILV
% SET Ref clock out (which is conn. to scope) to 10 MHz % SET Ref clock out (which is conn. to scope) to 100 MHz
obj.writeNcheck(v, ':OUTPut:FREQuency ''M1.RefClkOut'',10000000'); obj.writeNcheck(v, ':OUTPut:FREQuency ''M1.RefClkOut'',100000000');
% :OUTP:GLOB 'M1.System', OFF % :OUTP:GLOB 'M1.System', OFF
obj.writeNcheck(v, ':OUTP:GLOB ''M1.System'', ON'); obj.writeNcheck(v, ':OUTP:GLOB ''M1.System'', ON');
obj.writeNcheck(v, ':OUTP:GLOB ''M2.System'', ON'); obj.writeNcheck(v, ':OUTP:GLOB ''M2.System'', ON');
%obj.writeNcheck(v,':INIT:IMMediate ''M2'''); obj.writeNcheck(v,':INIT:IMMediate ''M2''');
end end
% operation ceomplete (opc) % operation ceomplete (opc)

View File

@@ -276,7 +276,7 @@ classdef OptAtten < handle
cnt = cnt+1; cnt = cnt+1;
end end
fprintf("\n SET: CH1 %.2f dB | CH2: %.2f dB | CH3: %.2f dB | CH4: %.2f dB\n",obj.value_state(1), obj.value_state(2), obj.value_state(3), obj.value_state(4)); fprintf("\n Pset: CH1 %.2f dB | CH2: %.2f dB | CH3: %.2f dB | CH4: %.2f dB\n",obj.value_state(1), obj.value_state(2), obj.value_state(3), obj.value_state(4));
fprintf(" ATT: CH1 %.2f dB | CH2: %.2f dB | CH3: %.2f dB | CH4: %.2f dB\n",obj.atten_state(1), obj.atten_state(2), obj.atten_state(3), obj.atten_state(4)); fprintf(" ATT: CH1 %.2f dB | CH2: %.2f dB | CH3: %.2f dB | CH4: %.2f dB\n",obj.atten_state(1), obj.atten_state(2), obj.atten_state(3), obj.atten_state(4));
fprintf(" POW: CH1 %.2f dBm | CH2: %.2f dBm | CH3: %.2f dBm | CH4: %.2f dBm \n \n",obj.power_state(1), obj.power_state(2), obj.power_state(3), obj.power_state(4)); fprintf(" POW: CH1 %.2f dBm | CH2: %.2f dBm | CH3: %.2f dBm | CH4: %.2f dBm \n \n",obj.power_state(1), obj.power_state(2), obj.power_state(3), obj.power_state(4));

View File

@@ -0,0 +1,54 @@
% Measure Bias Curve of Modulator
% 1) Loop over bias volate
% 2) measure voltgae, current and input laser power and output laser power
v_bias_range = [0:0.25:8];
v_bias_meas = NaN(size(v_range));
i_bias_meas = NaN(size(v_range));
p_out_meas = NaN(size(v_range));
%% DC Source
dcs = DC_supply("active",[1,0],"voltage",[0, 6]);
%% Optical Attenuator
voa = OptAtten("active",[0,0,2,0],"value",[0,0,0,0],"wavelength",[1550,1550,1550,1550]);
voa.set('value',[0,0,2,0]);
voa.readvals();
for i = 1:numel(v_bias_range)
dcs.set('voltage',[v_bias_range(i),6]);
% pause(1);
[p1,p2,p_out_meas(i),p4]= voa.readPower;
[v_meas,i_meas] = dcs.readVals;
v_bias_meas(i)=v_meas(1);
i_bias_meas(i)= i_meas(1);
figure(1)
clf
subplot(2,1,1)
hold on
plot(v_bias_meas,p_out_meas,'DisplayName','MZM TF in dB');
xlabel('V_{bias} in V');
ylabel('P_{out} in dBm');
grid on
xlim([min(v_bias_range), max(v_bias_range)])
subplot(2,1,2)
hold on
plot(v_bias_meas,db2pow(p_out_meas),'DisplayName','MZM TF in mW');
xlabel('V_{bias} in V');
ylabel('P_{out} in mW');
grid on
xlim([min(v_bias_range), max(v_bias_range)])
end

View File

View File

@@ -1,44 +1,45 @@
%% DC Source %% DC Source
desired_voltage = 2.1; desired_voltage = 2.8;
dcs = DC_supply("active",[1,0],"voltage",[desired_voltage, 0]); dcs = DC_supply("active",[1,0],"voltage",[desired_voltage, 0]);
dcs.set("voltage",[desired_voltage, 0]); dcs.set("voltage",[desired_voltage, 0]);
[v,i]=dcs.readVals(); [v,i]=dcs.readVals();
%% Laser %% Laser
desired_wavelength = 1310;
laser = Exfo_laser("mainframe_channel",1,"safety_mode",0,"connection_id",'10','lab_interface','gpib'); laser = Exfo_laser("mainframe_channel",1,"safety_mode",0,"connection_id",'10','lab_interface','gpib');
laser.setWavelength(1311); laser.setWavelength(desired_wavelength);
laser.setPower(0); laser.setPower(10);
laser.enableLaser(); laser.enableLaser();
%% Optical Attenuator %% Optical Attenuator
voa = OptAtten("active",[2,0,0,0],"value",[-5,0,0,0],"wavelength",[1310,1310,1310,1310]); voa = OptAtten("active",[0,0,2,0],"value",[0,0,-5,0],"wavelength",[desired_wavelength,desired_wavelength,desired_wavelength,desired_wavelength]);
voa.set('value',[-5,0,0,0]); voa.set('value',[0,0,3,0]);
voa.readvals();
%% Construct AWG and Scope Modules %%%%%% %% Construct AWG and Scope Modules %%%%%%
fdac = 256e9; fdac = 256e9;
fadc = 160e9; fadc = 160e9;
Scp = ScopeKeysight("model","DSAZ634A",'autoscale',1,"fadc","GSa_160","channel",[0,0,1,0],"recordLen",4000000,"removeDC",1,"extRef",0); Scp = ScopeKeysight("model","DSAZ634A",'autoscale',1,"fadc","GSa_160","channel",[0,0,1,0],"recordLen",4000000,"removeDC",1,"extRef",1);
Awg = AwgKeysight("model","M8199A_ILV","fdac",fdac,"scaletodac",[1,1],"skews",[0,0],"voltages",[0,0.1]); Awg = AwgKeysight("model","M8199A_ILV","fdac",fdac,"scaletodac",[1,1],"skews",[0,0],"voltages",[0,0.8]);
A2S = Awg2Scope(Awg,Scp,[0,3,0,0],"waitUntilClick",0); % A2S = Awg2Scope(Awg,Scp,[0,0,3,0],"waitUntilClick",0); %
%%%%% Symbol Generation %%%%%% %%%%% Symbol Generation %%%%%%
fsym = 56e9; fsym = 56e9;
M = 4; M = 4;
rcalpha = 0.05; rcalpha = 0.2;
Pform = Pulseformer("fsym",fsym,"fdac",4*fsym,"pulse","rrc","pulselength",16,"rrcalpha",rcalpha); Pform = Pulseformer("fsym",fsym,"fdac",4*fsym,"pulse","rrc","pulselength",16,"rrcalpha",rcalpha);
Pamsource = PAMsource(... Pamsource = PAMsource(...
"fsym",fsym,"M",M,"order",17,"useprbs",0,... "fsym",fsym,"M",M,"order",17,"useprbs",1,...
"fs_out",fdac,... "fs_out",fdac,...
"applyclipping",0,"clipfactor",1.5,... "applyclipping",0,"clipfactor",4,...
"applypulseform",0,"pulseformer",Pform,... "applypulseform",1,"pulseformer",Pform,...
"randkey",1,... "randkey",1,...
"db_precode",0,"db_encode",0,... "db_precode",0,"db_encode",0,...
"mrds_code",0,"mrds_blocklength",512); "mrds_code",0,"mrds_blocklength",512);
tx_signal = Pamsource.process(); tx_signal = Pamsource.process();
tx_signal.spectrum("displayname",'Tx Spectrum','fignum',10,'normalizeTo0dB',0);
A2S.process("signal2",tx_signal); [S1,S2,S3,S4] = A2S.process("signal2",tx_signal);
S3.spectrum("displayname",'Rx Spectrum','fignum',10,'normalizeTo0dB',0);