MPI Simulations and stuff

This commit is contained in:
Silas Oettinghaus
2024-08-14 09:36:51 +02:00
parent 1eeb970d8f
commit 34f9149346
61 changed files with 4295 additions and 429 deletions

View File

@@ -0,0 +1,195 @@
M=4;
fdac = 256e9;%fsym;
fadc = 256e9;
fsym = ([32:16:240].*1e9);
%fsym = 160e9;
% 1) PRBS Generation
O = 18; %order of prbs
N = 2^(O-1); %length of prbs
[~,seed] = prbs(O,1); %initialize first seed of prbs
bitpattern=[];
for i = 1:log2(M)
[bitpattern(:,i),seed] = prbs(O,N,seed);
end
if M == 6
bitpattern = reshape(bitpattern,[],1);
bitpattern = bitpattern(1:end-mod(length(bitpattern),5));
end
% 2 ) Build Inf. signal class
bits = Informationsignal(bitpattern);
% 5) AWG (lowpass, quantization, sample and hold)
kover = 8;
LP_awg = Filter('filtdegree',4,"f_cutoff",75e9,"fs",fdac*kover,"filterType",filtertypes.butterworth);
powerlist = [];
input_papr = zeros(numel(fsym),1);
output_papr = zeros(numel(fsym),1);
for i = 1:length(fsym)
%%%%% Map to PAM %%%%%%
digimod_out = PAMmapper(M,0).map(bits);
digimod_out.fs = fsym(i);
% Y.plot("fignum",2,'displayname',['PAM 4 Signal; Raised Cosine Alpha: ',num2str(rrca)]);
% X.plot("fignum",2,'displayname',['PAM 4 Signal; Raised Cosine Alpha: ',num2str(rrca)])
% digimod_out.plot("fignum",2,'displayname',['PAM 4 Signal'])
%X.spectrum("displayname",['PAM 4; Baudrate: ',num2str(fsym(i).*1e-9), ' GBd', num2str(rrca)],'fignum',4);
%%%%% AWG %%%%%%
X = digimod_out;
X1 = M8199B("kover",kover).process(X);
X2 = M8199A("kover",kover).process(X);
X3 = M8196A("kover",kover).process(X);
% X.spectrum("displayname",['Baudrate: ',num2str(fsym(i).*1e-9), ' GBd'],'fignum',4);
powerlist1(i) = X1.power;
vpplist1(i) = max(X1.signal)-min(X1.signal);
paprlist1(i) = X1.papr_lin;
powerlist2(i) = X2.power;
vpplist2(i) = max(X2.signal)-min(X2.signal);
paprlist2(i) = X2.papr_lin;
if fsym(i) <= 113e9
powerlist3(i) = X3.power;
vpplist3(i) = max(X3.signal)-min(X3.signal);
paprlist3(i) = X3.papr_lin;
else
powerlist3(i) =NaN;
vpplist3(i) = NaN;
paprlist3(i) = NaN;
end
%%%%% Pulseforming %%%%%%
rrca=0.3;
X = Pulseformer("fsym",fsym(i),"fdac",256e9,"pulse","rrc","pulselength",16,"rrcalpha",rrca).process(digimod_out);
% % %%%%% Clip to PAM range %%%%%%
min_ = min(digimod_out.signal).*1.3;
max_ = max(digimod_out.signal).*1.3;
X.signal = clip(X.signal,min_,max_);
X1 = M8199B("kover",kover).process(X);
X2 = M8199A("kover",kover).process(X);
X = Pulseformer("fsym",fsym(i),"fdac",92e9,"pulse","rrc","pulselength",16,"rrcalpha",rrca).process(digimod_out);
% % %%%%% Clip to PAM range %%%%%%
min_ = min(digimod_out.signal).*1.3;
max_ = max(digimod_out.signal).*1.3;
X.signal = clip(X.signal,min_,max_);
X3 = M8196A("kover",kover).process(X);
powerlist1_opt(i) = X1.power;
vpplist1_opt(i) = max(X1.signal)-min(X1.signal);
paprlist1_opt(i) = X1.papr_lin;
powerlist2_opt(i) = X2.power;
vpplist2_opt(i) = max(X2.signal)-min(X2.signal);
paprlist2_opt(i) = X2.papr_lin;
if fsym(i) <= 113e9
powerlist3_opt(i) = X3.power;
vpplist3_opt(i) = max(X3.signal)-min(X3.signal);
paprlist3_opt(i) = X3.papr_lin;
else
powerlist3_opt(i) =NaN;
vpplist3_opt(i) = NaN;
paprlist3_opt(i) = NaN;
end
end
cols = linspecer(3);
figure(6)
hold on
scatter(fsym.*1e-9,vpplist1,'DisplayName','M8199B','MarkerFaceColor',cols(1,:),'MarkerEdgeColor',cols(1,:),'LineWidth',2);
scatter(fsym.*1e-9,vpplist2,'DisplayName','M8199A','MarkerFaceColor',cols(2,:),'MarkerEdgeColor',cols(2,:),'LineWidth',2);
scatter(fsym.*1e-9,vpplist3,'DisplayName','M8196A','MarkerFaceColor',cols(3,:),'MarkerEdgeColor',cols(3,:),'LineWidth',2);
xticks(fsym.*1e-9)
xlabel("Baudrate in GBaud");
ylabel("Vpp in V")
legend
ylim([0.3 1.4])
thickenfigure;
figure(7)
hold on
scatter(fsym.*1e-9,powerlist1,'DisplayName','M8199B','MarkerFaceColor',cols(1,:),'MarkerEdgeColor',cols(1,:),'LineWidth',2);
scatter(fsym.*1e-9,powerlist2,'DisplayName','M8199A','MarkerFaceColor',cols(2,:),'MarkerEdgeColor',cols(2,:),'LineWidth',2);
scatter(fsym.*1e-9,powerlist3,'DisplayName','M8196A','MarkerFaceColor',cols(3,:),'MarkerEdgeColor',cols(3,:),'LineWidth',2);
xticks(fsym.*1e-9)
xlabel("Baudrate in GBaud");
ylabel("Output Power in dBm")
legend
ylim([-12 4])
thickenfigure;
figure(8)
hold on
scatter(fsym.*1e-9,paprlist1,'DisplayName','M8199B','MarkerFaceColor',cols(1,:),'MarkerEdgeColor',cols(1,:),'LineWidth',2);
scatter(fsym.*1e-9,paprlist2,'DisplayName','M8199A','MarkerFaceColor',cols(2,:),'MarkerEdgeColor',cols(2,:),'LineWidth',2);
scatter(fsym.*1e-9,paprlist3,'DisplayName','M8196A','MarkerFaceColor',cols(3,:),'MarkerEdgeColor',cols(3,:),'LineWidth',2);
xticks(fsym.*1e-9)
xlabel("Baudrate in GBaud");
ylabel("PAPR linear")
legend
ylim([3 10])
thickenfigure;
figure(9)
hold on
scatter(fsym.*1e-9,vpplist1_opt,'DisplayName','M8199B','Marker','x','MarkerFaceColor',cols(1,:),'MarkerEdgeColor',cols(1,:),'LineWidth',3);
scatter(fsym.*1e-9,vpplist2_opt,'DisplayName','M8199A','Marker','x','MarkerFaceColor',cols(2,:),'MarkerEdgeColor',cols(2,:),'LineWidth',3);
scatter(fsym.*1e-9,vpplist3_opt,'DisplayName','M8196A','Marker','x','MarkerFaceColor',cols(3,:),'MarkerEdgeColor',cols(3,:),'LineWidth',3);
xticks(fsym.*1e-9)
xlabel("Baudrate in GBaud");
ylabel("Vpp in V")
legend
ylim([0.3 1.4])
thickenfigure;
figure(10)
hold on
scatter(fsym.*1e-9,powerlist1_opt,'DisplayName','M8199B','Marker','x','MarkerFaceColor',cols(1,:),'MarkerEdgeColor',cols(1,:),'LineWidth',3);
scatter(fsym.*1e-9,powerlist2_opt,'DisplayName','M8199A','Marker','x','MarkerFaceColor',cols(2,:),'MarkerEdgeColor',cols(2,:),'LineWidth',3);
scatter(fsym.*1e-9,powerlist3_opt,'DisplayName','M8196A','Marker','x','MarkerFaceColor',cols(3,:),'MarkerEdgeColor',cols(3,:),'LineWidth',3);
xticks(fsym.*1e-9)
xlabel("Baudrate in GBaud");
ylabel("Output Power in dBm")
legend
ylim([-12 4])
thickenfigure;
figure(11)
hold on
scatter(fsym.*1e-9,paprlist1_opt,'DisplayName','M8199B','Marker','x','MarkerFaceColor',cols(1,:),'MarkerEdgeColor',cols(1,:),'LineWidth',3);
scatter(fsym.*1e-9,paprlist2_opt,'DisplayName','M8199A','Marker','x','MarkerFaceColor',cols(2,:),'MarkerEdgeColor',cols(2,:),'LineWidth',3);
scatter(fsym.*1e-9,paprlist3_opt,'DisplayName','M8196A','Marker','x','MarkerFaceColor',cols(3,:),'MarkerEdgeColor',cols(3,:),'LineWidth',3);
xticks(fsym.*1e-9)
xlabel("Baudrate in GBaud");
ylabel("PAPR linear")
legend
ylim([3 10])
thickenfigure;
autoArrangeFigures