% function AdjustForISCI() % Copyright (C): % 2002 by Alcatel Bell NV, Belgium % 2002-2003 by Forschungszentrum Telekommunikation Wien, Austria; % All rights reserved. % % Description : % AdjustForISCI function calculates a parabolic approximation of the % ISI/ICI on the upstream tones in the FDD ADSL/ISDN implementation % of Alcatel. It is quite rough approximation and gives idea about % the limitation on the SNR on each tone due to ISI/ICI. Although % the tone mask of the upstream that is provided as input argument % may vary, it is matched to the band 33-56 and using it for other % bands requires changing the parameters definition. % % Intention for usage: % When calculating the signal and the noise PSD (from noise floor % and/or crosstalk) at the end of the line (before entering the % modem and the SNR calculations), call this function in order to % get the ISI/ICI "noise" level. Then compare it with the sum of the % other noises (with analog nature, like crosstalk) per tone bases. % For each tone, take the maximum of the two - the sum of the others % and the ISI/ICI. Thus received "noise" use in the SNR calculations % that compute the bitloading and the data rate. % % Project : FTW's xDSLsimu % Author(s) : Vladimir Ivanov (Vladimir.Ivanov@alcatel.be) % Tomas Nordstrom (Tomas.Nordstrom@FTW.at) % % Reference: % ETSI TM6 021t31r1, Torino, Italy, 4th-8th Feb., 2002 % % CVS: $Id: AdjustForISCI.m,v 3.3 2003/12/23 10:35:07 tono Exp $ %% =========================================================================== % Change History % 2002-02-01 (Vladimir Ivanov) Created % 2002-02-02 (ToNo) Modified for FTW xDSL simulator % 2003-11-03 (ToNo) Lists now use cell arrays for both Octave and Matlab % 2003-12-22 (ToNo) Changed names concerning down- and upstream parameters %% =========================================================================== global ex; global result; % Tones used ToneMask = [zeros(1,min(us.tones)) ... ones(1,max(us.tones)-min(us.tones)+1)... zeros(1,64-max(us.tones))]; % SNR parameter definition maxSNR = isci.maxSNR;% dB, the maximal achievable SNR on the % center tone in the band deltaSNR1 = isci.lowdeltaSNR; % dB, the SNR drop at the first tone of the % band w.r.t to the maximum % It depends mainly on the order and % the type of the highpass ISDN splitters. deltaSNR2 = isci.highdeltaSNR;% dB, the SNR drop at the last tone of the % band w.r.t to the maximum % It depends mainly on the order and % the type of the FDM filters - Tx and Rx, % digital and analog. % Input arguments validation maxTones = 64; df = 4.3125e3; % Carrier spacing in Hz ToneMask = ToneMask(:); ToneMask = ToneMask(1:maxTones+1); ToneFreq = (0:maxTones)*df; % Parabolic curve fitting on 3 points - one in the center tone(x0) % and two at the edge tones (x1 and x2) % Definfition of the tones x1 = min(us.tones); x2 = max(us.tones); x=[0:maxTones]'; x0 = (x1+x2)/2; % The tone at the center % Calculating the SNR y0 = maxSNR; % On tone x0, dB ylow = -160; % Very low background noise % power in order to avoid 0, dBm/Hz y1 = y0 - deltaSNR1; y2 = y0 - deltaSNR2; % Simple parabolic fit: [ P ] * [ q ] = [ R ]; P = [ x1^2 x1 1;... x0^2 x0 1;... x2^2 x2 1;... ]; R = [y1 y0 y2]'; q = inv(P)*R; % The vector with the coefficients of the parabola y = q(1)*x.^2 + q(2)*x + q(3); % SNR, dB % Now we adjust our result to this ISI/ICI model yl = ( y.*ToneMask - ylow.*~ToneMask ); ylust = interp1(ToneFreq,yl,ex.param.frequency.f,'cubic'); rlen = length(result); for pos = 1:rlen, rr=result{pos}; ISCIN=rr.LT.Rx_signal./(10.^(ylust./10)); rr.LT.Tot_noise.up = rr.LT.Tot_noise.up+ISCIN; rr.LT.Tot_noise.down = rr.LT.Tot_noise.down+ISCIN; if 0, % If 1, plot some of the temporary values S=10*log10(Rx_LTpt(us.tones)) N=10*log10(Noise_LTpt(us.tones)) SN=10*log10(Rx_LTpt(us.tones))-10*log10(Noise_LTpt(us.tones)) SM=yl(us.tones+1)' plot(ex.param.frequency.f,10*log10(ISCIN),... ex.param.frequency.f,10*log10(rr.LT.Tot_noise.up)); duf=us.tones*df; plot(duf,S,duf,N,duf,SN,duf,SM) end; result{pos}=rr; end; % pos % End of function