function ttlist = etsi_loopsADSL(ttlist,len,selfdisturbers,namestr); %% =========================================================================== % etsi_loopsADSL - Define the ETSI ADSL testloops % % Parameter: ttlist List to insert the testloops % len Length for loop 1 to 8 % selfdisturbers Number of self disturbers in the loop % namestr Name string extension % Returns: ttlist List with inserted the testloops % % Example(s): % % Algorithmic details: % % Reference: % ETSI STC TM6 Draft TS 101 388 v1.2.1 (ADSL), 980p12a8, 2001-03 % ETSI STC TM6 Draft RTS/TM-06006 rev 10a (ADSL), 2001-05 %% =========================================================================== %% =========================================================================== % Copyright (C): % 2001-2003 by Forschungszentrum Telekommunikation Wien, Austria; % All rights reserved. % Project : FTW's xDSLsimu % Author(s) : Tomas Nordstrom (Tomas.Nordstrom@FTW.at) % % CVS: $Id: etsi_loopsADSL.m,v 3.2 2003/11/03 12:33:22 tono Exp $ %% =========================================================================== % Change History % 2001-07-03 (ToNo) Created % 2001-07-05 (ToNo) Added support for same pair ISDN % 2002-01-11 (ToNo) Moved support for same pair ISDN to another place % 2002-01-11 (ToNo) Now uses parametric models for the cables % 2002-07-24 (ToNo) Port to octave % 2003-11-03 (ToNo) Lists now use cell arrays for both Octave and Matlab %% =========================================================================== if nargin<2, len=1000; end if nargin<3, % For ADSL the self disturbers are included in the noise masks! selfdisturbers = 0; end nomodems = selfdisturbers+1; if nargin<4, namestr=''; end if length(len) == 1 len=len.*ones(1,8); end % The lengths predifined in the loop defs offsetlen=[0 0 1500 2200 1750 1750 4200 1100]; len=len-offsetlen; len(find(len<0))=0; %% =========================================================================== % Loop #0 connects the transceivers back-to-back. This loop mainly % stresses the analogue front end (AFE) and the dynamic range of % the digital processing. tt.name= sprintf('ETSI-ADSL-Loop0%s',namestr); tt.topology={... {0, '', 'CO', ''},... {2, 'ETSI-ADSL-PE04m', 'NT', '0km'}... }; tt.traffic={... {1, 2, 'ADSL', nomodems}... }; ttlist=insertList(ttlist,tt); %% =========================================================================== %Loop #1 is a single straight 0.4 wire that represents typical %deployment scenarios. When the length of the loop is set to %maximum reach this loops stresses the ADSL equipment similar to %typical deployment. tt.name= sprintf('ETSI-ADSL-Loop1%s',namestr); tt.topology={... {0, '', 'CO', ''},... {len(1), 'ETSI-ADSL-PE04m', 'NT', sprintf('%.0fm ->',len(1))}... }; tt.traffic={... {1, 2, 'ADSL', nomodems}... }; ttlist=insertList(ttlist,tt); %% =========================================================================== %Loop #2 is a single straight 0.5 wire that represents typical %deployment scenarios. When the length of the loop is set to %maximum reach this loops stresses the ADSL equipment similar to %typical deployment. tt.name= sprintf('ETSI-ADSL-Loop2%s',namestr); tt.topology={... {0, '', 'CO', ''},... {len(2), 'ETSI-ADSL-PE05m', 'NT', sprintf('%.0fm ->',len(2))}... }; tt.traffic={... {1, 2, 'ADSL', nomodems}... }; ttlist=insertList(ttlist,tt); %% =========================================================================== %Loop #3 consists of two segments of wires with different %diameter that represents typical deployment scenarios. %When the length of the loop is set to maximum reach (-1.5km) %this loops stresses the ADSL equipment similar to %typical deployment. seglens=[len(3) 1500]; tt.name= sprintf('ETSI-ADSL-Loop3%s',namestr); tt.topology={... {0, '', 'CO', ''},... {seglens(1), 'ETSI-ADSL-PE04m', '', sprintf('%.0fm ->',seglens(1))},... {seglens(2), 'ETSI-ADSL-PE05m', 'NT', sprintf('%.0fm ->',seglens(2))}... }; tt.traffic={... {1, 3, 'ADSL', nomodems}... }; ttlist=insertList(ttlist,tt); %% =========================================================================== %Loop #4 consists of four segments of wires with different diameter. seglens=[200 len(4) 1500 500]; tt.name= sprintf('ETSI-ADSL-Loop4%s',namestr); tt.topology={... {0, '', 'CO', ''},... {seglens(1), 'ETSI-ADSL-PE032m', '', sprintf('%.0fm ->',seglens(1))},... {seglens(2), 'ETSI-ADSL-PE04m', '', sprintf('%.0fm ->',seglens(2))},... {seglens(3), 'ETSI-ADSL-PE05m', '', sprintf('%.0fm ->',seglens(3))},... {seglens(4), 'ETSI-ADSL-PE063m', 'NT', sprintf('%.0fm ->',seglens(4))}... }; tt.traffic={... {1, 5, 'ADSL', nomodems}... }; ttlist=insertList(ttlist,tt); %% =========================================================================== %Loop #5 consist of four segments of wires with different diameter. seglens=[len(5) 750 500 500]; tt.name= sprintf('ETSI-ADSL-Loop5%s',namestr); tt.topology={... {0, '', 'CO', ''},... {seglens(1), 'ETSI-ADSL-PE04m', '', sprintf('%.0fm ->',seglens(1))},... {seglens(2), 'ETSI-ADSL-PE05m', '', sprintf('%.0fm ->',seglens(2))},... {seglens(3), 'ETSI-ADSL-PE063m', '', sprintf('%.0fm ->',seglens(3))},... {seglens(4), 'ETSI-ADSL-PE09m', 'NT', sprintf('%.0fm ->',seglens(4))}... }; tt.traffic={... {1, 5, 'ADSL', nomodems}... }; ttlist=insertList(ttlist,tt); %% =========================================================================== %Loop #6 consist of three segments with different diameter. seglens=[len(6) 1250 500]; tt.name= sprintf('ETSI-ADSL-Loop6%s',namestr); tt.topology={... {0, '', 'CO', ''},... {seglens(1), 'ETSI-ADSL-PE04m', '', sprintf('%.0fm ->',seglens(1))},... {seglens(2), 'ETSI-ADSL-PE05m', '', sprintf('%.0fm ->',seglens(2))},... {seglens(3), 'ETSI-ADSL-PE063m', 'NT', sprintf('%.0fm ->',seglens(3))}... }; tt.traffic={... {1, 4, 'ADSL', nomodems}... }; ttlist=insertList(ttlist,tt); %% =========================================================================== %Loop #7 consist of three segments with different diameter. seglens=[200 len(7) 4000]; tt.name= sprintf('ETSI-ADSL-Loop7%s',namestr); tt.topology={... {0, '', 'CO', ''},... {seglens(1), 'ETSI-ADSL-PE032m', '', sprintf('%.0fm ->',seglens(1))},... {seglens(2), 'ETSI-ADSL-PE04m', '', sprintf('%.0fm ->',seglens(2))},... {seglens(3), 'ETSI-ADSL-PE09m', 'NT', sprintf('%.0fm ->',seglens(3))}... }; tt.traffic={... {1, 4, 'ADSL', nomodems}... }; ttlist=insertList(ttlist,tt); %% =========================================================================== %Loop #8 is the only test loop with bridge taps. The bridge taps %put spectral nulls in the insertion loss and ripples in the line %impedance. The impedance at the LT side is very low while the %impedance at the NT side is close to 135Ohm. Testing with the line %in the upstream direction will stress equipment more than testing %in the downstream direction. seglens=[len(8) 1100]; tt.name= sprintf('ETSI-ADSL-Loop8%s',namestr); tt.topology={... {0, '', 'CO', '', 0, '', '', ''},... {seglens(1), 'ETSI-ADSL-PE04m', '', sprintf('%.0fm ->',seglens(1)),... 500, 'ETSI-ADSL-PE04m', 'BT', '500m (ETSI-ADSL-PE04m)'},... {seglens(2), 'ETSI-ADSL-PE04m', 'NT', sprintf('%.0fm ->',seglens(2)),... 500, 'ETSI-ADSL-PE04m', 'BT', '500m (ETSI-ADSL-PE04m)'}... }; tt.traffic={... {1, 3, 'ADSL', nomodems}... }; ttlist=insertList(ttlist,tt);