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","rc","pulselength",16,"alpha",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","rc","pulselength",16,"alpha",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]) 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]) 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]) 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]) 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]) 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]) autoArrangeFigures