#Variable declaration
Susage=150.;#subscriber usage per month in mins
days=24;#days per month
busyhrs=6;#in a day
BW=4.8*10**3; #in kHz
Freqreuse=4./12;#Frequency reuse plan
chwidth=200; #in kHz
subscriber=50000;#Present subscriber count
Sgrowth=0.05;#Growth rate per year
Area=500; #in km
BTScapacity=30; #in Erlangs
N=4; #Initial installation design years
#Calculations&Results
Erlangspersub=Susage/(days*busyhrs*60);
print 'Average busy-hour traffic per subscriber is %.4f Erlangs'%Erlangspersub;
RFcarriers=BW/chwidth;
RFcarrier_percell=RFcarriers/((Freqreuse**-1)*4); #freq reuse factor of 4
#Assuming 2 control channels per cell
CC=2;#control channels
TC_percell=2*RFcarriers/3-CC;
#Referring Erlang-B table in Appendix A
print "Referring Erlang-B table in Appendix A,Traffic capacity of a GSM cell at 2% GoS for 14 channels = 8.2 Erlangs "
Tcapacity=8.2;# in Erlangs
print "There are 3 cells per BTS"
BTS=3;
Traffic_perBTS=Tcapacity*BTS;
print 'Traffic capacity per BTS is %.1f Erlangs'%Traffic_perBTS
print "Therefore, Traffic per BTS is less than BTS capacity(30 Erlangs)"
maxsubscriber=Traffic_perBTS/Erlangspersub;
initialsub=subscriber*(1+Sgrowth)**N;
BTS_perZone=initialsub/maxsubscriber;
print 'The required number of base stations per zone are %d'%(round(BTS_perZone));
cellRadius=(Area/(BTS_perZone*2.6))**0.5;
print 'The hexagonal cell radius is %.1f km'%cellRadius;
#Variable declaration
usage=150.; #subscriber usage per month in mins
days=24;#Days in a month
BHrs=6;#Busy hours per day
BW=4.8; #in MHz
RFch=200; #in kHz
Psubscribers=50000;#present subscriber count
growth=0.05;#subscriber growth per year
rollover=4;#network roll over period
NPCS=5;#Number of packet calls per session
NPP=25;#Number of packets within a packet call
Tr=120;#Reading time between packet calls(sec)
NBP=480*8;#Packet size(in bits)
Tint=0.01;#Time interval between two packets(sec)
Ttot=3000;#Total packet service holding time
BH_PS=0.15;#Busy hour packet sessions per subscriber
Penetration=0.25;
datarate=48; #in kbps
PTT=10;#Packet transmission time(sec)
BTS=40;#NO of BTS sites
#Calculations&Results
Bitstx_duringPTT=NPCS*NPP*NBP/1000;
PST=PTT+Tr*(NPCS-1)+Tint*(NPP-1);
PT_duringBH=BH_PS*Ttot/PST;
Bits_persub_persec=Bitstx_duringPTT*PT_duringBH/(60*60);
VoiceErlangs=usage/(days*BHrs*60);
Initial_subscribers=round(Psubscribers*(1+growth)**rollover);
Data_subscribers=Initial_subscribers*Penetration;
Totalvoice=Initial_subscribers*VoiceErlangs;
Voicetraffic_perBTS=Totalvoice/BTS;
print 'Voice Traffic per Cell(sector) is %.2f Erlangs'%(Voicetraffic_perBTS/3);
Totaldata=Data_subscribers*Bits_persub_persec;
Datathroughput_perBTS=Totaldata/BTS;
print 'Data throughput per Cell(sector) is %.2f kbps'%(Datathroughput_perBTS/3)
#Variable declaration
Holdtime=120;#Average holding time during Busy Hours(in sec)
Tx=3;# No of transreceivers
TSsig=3;#No of TSs per cell for signaling
RLC=0.80;#Radio link control efficiency
Radioblocks=9000;#Total numbers of transmitted radio blocks
TSdata=3;#TSs allocated for data traffic per cell
Datarate=15.5; #From eg 17.2
Voicetraffic=8.82; #From eg.17.2
Duration=0.02;#Duration of block in sec
#Calculations&Results
DataEr=Radioblocks*Duration/Holdtime;
print 'Data Erlangs = %.1f'%DataEr;
TSuti=DataEr/TSsig;
print 'Time Slot(TS) utilization = %.1f'%TSuti;
Throughput=(Datarate/TSdata)*RLC;
TScap=Throughput/TSuti;
print 'TS capacity is %.2f kbps'%TScap;
import math
#Variable declaration
Pt=36;#Base station transmitted power in dBm
Pms=24;#mobile station transmitted power in dBm
Nms=8;#mobile station noise figure in dB
Nbs=5;#Base station nise figure in dB
Ga=18;#Base station transmit and receive antenna gain in dBi
Gm=0;#Mobile antenna gain in dBi
SNR=12;# in dB
Lc_TX=5;#BS transmit antenna cable, connector, and filter losses in dB
Lc_RX=2;#BS receiver antenna cable, connector, and filter losses in dB
Bodyloss=3;# Body losses at mobile
fading=10.2;# in dB
ThermalNoise=-174;# in dBm/Hz
Gdiversity=5;#Antenna diversity gain at BS in dB
#Assuming standard value of RF channel as
RFch=200*10**3; #in Hz
#Calculations
N=ThermalNoise+10*math.log10(RFch)+Nms;
Smin=N+SNR;
Smean=Smin+fading+Bodyloss;
Lp=Pt-Lc_TX+Ga-Smean;
N1=ThermalNoise+10*math.log10(RFch)+Nbs;
Smin=N1+SNR-Gdiversity;
Smean1=Smin+fading+Bodyloss;
Lp1=Pms-Smean1+Ga-Lc_RX;
R=10**((Lp1-133.2)/33.8);
#Result
print 'Cell radius is %.1f km'%R;
#Variable declaration
Ri=12.2*10**3;#Information rate in bps
Rc=3.84*10**6;#Chip rate in cps(chips per second)
Eb_Nt=4.; #in dB
Imargin=2.; #Interference margin(3 dB)
B=0.5;#Interference factor due to other cells
Vi=0.65;#Channel activity factor
#Calculations&Results
Eb_Ntreqd=10**(Eb_Nt/10);
LF_peruser=(1+B)*(1./(1+(Rc/Ri)*(1./Eb_Ntreqd)*(1./Vi))); #M(no of users=1) in Eq 17.13
print 'Cell load factor per voice user is %.5f'%LF_peruser;
CellLoading=(Imargin-1)/Imargin;
VoiceUsers=CellLoading/LF_peruser;
print 'No of Voice Users are %d per cell'%VoiceUsers;
#From EQ 17.6 assuming Power control efficiency=1
Polecap=Rc/(Ri*Vi*(1+B)*Eb_Ntreqd);
print 'Pole Capacity is %d'%Polecap;
#Variable declaration
Eb_Nt=1.; #in dB
cellLoading=0.5;#Required interference margin(3 dB)
B=0.5;#Interference factor due to other cells
Vi=1;#Channel activity factor
#Calculations
Eb_Ntreqd=10**(Eb_Nt/10);
#Assuming standard value of chip rate as 3.84Mcps
Rc=3.84*10**6;#in cps(chips per second)
Throughput=(cellLoading*Rc)/(Eb_Ntreqd*(1+B));
#Result
print 'Uplink Throughput is %d kbps'%(Throughput/1000);
#Variable declaration
Ri=12.2*10**3;#Information rate in bps
Rc=3.84*10**6;# Chip rate in chips per second
Eb_Nt=4.; # in dB
Eb_Nt=10**(Eb_Nt/10);
B=0.5;#Average interference factor due to other cells
Zeta=0.6; # orthogonality factor
Imargin=2.;#Interference margin(3 dB)
Vi=0.65 #assuming Channel activity factor as 0.65
#Calculations&Results
Loadfactor_peruser=(Zeta+B)*(1./((Rc/Ri)*(1./Eb_Nt)*(1./Vi)))
print 'Downlink cell load factor is %.4f'%Loadfactor_peruser;
cellLoading=(Imargin-1)/Imargin;
Voiceusers=cellLoading/Loadfactor_peruser;
print 'No of voice users per cell are %d'%Voiceusers;
import math
#Variable declaration
N0=-174;#Noise density in dBm/Hz
Bc=1.25;#Channel bandwidth in mHz
Rc=1.2288;#Chip rate in Mcps
Nf=6; #Receiver Noise figure in dB
Pt=27; #Effective radiated power from mobile in dBm
Lct=0.5; #Transmitter cable and connector loss in dBm
Lbody=1.5;#Body loss in dB
Lcr=2; #Receiver cable and connector loss in dB
Mint=0; #Interference margin in dB
Mfading=2;#fast fadinf margin in dB
Lpent=8;#Penetration loss in dB
Gm=0;#Transmitter antennna gain in dBi
Gb=12;#Receiver antenna gain in dBi
Fm=8;#Fade margin in dB
Eb_Nt=7;# in dB
#Calculations
Nth=N0+Nf;
S_Nt=Eb_Nt+10*math.log10((Rc*10**6)/(Bc*10**6));
Smin=S_Nt+10*math.log10(Rc*10**6)+Nth;
Lpmax=(Pt-Smin)+(Gb+Gm)-(Lbody+Lct+Lcr+Fm+Lpent)-Mint-Mfading;
#Results
print 'Minimum signal power required is %.2f dBm'%Smin;
print 'Maximum allowable path loss is %.2f dB'%Lpmax;
#Variable declaration
Rc=3.84;#Chip rate in Mcps
Ri=16;#Data rate in kbps
UL=0.5;#UL loading factor
DL=0.9;#DL loading factor
Eb_NtU=4;#in dB
Eb_NtD=6;# in dB
Gm=0;#Mobile antenna gain in dBi
Gb=18;#Base station gain in dBi
#Calculations
R=10**((139.65-138.5)/35.7);
print 'Cell Radius is %.3f km'%R;
Area=round(2.6*R**2);
#Results
print 'Area covered by hexagonal cell is %d km**2'%Area;
print 'Number of BTSs required to cover an area of 2400 Km**2 are %d'%(2400/Area);
#Variable declaration
Rc=3.84;#chip rate in Mcps
N=3.;#Noise rise in dB
OF=0.8;#orthogonality factor
B=0.55;#Interference from other cells
Eb_N0=4.;#in dB
Sec_Eff=0.85;#Sector efficiency
Pwr_Eff=0.80;#Power control efficiency
Y=1.2; #Retransmit rate
X=10.; #10MB at 384Kbps
X1=2.; #2MB at 144Kbps
X2=1.; #1MB at 64Kbps
#Calculations
#Assuming Voice activity=Vf=1
Vf=1;
AvgDR=Y*X*10**6*(1./3600)+Y*X1*10**6*(1./3600)+Y*X2*10**6*(1./3600);
CLoad=(N-1)/(N+1);
DLcap=(Rc*10**6*Pwr_Eff*Sec_Eff)/(((10**(Eb_N0/10))*(B+OF)*Vf));
Allowcap=CLoad*DLcap;
users=Allowcap/AvgDR;
#Result
print 'NO of users that can be supported on the downlink of the WCDMA network are %d'%(round(users));
#Variable declaration
P1=1./2;#relative frequency of packets for user class1
P2=1./3;#relative frequency of packets for user class2
P3=1./6;#relative frequency of packets for user class3
R1=16; #data rate in kbps for P1
R2=64; #data rate in kbps for P2
R3=1024; #data rate in kbps for P3
S1=16;#number of slots assigned to the R1 user
S2=8;#number of slots assigned to the R2 user
S3=2;#number of slots assigned to the R3 user
#Calculations
#Using Equation 17.20 from page no 616
Ravg=(P1*R1*S1+P2*R2*S2+P3*R3*S3)/(P1*S1+P2*S2+P3*S3);
# For equal latency, using Eq 17.18
Rav=1./(P1/R1+P2/R2+P3/R3);
# For Latency ratio=4, using Eq 17.19 from page no 616
PL=4;
C=(P1+P2+PL*P3)/(P1/R1+P2/R2+P3/R3);
#Results
print 'The average throughput for equal access condition is %.1f kbps'%Ravg;
print 'The average throughput by considering equal latency is %.1f kbps'%Rav;
print 'The average throughput by considering latency ratio as 4 is %.2f kkbps'%C
#Variable declaration
Ec_Nt=-23.;#in dB
DRC=-1.5;#DRC gain with respect to pilot in dB
Tg=3.75; # Traffic channel gain with respect to pilot in dB
B=0.85;#Interference factor due to other cells
#Calculations
Mmax=(1./(1+10**(DRC/10)+10**(Tg/10)))*(1./((10**(Ec_Nt/10)*(1+B))));
#The sector loading can be expressed as a fraction of the pole capacity Mmax. This is typically 70% of the pole capacity.
M_allow=int(0.7*Mmax);
#From table 17.2 we get Traffic channel rate as 9.6kbps since we are given traffic channel gain with respect to pilot as 3.75 dB
Ri=9.6; #in kbps(see table 17.2)
Tput=Ri*M_allow;
#Result
print 'Allowable reverse link throughput is %d kbps'%(round(Tput));
import math
#Variable declaration
Ptmax=5.5;#Maximum transmit power of DSCH in watts
Pbs=18;# Total base station power in watts
alpha=0.2;#downlink orthogonality factor
G=0.363;# geometry factor
SF=16; #Spreading Factor for DSCH;fixed at value of 16
#Calculations
# Using equation no 17.27 given on page no 623
SINR=SF*(Ptmax/(Pbs*(1-alpha+(1/G))));
# In dB
SINR_db=10*math.log10(SINR);
#Result
print 'The average SINR of HSDPA is %.4f dB(%.1fdB)'%(SINR,SINR_db);
#Variable declaration
Users=350;#no of users supported
ExpectedTraf=1.8; # From section 17.7 (in Kbps)
BHTraf=1.785;#Busy hour traffic in kbps
BTS=180;
#Calculations
IubBW=(ExpectedTraf*Users*BHTraf)/1000; # in Mbps
TotalBW=BTS*IubBW;
#Result
print 'Required total bandwidth of Iub Interface is %.2f Mbps'%TotalBW;
#Variable declaration
BTS=800.;#No of BTS sites
Sec=3;#No of sectors per BTS
freq_sec=2;#No of frequencies used per sector
cellsRNC=1152;#Maximum capacity of cellRNC
btsRNC=384;#One RNC can support btsRNC(BTSs)
VE=25;#Voice service(mErl/subscriber)
BRV=16;# bitrate Voice
CS1=10;#CS data service 1(mErl/subscriber)
BRC1=32;#bit rate for CS1 in kbps
CS2=5;#CS data service 2(mErl/subscriber)
BRC2=64;##bit rate for CS2 in kbps
PSdata=0.2;#PS data service(kbps per subscriber)
PSoverhead=0.15;
SHO=0.4;#40%
Totalsub=350000;#Total subsribers
Maxcap=196;#Maximum Iub capacity of tpRNC (in Mbps)
FR1=0.9;FR2=0.9;FR3=0.9;#Filler rates
#Calculations&Results
RNCreqd=(BTS*Sec*freq_sec)/(cellsRNC*FR1);#from eqn 17.28
print 'using equation 17.28,Number of RNC required are %d'%(round(RNCreqd));
RNC_reqd=BTS/(btsRNC*FR2);#from eqn 17.29
print 'using equation 17.29,Number of RNC required are %d'%(round(RNC_reqd));
RNCrequired=((VE/1000*BRV+CS1/1000*BRC1+CS2/1000*BRC2+(PSdata/(1-PSoverhead)))*(1+SHO)*Totalsub)/(Maxcap*1000*FR3);#from eqn 17.30
print 'using equation 17.30,Number of RNC required are %d'%(round(RNCrequired));
print 'We select first value which is %d RNCs'%(round(RNCreqd));