Welcome to
the xDSL simulator homepage!
About
Welcome to the (emergency) pages of the xDSL simulation tool. Since
beginning of year 2000 FTW
(Forschungszentrum Telekommunikation Wien) in Austria had supported
this simulation tool and its development.
However, after the closure of FTW by the end of 2015, the xDSLsimu have had no home.
As the main developer of the simulator I decided to put up the latest version
of the simulator onto my private webpage as a service to all users out there.
But a word of warning, unless I get payed for updating the simulater,
I will unfortunately not have time to fix bugs or updating it to the latest standards.
The evaluation of technologies like ADSL, SDSL, and VDSL is a
complicated and lengthy task. This is especially true for scenarios
where the SNR is different at both ends of the lines and in topologies
with different cable models including bridge taps, and where power
boost and power back-off are to be applied. When so many parameters
can be varied, it is important to have a common understanding of the
simulation environment. With the xDSL simulation tool we hope that
you will be able to simulate different xDSL technologies in relatively
complex setup but still with relative ease.
News/History
2016-05-22 The xDSLsimu gets a permanent home at my private site. I have to start from an 2010 backup of the site, so there will be some missing information
2016-01-01 FTW closes its operation and there is no loger access to xdsl.ftw.at website or the xdslsimu internal svn repository.
2012-04-10 An internal version of the simulator was released: Version 3.2b2,
2008-03-10 After having a new version of the simulator in private
beta for years I just decided to make it available to everyone:
Version 3.1.
Now I hope I can work on the needed updates for the latest
standards of ADSL2/2+ and VDSL2, and be able to release within
months and not years. /Tomas Nordström
2003-12-23 A public beta version of the simulator:
Version 3.0b1.
Older News...
To the simulator
What is new in xDSLsimu version 3.2?
Improved support for VDSL2
- xdsldefs/itu_tfplcVDSL2_AnnexA.m
- xdsldefs/itu_tfplcVDSL2_AnnexB.m
- xdsldefs/itu_VDSL2tables_AnnexB.m
- xdsldefs/itu_VDSL2profiles.m
However, with so many possible VDSL2 PSD templates it is not possible
to add all directly into ex.tfplist with one command, instead one
needs to add the templates one by one:
% To load an ETSI VDSL2 template for '997-M2x-A (B7-5)/12a'
maskdef.name = '997-M2x-A'; maskdef.profile = '12a';
[tfplan,lcdef] = itu_tfplcVDSL2_AnnexB(maskdef);
% Chance to modify the definitions before storing into the ex struct
ex.tfplist = insertList(ex.tfplist,tfplan);
ex.lclist = insertList(ex.lclist,lcdef);
To help using these new VDSL2 definitions we have added usage examples:
examples/VDSL2
References:
- ETSI 081t15r1 VDSL2 AnnexB proposal
- ITU G.993.2 (02/2006 prepublish)
- ITU Draft Amendment 1 AAP R2 to G.993.2 (2007-04-NapaValley)
Updates according to ETSI TR 101 830-2 V1.2.1
Addition of PSD mask definitions and reciever models according to
Draft ETSI TR 101 830-2 V1.2.1 (2008-xx); pds:m06p06a02_SpM2_DR
- xdsldefs/etsi_tfplansADSL2_v121.m
- xdsldefs/etsi_tfplansADSL_v121.m
- xdsldefs/etsi_tfplansLegacy_v121.m
- xdsldefs/etsi_tfplansSDSL_v121.m
- xdsldefs/modelPSD_HDSL2B1Q_v121.m
- xdsldefs/modelPSD_ISDN_MMS43_v121.m
- xdsldefs/modelPSD_SDSL_v121.m
Misc updates
Added support for return of actual true Tx PSD's from
calcXDSLresult.m This is especially useful for evaluation of DMT
systems and establishing what actual output PSD will result after
water-filling or bitloading.
[rateLT, rateNT, mLT, mNT, PSD_LT, PSD_NT]=calcXDSLresult(ex,result);
Px_TUp=10*log10(trapz(f,PSD_LT.val))
Px_TDown=10*log10(trapz(f,PSD_NT.val))
plot(f,10*log10(result{1}.LT.Tx_signal),'r'); % PSD template
hold on;
plot(f,10*log10(PSD_LT.val),'b'); % PSD after bit-loading
Octave
The support for octave has been improved but version 3 of octave and
octave-forge should be used. We have use octave-3.0.2 and
octave-forge-20080831 for our testing.
What is new in xDSLsimu version 3.1?
As octave now support cell arrays we switched back to use 2D
cell arrays in the definition of traffic and topologies.
We have moved around some files to make definitions appear in
the xdsldefs directory instead of the xdslcomm directory.
Now you will find the following in xDSLsimu/src/xdsldefs:
- bitloadingGA.m
- bitloadingRounded.m
- calcResultDMT.m
- calcResultHDSL.m
- calcResultSCM.m
- calcResultSDSL.m
- and lcPrintTheo.m moved to xDSLsimu/src/xdslcomm
Many new and updated definitions have appeared as we try to track
ETSI spectrum management Part 2 document.
To support the ESP/2004
simulations we now also support definitions for Enhanced SDSL
(G.SHDSL), ADSL2, and ADSL2plus. At this time we also have tried to
indicate the standardization body in the PSD name as they tend to
differ between standards.
However, updates for the latest ADSL2+ and VDSL2 masks and templates
are still pending.
New xdslcomm routines:
- planConvertion2Band.m
- printTree.m
- TTsetup.m
New xdsldefs routines:
- activeVDSLf.m
- ansi_cablesADSL.m
- ansi_cablesVDSL.m
- cables_at.m
- etsi_lcdefsESDSL.m
- etsi_lcdefsHDSL.m
- etsi_lcdefsISDN.m
- etsi_lcdefsSDSL_SpecificRates.m
- etsi_lcdefsSDSL_SpecificRates_RC.m
- etsi_noisesADSL2plus.m
- etsi_SDSLmodelParameters.m
- etsi_tfplansESDSL.m
- etsi_tfplansLegacy.m
- etsi_tfplansSDSL_RC.m
- etsi_tfplansVDSLDMT.m
- itu_lcdefsADSL2.m
- itu_tfplansADSL2.m
- lcDefHDSL2B1Q.m
- lcDefHDSLCAP.m
- lcDefISDN2B1Q.m
- lcPrintHDSL.m
- modelPSD_HDSL2B1Q.m
- modelPSD_ISDN2B1Q.m
- modelPSD_SDSL.m
- modelPSD_SDSL_sym_ver1.m
- modelPSD_SDSL_sym_ver2.m
To prepare for usage of both upstream and downstream power back-off,
places where PBO was used now uses UPBO.
getPBOmethods.m => getUPBOmethods.m
A new example has appeared which shows how the simulator can be used
in spectrum management (SpM) work. This is code that was used for ETSI
ESP/2004 work.
getTwoPortModel now returns R0 to support generation of time domain
impulse responses for a simulated topology. Added support for f==0
in getABCD.m
Bug fixes
- In evalNoise the slant for crosstalk was hard coded, now it uses the
values defined in XTlevel.NEXTslant and XTlevel.FEXTslant
- Fixed bug in FEXT calculation for nodes with only one modem present.
- Fixed a bug when UPBO was done and only a single band was defined.
- Fixed compatibility to Matlab 7 as it now needs 'extrap' in interp1.
Can no one stop Mathworks making changes to the interpolation routines
in an incompatible way for every new version of Matlab?
KNOWN ISSUES
In matlab version 7.0 (but not 6.5) the example GUI_VDSL have problems
in that it is looping around updating some menu fields and uses 100%
of the cpu.
http://www.mathworks.com/support/solutions/data/1-PM5XJ.html?solution=1-PM5XJ
(link seems broken)
Some users also experience display problems such as intermittent
flashing, blinking and/or freezing of the popupmenu.
This problem also occurs on Unix/Linux while running MATLAB with no JVM.
We have verified that there is a bug in MATLAB 7.0 (R14) running on
Unix/Linux/MacOS in the way that it handles popupmenu uicontrols.
What is new in xDSLsimu version 3.0?
This is a major overhaul of the simulator, where we now can run
the simulator on both Matlab
and Octave.
This means that in places where we used two-dimensional cell arrays
things will change. This change will be especially visible in the
definitions of traffic and topologies.
To support both matlab and Octave we now have two directories with
tool specific files: src/matlab respectivily src/octave.
We renamed a lot of files to clearify what they do:
- ansi_loops -> ansi_loopsVDSL
- ansi_noise -> ansi_noisesVDSL
- calcFSANresult -> calcXDSLresult
- dmt -> bitloadingRounded
- etsi_PSDmasks -> etsi_masksVDSL
- etsi_goals -> etsi_goalsVDSL
- etsi_lcdefs -> etsi_lcdefsVDSL
- fsan_lcdefs -> etsi_lcdefsADSL
- fsan_loops -> fsan_loopsVDSL
- fsan_noise -> etsi_noisesADSL,etsi_noisesSDSL,etsi_noisesVDSL
- fsan_tfplansMISC -> fsan_modelsMISC
- fsan_tfplansVDSL -> special_modelsVDSL
- fsansimuVersion -> xDSLsimuVersion
- getAtt -> getIL
- itu_cables -> itu_cablesADSL
- itu_tfplistsMISC -> itu_modelsPNT
Please note that the ETSI term SDSL is used for the ITU technology G.hdsl!
We have split some xDSL definition files into DSL technology
specific files:
- src/xdsldefs/ansi_loopsVDSL.m
- src/xdsldefs/ansi_noisesVDSL.m
- src/xdsldefs/etsi_cablesADSL.m
- src/xdsldefs/etsi_cablesADSL_extra.m
- src/xdsldefs/etsi_cablesSDSL.m
- src/xdsldefs/etsi_cablesVDSL.m
- src/xdsldefs/etsi_goalsVDSL.m
- src/xdsldefs/etsi_lcdefsADSL.m
- src/xdsldefs/etsi_lcdefsVDSL.m
- src/xdsldefs/etsi_masksVDSL.m
- src/xdsldefs/etsi_modelsVDSL_SCM.m
- src/xdsldefs/etsi_noisesADSL.m
- src/xdsldefs/etsi_noisesSDSL.m
- src/xdsldefs/etsi_noisesVDSL.m
- src/xdsldefs/etsi_tfplansADSL.m
- src/xdsldefs/fsan_loopsVDSL.m
- src/xdsldefs/fsan_modelsMISC.m
- src/xdsldefs/itu_cablesADSL.m
- src/xdsldefs/itu_modelsPNT.m
- src/xdsldefs/special_modelsVDSL.m
We have added a VDSL performance calculation example
This example generates the VDSL performance numbers for ETSI VDSL
part 1
- src/examples/VDSL/VDSLperf.m
- src/examples/VDSL/TableOutput.m
- src/examples/VDSL/rateSearch.m
- src/examples/VDSL/VDSLIL.m
- src/examples/VDSL/startup.m
- src/examples/VDSL/ExampleResults/Tout_raw
- src/examples/VDSL/ExampleResults/Tout_rounded
- src/examples/VDSL/ExampleResults/diary20030811_perfA0_r1
- src/examples/VDSL/ExampleResults/diary20030811_perfA1_r1
- src/examples/VDSL/ExampleResults/diary20030811_perfB0_r1
- src/examples/VDSL/ExampleResults/diary20030811_perfB1_r1
- src/examples/VDSL/ExampleResults/matlab20030811_perfA0.mat
- src/examples/VDSL/ExampleResults/matlab20030811_perfA1.mat
- src/examples/VDSL/ExampleResults/matlab20030811_perfB0.mat
- src/examples/VDSL/ExampleResults/matlab20030811_perfB1.mat
We also renamed a variable
- FSANNoiseModel -> NoiseModel
Some other new files are:
- src/xdslcomm/onMatlab.m % Check if we run matlab or octave
- src/xdslcomm/greetings.m % Greet the user of the simulator
- src/xdslcomm/interpolate.m % Abstraction of the interpolate routine
- src/xdslcomm/sumLen.m % Help routine for evalPBO.m (as octave do not
support function definitions in functions)
- src/xdsldefs/templateTFP.m % Template for tfplan definitions
Note that we now stopped using cubic splines as they do not give
consistent result in different versions of matlab as well as octave
(compare to the 'cubic' vs 'v5cubic' mess we have in matlab version
6). Instead we use linear interpolation when interpolation is needed.
Update of DMT bit-loading routines
The original DMT bit-loading (water-filling) routine used in the
simulator (a Rate Adaptive one) was doing rounding to get to integer
constellation sizes. This, however, can lead to a case when to much
power is sent into the line (not very much, but for some cases not
correct). We have therefore implemented a new bit-loading algorithm
based on J. Campello's work. In addition to rate adaptive we also have
implemented a margin adaptive version of the bit-loading.
Which method to be used is controlled by tfplan.fixBitrate.name
('RBL', 'GABL_RA', and 'GABL_MA').
For the margin adaptive bit-loading one need to set target rates as:
tfplan.fixBitrate.param.target_us
tfplan.fixBitrate.param.target_ds
Which method to be used is controlled by tfplan.fixBitrate.name
('RBL', 'GABL_RA', and 'GABL_MA').
For the margin adaptive water-filling one need to set target rates:
- tfplan.fixBitrate.param.target_us
- tfplan.fixBitrate.param.target_ds
Some other new things:
If ex.param.frequency.set is set to one evalExperiment will not try
to establish a new frequency axis. This can speed up things if one
have a large set of experiments to run that should share the frequency
axis.
evalExperiment will not any longer do a check of the ex structure
(checkEx) every time it is run. It is now up to the user to call it if
the user wants to check the ex structure. Please note that at the
moment the checkEx is not a very thorough test.
We also removed the MixedServices example
It was a to complicated experiment and after all changes to UPBO and
VDSL masks/templates it was not longer possible to maintain this example.
KNOWN ISSUES
The octave tool is in a constant flux (especially regarding cell
arrays) and therefore we have had difficulties to achieve full
compatibility. however, at the moment we seems to be compatible with
octave 2.1.50 together with octave-forge 2003.06.02.
The new UPBO (RefRef) for VDSL is not implemented in the GUI_VDSL
example at the moment. And octave can not run GUI_VDSL at all.
What is new in xDSLsimu version 2.3.2?
This is mostly a bugfix version but there are also some speed
enhancements implemented.
The key enhancements are:
- Updated the VDSL-SCM mask/profiles/tfplans according to
ETSI TS 101 270-2 v1.1.5 specification
- Updated some ETSI ADSL cable models
- Done some updates to increase the simulation speed
We have also found and removed some bugs:
- Fixed a problem in example VDSL_GUI, crashing it on windows matlab 6.1
- Added the missing parameter "lc.param.dmt.srate" to xdsldefs/lcDefVDSLDMT.m
What is new in xDSLsimu version 2.3?
Much of the enhancements in this update goes into better support
for ADSL simulations.
The key enhancements are:
- Supporting of two-sided colored background noise
- Calculation of bit-rates depending on active tones in DMT
- Added ETSI-ADSL cables (according to "ETSI STC TM6 PD 980p10a5")
- Added ETSI-ADSL cable models (according to "ETSI STC TM6 021t32")
- Added/updated ETSI-ADSL PSD masks "ETSI STC TM6 Draft RTS/TM-06006 rev 10a"
- Added ETSI-ADSL loops
- Added all the ETSI ADSL noises
- Added the ETSI ADSL performance number calculations as an example
- Added support for same pair ISDN or any other directly injected noise
- Added an example of adjustments needed due to the noise injection device
- Added an example of seperate modem noise floor adjustment
- Added an example of dynamic modem noise (for ADSL, depending on f and length)
- Added an example of ADSL power cut-back adjustements
- Added an example implementation of ISI/ICI noise modeling
- Changed insertList to avoid duplicate objects in lists
- Renamed the SDSL cables (added prefix "ETSI-SDSL-" to the name)
New files/directories:
- src/examples/ADSL
- src/examples/ADSL/startup.m
- src/examples/ADSL/ADSLperf.m
- src/examples/ADSL/ADSLIL.m
- src/examples/ADSL/raw2user.m
- src/examples/ADSL/plotTFplanDMT.m
- src/examples/ADSL/AddNoisePSD.m
- src/examples/ADSL/AdjustForMN.m
- src/examples/ADSL/AdjustForNID.m
- src/examples/ADSL/AdjustForPOB.m
- src/examples/ADSL/AdjustForISCI.m
- src/examples/ADSL/get_noise_floor.m
- src/examples/ADSL/TableOutputRaw.m
- src/examples/ADSL/TableOutputIL.m
- src/xdsldefs/etsi_tfplansADSL.m
- src/xdsldefs/etsi_noisesADSL.m
- src/xdsldefs/etsi_loopsADSL.m
What was new in xDSLsimu version 2.2?
The simulator now contains full support for SDSL simulations with
extensive examples and documentation.
New SDSL related files:
- src/xdsldefs/etsi_loops.m renamed to src/xdsldefs/etsi_loopsVDSL.m
- src/xdsldefs/ETSI_SDSL_traffic2lctf.m
- src/xdsldefs/etsi_lcdefsSDSL.m
- src/xdsldefs/etsi_loopsSDSL.m
- src/xdsldefs/etsi_loopsSDSLdeflen.m
- src/xdsldefs/etsi_tfplansSDSL.m
- src/xdsldefs/itu_cables.m
- src/xdsldefs/lcDefSDSL_asym.m
- src/xdsldefs/lcDefSDSL_sym.m
- src/xdsldefs/lcPrintSDSL.m
- src/xdsldefs/modelPSD_SDSL_asym.m
- src/xdsldefs/modelPSD_SDSL_sym.m
- src/examples/SDSL/ExSDSLmaxrate.m
- src/examples/SDSL/ExSDSLtestloop.m
- src/examples/SDSL/UserLoopsSDSL.m
- src/examples/SDSL/ExSDSLmargin.m
- src/examples/SDSL/ExSDSLreach.m
- src/examples/SDSL/SDSLIL.m
- src/examples/SDSL/startup.m
We have rewritten and extended the documentation:
- doc/ChartEvalExperiment.html
- doc/ExamplesSDSL.html
- doc/FileDescriptions.html
- doc/ChartEvalExperimentInput/filelist.xml
- doc/ChartEvalExperimentInput/image001.gif
We have also found and removed some bugs:
- src/xdslcomm/checkEx.m - Update for accepting different string length
in modemlist
- src/xdslcomm/getABCD.m - Fixed bug in index start (added +1)
- src/xdslcomm/plotResult.m - Added abs() for vectors to be plotted
- src/xdslcomm/evalPBO.m - Fixed a misstake in how to calculate reference
attenuation for various cable lengths
Know bugs
NaN results in Matlab version 6.5
There is a bug in Matlab 6.5 that is verified for both Windows and Linux. In
src/xdslcomm/getTowPortModel.m on the line
R=1./((1./sqrt(sqrt(r0c.^4+ac.*f2))) + (1./sqrt(sqrt(r0s.^4+ as.*f2)))); )
the JIT (just in time) compiler gets confused and returns a NaN.
Matlab has been contacted but no solution has been given yet.
The current workaround is to turn of JIT by giving the command:
feature accel off
before running the simulator.
GUI problem in Matlab version 6.0
There seems to be a problem with matlab 6.0.0 on windows (it works in
Matlab version 5.x and in Matlab 6.0.0 on Linux) that makes the GUI
part of the simulator do "Segmentation violation" in file
xDSLsimu2.2\src\examples\GUI_VDSL\uiSetup.m on line 98 ==>
uicontrol('style','popupmenu','string', gui.scen, 'value',tmpval,...
Mathworks has been contacted but there seems to be no solution at the
moment. We think it is related to Matlab bug 24773.
Please note that any part of the simulator that do not use the
uicontrol function (i.e., all but GUI_VDSL) still works as intended.
Last modified 2016-05-22 by