% 10GBASE-T channel capacity estimation program based on ISO cable models
% For IEEE802.3 10GBase-T SG
% By Xiaopeng Chen, Marvell Semiconductor Inc.
% Feb 2003
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% The frequency range used to estimate the channel capacity is [0,500MHz]
% The following parameters can be modified readily to fit your assumption
% CAT5E = 1: Using CAT-5E cable
% CAT5E = 0: Using CAT-6 cable
CAT5E=0;
% Launch power
P=10; %input power (dBm)
% Symbol rate based on SolarFlare's PAM-10 scheme
Fsym=833e6; %symbol rate (MHz)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% step size in frequency domain is 1KHz
df=1e3;
if CAT5E==1 % CAT-5E cable
f1=[df/2:df:100e6];
f2=[f1(length(f1))+df:df:500e6];
else %CAT-6 cable
f1=[df/2:df:250e6];
f2=[f1(length(f1))+df:df:500e6];
end
%Specified frequency range
freq1=f1/1e6;
%Unspecified (extrapolated ?) frequency range
freq2=f2/1e6;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Insertion Loss based on Chris DiMinico's 1/17/03 email attachment
% ISO 11801 Channel-Class D and Class E.xls
if CAT5E==1 % CAT-5E cable
IL1=-(1.05*(1.9108*sqrt(freq1)+0.0222*freq1+0.2./sqrt(freq1))+4*0.04*sqrt(freq1));
IL2=-(1.05*(1.9108*sqrt(freq2)+0.0222*freq2+0.2./sqrt(freq2))+4*0.04*sqrt(freq2));
else %CAT-6 cable
IL1=-(1.05*(1.82*sqrt(freq1)+0.0169*freq1+0.25./sqrt(freq1))+4*0.02*sqrt(freq1));
IL2=-(1.05*(1.82*sqrt(freq2)+0.0169*freq2+0.25./sqrt(freq2))+4*0.02*sqrt(freq2));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Self PSNEXT based on Chris DiMinico's 1/17/03 email attachment
% ISO 11801 Channel-Class D and Class E.xls
if CAT5E==1 % CAT-5E cable
NX1=20*log10(10.^((62.3-15*log10(freq1))/(-20))+2*10.^((80-20*log10(freq1))/(-20)));
NX2=20*log10(10.^((62.3-15*log10(freq2))/(-20))+2*10.^((80-20*log10(freq2))/(-20)));
else %CAT-6 cable
NX1=20*log10(10.^((72.3-15*log10(freq1))/(-20))+2*10.^((90-20*log10(freq1))/(-20)));
NX2=20*log10(10.^((72.3-15*log10(freq2))/(-20))+2*10.^((90-20*log10(freq2))/(-20)));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Alien PSNEXT based on the presentation at the link of
% http://www.ieee802.org/3/tutorial/nov02/tutorial_2_1102.pdf
if CAT5E==1 % CAT-5E cable
ANX11=-65*ones(1,length(freq1));
ANX12=-38.3+15*log10(freq1/100);
ANX1=max(ANX11,ANX12);
clear ANX11;
clear ANX12;
ANX21=-65*ones(1,length(freq2));
ANX22=-38.3+15*log10(freq2/100);
ANX2=max(ANX21,ANX22);
clear ANX21;
clear ANX22;
else %CAT-6 cable
ANX11=-65*ones(1,length(freq1));
ANX12=-41.1+15*log10(freq1/100);
ANX1=max(ANX11,ANX12);
clear ANX11;
clear ANX12;
ANX21=-65*ones(1,length(freq2));
ANX22=-41.1+15*log10(freq2/100);
ANX2=max(ANX21,ANX22);
clear ANX21;
clear ANX22;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PSELFEXT based on Chris DiMinico's 1/17/03 email attachment
% ISO 11801 Channel-Class D and Class E.xls
if CAT5E==1 % CAT-5E cable
ELFX1=20*log10(10.^((60.8-20*log10(freq1))/(-20))+4*10.^((72.1-20*log10(freq1))/(-20)));
ELFX2=20*log10(10.^((60.8-20*log10(freq2))/(-20))+4*10.^((72.1-20*log10(freq2))/(-20)));
else %CAT-6 cable
ELFX1=20*log10(10.^((64.8-20*log10(freq1))/(-20))+4*10.^((80.1-20*log10(freq1))/(-20)));
ELFX2=20*log10(10.^((64.8-20*log10(freq2))/(-20))+4*10.^((80.1-20*log10(freq2))/(-20)));
end
% PSFEXT
FX1=IL1+ELFX1;
FX2=IL2+ELFX2;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Return Loss based on Chris DiMinico's 1/17/03 email attachment
% ISO 11801 Channel-Class D and Class E.xls
if CAT5E==1 % CAT-5E cable
RL1=-30+10*log10(freq1);
temp=-17*ones(1,length(RL1));
RL1=max(temp,RL1);
RL2=-30+10*log10(freq2);
else %CAT-6 cable
f10=freq1(1:10/(df/1e6));
RL10=-19*ones(1,length(f10));
f11=freq1(length(f10)+1:40/(df/1e6));
RL11=-24+5*log10(f11);
f12=freq1(length(f10)+length(f11)+1:length(freq1));
RL12=-32+10*log10(f12);
RL1=[RL10,RL11,RL12];
RL2=-32+10*log10(freq2);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Input signal PSD
freq=[freq1,freq2];
Si=10*log10(10^(P/10)/Fsym)*ones(1,length(freq)); % dBm/Hz
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% signal and noise PSD @ receiver side
So=Si+[IL1,IL2]; % received signal PSD (dBm/Hz)
% noise PSDs (dBm/Hz)
% PSD of Self NEXT
NEXT=Si+[NX1,NX2];
% PSD of Alien NEXT
ANEXT=Si+[ANX1,ANX2];
% PSD of Self FEXT
FEXT=Si+[FX1,FX2];
% PSD of ECHO
ECHO=Si+[RL1,RL2];
% PSD of Background Noise (-140dBm/Hz)
BKN=-140*ones(1,length(Si));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% SNR after DSP
% ignore quantization noise now
% Background noise is unchanged
rBKN=BKN;
%% residual NEXT after 50dB NEXT cancelling
rNEXT=NEXT-50;
%% residual ECHO after 70dB ECHO cancelling
rECHO=ECHO-70;
%% residual FEXT after 30dB FEXT cancelling
rFEXT=FEXT-30;
%% residual ANEXT after 10dB ANEXT suppressing
rANEXT=ANEXT-10;
%% total noise in mW/Hz
N=10.^(rBKN/10)+10.^(rNEXT/10)+10.^(rECHO/10)+10.^(rFEXT/10)+10.^(rANEXT/10);
%% total signal in mW/Hz
S=10.^(So/10);
% resulting SNR
SNR = S./N;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calculate the Shannon channel capacity
% without considering any modulation and implementation details
C_f=log2(1+SNR);
C=4*sum(C_f)*df %Shannon channel capacity by using the band from DC up to 500MHz
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
% My results:
% for CAT-5E, C=7.76Gbps
% for CAT-6, C=10.0Gbps
% and the dominant noise source is the alien NEXT
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%plot(freq1,RL1,'-', freq2,RL2,'--')
%plot(freq,Si,':',freq,So,'--',freq,NEXT,'-.',freq,ANEXT,'-o',freq,FEXT,'-x',freq,ECHO,'-+',freq,BKN,'-*')
%plot(freq,10*log10(S),'--',freq,rNEXT,'-.',freq,rANEXT,'-o',freq,rFEXT,'-x',freq,rECHO,'-+',freq,rBKN,'-*',freq,10*log10(N),'-')
%axis([0 500 -160 -60])
grid