%% =========================================================================== % Copyright (C): % 1998-2000 by Telia Research AB, Lulea, Sweden; % 2000-2003 by Forschungszentrum Telekommunikation Wien, Austria; % All rights reserved. % % Description : Example of a PBO experiment as suggested by Mathias % Friese at VDSL workshop, Oct 6-8 1998, Boston, USA % % File : ExPBO.m % Project : FTW's xDSLsimu % Author(s) : Tomas Nordstrom (Tomas.Nordstrom@FTW.at) % : Daniel Bengtsson (Daniel.J.Bengtsson@Telia.se) % % Reference(s) : FSAN VDSL working group, "Power backoff methods % for VDSL", ETSI TM6 Lulea 983/17A0, Sweden 22-26 % June 1998. % % CVS: $Id: ExPBO.m,v 3.2 2003/08/12 13:11:43 tono Exp $ %% =========================================================================== %% =========================================================================== % Change History % 1999-01-19 (ToNo) Created % 1999-02-09 (ToNo) Updated for parameter changes in ex struct % 1999-02-25 (ToNo) Generlized list (tfplist) handling % 1999-08-19 (DaB) Updated for new tfplan struct % 1999-10-04 (DaB) Updated for new ex struct % 2000-04-05 (UvAn) Added frequency axis for the call to calcPSD % 2000-04-05 (UvAn) New return value from etsi_tfplanHAM % 2000-04-26 (ToNo) Changed the Shannon gap numbers % 2000-05-02 (ToNo) Removed defaultMaxf as it was not used % 2002-07-01 (PeKa) Octave to Matlab compatibility port %% =========================================================================== global ex; global res; scenario = 'FSAN PBO scenario'; % Scenario to run VDSLname = 'VDSL-PBO'; % Duplex method for VDSL % Set up the experiment structures ex.param = setupParam(VDSLname); % Set up default simu. param. [ex.tfplist, ex.param.HAMBandName] = ... etsi_tfplanHAM([]); % Need a HAM band definition gui.ttlist = fsan_loopsVDSL([]); % Get the FSAN PBO scenario ex.tt = getList(gui.ttlist, scenario); ex.lclist = setupLClist; % Set up some default lc values ex.clist = etsi_cablesVDSL([]); % Get ETSI VDSL cables; PBOvalues = [0 1e6 2e6 2.5e6 3e6 4e6]; ex.param.NoiseModel = 'Calculate'; tmp_tfplan = templateTFP; tmp_tfplan.name = VDSLname; tmp_tfplan.PSD.downstream ='calcPSD([0.3e6 -160 0.3e6 -60 10e6 -60 10e6 -160],''Linear'',ex.param.frequency.f)'; tmp_tfplan.PSD.upstream = tmp_tfplan.PSD.downstream; tmp_tfplan.PSD.active.upstream = [0.3e6 10e6]; tmp_tfplan.PSD.active.downstream =[0.3e6 10e6]; tmp_tfplan.PSD.PBO.method ='RefFreq'; tmp_tfplan.PSD.PBO.param.len = 0; tmp_tfplan.PSD.PBO.param.freq = 1e6; % redefined later tmp_tfplan.PSD.PBO.param.maxlen = 1500; tmp_tfplan.PSD.HAM.active = 0; tmp_tfplan.timeDivision.up = 0.5; tmp_tfplan.timeDivision.down = 0.5; tmp_tfplan.timeDivision.sync = 1; tmp_tfplan.lcname = 'VDSL-theo'; ex.tfplist=insertList(ex.tfplist,tmp_tfplan); % Global defines as described in paper lc=getList(ex.lclist,tmp_tfplan.lcname); lc.param.SNRMax = 60; % Maximum SNR available (dB) lc.param.codingGain = 2; % To give 14.8dB Shannon limit lc.param.SNRloss = 1; lc.param.efficiencyLoss = 0; % Efficiency loss (0-1) ex.lclist=setList(ex.lclist,lc.name,lc); % Test VDSL without HAMBAND ex.param.modemlist=['VDSL']; % Fast frequency axis control ex.param.frequency.fastRecalc = 1; ex.param.frequency.minfrequency = 300e3; % Min frequency (Hz) to use ex.param.frequency.maxfrequency = 10e6; % Max frequency (Hz) to use ex.param.frequency.granularity = 1000; % Granularity (Hz) in the frequency domain % Print experiment setup fprintf('\nSimulating with:\n'); eval([lc.lcPrint,'(lc)']); % Print line code setup fprintf('\n'); %% =========================================================================== % Loop over all PBO values bitrate_LTv=zeros(length(PBOvalues),10); bitrate_NTv=zeros(length(PBOvalues),10); for i=1:length(PBOvalues), % Show progress fprintf('PBO value = %2.2f MHz\n',PBOvalues(i)./1e6); % Set PBO value tmp_tfplan.PSD.PBO.param.freq=PBOvalues(i); if(tmp_tfplan.PSD.PBO.param.freq==0), tmp_tfplan.PSD.PBO.method='None' ; else tmp_tfplan.PSD.PBO.method='RefFreq'; end; ex.tfplist=setList(ex.tfplist,VDSLname,tmp_tfplan); % Evaluate this experiment result = evalExperiment; % Get bitrates [bitrate_LT, bitrate_NT ,dum1 , dum2]=calcXDSLresult(ex,result); bitrate_LTv(i,:)=2.*bitrate_LT; % Compensate for .5 TDD bitrate_NTv(i,:)=2.*bitrate_NT; end; %% =========================================================================== % Plot the different PBO curves (as done by Mathias Friese) figure; title('Constant PBO method'); ylabel('Bitrate in Mbit/s'); xlabel('Index of node (distance=index*150m)'); g=1:length(bitrate_LTv(1,:)); plot(g, bitrate_LTv(1,:),':', g,bitrate_NTv(1,:),'--'); % without PBO is first tmpstr=sprintf('%.1fMHz',PBOvalues(i)/1e6); text(7.1,bitrate_NTv(1,7),'Downstream'); text(7.1,bitrate_LTv(1,7),'Upstream without PBO'); hold on; grid('on'); plot(g, bitrate_LTv(2:length(PBOvalues),:)); % all the rest is with PBO for i=2:length(PBOvalues), % add PBO frequency to plot tmpstr=sprintf('%.1fMHz',PBOvalues(i)/1e6); text(1.1,bitrate_LTv(i,1),tmpstr); end hold off;