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,'ETSI-ADSL-ECoverPOTS'); Get tfplan for EC ADSL % % ex.tfplist = etsi_tfplansADSL([]); Create a new tfplist % tfplan=getList(ex.tfplist,'ETSI-ADSL-FDDoverISDN'); Get tfplan for FDD ADSL % % References: % 1. Draft ETSI TR 101 830-2 V1.2.1 (2008-xx); pds:m06p06a02_SpM2_DR % % 2. 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): % 2008-2009 by Forschungszentrum Telekommunikation Wien, Austria; % All rights reserved. % Project : FTW's xDSLsimu % Author(s) : Tomas Nordstrom (Tomas.Nordstrom@FTW.at) % % CVS: $Id: $ %% =========================================================================== % Change History % 2008-03-17 (ToNo) Updated ADSL models to version 1.2.1 of SpM Part2 %% =========================================================================== 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'; %% =========================================================================== % Templates based on ETSI SpM part 2 v1.2.1 tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-ADSL-ECoverPOTS'; k1=7; k2=31; k3=7; k4=255; tableUS = [ [ 1 -101]; [ 3990 -101]; [ 4e3 -96]; [ 6.5*df -38]; [ 31.5*df -38 ]; [ 53.0*df -90 ]; [ 686e3 -100 ]; [ 1411e3 -100 ]; [ 1630e3 -110 ]; [ 5275e3 -112 ]; [ 30e6 -112 ]; ]; tableDS = [ [ 1 -101]; [ 3990 -101]; [ 4e3 -96]; [ 6.5*df -40 ]; [ 256.0*df -40 ]; [ 1.25e6 -45 ]; [ 1.5e6 -70]; [ 2.1e6 -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; tableUS = [ [ 1 -101]; [ 3990 -101]; [ 4e3 -96]; [ 6.5*df -38]; [ 31.5*df -38 ]; [ 41.5*df -90 ]; [ 686e3 -100 ]; [ 1411e3 -100 ]; [ 1630e3 -110 ]; [ 5275e3 -112 ]; [ 30e6 -112 ]; ]; tableDS = [ [ 1 -101]; [ 3990 -101]; [ 4e3 -96]; [ 22.5*df -96]; [ 32.0*df -47.7 ]; [ 32.5*df -40 ]; [ 256.0*df -40 ]; [ 1.25e6 -45 ]; [ 1.5e6 -70]; [ 2.1e6 -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-FDDoverPOTS-filtered'; k1=7; k2=30; k3=38; k4=255; tableUS = [ [ 1 -101]; [ 3990 -101]; [ 4e3 -96]; [ 6.5*df -38]; [ 30.5*df -38 ]; [ 40.5*df -90 ]; [ 686e3 -100 ]; [ 1411e3 -100 ]; [ 1630e3 -110 ]; [ 5275e3 -112 ]; [ 30e6 -112 ]; ]; tableDS = [ [ 1 -101]; [ 3990 -101]; [ 4e3 -96]; [ 27.5*df -96]; [ 37.0*df -47.7 ]; [ 37.5*df -40 ]; [ 256.0*df -40 ]; [ 1.25e6 -45 ]; [ 1.5e6 -70]; [ 2.1e6 -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-ECoverISDN'; k1=33; k2=63; k3=33; k4=255; tableUS = [ [ 1 -90]; [ 50e3 -90]; [ 22.5*df -85.3]; [ 32.5*df -38 ]; [ 63.5*df -38 ]; [ 67.5*df -55]; [ 74.5*df -60]; [ 80.5*df -97.8]; [ 686e3 -100 ]; [ 1411e3 -100 ]; [ 1630e3 -110 ]; [ 5275e3 -112 ]; [ 30e6 -112 ]; ]; tableDS = [ [ 1 -90]; [ 50e3 -90]; [ 22.5*df -85.3]; [ 32.5*df -40 ]; [ 256*df -40 ]; [ 1.25e6 -45 ]; [ 1.5e6 -70]; [ 2.1e6 -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-FDDoverISDN'; k1=33; k2=63; k3=64; k4=255; tableUS = [ [ 1 -90]; [ 50e3 -90]; [ 22.5*df -85.3]; [ 32.5*df -38 ]; [ 63.5*df -38 ]; [ 67.5*df -55]; [ 74.5*df -60]; [ 80.5*df -97.8]; [ 686e3 -100 ]; [ 1411e3 -100 ]; [ 1630e3 -110 ]; [ 5275e3 -112 ]; [ 30e6 -112 ]; ]; tableDS = [ [ 1 -90]; [ 53.5*df -90]; [ 63.0*df -52]; [ 63.5*df -40 ]; [ 256*df -40 ]; [ 1.25e6 -45 ]; [ 1.5e6 -70]; [ 2.1e6 -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); % ------------------------------- tmp_tfplan=def_tfplan; tmp_tfplan.name='ETSI-ADSL-FDDoverISDN-filtered'; k1=33; k2=56; k3=64; k4=255; tableUS = [ [ 1 -90]; [ 50e3 -90]; [ 22.5*df -85.3]; [ 32.5*df -38 ]; [ 56.5*df -38 ]; [ 60.5*df -55]; [ 67.5*df -60]; [ 73.5*df -97.8]; [ 686e3 -100 ]; [ 1411e3 -100 ]; [ 1630e3 -110 ]; [ 5275e3 -112 ]; [ 30e6 -112 ]; ]; tableDS = [ [ 1 -90]; [ 53.5*df -90]; [ 63.0*df -52]; [ 63.5*df -40 ]; [ 256*df -40 ]; [ 1.25e6 -45 ]; [ 1.5e6 -70]; [ 2.1e6 -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);