function tfplist = etsi_tfplansADSL(tfplist) %% =========================================================================== %etsi_tfplansADSL(tfplist) - Sets up tfplans for some standard ADSL systems % % Parameter: tfplist Structure describing the time and freq plan % Returns: tfplist Structure describing the time and freq plan % % Example(s): % ex.tfplist = etsi_tfplansADSL(ex.tfplist); Add to existing tfplist % tfplan=getList(ex.tfplist,'ADSL-ECoverPOTS'); Get tfplan for EC ADSL % % ex.tfplist = etsi_tfplansADSL([]); Create a new tfplist % tfplan=getList(ex.tfplist,'ADSL-ECoverISDN'); Get tfplan for EC ADSL % % References: % 1. ETSI STC TM6 Draft RTS/TM-06006 rev 10a (ADSL), 2001-05 % Draft ITU-T Recommendation G.992.1 % % 2. ETSI STC TM6 SpM part 2 Living list (m01p21a7) % % 3. Driton Statovci, Rickard Nilsson, and Tomas Nordström, % "Generic detection model for DMT based modems", Temporary % Document TD 23r2, 034t23r2, ETSI STC TM6, Sophia Antipolis, % France, 17-21, Nov ,2003 %% =========================================================================== %% =========================================================================== % Copyright (C): % 2001-2009 by Forschungszentrum Telekommunikation Wien, Austria; % All rights reserved. % Project : FTW's xDSLsimu % Author(s) : Tomas Nordstrom (Tomas.Nordstrom@FTW.at) % % CVS: $Id: etsi_tfplansADSL.m 752 2009-01-02 13:03:52Z tono $ %% =========================================================================== % Change History % 2001-07-03 (ToNo) Created (based of fsan_modelsMISC) % 2001-07-05 (ToNo) Fixed the ADSL over ISDN masks % 2001-08-22 (ToNo) Fixed the corner frequency 138->120 in ADSL over ISDN % 2001-08-22 (ToNo) Reduced the masks in the transmitt band to keep them % under the total power contraint % 2002-08-26 (ToNo) Made it possible to change water-filling method % 2003-12-18 (DrSt) Changed water-filling names according to % "Reference 2" % 2005-01-05 (ToNo) Merged models from ETSI SpM part2, plus name changes %% =========================================================================== df = 4.3125e3; % delta f (carrier BW) for ADSL; %% =========================================================================== % Use a template, as order is important! def_tfplan = templateTFP; % Select water-filling method: def_tfplan.fixBitrate.name = 'RBL'; % Rounded Bit-Loading (RBL) % Levin-Campello RA implemenation of Gain Adjusted Bit-Loading(GABL) % def_tfplan.fixBitrate.name = 'GABL_RA'; % Levin-Campello MA implemenation of Gain Adjusted Bit-Loading(GABL) % def_tfplan.fixBitrate.name = 'GABL_MA'; %% =========================================================================== % TFPlan definitions starting % ------------------------------- % ADSL over POTS; % Reference G.992.1 tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-ADSL-RC-ECoverPOTS'; tmp_tfplan.PSD.downstream='calcPSD([1 -100.5 .004e6-1 -100.5 .004e6 -95.5 .025875e6 -40 1.104e6 -40 3.093e6 -93 4.545e6 -110 30.e6 -110],''Log-Linear'',ex.param.frequency.f)'; tmp_tfplan.PSD.upstream='calcPSD([1 -100.5 .004e6-1 -100.5 .004e6 -95.5 .025875e6 -38 0.138e6 -38 0.307e6 -93 1.221e6 -93 1.63e6 -110 30.e6 -110],''Log-Linear'',ex.param.frequency.f)'; tmp_tfplan.lcname='ADSL-DMT'; tmp_tfplan.PSD.active.upstream=[df*(7-0.5) df*(31+0.5)]; tmp_tfplan.PSD.active.downstream=[df*(7-0.5) df*(255+0.5)]; tfplist=insertList(tfplist,tmp_tfplan); % ADSL over POTS with reduced NEXT (for FDD systems); % Reference G.992.1 tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-ADSL-RC-FDDoverPOTS'; tmp_tfplan.PSD.downstream='calcPSD([1 -100.5 .004e6-1 -100.5 .004e6 -95.5 .080e6 -75.5 .138e6-1 -47.2 .138e6 -40 1.104e6 -40 3.093e6 -93 4.545e6 -110 30.e6 -110],''Log-Linear'',ex.param.frequency.f)'; tmp_tfplan.PSD.upstream='calcPSD([1 -100.5 .004e6-1 -100.5 .004e6 -95.5 .025875e6 -38 0.138e6 -38 0.307e6 -93 1.221e6 -93 1.63e6 -110 30.e6 -110],''Log-Linear'',ex.param.frequency.f)'; tmp_tfplan.lcname='ADSL-DMT'; tmp_tfplan.PSD.active.upstream=[df*(7-0.5) df*(30+0.5)]; tmp_tfplan.PSD.active.downstream=[df*(38-0.5) df*(255+0.5)]; tfplist=insertList(tfplist,tmp_tfplan); % With splitter loss tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-ADSL-RC-FDDoverPOTS_SP'; % /1.2589 => -1dB tmp_tfplan.PSD.downstream='calcPSD([1 -102.5 .004e6-1 -102.5 .004e6 -97.5 50e3 -97.5 50e3+1 -95.5 .080e6 -75.5 .138e6-1 -47.2 .138e6 -40 1.104e6 -40 3.093e6 -93 4.545e6 -110 30.e6 -110],''Log-Linear'',ex.param.frequency.f)/1.2589'; tmp_tfplan.PSD.upstream='calcPSD([1 -102.5 .004e6-1 -102.5 .004e6 -97.5 .025875e6 -40 50e3 -40 50e3+1 -38 0.138e6 -38 0.307e6 -93 1.221e6 -93 1.63e6 -110 30.e6 -110],''Log-Linear'',ex.param.frequency.f)/1.2589'; tmp_tfplan.lcname='ADSL-DMT'; tmp_tfplan.PSD.active.upstream=[df*(7-0.5) df*(30+0.5)]; tmp_tfplan.PSD.active.downstream=[df*(38-0.5) df*(255+0.5)]; tfplist=insertList(tfplist,tmp_tfplan); % ADSL over ISDN; % Reference: ETSI STC TM6 Draft RTS/TM-06006 rev 10a (ADSL), 2001-05 tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-ADSL-RC-ECoverISDN'; tmp_tfplan.PSD.downstream='calcPSD([1 -93 .05e6 -93 .080e6 -84.9 .12e6 -40 1.104e6 -40 3.093e6 -93 4.545e6 -110 30.e6 -110],''Log-Linear'',ex.param.frequency.f)'; tmp_tfplan.PSD.upstream='calcPSD([1 -93 .05e6 -93 .08e6 -84.9 .12e6 -38 0.276e6 -38 0.614e6 -93 1.221e6 -93 1.63e6 -110 30.e6 -110],''Log-Linear'',ex.param.frequency.f)'; tmp_tfplan.lcname='ADSL-DMT'; tmp_tfplan.PSD.active.upstream=[df*(33-0.5) df*(63+0.5)]; tmp_tfplan.PSD.active.downstream=[df*(33-0.5) df*(255+0.5)]; tfplist=insertList(tfplist,tmp_tfplan); tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-ADSL-RC-FDDoverISDN'; tmp_tfplan.PSD.downstream= 'calcPSD([1 -93 93100 -93 209000 -65 253990 -51.5 254000 -40 1.104e+06 -40 3.093e+06 -93 4.545e+06 -110 3e+07 -110 ] ,''Log-Linear'',ex.param.frequency.f)'; tmp_tfplan.PSD.upstream= 'calcPSD([1 -93 .05e6 -93 .08e6 -84.9 .12e6 -38 0.276e6 -38 0.614e6 -93 1.221e6 -93 1.63e6 -110 30.e6 -110],''Log-Linear'',ex.param.frequency.f)'; tmp_tfplan.lcname='ADSL-DMT'; tmp_tfplan.PSD.active.upstream=[df*(33-0.5) df*(56+0.5)]; tmp_tfplan.PSD.active.downstream=[df*(64-0.5) df*(255+0.5)]; tfplist=insertList(tfplist,tmp_tfplan); % With splitter % /1.2589 => -1dB tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-ADSL-RC-FDDoverISDN_SP'; tmp_tfplan.PSD.downstream= 'calcPSD([1 -95 93100 -95 170e3 -95 170e3+1 -93 209000 -65 253990 -51.5 254000 -40 1.104e+06 -40 3.093e+06 -93 4.545e+06 -110 3e+07 -110 ] ,''Log-Linear'',ex.param.frequency.f)/1.2589'; tmp_tfplan.PSD.upstream= 'calcPSD([1 -95 .05e6 -95 .08e6 -86.9 .12e6 -40 170e3 -40 170e3+1 -38 0.276e6 -38 0.614e6 -93 1.221e6 -93 1.63e6 -110 30.e6 -110],''Log-Linear'',ex.param.frequency.f)/1.2589'; tmp_tfplan.lcname='ADSL-DMT'; tmp_tfplan.PSD.active.upstream=[df*(33-0.5) df*(56+0.5)]; tmp_tfplan.PSD.active.downstream=[df*(64-0.5) df*(255+0.5)]; tfplist=insertList(tfplist,tmp_tfplan); %% =========================================================================== % Templates based on ETSI SpM part 2 tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-ADSL-ECoverPOTS'; k1=7; k2=31; k3=7; k4=255; f1=(k1-0.5)*df;f2=(k2+0.5)*df;f3=(k3-0.5)*df;f4=(k4+0.5)*df; tableUS = [ [ 1 -101]; [ 3990 -101]; [ 4e3 -96]; [ f1-5.5*df -96]; [ f1 -38 ]; [ f2 -38 ]; [ f2+21.5*df -90]; [ 686e3 -100 ]; [ 1411e3 -100 ]; [ 1630e3 -110 ]; [ 5275e3 -112 ]; [ 30e6 -112 ]; ]; tableDS = [ [ 1 -101]; [ 3990 -101]; [ 4e3 -96]; [ f3-5.5*df -96]; [ f3 -40 ]; [ f4 -40 ]; [ f4+23*df -90]; [ 3093e3 -90 ]; [ 4545e3 -112 ]; [ 30e6 -112 ]; ]; tabstr=num2str(reshape([tableUS(:,1),tableUS(:,2)]',1,numel(tableUS))); tmp_tfplan.PSD.upstream =sprintf('calcPSD([%s ],''Log-Linear'',ex.param.frequency.f)',tabstr); tabstr=num2str(reshape([tableDS(:,1),tableDS(:,2)]',1,numel(tableDS))); tmp_tfplan.PSD.downstream =sprintf('calcPSD([%s ],''Log-Linear'',ex.param.frequency.f)',tabstr); tmp_tfplan.lcname=tmp_tfplan.name; tmp_tfplan.PSD.active.upstream=[df*(k1-0.5) df*(k2+0.5)]; tmp_tfplan.PSD.active.downstream=[df*(k3-0.5) df*(k4+0.5)]; tfplist=insertList(tfplist,tmp_tfplan); % ------------------------------- tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-ADSL-ECoverISDN'; k1=33; k2=63; k3=33; k4=255; f1=(k1-0.5)*df;f2=(k2+0.5)*df;f3=(k3-0.5)*df;f4=(k4+0.5)*df; tableUS = [ [ 1 -90]; [ 50e3 -90]; [ f1-10*df -85.3]; [ f1 -38 ]; [ f2 -38 ]; [ f2+4*df -55]; [ f2+11*df -60]; [ f2+17*df -97.8]; [ 686e3 -100 ]; [ 1411e3 -100 ]; [ 1630e3 -110 ]; [ 5275e3 -112 ]; [ 30e6 -112 ]; ]; tableDS = [ [ 1 -90]; [ 50e3 -90]; [ f3-10*df -85.3]; [ f3 -40 ]; [ f4 -40 ]; [ f4+23*df -90]; [ 3093e3 -90 ]; [ 4545e3 -112 ]; [ 30e6 -112 ]; ]; tabstr=num2str(reshape([tableUS(:,1),tableUS(:,2)]',1,numel(tableUS))); tmp_tfplan.PSD.upstream =sprintf('calcPSD([%s ],''Log-Linear'',ex.param.frequency.f)',tabstr); tabstr=num2str(reshape([tableDS(:,1),tableDS(:,2)]',1,numel(tableDS))); tmp_tfplan.PSD.downstream =sprintf('calcPSD([%s ],''Log-Linear'',ex.param.frequency.f)',tabstr); tmp_tfplan.lcname=tmp_tfplan.name; tmp_tfplan.PSD.active.upstream=[df*(k1-0.5) df*(k2+0.5)]; tmp_tfplan.PSD.active.downstream=[df*(k3-0.5) df*(k4+0.5)]; tfplist=insertList(tfplist,tmp_tfplan); % ------------------------------- tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-ADSL-FDDoverPOTS'; k1=7; k2=31; k3=33; k4=255; f1=(k1-0.5)*df;f2=(k2+0.5)*df;f3=(k3-0.5)*df;f4=(k4+0.5)*df; tableUS = [ [ 1 -101]; [ 3990 -101]; [ 4e3 -96]; [ f1-5.5*df -96]; [ f1 -38 ]; [ f2 -38 ]; [ f2+10*df -90]; [ 686e3 -100 ]; [ 1411e3 -100 ]; [ 1630e3 -110 ]; [ 5275e3 -112 ]; [ 30e6 -112 ]; ]; tableDS = [ [ 1 -101]; [ 3990 -101]; [ 4e3 -96]; [ f3-10*df -96]; [ f3-0.5*df -47.7 ]; [ f3 -40 ]; [ f4 -40 ]; [ f4+23*df -90]; [ 3093e3 -90 ]; [ 4545e3 -112 ]; [ 30e6 -112 ]; ]; tabstr=num2str(reshape([tableUS(:,1),tableUS(:,2)]',1,numel(tableUS))); tmp_tfplan.PSD.upstream =sprintf('calcPSD([%s ],''Log-Linear'',ex.param.frequency.f)',tabstr); tabstr=num2str(reshape([tableDS(:,1),tableDS(:,2)]',1,numel(tableDS))); tmp_tfplan.PSD.downstream =sprintf('calcPSD([%s ],''Log-Linear'',ex.param.frequency.f)',tabstr); tmp_tfplan.lcname=tmp_tfplan.name; tmp_tfplan.PSD.active.upstream=[df*(k1-0.5) df*(30+0.5)]; tmp_tfplan.PSD.active.downstream=[df*(38-0.5) df*(k4+0.5)]; tfplist=insertList(tfplist,tmp_tfplan); % ------------------------------- tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-ADSL-FDDoverISDN'; k1=33; k2=62; k3=64; k4=255; f1=(k1-0.5)*df;f2=(k2+0.5)*df;f3=(k3-0.5)*df;f4=(k4+0.5)*df; tableUS = [ [ 1 -90]; [ 50e3 -90]; [ f1-10*df -85.3]; [ f1 -38 ]; [ f2 -38 ]; [ f2+4*df -55]; [ f2+11*df -60]; [ f2+17*df -97.8]; [ 686e3 -100 ]; [ 1411e3 -100 ]; [ 1630e3 -110 ]; [ 5275e3 -112 ]; [ 30e6 -112 ]; ]; tableDS = [ [ 1 -90]; [ f3-10*df -90]; [ f3-0.5*df -52 ]; [ f3 -40 ]; [ f4 -40 ]; [ f4+23*df -90]; [ 3093e3 -90 ]; [ 4545e3 -112 ]; [ 30e6 -112 ]; ]; tabstr=num2str(reshape([tableUS(:,1),tableUS(:,2)]',1,numel(tableUS))); tmp_tfplan.PSD.upstream =sprintf('calcPSD([%s ],''Log-Linear'',ex.param.frequency.f)',tabstr); tabstr=num2str(reshape([tableDS(:,1),tableDS(:,2)]',1,numel(tableDS))); tmp_tfplan.PSD.downstream =sprintf('calcPSD([%s ],''Log-Linear'',ex.param.frequency.f)',tabstr); tmp_tfplan.lcname=tmp_tfplan.name; tmp_tfplan.PSD.active.upstream=[df*(k1-0.5) df*(56+0.5)]; tmp_tfplan.PSD.active.downstream=[df*(k3-0.5) df*(k4+0.5)]; tfplist=insertList(tfplist,tmp_tfplan);