rates = [400e9]; 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"); Digi_sig_DB_rx = precomp_est.apply(... Digi_sig_DB,'maxampdb',0,'loadPath',precomp_path,'fileName',precomp_fn); 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"); Digi_sig_DB_pre_rx = precomp_est.apply(... Digi_sig_DB_pre,'maxampdb',0,'loadPath',precomp_path,'fileName',precomp_fn); %% 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_rx = AWG_.process(Digi_sig_DB_pre_rx); Digi_sig_DB.spectrum("displayname",'DB Response w/o preemphasis','fignum',1,'normalizeTo0dB',1,'color',clr.Paired.lorange); Digi_sig_DB_pre.spectrum("displayname",'DB Response w/ preemphasis','fignum',1,'normalizeTo0dB',1,'color',clr.Paired.dorange); Digi_sig_DB_rx.spectrum("displayname",'DB Response w/o preemphasis at Rx','fignum',1,'normalizeTo0dB',1,'color',clr.Paired.lred); Digi_sig_DB_pre_rx.spectrum("displayname",'DB Response w/ preemphasis at Rx','fignum',1,'normalizeTo0dB',1,'color',clr.Paired.dred);