Chapter 17: Planning and Design of a Wireless Network¶

Example 17.1, Page 597¶

In [1]:
#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 trafﬁc 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,Trafﬁc 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));

Average busy-hour trafﬁc per subscriber is 0.0174 Erlangs
Referring Erlang-B table in Appendix A,Trafﬁc capacity of a GSM cell at 2% GoS for 14 channels = 8.2 Erlangs
There are 3 cells per BTS
Traffic capacity per BTS is 24.6 Erlangs
Therefore, Traffic per BTS is less than BTS capacity(30 Erlangs)
The required number of base stations per zone are 43
The hexagonal cell radius is 2.1 km


Example 17.2, Page 598¶

In [2]:
#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
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)

Voice Traffic per Cell(sector) is 8.79 Erlangs
Data throughput per Cell(sector) is 15.50 kbps


Example 17.3, Page 600¶

In [3]:
#Variable declaration
Holdtime=120;#Average holding time during Busy Hours(in sec)
TSsig=3;#No of TSs per cell for signaling
TSdata=3;#TSs allocated for data trafﬁc 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
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;

Data Erlangs = 1.5
Time Slot(TS) utilization = 0.5
TS capacity is 8.27 kbps


Example 17.4, Page 602¶

In [4]:
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 ﬁlter losses in dB
Lc_RX=2;#BS receiver antenna cable, connector, and ﬁlter losses in dB
Bodyloss=3;# Body losses at mobile
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;
Lp=Pt-Lc_TX+Ga-Smean;
N1=ThermalNoise+10*math.log10(RFch)+Nbs;
Smin=N1+SNR-Gdiversity;
Lp1=Pms-Smean1+Ga-Lc_RX;
R=10**((Lp1-133.2)/33.8);

#Result
print 'Cell radius is %.1f km'%R;

Cell radius is 1.2 km


Example 17.5, Page 608¶

In [5]:
#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;
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;

Cell load factor per voice user is 0.00774
No of Voice Users are 64 per cell
Pole Capacity is 128


Example 17.6, Page 608¶

In [6]:
#Variable declaration
Eb_Nt=1.;  #in 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)

#Result
print 'Uplink Throughput is %d kbps'%(Throughput/1000);

Uplink Throughput is 1016 kbps


Example 17.7, Page 610¶

In [7]:
#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
print 'No of voice users per cell are %d'%Voiceusers;

Downlink cell load factor is 0.0057
No of voice users per cell are 87


Example 17.8, Page 610¶

In [8]:
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
Lpent=8;#Penetration loss in dB
Gm=0;#Transmitter antennna gain in dBi
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;

#Results
print 'Minimum signal power required is %.2f dBm'%Smin;
print 'Maximum allowable path loss is %.2f dB'%Lpmax;

Minimum signal power required is -100.18 dBm
Maximum allowable path loss is 117.18 dB


Example 17.9, Page 612¶

In [9]:
#Variable declaration
Rc=3.84;#Chip rate in Mcps
Ri=16;#Data rate in kbps
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);

Cell Radius is 1.077 km
Area covered by hexagonal cell is 3 km**2
Number of BTSs required to cover an area of 2400 Km**2 are 800


Example 17.10, Page 614¶

In [10]:
#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);
DLcap=(Rc*10**6*Pwr_Eff*Sec_Eff)/(((10**(Eb_N0/10))*(B+OF)*Vf));
users=Allowcap/AvgDR;

#Result
print 'NO of users that can be supported on the downlink of the WCDMA network are %d'%(round(users));

NO of users that can be supported on the downlink of the WCDMA network are 89


Example 17.11, Page 616¶

In [11]:
#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

The average throughput for equal access condition is 58.2 kbps
The average throughput by considering equal latency is 27.3 kbps
The average throughput by considering latency ratio as 4 is 40.96 kkbps


Example 17.12, Page 620¶

In [12]:
#Variable declaration
Ec_Nt=-23.;#in dB
DRC=-1.5;#DRC gain with respect to pilot in dB
Tg=3.75; # Trafﬁc 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));

Allowable reverse link throughput is 173 kbps


Example 17.13, Page 623¶

In [13]:
import math

#Variable declaration
Ptmax=5.5;#Maximum transmit power of DSCH in watts
Pbs=18;# Total base station power in watts
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);

The average SINR of HSDPA is 1.3753 dB(1.4dB)


Example 17.14, Page 624¶

In [14]:
#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;

Required total bandwidth of Iub Interface is 202.42 Mbps


Example 17.15, Page 625¶

In [15]:
#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)
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));

using equation 17.28,Number of RNC required are 5