This commit is contained in:
Silas
2025-02-20 05:45:23 +01:00
17 changed files with 319 additions and 161 deletions

View File

@@ -4,9 +4,9 @@ params = struct;
params.M = [4];
params.datarate = [184];
params.rop = [-12:-5];
params.rop = [-5];
precomp_mode = 0; %0=do nothing ; 1= measure; 2=precomp active
precomp_mode = 1; %0=do nothing ; 1= measure; 2=precomp active
postfilter = 0; % noise whiten. approach -> Postfilter + MLSE
db_precode = 0;
@@ -124,7 +124,7 @@ for M = wh.parameter.M.values
Opt_sig = Fiber("fsimu",Opt_sig.fs,"fiber_length",link_length/1000,"alpha",0.3,"D",0,"lambda0",1310,"gamma",0,"Dslope",0.07).process(Opt_sig);
% Receiver ROP curve
parfor i = 1:i_
for i = 1:i_
rop=wh.parameter.rop.values(i);

View File

@@ -6,15 +6,20 @@ if 1
uloops.precomp = [0];
uloops.db_precode = [0];
uloops.bitrate = [330].*1e9; %[300,330,360,390,420,450,480]
uloops.precomp = [1];
uloops.db_precode = [0];
uloops.bitrate = [300,330,360,390,420,450,480].*1e9; %[300,330,360,390,420,450,480]
% uloops.bitrate = 390e9;
% uloops.laser_wavelength = [1293,1297.5,1302,1306.5,1310,1313.4,1318,1322.7,1327.4];
uloops.laser_wavelength = [1293];
uloops.M = [4];
uloops.laser_wavelength = [1310];
uloops.M = [6];
uloops.link_length = [2]; % 1,2,3,5,6,8,10
wh = DataStorage(uloops);
wh.addStorage("ber");
wh = submit_simulations(wh,"parallel",0,"simulation_mode",1);
wh = submit_simulations(wh,"parallel",0,"simulation_mode",0);
end
wh_ana = wh;
@@ -30,7 +35,7 @@ alpha = {};
ber_dfe = {};
ngmi = [];
wavelength=1293;
wavelength=uloops.laser_wavelength;
for m = [4,6,8]
%1302
%VNLE
@@ -40,14 +45,14 @@ for m = [4,6,8]
ber_vnle = cellfun(@(x) x.vnle_pf_package{1,1}.ber_vnle, a);
%MLSE
precomp = 0;
precode = 1;
% precomp = 0;
% precode = 1;
a = wh_ana.getStoValue('ber',precomp, precode, uloops.bitrate , wavelength, m, uloops.link_length);
ber_mlse = cellfun(@(x) x.vnle_pf_package{1,1}.ber_mlse, a);
%DB
precomp = 0;
precode = 1;
% precomp = 0;
% precode = 1;
a = wh_ana.getStoValue('ber',precomp, precode, uloops.bitrate , wavelength, m, uloops.link_length);
ber_dbtgt = cellfun(@(x) x.dbtgt_package{1,1}.ber, a);

View File

@@ -240,10 +240,11 @@ else
%
% Raw_signal = Filter('filtdegree',4,"f_cutoff",Symbols.fs.*0.55,"fs",Raw_signal.fs,"filterType",filtertypes.gaussian,"active",true).process(Raw_signal);
%
% Scpe_cell{1}.eye(fsym,M,"displayname",'eye','fignum',227);
Scpe_cell{1}.eye(fsym,M,"displayname",'eye','fignum',227);
%
% Raw_signal.spectrum("normalizeTo0dB",0,"fignum",336,"fft_length",2^12);
% Raw_signal.move_it_spectrum("fignum",334);
% Raw_signal.move_it_spectrum("fignum",334);
fsym = Symbols.fs;
@@ -259,7 +260,7 @@ vnle_dfe_package = {};
dbtgt_package = {};
proc_occ = min(8,length(Scpe_cell));
proc_occ = min(1,length(Scpe_cell));
for occ = 1:proc_occ
Scpe_sig = Scpe_cell{occ};
@@ -289,7 +290,7 @@ for occ = 1:proc_occ
[result] = vnle(eq_vnle_dfe,M,Scpe_sig,Symbols,Tx_bits,"precode_mode",doub_mode,"showAnalysis",1);
vnle_dfe_package{occ} = result;
end
%%%%% VNLE + PF + MLSE %%%%

View File

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