function tfplist = etsi_tfplansVDSL(tfplist) %% =========================================================================== % etsi_tfplansVDSL(tfplist) - Sets up tfplans for some VDSL systems % used for ETSI SpM % % Parameter: tfplist Structure describing the time and freq plan % Returns: tfplist Structure describing the time and freq plan % % Example(s): % ex.tfplist = etsi_tfplansVDSL(ex.tfplist); Add to existing tfplist % tfplan=getList(ex.tfplist,'ETSI-VDSL-Template-E1-Pex-P2-M2'); % % References: % ETSI TM6 034w08 % ETSI TM6 m01p20a5 and m01p21a7 spm2_LL % ETSI STC TM6 TM6(98)10 rev. 5 % % Note that according to ETSI TM6 013w07 the UPBO parameters are % equal for both 997 and 998 % % ETSI TR 101 830-2, Spectral management on metallic access % networks; Part 2: Technical methods and performance % evaluations, m01p20a5 %% =========================================================================== %% =========================================================================== % Copyright (C): % 2003-2009 by Forschungszentrum Telekommunikation Wien, Austria; % All rights reserved. % Project : FTW's xDSLsimu % Author(s) : Tomas Nordstrom (Tomas.Nordstrom@FTW.at) % % CVS: $Id: etsi_tfplansVDSL.m,v 1.2 2005/01/04 10:25:12 tono Exp $ %% =========================================================================== % Change History % 2003-11-28 (ToNo) Created % 2003-12-01 (ToNo) Now based on theoretical calculations (not DMT) % 2005-03-29 (ToNo) Updated UPBO band representation % 2008-11-03 (ToNo) Allow etsi_masksVDSL NOT be defined in tfplist %% =========================================================================== target.ds=6.4; target.us=6.4; gbsize = 250e3; % Define guardband size gb2 = gbsize/2; bandplan = [138 3000 5100 7050 12000]*1e3; E1bpds = [bandplan(1) bandplan(2)-gb2 bandplan(3)+gb2 bandplan(4)-gb2 ]; E1bpus = [bandplan(2)+gb2 bandplan(3)-gb2 bandplan(4)+gb2 bandplan(5)]; E1U0bpus = [30e3 138e3 E1bpus]; bandplan = [138 3750 5200 8500 12000]*1e3; E2bpds = [bandplan(1) bandplan(2)-gb2 bandplan(3)+gb2 bandplan(4)-gb2 ]; E2bpus = [bandplan(2)+gb2 bandplan(3)-gb2 bandplan(4)+gb2 bandplan(5)]; E2U0bpus = [30e3 138e3 E2bpus]; %% =========================================================================== % Use a template, as order is important! def_tfplan = templateTFP; def_tfplan.PSD.active.upstream = [30e3 12e6]; def_tfplan.PSD.active.downstream = [138e3 12e6]; % Select upstream power back-off method def_tfplan.PSD.UPBO.method = 'RefRef'; def_tfplan.PSD.UPBO.param.refa = [-47.3 -54]; % RefRef noise E def_tfplan.PSD.UPBO.param.refb = [-27.27 -18.1]; def_tfplan.PSD.HAM.active = 0; def_tfplan.timeDivision.up = 1; def_tfplan.timeDivision.down = 1; def_tfplan.timeDivision.sync = 1; def_tfplan.fixBitrate.name = 'RBL'; def_tfplan.fixBitrate.active = 0; def_tfplan.fixBitrate.param.target_us = target.us; def_tfplan.fixBitrate.param.target_ds = target.ds; def_tfplan.lcname = 'ETSI-VDSL-theo'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Need the templates in etsi_masksVDSL.m tname = 'ETSI-VDSL-Template-E1-Pex-P2-M2'; mix = searchList(tfplist,tname); if length(mix) == 0, % Didn't call etsi_masksVDSL before, get it now tmp_tfplist = etsi_masksVDSL([]); else tmp_tfplist = tfplist; end; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-VDSL-E1-Pex-P2-M2'; masktf = getList(tmp_tfplist,'ETSI-VDSL-Template-E1-Pex-P2-M2'); tmp_tfplan.PSD.downstream = masktf.PSD.downstream; tmp_tfplan.PSD.upstream = masktf.PSD.upstream; tmp_tfplan.PSD.UPBO.band = [3000 5100; 7050 12000]*1e3; tmp_tfplan.PSD.active.actmaskds = ... sprintf('activeVDSLf(f,[%s])',num2str(E1bpds)); tmp_tfplan.PSD.active.actmaskus = ... sprintf('activeVDSLf(f,[%s])',num2str(E1bpus)); tmp_tfplan.lcname='ETSI-VDSL-theo'; tfplist=insertList(tfplist,tmp_tfplan); % tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-VDSL-E2-Pex-P1-M1'; masktf = getList(tmp_tfplist,'ETSI-VDSL-Template-E2-Pex-P1-M1'); tmp_tfplan.PSD.downstream = masktf.PSD.downstream; tmp_tfplan.PSD.upstream = masktf.PSD.upstream; tmp_tfplan.PSD.UPBO.band = [3750 5200; 8500 12000]*1e3; tmp_tfplan.PSD.active.actmaskds = ... sprintf('activeVDSLf(f,[%s])',num2str(E2bpds)); tmp_tfplan.PSD.active.actmaskus = ... sprintf('activeVDSLf(f,[%s])',num2str(E2bpus)); tmp_tfplan.lcname='ETSI-VDSL-theo'; tfplist=insertList(tfplist,tmp_tfplan); % tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-VDSL-E2-Pex-P2-M2'; masktf = getList(tmp_tfplist,'ETSI-VDSL-Template-E2-Pex-P2-M2'); tmp_tfplan.PSD.downstream = masktf.PSD.downstream; tmp_tfplan.PSD.upstream = masktf.PSD.upstream; tmp_tfplan.PSD.UPBO.band = [3750 5200; 8500 12000]*1e3; tmp_tfplan.PSD.active.actmaskds = ... sprintf('activeVDSLf(f,[%s])',num2str(E2bpds)); tmp_tfplan.PSD.active.actmaskus = ... sprintf('activeVDSLf(f,[%s])',num2str(E2bpus)); tmp_tfplan.lcname='ETSI-VDSL-theo'; tfplist=insertList(tfplist,tmp_tfplan); % -------------- % With US0 % Note that no UPBO is done in the first (US0) upstream band % For MPM tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-VDSL-E1U0-Pex-P2-M1'; masktf = getList(tmp_tfplist,'ETSI-VDSL-Template-E1U0-Pex-P2-M1'); tmp_tfplan.PSD.downstream = masktf.PSD.downstream; tmp_tfplan.PSD.upstream = masktf.PSD.upstream; tmp_tfplan.PSD.UPBO.band = [3000 5100; 7050 12000]*1e3; tmp_tfplan.PSD.active.actmaskds = ... sprintf('activeVDSLf(f,[%s])',num2str(E1bpds)); tmp_tfplan.PSD.active.actmaskus = ... sprintf('activeVDSLf(f,[%s])',num2str(E1U0bpus)); tmp_tfplan.lcname='ETSI-VDSL-theo'; tfplist=insertList(tfplist,tmp_tfplan); % tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-VDSL-E1U0-Pex-P2-M2'; masktf = getList(tmp_tfplist,'ETSI-VDSL-Template-E1U0-Pex-P2-M2'); tmp_tfplan.PSD.downstream = masktf.PSD.downstream; tmp_tfplan.PSD.upstream = masktf.PSD.upstream; tmp_tfplan.PSD.UPBO.band = [3000 5100; 7050 12000]*1e3; tmp_tfplan.PSD.active.actmaskds = ... sprintf('activeVDSLf(f,[%s])',num2str(E1bpds)); tmp_tfplan.PSD.active.actmaskus = ... sprintf('activeVDSLf(f,[%s])',num2str(E1U0bpus)); tmp_tfplan.lcname='ETSI-VDSL-theo'; tfplist=insertList(tfplist,tmp_tfplan); % With Noise D tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-VDSL-E1U0-Pex-P2-M2-D'; masktf = getList(tmp_tfplist,'ETSI-VDSL-Template-E1U0-Pex-P2-M2'); tmp_tfplan.PSD.downstream = masktf.PSD.downstream; tmp_tfplan.PSD.upstream = masktf.PSD.upstream; tmp_tfplan.PSD.UPBO.param.refa = [-47.3 -54]; % RefRef noise D tmp_tfplan.PSD.UPBO.param.refb = [-26.21 -17.36]; tmp_tfplan.PSD.UPBO.band = [3000 5100; 7050 12000]*1e3; tmp_tfplan.PSD.active.actmaskds = ... sprintf('activeVDSLf(f,[%s])',num2str(E1bpds)); tmp_tfplan.PSD.active.actmaskus = ... sprintf('activeVDSLf(f,[%s])',num2str(E1U0bpus)); tmp_tfplan.lcname='ETSI-VDSL-theo'; tfplist=insertList(tfplist,tmp_tfplan); % tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-VDSL-E2U0-Pex-P2-M2'; masktf = getList(tmp_tfplist,'ETSI-VDSL-Template-E2-Pex-P2-M2'); tmp_tfplan.PSD.downstream = masktf.PSD.downstream; tmp_tfplan.PSD.upstream = masktf.PSD.upstream; tmp_tfplan.PSD.UPBO.band = [3750 5200; 8500 12000]*1e3; tmp_tfplan.PSD.active.actmaskds = ... sprintf('activeVDSLf(f,[%s])',num2str(E2bpds)); tmp_tfplan.PSD.active.actmaskus = ... sprintf('activeVDSLf(f,[%s])',num2str(E2U0bpus)); tmp_tfplan.lcname='ETSI-VDSL-theo'; tfplist=insertList(tfplist,tmp_tfplan);