new plots for Diss. Mostly AI gen. Few changes in actual codebase

This commit is contained in:
Silas Oettinghaus
2026-07-30 08:35:45 +02:00
parent 125d8508ca
commit 7a9deaeb0c
62 changed files with 6171 additions and 630 deletions

View File

@@ -0,0 +1,115 @@
rates = [420e9];
rcalpha = 0.05;
fsym = rates/2;
apply_pulsef = 1;
M = 4;
%% Normal Tx Signal
duob_mode = db_mode.no_db;
Pform = Pulseformer("fsym",fsym,"fdac",4*fsym,"pulse","rrc","pulselength",16,"alpha",rcalpha);
[Digi_sig,~,~] = PAMsource(...
"fsym",fsym,"M",M,"order",21,"useprbs",0,...
"fs_out",256e9,...
"applyclipping",0,"clipfactor",1.5,...
"applypulseform",apply_pulsef,"pulseformer",Pform,...
"randkey",1,...
'duobinary_mode',duob_mode,...
"mrds_code",0,"mrds_blocklength",512).process();
Digi_sig= Digi_sig.normalize("mode","oneone");
Digi_sig = Digi_sig-mean(Digi_sig.signal);
maxamp = -28; %optimized for DB!
precomp_est = ChannelFreqResp("Nacq",2048,"Navg",100,"Ncp",63,'f_ref',Digi_sig.fs);
precomp_path = "W:\labdata\sioe_labor\precomp";
precomp_fn = "lab_high_speed";
Digi_sig_pre = precomp_est.precomp(Digi_sig,'maxampdb',maxamp,'loadPath',precomp_path,'fileName',precomp_fn);
Digi_sig_pre.signal = reshape(Digi_sig_pre.signal,[],1);
Digi_sig_pre = Digi_sig_pre.resample("fs_out",256e9);
Digi_sig_pre= Digi_sig_pre.normalize("mode","oneone");
Digi_sig_pre = Digi_sig_pre-mean(Digi_sig_pre.signal);
% precomp_est.plot
Digi_sig_rx = precomp_est.apply(...
Digi_sig,'maxampdb',0,'loadPath',precomp_path,'fileName',precomp_fn);
Digi_sig_pre_rx = precomp_est.apply(...
Digi_sig_pre,'maxampdb',0,'loadPath',precomp_path,'fileName',precomp_fn);
Digi_sig.spectrum(...
"displayname",'Tx w/o pre-emphasis',...
"fignum",2,"normalizeTo0dB",0,"color",[0,0,0]);
Digi_sig_pre.spectrum(...
"displayname",'Tx w/ pre-emphasis',...
"fignum",2,"normalizeTo0dB",0,"color",clr.Paired.lblue);
Digi_sig_rx.spectrum(...
"displayname",'Rx w/o pre-emphasis',...
"fignum",2,"normalizeTo0dB",0,"color",clr.Paired.dred);
Digi_sig_pre_rx.spectrum(...
"displayname",'Rx w/ pre-emphasis',...
"fignum",2,"normalizeTo0dB",0,"color",clr.Paired.dblue);
%% Duobinary Encoded Tx Signal
duob_mode = db_mode.db_encoded;
Pform = Pulseformer("fsym",fsym,"fdac",4*fsym,"pulse","rrc","pulselength",16,"alpha",rcalpha);
[Digi_sig_DB,Symbols,Tx_bits] = PAMsource(...
"fsym",fsym,"M",M,"order",21,"useprbs",0,...
"fs_out",256e9,...
"applyclipping",0,"clipfactor",1.5,...
"applypulseform",apply_pulsef,"pulseformer",Pform,...
"randkey",1,...
'duobinary_mode',duob_mode,...
"mrds_code",0,"mrds_blocklength",512).process();
Digi_sig_DB= Digi_sig_DB.normalize("mode","oneone");
maxamp = -38; %optimized for DB!
precomp_est = ChannelFreqResp("Nacq",2048,"Navg",100,"Ncp",63,'f_ref',Digi_sig_DB.fs);
precomp_path = "W:\labdata\sioe_labor\precomp";
precomp_fn = "lab_high_speed";
Digi_sig_DB_pre = precomp_est.precomp(Digi_sig_DB,'maxampdb',maxamp,'loadPath',precomp_path,'fileName',precomp_fn);
Digi_sig_DB_pre.signal = reshape(Digi_sig_DB_pre.signal,[],1);
Digi_sig_DB_pre = Digi_sig_DB_pre.resample("fs_out",256e9);
Digi_sig_DB_pre = Digi_sig_DB_pre.normalize("mode","oneone");
%%
AWG_ = M8199B("kover",4);
% AWG_ = AWG("fdac",256e9,"f_cutoff",fsym,"lpf_active",0,"kover",4,"bit_resolution",12,"upsampling_method","samplehold","precomp_sinc_rolloff",1);
El_sig = AWG_.process(Digi_sig);
El_sig_preemph = AWG_.process(Digi_sig_pre);
El_sig_channel = AWG_.process(Digi_sig_channel);
El_sig.spectrum("displayname",'Full Response w/o preemphasis','fignum',1,'normalizeTo0dB',0,'color',clr.Paired.lblue);
El_sig_preemph.spectrum("displayname",'Full Response w/ preemphasis','fignum',1,'normalizeTo0dB',0,'color',clr.Paired.dblue);
El_sig_channel.spectrum("displayname",'Full Response w/ measured channel','fignum',1,'normalizeTo0dB',0,'color',clr.Paired.blue);
El_sig_DB_preemph = AWG_.process(Digi_sig_DB_pre);
El_sig_DB = AWG_.process(Digi_sig_DB);
El_sig_DB.spectrum("displayname",'DB Response w/o preemphasis','fignum',1,'normalizeTo0dB',0,'color',clr.Paired.lorange);
El_sig_DB_preemph.spectrum("displayname",'DB Response w/ preemphasis','fignum',1,'normalizeTo0dB',0,'color',clr.Paired.dorange);