new plots for Diss. Mostly AI gen. Few changes in actual codebase
This commit is contained in:
115
projects/Diss/400G_revisit/TX_spectra.m
Normal file
115
projects/Diss/400G_revisit/TX_spectra.m
Normal 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);
|
||||
Reference in New Issue
Block a user