während Diss, 400G plots

This commit is contained in:
Silas Oettinghaus
2026-08-13 10:22:01 +02:00
parent 7a9deaeb0c
commit c77327d39f
27 changed files with 1769 additions and 248 deletions

View File

@@ -6,10 +6,10 @@ function WDM_model(options)
arguments
options.num_channels = 16;
options.channel_spacing = 400e9;
options.fiber_length_km = 0;
options.fiber_length_km = 1;
options.rand_key = 1;
options.num_realiz = 1;
options.fwm_mitigation_technique = "co";
options.fwm_mitigation_technique = "pair";
end
%%
@@ -72,7 +72,6 @@ host = getenv('HOSTNAME'); if isempty(host), host = 'localhost'; end
fname = sprintf('WDM_%s_%s_%s_%dkm_%dch_%dghz_%s.mat', char(t), host, jobid, options.fiber_length_km(end), options.num_channels, options.channel_spacing.*1e-9, options.fwm_mitigation_technique);
%%
s.num_realiz = options.num_realiz;
% s.wavelengthplan = calcWavelengthPlan(16,400e9,1310);
s.wavelengthplan = calcWavelengthPlan(options.num_channels,options.channel_spacing,1310);
@@ -162,7 +161,7 @@ end
for realiz = 1:s.num_realiz
parfor l = 1:N
for l = 1:N
[Digi_sig,Symbols{l},Tx_bits{l}] = PAMsource(...
"fsym",fsym,"M",s.M,"order",18,"useprbs",0,...
@@ -199,9 +198,9 @@ for realiz = 1:s.num_realiz
Opt_sig_wdm = Amplifier("amp_mode","ideal_no_noise","gain_mode","output_power","amplification_db",s.p_launch+10*log10(N)).process(Opt_sig_wdm);
% Opt_sig_wdm.spectrum("fignum",101,"displayname",'bla','normalizeTo0dB',0,'lambda0_nm',1310,'useWavelengthAxis',0);
Opt_sig_wdm.spectrum("fignum",101,"displayname",'bla','normalizeTo0dB',0,'lambda0_nm',1310,'useWavelengthAxis',1);
% Opt_sig_wdm.spectrum("fignum",101,"displayname",'bla','normalizeTo0dB',1,'max_num_lines',2);
%% Opt_sig_wdm.spectrum("fignum",101,"displayname",'bla','normalizeTo0dB',1,'max_num_lines',2);
%%%%%% Fiber %%%%%%
Opt_sig_wdm_fib=Opt_sig_wdm;
@@ -219,20 +218,17 @@ for realiz = 1:s.num_realiz
"beat_len",10,"corr_len",100,"dz",1,"manakov",0,...
"gamma",s.gamma,"lambda",zdw,"n_waveplates",10,"SS_dphimax",0.01,...
"SS_dzmax",50,"SS_dzmin",10,"X_alpha",0.3,"X_beta",0,"rng",1).process(Opt_sig_wdm_fib);
propdist = segment_length;
end
%%%%%% Demux after 2 km %%%%%%
%% %%%% Demux after 2 km %%%%%%
Opt_sig_wdm_demux = Optical_Demultiplex("attenuation",0,"B",200e9,"filtype",1,"fs_out",fdac*kover,"fs_in",fdac*kover*upsample_pow,"lambda_center",1310).process(Opt_sig_wdm_fib);
for ri = 1:length(s.rop)
parfor l = 1:N
for l = 1:N
%%%%%% ROP %%%%%%
Opt_sig_wdm_rx = Amplifier("amp_mode","ideal_no_noise","gain_mode","output_power","amplification_db",s.rop(ri)).process(Opt_sig_wdm_demux{l}); % rop+10*log10(N)
@@ -276,14 +272,13 @@ for realiz = 1:s.num_realiz
output_ffe{l,ri,realiz} = ffe_results;
%VNLE
pf_ncoeffs = 1;
ffe_order = [50, 5, 5];
eq_ = EQ("Ne",ffe_order,"Nb",dfe_order,"training_length",len_tr,"training_loops",5,"dd_loops",5,"K",2,"DCmu",mu_dc,"DDmu",[mu_ffe mu_dfe],"DFEmu",0.005,"FFEmu",0,"plotfinal",0,"ideal_dfe",1);
pf_ = Postfilter("ncoeff",pf_ncoeffs,"useBurg",1);
useviterbi = 0;
if useviterbi
mlse_ = MLSE_viterbi("duobinary_output",0,'M',s.M,'trellis_states',PAMmapper(s.M,0).levels);