simualtion pam 6

This commit is contained in:
Silas Oettinghaus
2024-04-22 18:09:00 +02:00
parent 1bb02507cc
commit 0600abfcbf

View File

@@ -4,7 +4,7 @@ clear
filename = '112G_2'; filename = '112G_2';
load_sequence = 0; load_sequence = 0;
M = 8; M = 6;
datarate = 448e9; datarate = 448e9;
kover = 4; kover = 4;
@@ -19,8 +19,8 @@ phd_bw = lowpass_cutoff;
scp_bw = lowpass_cutoff; scp_bw = lowpass_cutoff;
LP_awg = Filter('filtdegree',4,"f_cutoff",90e9,"fs",fdac*kover,"filterType",filtertypes.butterworth); LP_awg = Filter('filtdegree',4,"f_cutoff",90e9,"fs",fdac*kover,"filterType",filtertypes.butterworth);
LP_laser = Filter('filtdegree',2,"f_cutoff",100e9,"fs",fdac*kover,"filterType",filtertypes.gaussian); LP_modulator= Filter('filtdegree',2,"f_cutoff",70e9,"fs",fdac*kover,"filterType",filtertypes.butterworth);
LP_opt = Filter('filtdegree',4,"f_cutoff",fsym/log2(M).*1.5,"fs",fdac*kover,"filterType",filtertypes.gaussian); LP_opt = Filter('filtdegree',3,"f_cutoff",fsym/log2(M).*1.5,"fs",fdac*kover,"filterType",filtertypes.gaussian);
LP_phd = Filter('filtdegree',2,"f_cutoff",70e9,"fs",fdac*kover,"filterType",filtertypes.butterworth); LP_phd = Filter('filtdegree',2,"f_cutoff",70e9,"fs",fdac*kover,"filterType",filtertypes.butterworth);
LP_scpe = Filter('filtdegree',4,"f_cutoff",110e9,"fs",fadc,"filterType",filtertypes.butterworth); LP_scpe = Filter('filtdegree',4,"f_cutoff",110e9,"fs",fadc,"filterType",filtertypes.butterworth);
@@ -57,10 +57,17 @@ X = Pulseformer("fsym",fsym,"fdac",fdac,"pulse","rrc","pulselength",16,"rrcalpha
X = AWG("fdac",fdac,"dac_min",-1,"dac_max",1,"H_lpf",LP_awg,"kover",kover,"bit_resolution",5,"lpf_active",1).process(X); X = AWG("fdac",fdac,"dac_min",-1,"dac_max",1,"H_lpf",LP_awg,"kover",kover,"bit_resolution",5,"lpf_active",1).process(X);
% 6) Lowpass behavior before laser % 6) Lowpass behavior before laser
X = LP_laser.process(X); X = LP_modulator.process(X);
% 7) Normalize signal % 7) Normalize signal
X = X.normalize("mode","oneone"); X = X.normalize("mode","oneone");
% linearGain = 1;
% limit = 1;
% SaturatingAmplifier = serdes.SaturatingAmplifier('Mode',1,...
% 'Limit',limit,'LinearGain',linearGain);
% X.signal = SaturatingAmplifier(X.signal);
% X.signal = min(max(X.signal,-0.8),0.8);
% X = X.normalize("mode","oneone");
sir = [20:2:36]; %decibel = attenuation of interference path sir = [20:2:36]; %decibel = attenuation of interference path
laser_linewidth = [1e5 1e6 10e6]; laser_linewidth = [1e5 1e6 10e6];
@@ -68,8 +75,8 @@ sir = [20:2:36]; %decibel = attenuation of interference path
vp = [0.25,0.5,0.75,1]; vp = [0.25,0.5,0.75,1];
vb = [1:0.1:1.8]; vb = [1:0.1:1.8];
rop = [-5:0]; rop = -5:0;
% sir = 25; % sir = 35;
% laser_linewidth = 1e6; % laser_linewidth = 1e6;
% pn_key = 9; % pn_key = 9;
% vp = 0.5; % vp = 0.5;
@@ -81,9 +88,9 @@ for s = 1:length(sir)
for l = 1:length(laser_linewidth) for l = 1:length(laser_linewidth)
for pnk = 1:length(pn_key) for pnk = 1:length(pn_key)
for n = 1:length(vp) for n = 1:length(vp)
for m = 1:length(vb) parfor m = 1:length(vb)
cnt = cnt+1; % cnt = cnt+1;
% 1) Laser; Modulation -> OPTICAL DOMAIN % 1) Laser; Modulation -> OPTICAL DOMAIN
u_pi = 2; u_pi = 2;
@@ -91,8 +98,6 @@ for s = 1:length(sir)
extmodlaser = EML("mode",eml_mode.im_cosinus,"power",3,"fsimu",X.fs,"lambda",1290,"bias",vbias,"u_pi",u_pi,"linewidth",laser_linewidth(l),"randomkey",pn_key(pnk)); extmodlaser = EML("mode",eml_mode.im_cosinus,"power",3,"fsimu",X.fs,"lambda",1290,"bias",vbias,"u_pi",u_pi,"linewidth",laser_linewidth(l),"randomkey",pn_key(pnk));
E = X.*vp(n); E = X.*vp(n);
% E.signal = min(max(E.signal,-0.2),0.2);
[Opt,extmodlaser] = extmodlaser.process(E); [Opt,extmodlaser] = extmodlaser.process(E);
% figure(m) % figure(m)
@@ -199,7 +204,7 @@ for s = 1:length(sir)
end end
end end
end end
save('pam_level_comp'); save('pam6_level_comp');
disp('saved_run2'); disp('saved_run2');
end end
end end