Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 74

SATURN

A UMTS RADIO ACCESS NETWORK DIMENSIONING TOOL


Glossary.......................................................................................................................................... 3
Project Outline................................................................................................................................ 5
1. Introduction to WCDMA........................................................................................................ 6
2. WCDMA Capacity.............................................................................................................. 11
2.1 Uplink.............................................................................................................................. 11
2.2 Downlink......................................................................................................................... 14
2.2.1 Downlink Simplified Model.......................................................................................16
2.3 Load Variation................................................................................................................ 19
2.3.1 Eb/NT Standard Deviation.......................................................................................19
2.3.2 Percentile Noise Rise (Interference Margin)............................................................20
3. WCDMA Coverage............................................................................................................. 22
3.1 Coverage Variation......................................................................................................... 25
3.1.1 Percentile Reliability (Shadow Fade Margin)...........................................................25
4. Services............................................................................................................................. 26
4.1 Service Classes.............................................................................................................. 26
4.2 Circuit and Packet Switched Services............................................................................26
4.3 Dedicated and Shared Channels....................................................................................29
4.4 Service Mix..................................................................................................................... 29
4.5 Quality............................................................................................................................ 30
4.6 Overheads...................................................................................................................... 31
5. The Link Budget................................................................................................................. 34
5.1 Link Budget Example...................................................................................................... 34
6. Software Architecture and Code flow.................................................................................38
7. Annex I............................................................................................................................... 45
7.1 Spreading, Scrambling & Modulation..............................................................................45
7.2 OVSF Codes.................................................................................................................. 45
Annex II – Uplink........................................................................................................................... 46
7.3 Uplink Mean Load Factor – (Circuit Switched)................................................................46
7.4 Uplink Mean Load Factor – (Packet Switched)...............................................................47
7.5 Uplink Load Variance (Circuit Switched).........................................................................48
7.6 Uplink Mean Load Variance – (Packet Switched)...........................................................49
7.7 Uplink Noise Rise Calculation......................................................................................... 50
7.8 Uplink Percentile Noise Rise.......................................................................................... 50
7.9 Uplink Percentile Pathloss.............................................................................................. 51
7.10 Uplink Dimensioning................................................................................................... 51
Annex III – Downlink..................................................................................................................... 54
7.11 Downlink Mean Load Factor.......................................................................................54
7.12 Downlink Percentile Noise Rise..................................................................................57
7.13 Downlink Percentile Pathloss......................................................................................58
7.14 Downlink BTS Power.................................................................................................. 58
7.15 Downlink Dimensioning............................................................................................... 62
Annex IV....................................................................................................................................... 65
7.16 Optimise for Carriers (Uplink > Downlink)...................................................................65
7.17 Final Optimisation – Example I...................................................................................68
7.18 Final Optimisation – Example II..................................................................................71
References................................................................................................................................... 74

Page 2 27/04/2020
Glossary
ANDC Advanced Network Development Centre
CDMA 1X Code Division Multiple Access
FDMA Frequency Division Multiple Access
GUI Graphical User Interface
JUPITER Motorola’s UMTS Simulation tool
MHA Mast Head Amplifier
OVSF Orthogonal Variable Spreading Factor
TDMA Time Division Multiple Access
UMTS Universal Mobile Terrestrial Service
RAN Radio Access Network
WDM Wideband Digital Modem

Page 3 27/04/2020
Objectives
The defined objective is to create a single web-based tool for the dimensioning of UMTS radio
access networks. The primary requirement is to accurately compute an optimum number of cells
required to cater for coverage and capacity requirements specified by a user.
However, experience has demonstrated that in order for it to be an effective tool, Saturn must be
designed to be capable of the following:

 Dimension for a wide variety of services each with specific quality of service requirements
such as delay, frame erasure rates, blocking etc. Also, each service should consist of a
maximum and minimum bearer rate.
 Dimension for varying (increasing) traffic volumes year on year
 Dimension for different type environments (e.g. Urban, Suburban) and coverage areas.
 Dimension for minimum and maximum loadings, separately on the uplink and downlink
and subsequently determine the optimum.
 Assess the impacts of capacity and coverage enhancing features such as multiple
carriers per sector, transmit diversity, mast head amplifiers etc
 Account for Overheads such as packet headers, control information and handover, and
hence distinguish between gross throughputs and actual user throughputs.

Also, a crucial requirement of Saturn is the ability to cope with data entry from the user in a
number of different formats. This is necessary because information provided by the operators is
often very dissimilar and indeed rarely complete. A prime example is in the definition of the
volume of traffic, specified either in erlangs or kbps. It is essential that Saturn accommodate the
following modes:

 Percentage number of users of each service within the network


 Total volume of traffic for a service
 Volume of traffic per Subscribers and the number of subscribers.

The first gives a quick estimate of the load and throughput, where no additional information is
available whereas the other two modes are obviously more accurate. Also, because, information
on each service isn’t always readily available, Saturn must be flexible enough to allow every
service to be defined as circuit switched with an activity factor or packet switched with a profile of
packet calls separated by reading times.

Page 4 27/04/2020
Project Outline
In the first chapter, an attempt is made to emphasise the important concepts in WCDMA systems
particularly the principle that neither the cell radius nor its capacity is fixed. The approach used
was to highlight the differences between the well-understood GSM concepts and these new
principles.

The second chapter describes analytically how, based on a number of simple assumptions the
load of a cell is determined. It then explains how the inaccuracy incurred due to the limitations in
the assumptions can be countered.

Chapter 3 describes how the range of a cell is calculated, based on certain pathloss models. The
way in which the range varies depending on the type of terrain and clutter in the coverage area
and the limitations in the assumptions that need to be made is explained.
Also gains and losses of the equipment used and and how they affect the cell range are briefly
described. To conclude the chapter, the concept of coverage reliability, to counter the basic
assumption of a uniform coverage area is explained.

Chapter 4 introduces the services and their characteristics. It explains how the user can use the
flexibility of Saturn to define the desired bearer rates, error rates, delays etc.

Chapter 5 explains the link budget that is the core of Saturn. With an uplink example the objective
of trying to obtain a cell count that would simulatneously cater for both the coverage and
throughput requirements is described.

Chapter 6 describes the architecture of the software. Detailed flow charts are used to describe the
way in which the code is written. Also the original UML class diagram drawn up as a part of the
project specification is included.

Chapter 7 draws conclusions as to what how the objectives have been achieved and the benefits
of Saturn as a dimensioning tool .

Finally, in the annex a portion of the code is attached, showing the most important functions such
as load and pathloss calculations. Also the piece of code accompanying the flow charts in chapter
6 is attached.

Page 5 27/04/2020
1. Introduction to WCDMA
Cellular mobile telecommunications is now in its third generation, UMTS - Universal Mobile
Terrestrial System. It was intended to build upon the successes of the now very ubiquitous GSM
mobile system.

However its primary requirement, allowing for the support of multiple services each of a different
bearer rate and quality, plus an increase in the overall capacity of the network, resulted in the fact
that an all-together new technology was necessary.

Primarily, UMTS strives to maximise the use of the limited bandwidth available across the radio
interface, by recognising the fact that reserving a fixed size communication channel for use by a
single user for the duration of his/her call, as is essentially the case is GSM is inefficient.

The limitation to the GSM mobile technology is best understood when it’s multiple access
technology, i.e. Frequency / Time Division Multiple Access (FD/TDMA) is examined. Here the
basic resource is known as a time slot, which is a square within the frequency and time grid of
fixed duration (5.77s) and frequency (200Kz).
A user is periodically allocated one such slot, as a result of which, a single well-defined base-
band bearer rate (14.4kbps) is achievable, no more, no less. This is illustrated in [Figure 1] below:

Frequency

……

User slots (1 in 8)

Time

Figure 1: The GSM FD/TDMA Multiple Access Scheme


This system was designed to carry voice traffic, and does so very reliably. However, it is
immediately obvious that this system cannot fulfil the UMTS requirements stated above. It is
limited by the fact that it essentially1 only supports a single service type at a single bearer rate of
a single quality class. Also, a major inefficiency is exposed, in that during a session a user is
allocated resources whether or not it is required, as illustrated by the white circles. For bursty,
internet-type traffic, this would cause the system to collapse.

Major improvements have been made to GSM in the Generalised Packet Radio System (GPRS),
whereby timeslots may be concatenated to allow for a certain degree of flexibility in the bearer
rates and hence accommodating a variety of services. Also by varying the delay requirements in
the set-up / and tear-down duration for traffic channels, sometimes during the periods of inactivity,
some element of quality has been added, and the obvious inefficiency in relation to bursty traffic
has been improved upon.

1
In its most basic form

Page 6 27/04/2020
However, understandably, GPRS is not the all-encompassing flexible system, with the capability
of doing everything, hence the window of opportunity for UMTS.

UMTS utilizes Wideband Code Division Multiple Access technology (WCDMA), as opposed to the
frequency / time grid. Here, every user channel is assigned all of the available frequency for all of
the time, each user separated from the other by a unique code.

Power /
Interferenc
Power / Power /
“Wasted slot”
Interference Interference

t
t

Figure 2: WCDMA vs. GSM: Better use of the available spectrum.


[Figure 2] is a 3D illustration comparing the GSM (left) and UMTS multiple access schemes. It
clearly shows that that of UMTS utilizes the available bandwidth much more efficiently for a
number of reasons:
 Unlike GSM, there are no gaps in the frequency band
 Unlike GSM, when a user is not transmitting, he/she does not take up any resources
 Unlike GSM, the transmit power of a user is adjusted in relation to the noise levels
present in the system and hence would himself introduce only the necessary amount of
noise into the system.

Also, there is no fixed slot size; the user can take up as much of the resources as he wants,
hence flexibility in the type of services supportable.

Following on from the third point above, one of the cornerstones of the UMTS is the concept of
power control; the idea that a user shall only ever transmit the minimum amount power
necessary to successfully demodulate and decode his signal. It is directly related to the quality of
the signal, which as we know is in turn directly related to the number of bits in error in a received
frame i.e. the Frame Erasure Rate (FER). The more stringent the requirement – i.e. the fewer the
number of bits in error per frame, the higher the power requirement, see [Figure 3, right]. In other
words the higher the signal-to-noise ratio necessary and this implies the ratio of the energy per bit
Eb, to the total noise present NT, would be increased. From [Figure 2] however, it is apparent that
the higher the transmitted power per user the higher the interference levels in the system.

We can imagine that there are two tiers of the power control scheme, a higher level one in which
we associate the FER to an Eb/NT target, known as the Outer Loop Power Control. This target is
determined at the Radio Network Controller (RNC) and sent to the Node B. There is also a lower
level where we increase or decrease the transmit power to meet the Eb/NT target, known as the
Inner loop power control.

Page 7 27/04/2020
EbNo @
Cell
FER
Outer Loop
Inner Loop Power Control
Power Control

EbNo /
EbNo @ Power
Mobile Figure 3: FER and Power Control
Once again going back to [Figure 2], we establish that the limitation to the system is no longer a
fixed resource, i.e. time slots, but rather, interference, a so-called soft-limit, as it is a subjective
resource. A very telling analogy for a UMTS system is the cocktail-party scenario: With only a
handful of guests present, conversations held between guests are clearly audible, but as more
guests arrive, the noise in the room increases; and in turn everyone needs to talk a little louder in
order to be heard. There comes a point where the noise is just about bearable and the arrival of
one more would result in chaos, whereby, some people may decide to stop talking altogether and
others may result to screaming.

Figure 6: Interference soft limit; the cocktail party analogy


This point of intolerability is obviously different for a teenage party as opposed to a boardroom
party. This IS precisely the “soft-limit” aforementioned, and it is up to each host, in this case the
network operators to establish the appropriate degree of control. It is the first important point of
consideration in the dimensioning of UMTS networks i.e. what is the maximum load per cell to be
allowed.

As aforementioned, the user in the network is oblivious to the existence of all other users in the
network, as he doesn’t know their unique codes. Instead, he only perceives them as noise and
the more users the more noise.
Therefore, the amount of noise a user at the edge of a cell needs to overcome varies with the cell
load. Assuming a certain cell range can be achieved with the maximum transmit power of a
mobile station at zero loading, that range would reduce proportionally with increasing cell loads,
until the maximum is achieved.

Page 8 27/04/2020
Figure 7: Cell Breathing
This proportionality between the range of a cell and its capacity is known as cell breathing –
another vital concept for UMTS network dimensioning. It is absolutely essentially that the network
is dimensioned such that even as loads increase, no holes result in the network coverage. This is
the second important concept to bear in mind in dimensioning of UMTS radio access networks.

The third important concept relates to the services. To the consumer faster bit rates are desirable
as it implies that they can send and receive more data within shorter time intervals. However from
the perspective of the network provider, this implies shipping more data within a shorter time
period, which means that the load on the system is increased. This is illustrated in the figure
below:

load

144kbps

64kbps

32kbps
time

Figure 8: Bearer Rates vs. Cell load


As has been established, this increased load would result in reduced cell ranges and therefore,
for the same coverage area, additional cells are required, hence increasing the cost of building
and operating a network.
Similarly, a demand for better quality, i.e. few bit errors per frame, implies that the user transmits
more power per bit, thereby increasing the interference level in the system, deteriorating its range
and capacity.

It is often said that there is no gain without pain. For the planning / dimensioning engineer for the
UMTS radio network, there is hardly a more applicable idiom.

Any gain in network capacity is bound to come at a loss to the overall coverage area of the
system and/or the quality on each of the connections. To increase the coverage area, the loading
of the system must be minimised, and so too the quality. And finally, the more stringent the quality

Page 9 27/04/2020
specification, the less traffic the cells would support and/or the smaller the coverage area. The
figure below illustrates the balancing act.

Traffic

Cost

Coverage Quality

Figure 9: The Dimensioning Challenge


A network is optimised if the traffic, coverage and quality requirements can be balanced such that
the operating point of the network is within the circle. An optimised network isn’t just a desirability
but is essential as it costs least.

Generally, the system design and cell planning process can be broken down into three stages
with increasing degree of accuracy. The first level consists of the RF link budget computation that
provides an estimate for the coverage and capacity of a cell, and the number of cells required
based on the user-defined parameters.

In the second stage, the accuracy of the design is improved upon at the expense of increased
complexity, by including the actual site locations and a detailed description of the terrain, clutter
types and pathloss.

And finally, once the network is in place we can accurately simulate its capacity and performance.
Hence we can assess the effect of load and quality requirements, the impact of the introduction of
new applications or the effectiveness of our call admission control algorithms.

The task of Saturn is to determine the first level estimation that provides us with a good indication
of the ideal operating point, that balances the traffic, coverage and quality requirements at
minimum cost!!

Page 10 27/04/2020
2. WCDMA Capacity
The previous section introduced the notion that the loading on a cell is proportional to its capacity,
but is simultaneously proportional to the interference level in the cell.

Therefore, to estimate the capacity of a cell, we need to understand how much noise over thermal
noise due to interference, is present in the cell.

For accurate results, one would normally have to perform hours of system-level capacity
simulations. However, for our purposes, a good estimate, based on semi-analytical methods,
assuming some basic principles, can be obtained.

These assumptions are as follows:

 The Node Bs within the Network are positioned on a uniform grid


 Users are uniformly distributed across the network2
 Each user observes the same propagation conditions / environment
 The Quality of Service achieved at each node B is the same and constant for all users of
a given service type
 The activity factor is the same and constant for all users of a given service type
 The F factor, i.e. the ratio to the in-cell interference to the total interference is constant

With these assumptions in mind we can now attempt to describe the capacity of a cell and its
relationship to the noise created in a cell.

2.1 Uplink
First we shall begin with the uplink: for the Node B to accurately demodulate any received signal,
it needs to receive the UE signal at a given energy level above the thermal floor plus any
interference present in the cell. This is know as the Eb/NT and is defined as follows:

For each user i,

Eb/NT = Processing Gain * (Transmitted Power/ Noise3)


[Equation 1]

This expression can be written as:

W Pi
( Eb / N T ) i  
 i  Ri I total  Pi

[Equation 2]
Where:

2
When calculating range however we assume a worst case scenario, where the user is
positioned at the edge of the cell
3
This is the sum of the transmitted powers of all the other users in the cell

Page 11 27/04/2020
 W is the chip rate. For UMTS the chip rate is equal to 3.84x10 6 chip/s.
 Pi is the received signal power from user I
 i is the activity factor of user I. This is the percentage of time that a user transmits on an
active traffic channel.
 Ri is the bit rate of user I
 Gp = W / Ri. This is the processing gain achieved as a result of spreading the information
bit rate over the full frequency band i.e. spreading the information bit rate to 3.84x10 6
chip/s.
 Itotal is the total received wide band power including thermal noise power in the Node B,
the powers of own-cell users (Iin) and other-cell users (Iout)

Itotal = Iin + Iout + PN

[Equation 3]
Solving for Pi gives:
1
Pi   I total
W
1
( Eb / N T ) i  Ri  i

[Equation 4]

Now, we define the f factor as the ratio of the out-of-cell interference to the in-cell interference, Iout
/ Iin, and hence we can write the F factor as:

I in 1
F 
I in  I out 1  f

[Equation 5]

Simulations have shown that F-factor varies with the antenna types, the user distribution and
propagation index. The following F-factors, assumed in Motorola’s radio dimensioning tools, have
been obtained from system simulations:
Table 1: F-factor
Antenna type F-factor
Omni 0.65
3-Sector 0.45

Rearranging this we can write

Iin+Iout = (1+f)Iin

[Equation 6]

where Iin is the sum of all Pi of all active users in the cell. Therefore taking [Equation 2 & 3] and
summing for all N mobiles in the cell we obtain:

Page 12 27/04/2020
N N
1
I total  PN  I in  I out  (1  f ) Pi  (1  f )  I total
W
i 1 i 1
1
( Eb / N T ) i  Ri  i

[Equation 7]

The uplink noise rise is defined as the ratio of the total received power to the noise power:
I total
NR 
PN

[Equation 8]

and using [Equation 7] the following expression can be obtained:

I total 1 1
NR   
PN N
1 1
1  (1  f )
W
i 1
1
( Eb / N T ) i  Ri  i
[Equation 9]

where  is the load factor, defined as the sum of all the load factors from all the individual
connections, taking into account the interference from the other cells:
It can be written as:

N
1
  (1  f )  
PGi
i 1
1
( Eb / N T ) i  vi
[Equation 10]

As PG >> 1, we can simplify this expression to:

N
( Eb / N T ) i  vi

i 1 PGi  F

[Equation 11]
gives us the number of users N, for a given load factor .

So far we have assumed that users are of a single service type. Extending [Equation 11]
To accommodate, multiple services all we have to do is sum over all services of each service
type. Hence we say:

M Lm
Eb m , l 
vm , l
   m,l 
l 1 PG13 F
m 1 Page NT 27/04/2020
[Equation 12]
To obtain the noise rise expressed in dB, in terms of cell loading we can write:

1
NR  10 log( )
1

[Equation 13]
From [Equation 13], we see that the pole capacity, i.e. theoretical maximum is reached when  =
1. However, for dimensioning purposes, we generally do not exceed,  = 0.75, equivalent to a
noise Rise of 6dB.

From the above findings we notice that:

 Increasing quality ( Eb / N T ) reduces capacity


 High channel activity factor increases the loading
 High data rates increase the loading.
 High inter-cell interference reduces capacity.

This is in line with the postulations of section 1.

2.2 Downlink
When modelling the downlink, there are a number of differences that need to be considered
compared with the uplink:

 Access is via point-to-multipoint communication links


 Downlink transmissions are coordinated/synchronous
 Mobiles can be served by multiple Node Bs simultaneously (soft handover)
 In-cell interference is received through the same propagation channel as the wanted
signal
 Mobiles within a given cell observe different levels of out-of-cell interference.

Therefore calculating the base station capacity based on a multiple of point-to-point connections
is not very accurate4.

Each Node B within a WCDMA cellular network has a finite power resource that has to be shared
amongst a number of users. In order to maximise downlink capacity, it is essential that each Node
B allocate only sufficient power to maintain the quality

of service (QoS) requirements of each mobile. An important parameter, therefore, that is used to
determine capacity is the total power requirement of each Node B, for a given user/traffic
distribution.

4
However, we do assume that a number of point-to-point connections provide us with a good
estimate for the average pathloss the users experiences.

Page 14 27/04/2020
In order to determine this power requirement, as in the uplink, we first consider the received
energy per bit to total interference at the lth mobile owing to the link from the kth Node B. This is
given as:

[Equation 14]

where:

 P k is the total power rating of the k th Node B


 K (<=1) is the fraction of P k allocated to the traffic channels (1-k) being the fraction
allocated to the common channels)
  K, l (<=1) is the fraction of k *P k devoted to the traffic channel of the l th user
 PL (k, l) is the path loss between the k th Node B and the lth mobile
 K ,l is the orthogonality factor between the k th Node B and the l-th mobile
 P N (k,l) is the thermal noise power of the lth mobile connected to the k th Node B
 I k is the number of dominant Node Bs contributing to the out-of-cell interference
observed in the k- th cell.

Assuming that <<1, we then compute Eb(k,l)/ NT as

[Equation 15]
Where PG(k,l) is the processing gain of the lth mobile connected to the k th Node B. Using the above
equation, we can write

[Equation 16]

Page 15 27/04/2020
Now the traffic power requirement of the k th Node B is given by

[Equation 17]
Where v k,l and Lk are the activity factor of the l- th user and the number of radio links served by
the k- th Node B, respectively. On rearranging we obtain

[Equation 18]

In essence, this provides the traffic power requirement of the kth Node B in a non-homogeneous
WCDMA cellular network.

2.2.1 Downlink Simplified Model


The equation above is obviously not particularly attractive from a dimensioning perspective. As a
result, we can impose a number of assumptions that simplify the downlink-dimensioning problem.
For example, if we assume, as in the uplink, that:

 Node Bs within the network are positioned on a uniform grid


 Each user observes the same propagation conditions/environment, so that k ,l = for
all k and l
 Thermal noise power of each mobile is P N
 Each cell is equally loaded, with the same number of users being distributed uniformly
across each cell

And:

 An equal number of dominant Node Bs contribute to the out-of-cell interference observed


in each cell, so that I k = I for all k
 Total power rating of all Node Bs are equal, including the fraction of power allocated to
traffic and common channels, so that Pi = Pk and 
 An equal number of radio links are served by each Node B, so that L k =L for all k

Page 16 27/04/2020
Then a simplified version of the above equation is given by:

[Equation 19]
This is rearranged to give:

[Equation 20]
We can now define the location-dependent f factor

[Equation 21]
Which is a measure of the out-of-cell to in-cell interference density observed at the lth mobile
which is served by the kth Node B.

To further simplify [Equation 19], as we have in the uplink, we shall assume that:

 A generic f factor is available so that fk,l = f for all k and l


 The pathloss of each link, PL (k,l) = PL , and average for all

Also for all links of the same service type we assume:

 Equal energy-per-bit to interference ratio is equal (i.e. Eb(k,l)/ NT = Eb(m)/ NT )


 Equal processing gains (i.e PG(k,l) = PG(m) )
 Equal activity factors (i.e. v k,l = v m)

Page 17 27/04/2020
Therefore we can now group the connections based on service types. So, if we define

[Equation 22]

Where L is the total number of connections and Lm the number of connections for each service
type and replace PK with Ptraffic we now obtain a simple equation for the total
Power the node B requires to cater for L connections

[Equation 23]

Finally, we need to account for the fact that a number of the radio links served within each cell will
be associated with mobiles in soft handover. This overhead can be incorporated in the above
equation by increasing the number of links L by 1 + Sm, where (Sm <1) is the percentage of
mobiles within the mth service-type that are in soft handover, so that [Equation 22] be expanded
to:

[Equation 24]

On examining this equation, we find that the traffic power requirement of the Node B becomes
infinitely large when

[Equation 25]

Page 18 27/04/2020
At which point the Node B is said to have reached the pole condition. Therefore

[Equation 26]

Defines the pole capacity. Compared to [Equation 12] of the uplink, it is obvious that the term

[Equation 27]

Is equivalent to the downlink loading factor. And hence the downlink noise rise can be written as:

NR DL  10 log10 (1  X )

[Equation 28]

2.3 Load Variation


So far, to obtain an analytical equation for the uplink and downlink load factors we have made a
number of essential assumptions, such as uniformity in the propagation conditions experienced
by all the mobiles or the fact that we assume that the Eb/NT requirement for each service is
constant. However, we know these to be untrue, and we must account for variations from the
norm, in order to ensure that our dimensioning solution is robust. Therefore we introduce the
Eb/NT standard deviation and the Percentile noise rise.

2.3.1 Eb/NT Standard Deviation


First we shall consider the basic assumption that the Eb/NT per service is constant. The
implication is that the regardless of propagation conditions, the quality of Service (QoS) achieved
at each node B is the same and constant for all users within a given service type. In essence
perfect power control is assumed and the quality target is always met.

However, we know that fast fading causes quick variations in the behaviour of the propagation
channel for which the power control algorithm may not be able to compensate. To account for this
error in the power control, which degrades user capacity, a margin is added in the link budget.
The power control error is log-normally distributed, and hence the Eb/NT. Therefore we assume
that for each bearer rate the Eb/NT consists of a mean and a variance:

Page 19 27/04/2020
 Eb   (  ) 2 
E    exp  
2 
 N T  
[Equation 29]

 Eb 

Var    exp 2   (  ) 2 (exp( ) 2  1) 
 N T 
[Equation 30]

Where  and  are the mean and standard deviation of 10log10 [Eb/NT] and  = loge(10)/10.

Therefore for all bearer rates we allow for a variation in the Eb/NT such that the total becomes:

 Eb   Eb   Eb 
  E   Var   = +

 N T  TOTAL  N T   N T 
[Equation 31]

2.3.2 Percentile Noise Rise (Interference Margin)


In addition to the perfect power control assumption, the load factor descriptions above assume
that all mobiles in the network experience identical propagation conditions. Once again, we know
this to be inaccurate as mobiles are randomly distributed within the coverage area of a cell and
hence are subject to widely varying fade losses, penetration losses and path losses.

Therefore we need to account for this variation and we do so by elaborating on the assumption
that the QoS achieved by each user at the Node B is log normally distributed; We assume that
the noise rise does likewise.

We can hence describe it in a probabilistic manner and as a probability distribution function.

0 .0 6
5 0 % p e r c e n t ile
6 dB
0 .0 5
Probability Density function

0 .0 4 P r o b (Z > z )

9 8 % p e r c e n t ile
0 .0 3

0 .0 2

0 .0 1

0 6 9
dB
Page 20 27/04/2020
Figure 20: Noise Rise Probability Density Function

The figure above shows an example, where for a mean noise rise of 6dB for the cell, the
probability that the noise rise of this cell does not exceed 6dB more than 2% of the time assumes
that the cell has a peak noise rise of 9dB.

Mathematically, this can be written as

 1 
Pr ob( Z dB  z )  Pr ob  log e (1  X )  z 
  

 Pr ob( X  1  exp[ z ]

[Equation 32]

Where Pr ob( Z dB  z ) is the probability that the noise rise ZdB, exceeds z which is equivalent to
the probability of the load factor X exceeding { 1  exp[ z ] }.

We can therefore define r = exp[ z ] as the probability for which we cannot guarantee that ZdB,
exceeds z.

Page 21 27/04/2020
3. WCDMA Coverage
This section describes the fundamental concepts involved in the cell range calculation.
Accuracy in determining the cell range is essential as the smaller the radius the more the number
of cells would be required to cover a given area.

Basically, when determining the range of a cell, we want to consider all the gains and losses that
a mobile needs to overcome in order that his transmitted signal is decoded successfully at the
Node B. These are now briefly described:

Geographic Environment (Penetration Loss)


Except in detailed modelling, it is very difficult to characterize the losses incurred based on the
geographic environments. The density of buildings, terrain, forests etc, all have a major impact on
the path loss experienced and these may vary widely per square kilometre.

In Saturn we are limited by the assumption of uniformity 5 of the geographic area. Therefore to
obtain accurate results the user would have to breakdown his total area into a number of
environment types and treat each separately. By default we broadly distinguish between rural,
suburban, urban or dense urban environments and associate each with a penetration loss for
example 5, 10, 15 and 20dB respectively.

Body Loss
This is the loss incurred as a result of the degradation of the RF signal strength due to the close
proximity of the subscriber’s handset antenna to his body. For a voice service, this is often
referred to as the “head loss”; with a typical value is 2 dB.

Cable Loss
This is the loss of the cable from the antenna to the base-station. This loss will depend on the
type and length of the cable. A typical value for the cable loss is 3 dB.

UE power
The UE maximum output power is specified in the UMTS standards (3GPP 25.101), depending
on the Power Classes:

Power Class Maximum output power


1 +33 dBm
2 +27 dBm
3 +24 dBm
4 +21 dBm

Table 2: 3GPP UE Power Classes


The higher the transmit power, the higher the achievable cell range, however this results in more
interference that may be introduced into the system and hence less cell capacity.

5
We compensate for the inaccuracy of this assumption by introducing a percentile coverage
reliability (to be discussed) in addition to the EbNT standard variation and the percentile noise rise
discussed above.

Page 22 27/04/2020
Antenna Gain
Antennas can be either omni or directional. Different sites may use different types of antennas. In
general, the more sectors on the antenna, the higher the antenna gain, but conversely the higher
the cost. Typical antenna gains are illustrated in the table below:

Node B antenna Omni 2-Sector 3-Sector 4-Sector 6-Sector


Gain (dBi) 12 15 17 18 19

Table 3: Typical Antenna gains


A larger gain antenna increases the cell range. In addition, for a given cell range, because the
transmit power requirement on each link is reduced, the overall system interference is reduced
and hence the overall system capacity increased, therefore antennas are very essential pieces of
equipment.

Receiver Noise Figure


The receiver noise figure is a hardware dependent parameter related to the quality of a receiver.
Every piece of equipment has an associated Noise Figure. For the Node B receiver we assume a
default of 5 dB, and for the UE 9dB.

Soft handover gain


Soft handover is the term that is normally associated with the fact that a UE at the edge of a cell
may be simultaneously connected to one or more additional cells. A gain is achieved from the
macro-diversity, by either selecting the strongest of the links or combining the signal strengths on
all the links thereby reducing the EbNT target for the bearer. The diversity ensures that should one
link suffer from deep fades, it can be compensated for by the other links preventing mobiles from
transmitting an excessive amount of power.

This results in an overall reduction in the interference that the mobile introduces into the cell and
indeed neighbouring cells. Also transmit power required by the mobile to meet its EbNT target is
reduced, hence enhancing its battery life.

From simulations we find that a typical value for the soft handover gain is 3.5 dB.

Propagation models (pathloss equation)


So far we have discussed the gains and losses that need to be taken into consideration within a
link budget. In addition to these, it has to overcome the loss due to its distance away from the
base station. This pathloss is described as a propagation model with an environment dependent
slope and intercept (but does not include terrain effects). It is a simple approach that allows for a
quick analysis of the number of sites that may be required to cover a given area.

The propagation models currently used by Motorola are the COST 231 Hata models for
frequencies above 1500 MHz with the following assumptions: 2000 MHz frequency, 1.5 m MS
antenna height and for macro cellular Node B, 30m Node B antenna height in urban environment,
35 m in suburban and rural. The propagation models for different cell morphologies and site
configurations are summarized in table below:

Site config. Outdoor shadowing standard


Morphology Propagation model
deviation
Dense Urban Lp=140.79+35.22*Log(d) Tri 8 dB
Urban Lp =137.74+35.22*Log(d) Tri 8 dB
Suburban Lp =124.59 +34.78*Log(d) Tri 8 dB
Rural Lp =109.34+34.78*Log(d) Omni 8 dB

Page 23 27/04/2020
Table 4: Propagation Models
Where:

 Lp is the path loss (in dB) and


 d is the distance (in km) from the UE to the Node B.

The maximum path loss will correspond to a distance equal to the radius of the cell.

By calculating the Maximum allowable path loss, the cell range can be derived. For example, for
an urban cell:

Lp=137.74+35.22*Log(d)
[Equation 33]
So, we can derive d (cell radius):

Lp 137.74
d  10 35.22

[Equation 34]
Where d is the radius of the cell given in km.

Note that generally, in mobile networks we assume cells to be of hexagonal shape. Therefore the
area covered by a cell of d (km) radius is calculated as follows:

d
x
o
60

x = sin (6 0 º)d
A r e a = 1 2 .½ x .y
y = c o s (6 0 º)d = d /2
A r e a = 6 .½ d . s in (6 0 º )d
A r e a o f tria n g le = ½ x .y
A r e a = 2 . 5 9 8 .d 2

Figure 11: Cell Area Geometry

Hence the total number of cells required to cover the defined area is given as:

Number of cells = Total Coverage Area / 2.598 * d

[Equation 35]

Page 24 27/04/2020
3.1 Coverage Variation
3.1.1 Percentile Reliability (Shadow Fade Margin)
In analogy to the percentile noise rise and EbNT standard deviation introduced to account for load
variation we compensate for the fact that the propagation environment is not entirely uniform, by
introducing percentile coverage reliability.

First, we define the shadow fade margin or lognormal fading as the margin over which the signal
measurements at one location over varies in time. Here too, the lognormal distribution has been
found to be a good estimate of the statistical nature of shadowing and is used to calculate the
probability of RF coverage at each point in the cell.

The total probability of coverage for the cell is determined by integrating the point probabilities
over the cell area. The desired coverage area reliability (e.g. 90%) can be guaranteed by
increasing the fade margin to the necessary level as illustrated in the figure below:

Area reliability curves

1
0.98
0.96
0.94
Area reliability

0.92
6dB STD
0.9 8dB STD
0.88 10 dB STD

0.86
0.84
0.82
0.8
3 4 5 6 7 8 9 10 11 12 13 14
Lognormal fade margin

Figure 12: Lognormal fading against shadowing standard deviation and area reliability

The lognormal fade margin increases with increasing lognormal standard deviation, which
typically varies between 5 and 9 dB. The greater the standard deviation, the lower the edge
reliability assuming a constant fade margin.

Page 25 27/04/2020
4. Services
This section attempts to describe a service, its characteristics and how they can be modelled in
Saturn.

4.1 Service Classes


Across the radio interface the different service types such as voice, video, or file downloads are
indistinguishable as they arrive at the transmitter as a random stream of bits. However we know
that their requirements in terms of rate, bit errors, delay, delay jitter and perceived quality may
vary greatly. For instance a voice service has very stringent delay requirements, although it can
tolerate some degree of error and jitter, but it does not require a huge radio bearer. Conversely,
for a file download, the larger the bearer the better but more importantly errors are intolerable
though some degree of delay and jitter would not degrade the service.
Therefore based on such characteristics UMTS attempts to classify services into four distinct
traffic classes:
 Conversational Services
These are basically voice-type services with very stringent delay requirements. Also the
channel set-up times and blocking probabilities must be minimal for the service to be
perceived as acceptable.
 Streaming Services
These are music-download type services; the larger the bearer the better. Some delay is
acceptable, but jitter would severely degrade the service.
 Interactive Services
These are instant messaging type services. Some delay is acceptable, jitter too, but few
errors. They do not necessarily demand large bearers.
 Background Services
These are best effort services e.g. SMS that use up whatever spare capacity is available.
They do not place any great demands on the system resources.

Understanding the characteristics and classification of services is important for the network
operator because, the type and mixture of services accommodated within the network has a
direct impact on the revenues.

4.2 Circuit and Packet Switched Services


Traditionally, services are classified as either circuit or packet switched, where the former
originates from the telecommunications world whereby an application is transmitted as a stream
of randomly arriving bits. The latter, originates from the more recent information technology world
where a number of bits are grouped into packets which becomes the basic unit of transport.

Circuit Switched Services


As aforementioned, these services are much more familiar to the operators. The application is
generally modeled as a call whose random arrival is described by the Poisson distribution. Each
consists of a random bit stream at a constant bearer rate for the duration of the call.

Page 26 27/04/2020
Random bits Closed pipe
pipe

[Figure 13] A circuit switched call with and activity factor of X%

Here the overall activity factor is simply estimated as the time ratio for which bits are being
transported to the overall call duration.

Most Conversational and Streaming type services such as voice are circuit switched. Due to the
stringent quality requirements, such services are carried exclusively within a closed dedicated
channel

Packet Switched Services


The bursty nature of World Wide Web type traffic with effectively a very low activity factor implies
that reserving a dedicated pipe would be impractical and inefficient. Therefore the need to share
a channel becomes important. But in order to be able to tell the bits of one service apart from
those of another one would need to bundle closely arriving bits into basic packet units each with a
header to describe its source and destination.

.
Packet Packet Inter-arrival Time

Packet Call Reading Time

Session Duration

[Figure 14] WWW model of a packet switched call

In fact there is a well-defined WWW model to describe the flow of packets used in Saturn, as
illustrated above. A number of packets arriving within a specified inter-arrival time are contained
in a packet call each of which are separated by reading times. The packet arrivals within a packet
call still follow the Poisson distribution and so to do the arrival of packet calls in the session. Now,
packets from different sources may be multiplexed within a packet call, or as is more often the
case, because of the relatively long reading times packet calls from different sources may be
multiplexed. This sharing of the channel results in an increased activity factor, i.e. better
efficiency, however, the activity factor for each service on the same channel may be different.

Page 27 27/04/2020
As their delay and delay jitter requirements here are less stringent, Interactive and Background
services, are generally modeled as packet switched. The figure below illustrates how a packet
service may be defined on the graphical user interface of Saturn.

Figure 15: (Packet) Services Description Window


From the above the activity factor (AF) is calculated as:

Activity Factor =
(x*( PacketSize / Rb)) / ((x*( PacketSize / Rb))+ ((((y -1)*z) * (tInterarrival - tDuration)) + ((z -1)* tReading)));

[Equation 366]

Where

Rb = Bearer Rate
PacketSize = Size of a packet in bits
tDuration = Duration of a Packet = (size*8)/ Rb
tInterarrival = transmission time interval in seconds
tReading = Reading time
z = Number of Packets Calls In Session
y = Number of Packets In a Packet Call = Round Up (y *(1+ Packet Loss Ratio));
x = Number of Packets In a Session = y *z ;

Page 28 27/04/2020
4.3 Dedicated and Shared Channels
Because UMTS is designed to accommodate any service type irrespective of whether packet or
circuit switched, it needs to have a mixture of dedicated and shared channels 6 available.
As argued in the previous section, Conversational and Streaming type services are typically
circuit switched and are generally assigned dedicated channels whereas Interactive and
Background Services are generally packet switched and may be multiplexed onto Shared
channels.
However this is not a hard and fast definition: so long its specifications are met a circuit switched
service7 may be mapped onto a shared channel and nothing stops one from mapping a packet
switched service onto a dedicated channel.
In fact shared channels are an optional part of the 3GPP UMTS specifications and most vendors
do not intend to deploy them in the very first releases of their equipment.

Likewise, for this version on Saturn, shared channels are not implemented. Therefore all services
including Interactive and Background services are mapped onto dedicated channels. However for
packet switched services with long reading times, Saturn accounts for the fact that the it may be
more efficient to close down the channel and re-open it rather than allow a user to unnecessarily
hold on to a code that could be used by other users hence the activity factor is improved.

4.4 Service Mix


In order to begin the dimensioning process, one needs to know how much traffic needs the
networks is to be dimensioned for. This is usually provided by the operator in one of three ways:

 Percentage number of users of each service within the network


 Total volume of traffic for a service
 Volume of traffic per Subscribers and the number of subscribers.

As illustrated in the [figure 16] below:

6
The shared channels are particularly important in the downlink because of its point-to-multipoint
nature.
7
A circuit switched service can very easily be described by the WWW model of figure XXXX, with
short inter-arrival times and reading times equal to an inter-arrival time.

Page 29 27/04/2020
Figure 16: Traffic Mix Defnition

From this information, the engineer can determine the percentage ratio of Erlangs of each service
type to be supported. This is known as the service mix and is essential in determining the
resultant number of users of each service type in a cell.

4.5 Quality
The main quality parameter in Saturn is the FER target i.e. to the outer loop power control target.
Within Saturn there is a library of EbNT tables8 associated with each target, e.g. 1%, 2%, 5% or
10% and along with this, the actual EbNT to be used depends on the bearer rate and user speed
as shown below:

8
Gathered from Motorola link level simulations

Page 30 27/04/2020
Figure 17: Saturn EbNo Tables

Each EbNT also has an associated standard deviation See section 8.3.1, and an implementation
margin to take into account the inaccuracy of the equipment may be defined.

Also for packet switched services, the user may define a percentile delay requirement, and an
overall Erlang B blocking parameter may be defined to guarantee channel availability. These shall
be discussed in section 10.7.

4.6 Overheads
There are a number of steps involved before a stream of bits can be mapped onto a UMTS radio
frame. First they are grouped into blocks to which Cyclic Redundancy Check (CRC) bits are
attached. These blocks are then concatenated or segmented as necessary, then encoded, rate
matched and interleaved. And finally these blocks can be multiplexed with those from another
stream. This is illustrated in the figure below [right]:

In Saturn this process is much simplified. Basically, the EbNT figure provided is computed for the
standard a UMTS radio bearer e.g. the EbNT for a 12.2kbps is the energy per bit required above
total noise not for 12.2kbps but rather for the standard UMTS 30kbps bearer onto which it is
mapped after the CRC, encoding, rate matching etc. Therefore all the overheads in the
multiplexing chain are already taken into account except for one: The DPCCH bits.

Table 5 shows an extract of the possible configurations of a frame as defined in [3GPP TS


25.212]. Within each slot there are data bits, i.e. DPDCH bits as well as DPCCH control bits,
which are highlighted in Table 5 and include pilot bits, power control bits as well as the transport
format indicators.
During periods of inactivity, to retain synchronisation, the pilot bits are continuously sent. So too
the power control bits and the transport format indicators. Therefore there is a resulting increase
in the overall activity factor on the channel. It is important that this additional overhead is taken
into account, as the impact can be quite significant.

Page 31 27/04/2020
Figure 18: Reverse Link Multiplexing tree TS 25.212

Page 32 27/04/2020
Table 5: DPDCH and DPCCH fields (Downlink)

Slot Channel Channel SF Bits/ DPDCH DPCCH (Control) User Information Rate
Format #i Bit Rate Symbol Slot Bits/Slot Bits/Slot
(kbps) Rate
(ksps) NData1 NData2 NTPC NTFCI NPilot

0 15 7.5 512 10 0 4 2 0 4
1 15 7.5 512 10 0 2 2 2 4
2 30 15 256 20 2 14 2 0 2
3 30 15 256 20 2 12 2 2 2  8 kbps
4 30 15 256 20 2 12 2 0 4
5 30 15 256 20 2 10 2 2 4
6 30 15 256 20 2 8 2 0 8
7 30 15 256 20 2 6 2 2 8
8 60 30 128 40 6 28 2 0 4
9 60 30 128 40 6 26 2 2 4  12.2 kbps
10 60 30 128 40 6 24 2 0 8
11 60 30 128 40 6 22 2 2 8
12 120 60 64 80 12 48 4 8* 8  32 kbps
13 240 120 32 160 28 112 4 8* 8  64 kbps
14 480 240 16 320 56 232 8 8* 16  144 kbps
15 960 480 8 640 120 488 8 8* 16  384 kbps
16 1920 960 4 1280 248 1000 8 8* 16

Activity Factor with Overhead


In order to generate the EbNT figures the user information rates were mapped onto specific
bearers as indicated on the right of Table 5. The increase in activity factor relates to the fact that
the control bits are continuously transmitted even when no data bits are present, as long as the
channel is active. It is calculated as follows: For a given slot format of which we

Effective Activity Factor = (data bits/total bits * activityFactor) + control bits/total bits

[Equation 377]
It is this effective activity factor that is subsequently used to calculate the load equations.

Page 33 27/04/2020
5. The Link Budget
Saturn is a tool that facilitates the first level in the design and planning process. Its core is a Link
budget engine that continuously calculates until an optimum number of cells required to cater
simultaneously for both the coverage and throughput requirements is found.

Inputs:
Traffic Volume
Quality Requirements
Coverage Area

OPTIM
SATURN UM
Link Budget Engine

Number of Cells Number of Cells


required for required for
coverage throughput

Figure 13: The Saturn Link Budget Engine


As inputs, Saturn requires that the user defines the service types, and for each service a traffic
volume and quality specification. It also requires that the user define a coverage area.

Then based on the assumptions of uniformity in the propagation conditions experienced by each
of the mobiles in the system (discussed in the previous sections), it proceeds with calculation and
continues adjusting the cell load and range until an optimised number of cells is achieved.

5.1 Link Budget Example


This section illustrates an example of the Saturn link budget engine for the uplink.

First, the basic requirements of throughput and coverage area need to be defined. Here we
assume a coverage area of 300 km2 and we dimension for coverage reliability of 90% at the cell
edge for a 144kbps bearer. For throughput we assume a total network throughput of 544400
Kbps and we allow for any load variations by using the 70 th%ile. [Table 6].

UMTS Link Budget (Uplink)


Coverage Area 300 km2
Throughput Requirement 544400 Kbps
Service Coverage 144 Kbps
Uplink Coverage Reliability 90 %

Page 34 27/04/2020
Percentile Noise Rise 70 %

Table 6: Link Budget Requirements: Area and Throughput


Next we define the service mix as the percentage ratio of Erlangs of each service type to be
supported. [Table 7]

Information Rate Bearer Rate


Services (Kbps) (Kbps) Service Mix (%)
Voice 12.2 60 74.5
Music Download 64 240 17.2
Games 144 480 7.6
Video 384 960 0.6

Table 7: Service Mix

Once we know the coverage and throughput requirements, we now need to take a closer look at
the services. First, using [Equations 36 & 37] we calculate the effective activity factors from the
user defined activity factors for the service.

Information Rate Bearer Rate


Services (Kbps) (Kbps) Effective Activity Factor
Voice 12.2 60 0.44
Music Download 64 240 0.25
Games 144 480 0.38
Video 384 960 0.25

Table 8: Effective Activity Factors

And then for each bearer onto which the services are mapped we define a quality requirement i.e.
the EbNo necessary to meet the defined outer loop control target; here an FER of 1% at 3 km/h.
Then for each Ebon we include a standard deviation using [Equation 30].

Information Rate Bearer Rate EbNo (dB)


Services (Kbps) (Kbps) Includes STD
Voice 12.2 60 5.9
Music Download 64 240 3.7
Games 144 480 2.2
Video 384 960 1.5

Table 9: Eb/Nos (including standard deviation)


Now that we know the inputs, we can start to fill the link budget. [See Table 10]
The objective is to vary the Mean Noise Rise (within the user defined limits), until number of cells
required for throughput and the number of cells required for coverage is as close as possible.

Page 35 27/04/2020
UMTS Link Budget (Uplink) Units Value Comments
Chip Rate (W) cps 3.84E+06 System standard
Coverage Bit Rate (Rb) bps 144000 Input: User
Base Station Noise Figure (NF) dB 3 Input: Equipment manufacturer
Bolztmann's constant (k) W/(Hz K) 1.38E-23  System Input
Room Temperature (T) K 2.90E+02  System Input
Thermal Noise Density (ND) dB/Hz -203.98 10*LOG10 (kT)
KTW dB -138.13  10*LOG10 (kTW)
NthW dB -135.13  (NF + kTW)
Base Ant. Gain (GBTS) dBi 17 Input: Equipment manufacturer
Mobile Ant. Gain (GUE) dBi 0 Input: Equipment manufacturer
Body Loss (LBODY) dB 0  Input: User
Building/Vehicle Penetration Loss (LPEN) dB 20 Input: Environment Dependent
Base Cable Loss (LCABLE) dB 0 Input: Equipment manufacturer
Total Effective Antenna Gain (GTOTAL) dB -3  (GBTS + GUE - LBODY - LPEN - LCABLE)
Interference Margin (PNoiseRise) dB 4.84  Calculated: see 8.3.2, Annex 11.7
Eb/NT (3% FER) (inc Eb/NT STD) dB 2.2  Input: User
Processing Gain (Gp) dB 14.26  10*LOG10 (W/ Rb)
Signal to Noise Ratio (SNR) dB -7.22  (PNoiseRise + Eb/NT + Gp)9
Mean Cell Loading (Load) 58.1%  (1-(10^(- NoiseRise /10)))
BTS Rx sensitivity (S) dBm -117.19  (ND + 10*LOG10 (Rb) + Eb/NT + NF)
Mean Noise rise (NoiseRise) dB 3.78  Input: User
Soft Handoff Gain (GSHO) dB 3.5  Input: User
Max Handset Power (200mW) (PUE) dBW -6 System Input
Shadow Fade Margin (single cell) (FM) dB 5.41  Calculated: see section 9.1.1
Lognormal STD dB 8  Input: User see section 9.1.1
Max Isotropic Pathloss (Ploss) dB 131.44  - (NthW - GTOTAL + SNR - PUE + FM - GSHO)
Pathloss exponent (Plossexp) 141.47  Input: Environment Dependent see Table 4
Pathloss index (Plossindex) 35.74  Input: Environment Dependent see Table 4

Outputs
Max Range (Radius) km 0.524  10^((Ploss - Plossexp)/(Plossindex))
Area of one Site (Areasite) km2 0.714  2.598*(Radius * Radius)
Area of one cell (Areacell) km2 0.238  Areasite / Number of Sectors (=3)
Area required km2 300.00  Input: User
No of cells req'd based on Area 1260.7  Area required / Areacell
 
Users mapping per carrier per cell No. Users 15.00  Calculated see Section 10.7
Throughput per Carrier per cell Kbps 435.08  Calculated: see Section 10.7
Total throughput required Kbps 544400  Input: User
Cells req'd based on throughput 1251.3  (Total required / Throughput /Carrier)

Table 10: Reverse Link Budget Example

9
The percentile noise rise in the pathloss calculation allows for variations in the propagation
conditions that affect range.

Page 36 27/04/2020
To improve on the link budget, which means increasing the cell radius, or reducing the number of
Node Bs required for the throughput, there are a number of things that could be done. First the
quality of the equipment used could be improved upon by:

 Improving the base station baseband algorithms, thereby reducing the Eb/No.
 Reducing the base station noise figure in the RF section.
 Reducing the cable loss between the antenna and the base station LNA.
 Increasing the antenna gain.

Also a number of enhancing features could be introduced, such as

 Carriers
 Sectorisation
 Transmit Diversity
 Mast Head Amplifiers

Saturn allows the user to assess the cost vs. benefit of each feature.

Page 37 27/04/2020
6. Software Architecture and Code flow

Initial Uplink

Increase Users

Calculate Calculate
Noise Rise Range

No
Noise Rise > Min

Final Uplink

Increase Users

Add Noise Rise Range


Carrier

No

Rates@ Min
Yes
Yes
Reduce > Max
Rates; No

Cells Throughput Cells Range

Yes
Cellsdiff > 0

Cellsdiff <= 0 OR
Cellsdiff > 0 @ Max
Uplink: Throughput, NoiseRise, Max Carriers
Range, and Carriers

Uplink Results

Figure 14: Uplink Dimensioning

Page 38 27/04/2020
Initial Downlink

Increase Users

Calculate Calculate
Loading Range

BTS Power

Reduce Yes
Range > Max

No
No
Load > Min

Yes

Final Downlink

Increase Users

Loading Range

Add Carrier (Reset)

Reduce BTS Power


Range

Yes No
Load < Max; Rates @ Min
Yes
No Yes
Reduce Rates > Max
Yes No
Carriers < Max; Yes
No Load > Max
No

Cells Throughput Cells Range

Yes
Cellsdiff > 0
Cellsdiff <= 0 OR
Downlink: Throughput, Cellsdiff > 0 @ Max Load,
Range, and Carriers Max Carriers

Downlink Results

Figure 15: Downlink Dimensioning

Page 39 27/04/2020
No
Carriers
X >Y

Yes
No
Range X >
Range Y
Yes

Carriers -= 1

Increase Users

Loading Range

Yes No
Load > Max
OR Power > Max

Rates @ Min
No Yes Cells Throughput X Cells Range X

No Yes
Range X > Cellsdiff > 0
Range Y
Carrier Re-added
Reduce No Yes
Rates Yes
Add Carrier
(Reset) Range X,
Reduce Throughput X
Range Carriers X
Yes
Carriers Y = X
Throuput X
No

Carriers Y = X

Cells Throughput Y Cells Range Y

No Yes
Cellsdiff >= 0 Range Y,
Throughput Y
Reset Rates Carriers Y

Throuput X
Loading Reduce
Rates

No Yes
Reduce Users Load > Max
OR Power > Max Range X.Y,
Throughput X, Y
Carriers X, Y

Throuput X
Figure 16: Optimise for Carriers -> (Reduce Carriers on link X if possible)

Page 40 27/04/2020
Cells Throughput X >
(Cells Range X &
Cells Range Y &
Cells Throughput Y)

Yes

Increase Users

Loading

Yes
Loading X < Max
No

Cells Throughput X Cells Range X

Yes
Cellsdiff > 0

No

Cells Range X,
Cells Throughput X
Carriers X, Y

Throuput X
No
Cells Throughput >
Cells Range Y &
Cells Throughput Y &
Load Y > Min

Yes Range X = Range Y

Reduce Users Throuput X

Loading

Cells Throughput Y
Cells Range Y
Range X.Y,
Throughput X, Y
Carriers X, Y

Throuput X
Figure 17: Final Optimisation - Example I
Cells Required Throughput X >
(Cells Required Range X & Cell Required Range Y& Cells Required Throughput Y)

Page 41 27/04/2020

Range X.Y,
Throughput X, Y
Carriers X, Y
Cells Range X >
(Cells Throughput X &
Cells Range Y &
Cells Throughput Y)

Yes

Yes
Noise Rise X < Min
No

Reduce Users

Loading

Cells Throughput X Cells Range X

No
Cellsdiff > 0

Yes

Cells Range X,
Cells Throughput X
Carriers X, Y

Throuput X
No
Cells Range X >
Cells Range Y &
Cells Throughput Y &
Load Y > Min

Yes Range X = Range Y

Reduce Users Throuput X

Loading

Cells Throughput Y
Cells Range Y
Range X.Y,
Throughput X, Y
Carriers X, Y

Throuput X

Figure 18: Final Optimisation - Example II


Cells Required Range X >
(Cells Required Throughput X & Cell Required Range Y& Cells Required Throughput Y)

Page 42 27/04/2020
Figure 19: UML Classes Diagram

Page 43 27/04/2020
Page 44 27/04/2020
7. Annex I

7.1 Spreading, Scrambling & Modulation

Figure 20: UMTS Spreading, Scrambling and Modulation

7.2 OVSF Codes

Cch,4,0 =(1,1,1,1)
Cch,2,0 = (1,1)
Cch,4,1 = (1,1,-1,-1)
Cch,1,0 = (1)
Cch,4,2 = (1,-1,1,-1)
Cch,2,1 = (1,-1)
Cch,4,3 = (1,-1,-1,1)

SF = 1 SF = 2 SF = 4

Figure 21: OVSF Channelisation Codes

Page 45 27/04/2020
Annex II – Uplink
7.3 Uplink Mean Load Factor – (Circuit Switched)
double ulCalcLoadmeanCS (double ulConnections)
{
double ulLoadmeanCS = 0;
double beta = Math.log(10)/10;
double simConnections = ulCalcSimultaneousConnections (ulConnections) ;

// CS.
Iterator csTrafficQuantitiesIterator =
data.environment.year.ulTrafficQuantityRepository.getCSTrafficQuantities() ;

while (csTrafficQuantitiesIterator.hasNext())
{
TrafficQuantity trafficQuantity = (TrafficQuantity)csTrafficQuantitiesIterator.next() ;
ServiceProfile serviceProfile =
data.csServiceProfileRepository.getServiceProfile(trafficQuantity.name) ;

double ff = data.environment.ffactor;
double s_pg = ulCalcProcessingGain(trafficQuantity.getActualBearerRate());

// Here the total number of simultaneous connections is reduced by one as the


// NoiseRise seen by the (N+1)th user equals the noise rise of the other N users
// only i.e it doesn't see its own noise.
double simConnectionsPerService = (1- (1/ simConnections)) *
(ulConnections*trafficQuantity.getLink()*trafficQuantity.getEffectiveActivityFactorUL()) ;

double arg1 =
(simConnectionsPerService)/((s_pg*data.variables.fractionalRecoveredPower)*ff);

double arg2 = beta*serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.


userSpeedDistribution, trafficQuantity).upLink;

double actualRateEbNoStdDev =
serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.
userSpeedDistribution, trafficQuantity).ulStdDev ;

double arg3 = (beta*actualRateEbNoStdDev)*(beta*actualRateEbNoStdDev);


double arg4 = (simConnectionsPerService*trafficQuantity.getEffectiveActivityFactorUL())/
((s_pg*data.
variables.fractionalRecoveredPower)*(s_pg*data.variables.fractionalRecoveredPower)*ff);

double sMean = arg1*Math.exp(arg2+(0.5*arg3));


ulLoadmeanCS = ulLoadmeanCS + sMean;
}
csTrafficQuantitiesIterator = null;
return ulLoadmeanCS ;
}

Page 46 27/04/2020
7.4 Uplink Mean Load Factor – (Packet Switched)
double ulCalcLoadmeanPS (double ulConnections)
{
double ulLoadmeanPS = 0;
double beta = Math.log(10)/10;
double simConnections = ulCalcSimultaneousConnections (ulConnections) ;

// PS.
Iterator psTrafficQuantitiesIterator =
data.environment.year.ulTrafficQuantityRepository.getPSTrafficQuantities() ;

while (psTrafficQuantitiesIterator.hasNext())
{
TrafficQuantity trafficQuantity = (TrafficQuantity)psTrafficQuantitiesIterator.next() ;
ServiceProfile serviceProfile =
data.psServiceProfileRepository.getServiceProfile(trafficQuantity.name) ;

double ff = data.environment.ffactor;
double s_pg = ulCalcProcessingGain(trafficQuantity.getActualBearerRate());

double simConnectionsPerService = (1- (1/ simConnections)) *


(ulConnections*trafficQuantity.getLink()*trafficQuantity.getEffectiveActivityFactorUL()) ;

double arg1 =
(simConnectionsPerService)/((s_pg*data.variables.fractionalRecoveredPower)*ff);

double arg2 = beta*serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.


userSpeedDistribution, trafficQuantity).upLink;

double actualRateEbNoStdDev =
serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.
userSpeedDistribution, trafficQuantity).ulStdDev ;

double arg3 = (beta*actualRateEbNoStdDev)*(beta*actualRateEbNoStdDev);

double arg4 = (simConnectionsPerService*trafficQuantity.getEffectiveActivityFactorUL())/


((s_pg*data.
variables.fractionalRecoveredPower)*(s_pg*data.variables.fractionalRecoveredPower)*ff);

double sMean = arg1*Math.exp(arg2+(0.5*arg3));


ulLoadmeanPS = ulLoadmeanPS + sMean;
}
psTrafficQuantitiesIterator = null;
return ulLoadmeanPS ;
}

Page 47 27/04/2020
7.5 Uplink Load Variance (Circuit Switched)
double ulCalcLoadVarCS (double ulConnections)
{
double ulLoadVarCS = 0;
double beta = Math.log(10)/10;
double simConnections = ulCalcSimultaneousConnections (ulConnections) ;

// CS.
Iterator csTrafficQuantitiesIterator =
data.environment.year.ulTrafficQuantityRepository.getCSTrafficQuantities() ;

while (csTrafficQuantitiesIterator.hasNext())
{
TrafficQuantity trafficQuantity = (TrafficQuantity)csTrafficQuantitiesIterator.next() ;
ServiceProfile serviceProfile =
data.csServiceProfileRepository.getServiceProfile(trafficQuantity.name) ;

double ff = data.environment.ffactor;
double s_pg = ulCalcProcessingGain(trafficQuantity.getActualBearerRate());

double simConnectionsPerService = (1- (1/ simConnections)) *


(ulConnections*trafficQuantity.getLink()*trafficQuantity.getEffectiveActivityFactorUL()) ;

double arg1 =
(simConnectionsPerService)/((s_pg*data.variables.fractionalRecoveredPower)*ff);

double arg2 = beta*serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.


userSpeedDistribution, trafficQuantity).upLink;

double actualRateEbNoStdDev =
serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.userSpeedDistributio
n, trafficQuantity).ulStdDev ;

double arg3 = (beta*actualRateEbNoStdDev)*(beta*actualRateEbNoStdDev);


double arg4 = (simConnectionsPerService*trafficQuantity.getEffectiveActivityFactorUL())/
((s_pg*data.
variables.fractionalRecoveredPower)*(s_pg*data.variables.fractionalRecoveredPower)*ff);

double sVar = arg4*Math.exp(2*(arg3+arg2));


ulLoadVarCS = ulLoadVarCS + sVar;
}
csTrafficQuantitiesIterator = null;
return ulLoadVarCS ;
}

Page 48 27/04/2020
7.6 Uplink Mean Load Variance – (Packet Switched)
double ulCalcLoadVarPS (double ulConnections)
{
double ulLoadVarPS = 0;
double beta = Math.log(10)/10;
double simConnections = ulCalcSimultaneousConnections (ulConnections) ;

// PS.
Iterator psTrafficQuantitiesIterator =
data.environment.year.ulTrafficQuantityRepository.getPSTrafficQuantities() ;

while (psTrafficQuantitiesIterator.hasNext())
{
TrafficQuantity trafficQuantity = (TrafficQuantity)psTrafficQuantitiesIterator.next() ;
ServiceProfile serviceProfile =
data.psServiceProfileRepository.getServiceProfile(trafficQuantity.name) ;

double ff = data.environment.ffactor;
double s_pg = ulCalcProcessingGain(trafficQuantity.getActualBearerRate());

double simConnectionsPerService = (1- (1/ simConnections)) *


(ulConnections*trafficQuantity.getLink()*trafficQuantity.getEffectiveActivityFactorUL()) ;

double arg1 =
(simConnectionsPerService)/((s_pg*data.variables.fractionalRecoveredPower)*ff);

double arg2 = beta*serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.


userSpeedDistribution, trafficQuantity).upLink;

double actualRateEbNoStdDev =
serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.
userSpeedDistribution, trafficQuantity).ulStdDev ;

double arg3 = (beta*actualRateEbNoStdDev)*(beta*actualRateEbNoStdDev);


double arg4 = (simConnectionsPerService*trafficQuantity.getEffectiveActivityFactorUL())/
((s_pg*data.variables.fractionalRecoveredPower)*(s_pg*data.variables.fractionalRecovered
Power)*ff);

double sVar = arg4*Math.exp(2*(arg3+arg2));


ulLoadVarPS = ulLoadVarPS + sVar;
}
psTrafficQuantitiesIterator = null;
return ulLoadVarPS ;
}

Page 49 27/04/2020
7.7 Uplink Noise Rise Calculation
double ulCalcNoiseRise (double ulConnections)
{
double ulNoiseRise = 0 ;

// Calculate the Mean and Variance


// Calulate UL meanNR and varNR not inc. users.
double ulLoadmeanCS = ulCalcLoadmeanCS (ulConnections) ;
double ulLoadmeanPS = ulCalcLoadmeanPS (ulConnections);
double ulLoadvarCS = ulCalcLoadVarCS (ulConnections) ;
double ulLoadvarPS = ulCalcLoadVarPS (ulConnections);
double ulLoadmean = ulLoadmeanCS + ulLoadmeanPS ;
double ulLoadvar = ulLoadvarCS + ulLoadvarPS;

double noiserisepercentile=data.variables.noiseRisePercentile;
noiserisepercentile=1-2*(1-0.01*noiserisepercentile);
double pa=Math.sqrt(2)*erfinv(noiserisepercentile);

ulNoiseRise = (-10*(Math.log(1-0*Math.sqrt(ulLoadvar)- ulLoadmean)/Math.log(10)));


return ulNoiseRise ;
}

7.8 Uplink Percentile Noise Rise


double ulCalcPercentileNoiseRise (double ulConnections)
{
double ulPercentileNoiseRise = 0 ;

// Calculate the Mean and Variance


// Calulate UL meanNR and varNR not inc. users.
double ulLoadmeanCS = ulCalcLoadmeanCS (ulConnections) ;
double ulLoadmeanPS = ulCalcLoadmeanPS (ulConnections);
double ulLoadvarCS = ulCalcLoadVarCS (ulConnections) ;
double ulLoadvarPS = ulCalcLoadVarPS (ulConnections);
double ulLoadmean = ulLoadmeanCS + ulLoadmeanPS ;
double ulLoadvar = ulLoadvarCS + ulLoadvarPS;

double noiserisepercentile=data.variables.noiseRisePercentile;
noiserisepercentile=1-2*(1-0.01*noiserisepercentile);
double pa=Math.sqrt(2)*erfinv(noiserisepercentile);

ulPercentileNoiseRise = (-10*(Math.log(1-pa*Math.sqrt(ulLoadvar)-
(ulLoadmean))/Math.log(10)));

return ulPercentileNoiseRise ;
}

Page 50 27/04/2020
7.9 Uplink Percentile Pathloss
double ulCalcPercentilepathloss(double ulPercentileNoiseRise, double fade_margin, double
ulPathlossDiff)
{
// Calculate base station Noise figure with/ without Mast Head Amplifier
double bsfig = data.variables.bsNoiseFigure + data.variables.cableLoss;
if (data.environment.year.usingMHA == true)
{
bsfig = 10*Math.log (Math.pow(10,(data.variables.mhaNoiseFigure)/10) + (Math.pow(10,
(data.variables.cableLoss)/10) -1)/ Math.pow(10,(data.variables.mhaGain)/10) +
Math.pow(10,(data.variables.bsNoiseFigure)/10) -1) / Math.pow(10,
(data.variables.mhaGain - data.variables.cableLoss)/10))/Math.log(10);
}

double ulCoverageRatePG = 10*Math.log


(ulCalcProcessingGain(data.environment.year.coverageRate*1000))/Math.log(10);

double tnp = 10*Math.log(1.38*Math.pow(10,-23)


*data.variables.bsNoiseTemp*data.variables.chipRate)/Math.log(10);

double bssens = tnp+bsfig + data.environment.year.coverageEbNt - ulCoverageRatePG;

double MSEirp = (data.environment.year.msTransmitPower-30)


+data.environment.year.msAntennaGain-data.environment.year.ulBodyLoss;

double ulPercentilepathloss=(MSEirp+data.environment.bsAntennaGain-bssens-
data.environment.penetrationLoss-fade_margin-ulPercentileNoiseRise
+data.variables.softHandOverGain-ulPathlossDiff);

return ulPercentilepathloss ;
}

7.10 Uplink Dimensioning


// Increase number of connections until min loading
// Calculation of number of users supportable at the Min Noise Rise
data.environment.ulMinNoiseRise

while ((library.cont() == true) & ulNoiseRise<data.environment.ulMinNoiseRise &


(stopopti==false))
{
ulActiveUsers = ulActiveUsers + incActiveUsers ;
ulConnections = library.ulCalcActiveConnections(ulActiveUsers) ;
ulNoiseRise = library.ulCalcNoiseRise (ulConnections) ;
}

double ulMinActiveUsers = ulActiveUsers ;


ulPercentileNoiseRise = library.ulCalcPercentileNoiseRise(ulConnections) ;
ulPercentilepathloss = library.ulCalcPercentilepathloss(ulPercentileNoiseRise, fade_margin,
ulPathlossDiff) ;

Page 51 27/04/2020
// Calculate Gross Throughput (ulThroughputpercell) &
// Useful Throughput (ulUsefulThroughputpercell)
library.ulCalcThroughputPerCell(ulConnections, ulCarriers);
ulCellsrequiredThroughput=(ulTotalRequiredThroughput/(ulUsefulThroughputpercell
*ulCarriers));

ultotalNetworkThroughput = ulCellsrequiredThroughput * (ulThroughputpercell*ulCarriers) ;

// Calulate coverage cells required


double ulMaxrange=Math.pow(10,((ulPercentilepathloss-pathconst)/pathexp));
double ulAreasite=ulMaxrange*ulMaxrange*2.598;
double ulAreacell=ulAreasite/data.environment.numOfSectors;
double ulCellsrequiredRange=data.environment.year.areaRequired/ulAreacell;

/************* FINAL VALUES FOR UPLINK **************************************/


double ulCellsdiff=ulCellsrequiredThroughput-ulCellsrequiredRange;

while ((library.cont() == true) & (ulCellsdiff>0) & (stopopti == false))


{
if (ulNoiseRise >= data.environment.ulMaxNoiseRise)
{
boolean ulBearerRatesReduced = library.ulReduceBearerRates() ;
if (ulBearerRatesReduced == true)
{
ulNoiseRise = library.ulCalcNoiseRise (ulConnections) ;
}
else if (ulCarriers<data.variables.maxNumOfCarriers)
{
ulCarriers=ulCarriers+1;
ulNoiseRise=data.environment.ulMinNoiseRise;
library.resetAllBearersToMaxRateUL() ;
ulActiveUsers = ulMinActiveUsers;
}
else
{ stopopti=true; }
}

// Increase Number of Users


ulActiveUsers = ulActiveUsers + incActiveUsers ;
ulConnections = library.ulCalcActiveConnections(ulActiveUsers) ;
ulNoiseRise = library.ulCalcNoiseRise (ulConnections) ;
ulPercentileNoiseRise = library.ulCalcPercentileNoiseRise(ulConnections) ;
ulPercentilepathloss = library.ulCalcPercentilepathloss(ulPercentileNoiseRise, fade_margin,
ulPathlossDiff) ;

// Calculate Gross Throughput (ulThroughputpercell) &


// Useful Throughput (ulUsefulThroughputpercell)
library.ulCalcThroughputPerCell(ulConnections, ulCarriers);
ulCellsrequiredThroughput=(ulTotalRequiredThroughput/(ulUsefulThroughputpercell
*ulCarriers));

Page 52 27/04/2020
ultotalNetworkThroughput = ulCellsrequiredThroughput * (ulThroughputpercell*ulCarriers) ;

// Calculate coverage cells required for UL.


ulPercentilepathloss = library.ulCalcPercentilepathloss(ulPercentileNoiseRise, fade_margin,
ulPathlossDiff) ;
ulMaxrange=Math.pow(10,((ulPercentilepathloss-pathconst)/pathexp));
ulAreasite=ulMaxrange*ulMaxrange*2.598;
ulAreacell=ulAreasite/data.environment.numOfSectors;

ulCellsrequiredRange=data.environment.year.areaRequired/ulAreacell;
ulCellsdiff= (ulCellsrequiredThroughput-ulCellsrequiredRange) ;
}

Page 53 27/04/2020
Annex III – Downlink

The process of calculating the


 Downlink Mean load Factor (Circuit Switched)
 Downlink Mean load Factor (Packet Switched)
 Downlink Mean load Variance (Circuit Switched)
 Downlink Mean load Variance (Packet Switched)
Is identical to the uplink. See Annex II.

7.11 Downlink Mean Load Factor


double dlCalcMeanLoad(double dlConnections)
{
double dlMeanloadCS = 0;
double dlMeanloadPS = 0;
double beta = Math.log(10)/10;
double ffDL = 1/((1/data.environment.ffactor)-(data.environment.orthogonalityFactor));

// CS.
Iterator csTrafficQuantitiesIterator =
data.environment.year.dlTrafficQuantityRepository.getCSTrafficQuantities() ;

while (csTrafficQuantitiesIterator.hasNext())
{
TrafficQuantity trafficQuantity = (TrafficQuantity)csTrafficQuantitiesIterator.next() ;
ServiceProfile serviceProfile =
data.csServiceProfileRepository.getServiceProfile(trafficQuantity.name) ;

// Note that here, the Nth user experiences the noise created by the other (N-1) users
// i.e it does not suffer from the nnoise it introduces into the system
double simConnections = dlCalcSimultaneousConnections (dlConnections) ;

double connectionsPerService = (1- (1/ simConnections)) *


(dlConnections*trafficQuantity.getLink()*trafficQuantity.getEffectiveActivityFactorDL()) ;

if (data.environment.year.usingTXDiversity == true)
{
double SHOLinks = (data.environment.getSoftHandOverLinks() +
data.environment.getSofterHandOverLinks());

double actualRateEbNoStdDev =
serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.
userSpeedDistribution, trafficQuantity).dlWithTxDivStdDev ;

double EbNoStdVar =(((beta*actualRateEbNoStdDev)*(beta*actualRateEbNoStdDev))*0.5);

double resultantEbNo = Math.exp((beta*(10*Math.log((1-SHOLinks)*Math.pow(10,


(serviceProfile.eBNoRepository.getActualRateEbNo(data.

Page 54 27/04/2020
environment.userSpeedDistribution, trafficQuantity).downLink)/10)+
(SHOLinks)*Math.pow(10,(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10))/Math.log(10)))
+ EbNoStdVar);

double resultantEbNoWithTxDiv = Math.exp((beta*(10*Math.log((1-SHOLinks)*Math.pow(10,


(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10)+
(SHOLinks)*Math.pow(10,(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10))/Math.log(10)))
+ EbNoStdVar);

dlMeanloadCS = dlMeanloadCS + (((connectionsPerService* resultantEbNoWithTxDiv)/


(dlCalcProcessingGain(trafficQuantity.getActualBearerRate())*data.variables.
fractionalRecoveredPower*ffDL)));
}
else
{
double SHOLinks = (data.environment.getSoftHandOverLinks() +
data.environment.getSofterHandOverLinks());

double actualRateEbNoStdDev =
serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.
userSpeedDistribution, trafficQuantity).dlStdDev ;

double EbNoStdVar =(((beta*actualRateEbNoStdDev)*(beta*actualRateEbNoStdDev))*0.5);

double resultantEbNo = Math.exp((beta*(10*Math.log((1-SHOLinks)*Math.pow(10,


(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLink)/10)+
(SHOLinks)*Math.pow(10,(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10))/Math.log(10)))
+ EbNoStdVar);

double resultantEbNoWithTxDiv = Math.exp((beta*(10*Math.log((1-


SHOLinks)*Math.pow(10,(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10)+
(SHOLinks)*Math.pow(10,(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution,trafficQuantity).downLinkWithTxDiv)/10))/Math.log(10)))
+ EbNoStdVar);

dlMeanloadCS = dlMeanloadCS + (((connectionsPerService* resultantEbNo)/


(dlCalcProcessingGain(trafficQuantity.getActualBearerRate())*data.variables.fractionalReco
veredPower*ffDL)));
}
}
csTrafficQuantitiesIterator = null;

// PS.
Iterator psTrafficQuantitiesIterator =
data.environment.year.dlTrafficQuantityRepository.getPSTrafficQuantities() ;

Page 55 27/04/2020
while (psTrafficQuantitiesIterator.hasNext())
{
TrafficQuantity trafficQuantity = (TrafficQuantity)psTrafficQuantitiesIterator.next() ;

ServiceProfile serviceProfile =
data.psServiceProfileRepository.getServiceProfile(trafficQuantity.name) ;

// Note that here, the Nth user experiences the noise created by the other (N-1) users
// i.e it does not suffer from the nnoise it introduces into the system
double simConnections = dlCalcSimultaneousConnections (dlConnections) ;

double connectionsPerService = (1- (1/ simConnections)) *


(dlConnections*trafficQuantity.getLink()*trafficQuantity.getEffectiveActivityFactorDL()) ;

if (data.environment.year.usingTXDiversity == true)
{
double SHOLinks = (data.environment.getSoftHandOverLinks() +
data.environment.getSofterHandOverLinks());

double actualRateEbNoStdDev =
serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.
userSpeedDistribution, trafficQuantity).dlWithTxDivStdDev ;

double EbNoStdVar =(((beta*actualRateEbNoStdDev)*(beta*actualRateEbNoStdDev))*0.5);

double resultantEbNo = Math.exp((beta*(10*Math.log((1-SHOLinks)*Math.pow(10,


(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLink)/10)+
(SHOLinks)*Math.pow(10,(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10))/Math.log(10)))
+ EbNoStdVar);

double resultantEbNoWithTxDiv = Math.exp((beta*(10*Math.log((1-SHOLinks)*Math.pow(10,


(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10)+
(SHOLinks)*Math.pow(10,(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10))/Math.log(10)))
+ EbNoStdVar);

dlMeanloadPS = dlMeanloadPS + (((connectionsPerService* resultantEbNoWithTxDiv)/


(dlCalcProcessingGain(trafficQuantity.getActualBearerRate())*data.variables.
fractionalRecoveredPower*ffDL)));
}
else
{
double SHOLinks = (data.environment.getSoftHandOverLinks() +
data.environment.getSofterHandOverLinks());

double actualRateEbNoStdDev =
serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.

Page 56 27/04/2020
userSpeedDistribution, trafficQuantity).dlStdDev ;

double EbNoStdVar =(((beta*actualRateEbNoStdDev)*(beta*actualRateEbNoStdDev))*0.5);

double resultantEbNo = Math.exp((beta*(10*Math.log((1- SHOLinks)*Math.pow(10,


(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLink)/10)+
(SHOLinks)*Math.pow(10,(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution,
trafficQuantity).downLinkWithTxDiv)/10))/Math.log(10))) + EbNoStdVar);

double resultantEbNoWithTxDiv = Math.exp((beta*(10*Math.log((1-


SHOLinks)*Math.pow(10,(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10)+
(SHOLinks)*Math.pow(10,(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution,
trafficQuantity).downLinkWithTxDiv)/10))/Math.log(10))) + EbNoStdVar);

dlMeanloadPS = dlMeanloadPS + (((connectionsPerService* resultantEbNo)/


(dlCalcProcessingGain(trafficQuantity.getActualBearerRate())*data.variables.
fractionalRecoveredPower*ffDL)));
}
}
psTrafficQuantitiesIterator = null;

double dlMeanload = dlMeanloadCS + dlMeanloadPS ;


return dlMeanload ;
}

7.12 Downlink Percentile Noise Rise


double dlCalcPercentileNoiseRise (double dlConnections)
{
double dlPercentileNoiseRise = 0 ;

// Calculate the Mean and Variance


// Calulate DL meanNR and varNR not inc. users.
double dlLoadmeanCS = dlCalcLoadmeanCS (dlConnections) ;
double dlLoadmeanPS = dlCalcLoadmeanPS(dlConnections);
double dlLoadvarCS = dlCalcLoadVarCS(dlConnections) ;
double dlLoadvarPS = dlCalcLoadVarPS(dlConnections);
double dlLoadmean = dlLoadmeanCS + dlLoadmeanPS ;
double dlLoadvar = dlLoadvarCS + dlLoadvarPS;

double noiserisepercentile=data.variables.noiseRisePercentile;
noiserisepercentile=1-2*(1-0.01*noiserisepercentile);
double pa=Math.sqrt(2)*erfinv(noiserisepercentile);

dlPercentileNoiseRise = (-10*(Math.log(1-pa*Math.sqrt(dlLoadvar)-
(dlLoadmean))/Math.log(10)));

Page 57 27/04/2020
return dlPercentileNoiseRise ;
}

7.13 Downlink Percentile Pathloss


double dlCalcPercentilepathloss(double dlPercentileNoiseRise, double fade_margin, double
dlPathlossDiff)
{
double MHA_loss = 0.5;
double tnp = 10*Math.log(1.38*Math.pow(10,-23)* data.variables.bsNoiseTemp*
data.variables.chipRate)/Math.log(10);
double UEsens = tnp+data.variables.ueNoiseFigure ;
double dlCoverageRatePG = 10*Math.log
(dlCalcProcessingGain(data.environment.year.coverageRateDL*1000))/Math.log(10);

double dlTotalAntennaGain = data.environment.bsAntennaGain +


data.environment.year.msAntennaGain - data.environment.penetrationLoss -
data.environment.year.dlBodyLoss - data.variables.cableLoss;

if (data.environment.year.usingMHA==true)
{
dlTotalAntennaGain = data.environment.bsAntennaGain +
data.environment.year.msAntennaGain - data.environment.penetrationLoss -
data.environment.year.dlBodyLoss - data.variables.cableLoss - MHA_loss;
}
double dlPercentilepathloss = - UEsens + dlTotalAntennaGain- dlPercentileNoiseRise -
fade_margin + (data.variables.dlTransmitPowerPerTCH - 30) -
data.environment.year.coverageEbNtDL + dlCoverageRatePG - dlPathlossDiff;

return dlPercentilepathloss ;
}

7.14 Downlink BTS Power


double dlCalcBTSPower(double fade_margin, double pNoiseRiseDL, double dlPathlossDiff,
double dlConnections, double dlMeanload)
{
double numerator = 0;
double numerator_CS = 0;
double numerator_PS = 0;
double denominator =0;

double BTSPWR = 0 ;
double PGain = 0 ;
double MHA_loss = 0.5;

double tnp = 10*Math.log(1.38*Math.pow(10,-23)*


data.variables.bsNoiseTemp*data.variables.chipRate)/Math.log(10);

Page 58 27/04/2020
double UEsens = tnp+data.variables.ueNoiseFigure ;

double dlTotalAntennaGain = data.environment.bsAntennaGain +


data.environment.year.msAntennaGain - data.environment.penetrationLoss -
data.environment.year.dlBodyLoss - data.variables.cableLoss;

if (data.environment.year.usingMHA==true)
{
dlTotalAntennaGain = data.environment.bsAntennaGain +
data.environment.year.msAntennaGain - data.environment.penetrationLoss -
data.environment.year.dlBodyLoss - data.variables.cableLoss -MHA_loss;
}

double Ploss_values = - UEsens + dlTotalAntennaGain - fade_margin +


(data.variables.dlTransmitPowerPerTCH - 30);

// CS.
Iterator csTrafficQuantitiesIterator =
data.environment.year.dlTrafficQuantityRepository.getCSTrafficQuantities() ;

while (csTrafficQuantitiesIterator.hasNext())
{
TrafficQuantity trafficQuantity = (TrafficQuantity)csTrafficQuantitiesIterator.next() ;
ServiceProfile serviceProfile =
data.csServiceProfileRepository.getServiceProfile(trafficQuantity.name) ;

double connectionsPerService =
(dlConnections*trafficQuantity.getLink()*trafficQuantity.getEffectiveActivityFactorDL()) ;

PGain = 10*Math.log
(dlCalcProcessingGain(trafficQuantity.getActualBearerRate()))/Math.log(10);

double dlCoverageRatePG = 10*Math.log


(dlCalcProcessingGain(data.environment.year.coverageRateDL*1000))/Math.log(10);

// Here we do not apply a StdDev on the coverage EbNo as we assume that its already taken
into account in pNoiseRiseDL

double dlPercentilepathloss = - UEsens + dlTotalAntennaGain- pNoiseRiseDL - fade_margin +


(data.variables.dlTransmitPowerPerTCH - 30) - data.environment.year.coverageEbNtDL +
dlCoverageRatePG - dlPathlossDiff;

if (data.environment.year.usingTXDiversity == true)
{
double SHOLinks = (data.environment.getSoftHandOverLinks() +
data.environment.getSofterHandOverLinks());

// Here the resultant EbNo in dB is averaged for connections with and without soft handover.
// It does not include an EbNo standard deviation as this is already accounted for in the
dlMeanload and the Percentile Noise Rise

Page 59 27/04/2020
double resultantEbNoWithTxDiv = (10*Math.log((1-SHOLinks)* Math.pow(10,
(serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.
userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10)+ (SHOLinks)* Math.pow(10,
(serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.
userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10))/Math.log(10));

double transmitPwr = (UEsens + dlPercentilepathloss + resultantEbNoWithTxDiv +


pNoiseRiseDL + fade_margin) - (PGain + dlTotalAntennaGain);

numerator_CS = numerator_CS + (connectionsPerService*Math.pow(10,(transmitPwr/10)));


}
else
{
double SHOLinks = (data.environment.getSoftHandOverLinks() +
data.environment.getSofterHandOverLinks());

// Here the resultant EbNo in dB is averaged for connections with and without soft handover.
// It does not include an EbNo standard deviation as this is already accounted for in the
dlMeanload and the Percentile Noise Rise

double resultantEbNo = (10*Math.log((1-SHOLinks)* Math.pow(10,


(serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.
userSpeedDistribution, trafficQuantity).downLink)/10)+ (SHOLinks)*Math.pow(10,
(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10))/Math.log(10));

double transmitPwr = (UEsens + dlPercentilepathloss + resultantEbNo + pNoiseRiseDL +


fade_margin) - (PGain + dlTotalAntennaGain);

numerator_CS = numerator_CS + (connectionsPerService*Math.pow(10,(transmitPwr/10)));


}
}
csTrafficQuantitiesIterator = null;

// PS.
Iterator psTrafficQuantitiesIterator =
data.environment.year.dlTrafficQuantityRepository.getPSTrafficQuantities() ;

while (psTrafficQuantitiesIterator.hasNext())
{
TrafficQuantity trafficQuantity = (TrafficQuantity)psTrafficQuantitiesIterator.next() ;
ServiceProfile serviceProfile =
data.psServiceProfileRepository.getServiceProfile(trafficQuantity.name) ;

double connectionsPerService =
(dlConnections*trafficQuantity.getLink()*trafficQuantity.getEffectiveActivityFactorDL()) ;

PGain = 10*Math.log
(dlCalcProcessingGain(trafficQuantity.getActualBearerRate()))/Math.log(10);

Page 60 27/04/2020
double dlCoverageRatePG = 10*Math.log
(dlCalcProcessingGain(data.environment.year.coverageRateDL*1000))/Math.log(10);

double dlPercentilepathloss = - UEsens + dlTotalAntennaGain- pNoiseRiseDL - fade_margin


+ (data.variables.dlTransmitPowerPerTCH - 30) - data.environment.year.coverageEbNtDL +
dlCoverageRatePG - dlPathlossDiff;

if (data.environment.year.usingTXDiversity == true)
{
double SHOLinks = (data.environment.getSoftHandOverLinks() +
data.environment.getSofterHandOverLinks());

double resultantEbNoWithTxDiv = (10*Math.log((1-SHOLinks)* Math.pow(10,


(serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.
userSpeedDistribution, trafficQuantity).downLinkWithTxDiv)/10)+ (SHOLinks)*Math.pow(10,
(serviceProfile.eBNoRepository.getActualRateEbNo(data.
environment.userSpeedDistribution,
trafficQuantity).downLinkWithTxDiv)/10))/Math.log(10));

double transmitPwr = (UEsens + dlPercentilepathloss + resultantEbNoWithTxDiv +


pNoiseRiseDL + fade_margin) - (PGain + dlTotalAntennaGain);

numerator_PS = numerator_PS + (connectionsPerService*Math.pow(10,(transmitPwr/10)));


}
else
{
double SHOLinks = (data.environment.getSoftHandOverLinks() +
data.environment.getSofterHandOverLinks());

double resultantEbNo = (10*Math.log((1-SHOLinks)* Math.pow(10,


(serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.userSpeedDistributi
on, trafficQuantity).downLink)/10)+ (SHOLinks)*Math.pow(10,
(serviceProfile.eBNoRepository.getActualRateEbNo(data.environment.userSpeedDistributi
on, trafficQuantity).downLinkWithTxDiv)/10))/Math.log(10));

double transmitPwr = (UEsens + dlPercentilepathloss + resultantEbNo + pNoiseRiseDL +


fade_margin) - (PGain + dlTotalAntennaGain);

numerator_PS = numerator_PS + (connectionsPerService*Math.pow(10,(transmitPwr/10)));


}
}
psTrafficQuantitiesIterator = null;

numerator = numerator_CS + numerator_PS;


denominator = 1-(dlMeanload);
BTSPWR = (numerator/denominator);

return BTSPWR ;
}

Page 61 27/04/2020
7.15 Downlink Dimensioning
// Increase number of Downlink Users until min loading
stopopti = false ;
while ((library.cont() == true) & (dlMeanload< data.environment.dlMinLoad)
& (stopopti == false))
{
// Users & Useful Connections
dlActiveUsers = dlActiveUsers + incActiveUsers;
dlConnections = library.dlCalcActiveConnections(dlActiveUsers);

if (data.calcOVSF == true)
{
dlCodeAvailable = true ;
double sumCodes = library.dlCodeAvailability(dlConnections);
percentageNumberofCodesUsed = sumCodes / data.numberOfOVSFCodeTreesPerCarrier;
if (percentageNumberofCodesUsed > data.OVSFCodeTreeUtilisation)
dlCodeAvailable = false ;
}

dlMeanload = library.dlCalcMeanLoad(dlConnections) ;
dlPercentileNoiseRise = library.dlCalcPercentileNoiseRise(dlConnections) ;
dlPercentilepathloss = library.dlCalcPercentilepathloss(dlPercentileNoiseRise, fade_margin,
dlPathlossDiff) ;

// Initial BTSPWR
BTSPWR = library.dlCalcBTSPower(fade_margin, dlPercentileNoiseRise, dlPathlossDiff,
dlConnections, dlMeanload) ;
total_BTSPWR =(BTSPWR + data.variables.maxPilot);

// Reduce Range - Ensures that at least the min loading would be achieved
while ((library.cont() == true) & (BTSPWR > (data.variables.maxBTSPWR-
data.variables.maxPilot)))
{
dlPathlossDiff = dlPathlossDiff + decPathloss ;
dlPercentilepathloss = library.dlCalcPercentilepathloss(dlPercentileNoiseRise, fade_margin,
dlPathlossDiff) ;
BTSPWR = library.dlCalcBTSPower(fade_margin, dlPercentileNoiseRise, dlPathlossDiff,
dlConnections, dlMeanload) ;
total_BTSPWR =(BTSPWR + data.variables.maxPilot);
}
}
double dlMinActiveUsers = dlActiveUsers ;

// Calculate Gross Throughput (dlThroughputpercell) &


// Useful Throughput (dlUsefulThroughputpercell)
library.dlCalcThroughputPerCell(dlConnections, dlCarriers) ;
dlCellsrequiredThroughput=(dlTotalRequiredThroughput/(dlUsefulThroughputpercell
*dlCarriers));
dltotalNetworkThroughput= dlCellsrequiredThroughput * (dlThroughputpercell*dlCarriers) ;

Page 62 27/04/2020
dlMaxrange =Math.pow(10,((dlPercentilepathloss-pathconstDL)/pathexp));
dlAreasite=dlMaxrange*dlMaxrange*2.598;
dlAreacell=dlAreasite/data.environment.numOfSectors;
dlCellsRequiredRange=data.environment.year.areaRequired/dlAreacell;

/************* FINAL VALUES FOR DOWNLINK ***********************/

stopopti=false;
double dlCellsdiff=dlCellsrequiredThroughput-dlCellsRequiredRange;

while ((library.cont() == true) & (dlCellsdiff>0) & (stopopti == false))


{
if ((dlCodeAvailable == false) | (dlMeanload > data.environment.dlMaxLoad))
{
boolean dlBearerRatesReduced = library.dlReduceBearerRates() ;
if (dlBearerRatesReduced == true)
{
dlMeanload = library.dlCalcMeanLoad(dlConnections) ;
}
else if (((dlMeanload > data.environment.dlMaxLoad)) & (dlCarriers
< data.variables.maxNumOfCarriers))
{
dlCarriers=dlCarriers+1;
dlMeanload= data.environment.dlMinLoad;
library.resetAllBearersToMaxRateDL() ;
dlActiveUsers = dlMinActiveUsers;
}
else
{ stopopti=true; }
}

// Increase number of users


dlActiveUsers = dlActiveUsers + incActiveUsers;
dlConnections = library.dlCalcActiveConnections(dlActiveUsers);

if (data.calcOVSF == true)
{
dlCodeAvailable = true ;
double sumCodes = library.dlCodeAvailability(dlConnections);
percentageNumberofCodesUsed = sumCodes /data.numberOfOVSFCodeTreesPerCarrier ;
if (percentageNumberofCodesUsed > data.OVSFCodeTreeUtilisation)
dlCodeAvailable = false ;
}

dlMeanload = library.dlCalcMeanLoad(dlConnections) ;
dlPercentileNoiseRise = library.dlCalcPercentileNoiseRise(dlConnections) ;
dlPercentilepathloss = library.dlCalcPercentilepathloss(dlPercentileNoiseRise, fade_margin,
dlPathlossDiff) ;
BTSPWR = library.dlCalcBTSPower(fade_margin, dlPercentileNoiseRise, dlPathlossDiff,
dlConnections, dlMeanload) ;
total_BTSPWR =(BTSPWR + data.variables.maxPilot);

Page 63 27/04/2020
// Reduce Range - Ensures a cell is always loaded to max before the addition of a
carrier
while ((library.cont() == true) & (BTSPWR > (data.variables.maxBTSPWR
- data.variables.maxPilot)))
{
dlPathlossDiff = dlPathlossDiff + decPathloss ;
dlPercentilepathloss = library.dlCalcPercentilepathloss(dlPercentileNoiseRise, fade_margin,
dlPathlossDiff) ;
BTSPWR = library.dlCalcBTSPower(fade_margin, dlPercentileNoiseRise, dlPathlossDiff,
dlConnections, dlMeanload) ;
total_BTSPWR =(BTSPWR + data.variables.maxPilot);
}

// Calculate Gross Throughput (dlThroughputpercell) &


// Useful Throughput (dlUsefulThroughputpercell)
library.dlCalcThroughputPerCell(dlConnections, dlCarriers) ;

dlCellsrequiredThroughput=(dlTotalRequiredThroughput/(dlUsefulThroughputpercell*dlCarriers));
dltotalNetworkThroughput= dlCellsrequiredThroughput * (dlThroughputpercell*dlCarriers) ;

dlMaxrange=Math.pow(10,((dlPercentilepathloss-pathconstDL)/pathexp));
dlAreasite=dlMaxrange*dlMaxrange*2.598;
dlAreacell=dlAreasite/data.environment.numOfSectors;
dlCellsRequiredRange=data.environment.year.areaRequired/dlAreacell;
dlCellsdiff= (dlCellsrequiredThroughput-dlCellsRequiredRange);
}

Page 64 27/04/2020
Annex IV
7.16 Optimise for Carriers (Uplink > Downlink)
stopopti=false;
exit = false ;
if (ulCarriers>dlCarriers)
{
double tempCarriers = ulCarriers ;

while ((ulMaxrange>dlMaxrange) & (ulNoiseRise < data.environment.ulMaxNoiseRise) &


(ulCarriers>dlCarriers)& (exit == false))
{
ulCarriers = ulCarriers - 1 ;

ulCellsrequiredThroughput=(ulTotalRequiredThroughput/(ulUsefulThroughputpercell
*ulCarriers));
ulCellsdiff= (ulCellsrequiredThroughput-ulCellsrequiredRange) ;
double tempPathlossDiff = ulPathlossDiff;
if (ulCellsdiff <= 0)
{
ulCarriers = ulCarriers + 1 ;
ulCellsrequiredThroughput=(ulTotalRequiredThroughput/(ulUsefulThroughputpercell
*ulCarriers));
ulCellsdiff= (ulCellsrequiredThroughput-ulCellsrequiredRange) ;
exit = true ;
}

while ((library.cont() == true) & (ulCellsdiff>0) & (stopopti == false))


{
if ((ulNoiseRise >= data.environment.ulMaxNoiseRise))
{
boolean ulBearerRatesReduced = library.ulReduceBearerRates() ;
if (ulBearerRatesReduced == true)
{
ulNoiseRise = library.ulCalcNoiseRise (ulConnections) ;
}
else if (ulCarriers<tempCarriers)
{
ulCarriers=ulCarriers+1;
ulNoiseRise=data.environment.ulMinNoiseRise;
library.resetAllBearersToMaxRateUL() ;
ulPathlossDiff = tempPathlossDiff;
ulActiveUsers = ulMinActiveUsers;
}
else
{ stopopti=true; }
}
// Increase noise Rise
ulActiveUsers = ulActiveUsers + incActiveUsers ;

Page 65 27/04/2020
ulConnections = library.ulCalcActiveConnections(ulActiveUsers) ;
ulNoiseRise = library.ulCalcNoiseRise (ulConnections) ;
ulPercentileNoiseRise = library.ulCalcPercentileNoiseRise(ulConnections) ;
ulPercentilepathloss = library.ulCalcPercentilepathloss(ulPercentileNoiseRise,
fade_margin, ulPathlossDiff) ;

// Calculate Gross Throughput (ulThroughputpercell) &


// Useful Throughput (ulUsefulThroughputpercell)
library.ulCalcThroughputPerCell(ulConnections, ulCarriers);
ulCellsrequiredThroughput=(ulTotalRequiredThroughput/(ulUsefulThroughputpercell
*ulCarriers));
ultotalNetworkThroughput = ulCellsrequiredThroughput
* (ulThroughputpercell*ulCarriers) ;

// Calculate coverage cells required for UL.


ulMaxrange=Math.pow(10,((ulPercentilepathloss-pathconst)/pathexp));
ulAreasite=ulMaxrange*ulMaxrange*2.598;
ulAreacell=ulAreasite/data.environment.numOfSectors;
ulCellsrequiredRange=data.environment.year.areaRequired/ulAreacell;
ulCellsdiff= (ulCellsrequiredThroughput-ulCellsrequiredRange) ;

while ((library.cont() == true) & (ulMaxrange > dlMaxrange)


& (ulNoiseRise >= data.environment.ulMaxNoiseRise) & (ulCellsdiff > 0))
{
ulPathlossDiff = ulPathlossDiff + decPathloss ;
ulPercentilepathloss = library.ulCalcPercentilepathloss(ulPercentileNoiseRise,
fade_margin, ulPathlossDiff) ;
ulMaxrange=Math.pow(10,((ulPercentilepathloss-pathconst)/pathexp));
ulAreasite=ulMaxrange*ulMaxrange*2.598;
ulAreacell=ulAreasite/data.environment.numOfSectors;
ulCellsrequiredRange=data.environment.year.areaRequired/ulAreacell;
ulCellsdiff= (ulCellsrequiredThroughput-ulCellsrequiredRange) ;
}
}
}

//DOWNLINK
//Increase number of carriers on the downlink to equal that of the uplink
if (dlCarriers != ulCarriers)
{
stopopti = false ;
dlCarriers= ulCarriers;

dlCellsrequiredThroughput=(dlTotalRequiredThroughput/(dlUsefulThroughputpercell
*dlCarriers));
dlCellsdiff= (dlCellsrequiredThroughput-dlCellsRequiredRange);

// Reduce Downlink loading


library.resetAllBearersToMaxRateDL() ;
dlMeanload = library.dlCalcMeanLoad(dlConnections) ;

Page 66 27/04/2020
BTSPWR = library.dlCalcBTSPower(fade_margin, dlPercentileNoiseRise, dlPathlossDiff,
dlConnections, dlMeanload) ;

// This loop caters for the case whereby resetting


// the bearers to max makes the dlMeanload exceed maximum
while (dlMeanload > data.environment.dlMaxLoad | BTSPWR >
(data.variables.maxBTSPWR-data.variables.maxPilot))
{
boolean dlBearerRatesReduced = library.dlReduceBearerRates() ;
dlMeanload = library.dlCalcMeanLoad(dlConnections) ;
// BTSPWR
dlPercentileNoiseRise = library.dlCalcPercentileNoiseRise(dlConnections) ;
dlPercentilepathloss = library.dlCalcPercentilepathloss(dlPercentileNoiseRise,
fade_margin, dlPathlossDiff) ;
BTSPWR = library.dlCalcBTSPower(fade_margin, dlPercentileNoiseRise, dlPathlossDiff,
dlConnections, dlMeanload) ;
total_BTSPWR =(BTSPWR + data.variables.maxPilot);

// Calculate Gross Throughput (dlThroughputpercell) &


// Useful Throughput (dlUsefulThroughputpercell)
library.dlCalcThroughputPerCell(dlConnections, dlCarriers) ;

dlCellsrequiredThroughput=(dlTotalRequiredThroughput/(dlUsefulThroughputpercell
*dlCarriers));
dltotalNetworkThroughput=dlCellsrequiredThroughput * (dlThroughputpercell*dlCarriers);
dlMaxrange=Math.pow(10,((dlPercentilepathloss-pathconstDL)/pathexp));
dlAreasite=dlMaxrange*dlMaxrange*2.598;
dlAreacell=dlAreasite/data.environment.numOfSectors;
dlCellsRequiredRange=data.environment.year.areaRequired/dlAreacell;
dlCellsdiff= (dlCellsrequiredThroughput-dlCellsRequiredRange);
}
}
else // prevents unnecessary re-dimensioning
stopopti = true ;

// While dlCellsdiff > 0 we do not want to reduce loading


// any further as it should be at the required loading already.

// While dlMeanLoad is > minimum and cellsdiff < 0 then reduce loading
while ((library.cont() == true) & (dlCellsdiff <0) & ((dlMeanload >
data.environment.dlMinLoad)|BTSPWR > (data.variables.maxBTSPWR-
data.variables.maxPilot))& (stopopti==false))
{
dlActiveUsers = dlActiveUsers - incActiveUsers;
if (dlActiveUsers > incActiveUsers)
{ dlActiveUsers = dlActiveUsers - incActiveUsers ; }
else
{ stopopti = true ;}
dlConnections = library.dlCalcActiveConnections(dlActiveUsers);

if (data.calcOVSF == true)

Page 67 27/04/2020
{
dlCodeAvailable = true ;
double sumCodes = library.dlCodeAvailability(dlConnections);
percentageNumberofCodesUsed = sumCodes
/ data.numberOfOVSFCodeTreesPerCarrier ;
if (percentageNumberofCodesUsed > data.OVSFCodeTreeUtilisation)
dlCodeAvailable = false ;
}

dlMeanload = library.dlCalcMeanLoad(dlConnections) ;

// BTSPWR
dlPercentileNoiseRise = library.dlCalcPercentileNoiseRise(dlConnections) ;
dlPercentilepathloss = library.dlCalcPercentilepathloss(dlPercentileNoiseRise,
fade_margin, dlPathlossDiff) ;
BTSPWR = library.dlCalcBTSPower(fade_margin, dlPercentileNoiseRise, dlPathlossDiff,
dlConnections, dlMeanload) ;
total_BTSPWR =(BTSPWR + data.variables.maxPilot);

// Calculate Gross Throughput (dlThroughputpercell) &


// Useful Throughput (dlUsefulThroughputpercell)
library.dlCalcThroughputPerCell(dlConnections, dlCarriers) ;
dlCellsrequiredThroughput=(dlTotalRequiredThroughput/(dlUsefulThroughputpercell
*dlCarriers));
dltotalNetworkThroughput= dlCellsrequiredThroughput * (dlThroughputpercell*dlCarriers) ;
dlMaxrange=Math.pow(10,((dlPercentilepathloss-pathconstDL)/pathexp));
dlAreasite=dlMaxrange*dlMaxrange*2.598;
dlAreacell=dlAreasite/data.environment.numOfSectors;
dlCellsRequiredRange=data.environment.year.areaRequired/dlAreacell;
dlCellsdiff= (dlCellsrequiredThroughput-dlCellsRequiredRange);
}
}

7.17 Final Optimisation – Example I


if ((ulCellsrequiredRange>dlCellsRequiredRange) &
(ulCellsrequiredRange>ulCellsrequiredThroughput) &
(ulCellsrequiredRange>dlCellsrequiredThroughput) &
(stopopti==false))
{
// Uplink
// Decrease noise Rise; range increases
while ((library.cont() == true) & (ulCellsrequiredThroughput<ulCellsrequiredRange) &
(ulNoiseRise>data.environment.ulMinNoiseRise) & exit == false)
{
if (ulActiveUsers > incActiveUsers)
{ ulActiveUsers = ulActiveUsers - incActiveUsers ; }
else
{ exit = true ;}

ulConnections = library.ulCalcActiveConnections(ulActiveUsers) ;

Page 68 27/04/2020
ulNoiseRise = library.ulCalcNoiseRise (ulConnections) ;
ulPercentileNoiseRise = library.ulCalcPercentileNoiseRise(ulConnections) ;
ulPercentilepathloss = library.ulCalcPercentilepathloss(ulPercentileNoiseRise,
fade_margin, ulPathlossDiff) ;

library.ulCalcThroughputPerCell(ulConnections, ulCarriers);
ulCellsrequiredThroughput=(ulTotalRequiredThroughput/(ulUsefulThroughputpercell
*ulCarriers));
ultotalNetworkThroughput = ulCellsrequiredThroughput * (ulThroughputpercell*ulCarriers) ;

ulMaxrange=Math.pow(10,((ulPercentilepathloss-pathconst)/pathexp));
ulAreasite=ulMaxrange*ulMaxrange*2.598;
ulAreacell=ulAreasite/data.environment.numOfSectors;
ulCellsrequiredRange=data.environment.year.areaRequired/ulAreacell;
ulCellsdiff= (ulCellsrequiredThroughput-ulCellsrequiredRange) ;
}

// Downlink
// decrease number of users
// For cases where DL range >= UL Range
exit = false ;
while (
(library.cont() == true) &
(ulCellsrequiredRange>dlCellsRequiredRange) &
(ulCellsrequiredRange>dlCellsrequiredThroughput) &
(dlMeanload>data.environment.dlMinLoad) &
(exit == false)
)
{
if (dlActiveUsers > incActiveUsers)
{ dlActiveUsers = dlActiveUsers - incActiveUsers; }
else
{ exit = true ;}

dlConnections = library.dlCalcActiveConnections(dlActiveUsers);

if (data.calcOVSF == true)
{
dlCodeAvailable = true ;
double sumCodes = library.dlCodeAvailability(dlConnections);
percentageNumberofCodesUsed = sumCodes
/ data.numberOfOVSFCodeTreesPerCarrier ;
if (percentageNumberofCodesUsed > data.OVSFCodeTreeUtilisation)
dlCodeAvailable = false ;
}

dlMeanload = library.dlCalcMeanLoad(dlConnections) ;

// Calculate Gross Throughput (dlThroughputpercell) &


// Useful Throughput (dlUsefulThroughputpercell)
library.dlCalcThroughputPerCell(dlConnections, dlCarriers) ;

Page 69 27/04/2020
dlCellsrequiredThroughput=(dlTotalRequiredThroughput/(dlUsefulThroughputpercell
*dlCarriers));
dltotalNetworkThroughput= dlCellsrequiredThroughput * (dlThroughputpercell*dlCarriers) ;

dlPercentileNoiseRise = library.dlCalcPercentileNoiseRise(dlConnections) ;
dlPercentilepathloss = library.dlCalcPercentilepathloss(dlPercentileNoiseRise,
fade_margin, dlPathlossDiff) ;

dlMaxrange=Math.pow(10,((dlPercentilepathloss-pathconstDL)/pathexp));
dlAreasite=dlMaxrange*dlMaxrange*2.598;
dlAreacell=dlAreasite/data.environment.numOfSectors;
dlCellsRequiredRange=data.environment.year.areaRequired/dlAreacell;

// BTSPWR
BTSPWR = library.dlCalcBTSPower(fade_margin, dlPercentileNoiseRise, dlPathlossDiff,
dlConnections, dlMeanload) ;
total_BTSPWR =(BTSPWR + data.variables.maxPilot);
}
if (ulMaxrange>dlMaxrange)
{
while (ulMaxrange>dlMaxrange) // Limit UL range if still greater than DL
{
ulPathlossDiff = ulPathlossDiff + decPathloss ;
ulPercentilepathloss = library.ulCalcPercentilepathloss(ulPercentileNoiseRise,
fade_margin, ulPathlossDiff) ;
ulMaxrange=Math.pow(10,((ulPercentilepathloss-pathconst)/pathexp));
}
ulAreasite=ulMaxrange*ulMaxrange*2.598;
ulAreacell=ulAreasite/data.environment.numOfSectors;
ulCellsrequiredRange=data.environment.year.areaRequired/ulAreacell;
ulCellsdiff= (ulCellsrequiredThroughput-ulCellsrequiredRange);
}
else if (dlMaxrange>ulMaxrange)
{
while ((dlMaxrange>ulMaxrange)) // Limit DL range if still > UL at min loading
{
dlPathlossDiff = dlPathlossDiff + decPathloss ;
dlPercentilepathloss = library.dlCalcPercentilepathloss(dlPercentileNoiseRise,
fade_margin, dlPathlossDiff) ;
dlMaxrange=Math.pow(10,((dlPercentilepathloss-pathconstDL)/pathexp));
}

dlAreasite=dlMaxrange*dlMaxrange*2.598;
dlAreacell=dlAreasite/data.environment.numOfSectors;
dlCellsRequiredRange=data.environment.year.areaRequired/dlAreacell;

// BTSPWR
BTSPWR = library.dlCalcBTSPower(fade_margin, dlPercentileNoiseRise, dlPathlossDiff,
dlConnections, dlMeanload) ;
total_BTSPWR =(BTSPWR + data.variables.maxPilot);
}

Page 70 27/04/2020
stopopti= true;
}

7.18 Final Optimisation – Example II


else if ((ulCellsrequiredThroughput>ulCellsrequiredRange) &
(ulCellsrequiredThroughput>dlCellsrequiredThroughput) &
(ulCellsrequiredThroughput>dlCellsRequiredRange) &
(stopopti==false))
{
//Uplink
exit = false ;
while ((library.cont() == true) & (ulCellsrequiredThroughput>ulCellsrequiredRange) &
(ulNoiseRise<data.environment.ulMaxNoiseRise) & exit == false)
{
ulActiveUsers = ulActiveUsers + incActiveUsers ;
ulConnections = library.ulCalcActiveConnections(ulActiveUsers) ;

ulNoiseRise = library.ulCalcNoiseRise (ulConnections) ;


ulPercentileNoiseRise = library.ulCalcPercentileNoiseRise(ulConnections) ;
ulPercentilepathloss = library.ulCalcPercentilepathloss(ulPercentileNoiseRise,
fade_margin, ulPathlossDiff) ;

library.ulCalcThroughputPerCell(ulConnections, ulCarriers);
ulCellsrequiredThroughput=(ulTotalRequiredThroughput/
(ulUsefulThroughputpercell*ulCarriers));
ultotalNetworkThroughput = ulCellsrequiredThroughput * (ulThroughputpercell*ulCarriers) ;

ulMaxrange=Math.pow(10,((ulPercentilepathloss-pathconst)/pathexp));
ulAreasite=ulMaxrange*ulMaxrange*2.598;
ulAreacell=ulAreasite/data.environment.numOfSectors;
ulCellsrequiredRange=data.environment.year.areaRequired/ulAreacell;
ulCellsdiff= (ulCellsrequiredThroughput-ulCellsrequiredRange) ;
}

// Reduce DL loading
exit = false ;
while ((library.cont() == true) &
(ulCellsrequiredThroughput>dlCellsrequiredThroughput) &
(ulCellsrequiredThroughput>dlCellsRequiredRange) &
(dlMeanload>data.environment.dlMinLoad) &
(exit == false))
{
if (dlActiveUsers > incActiveUsers)
{ dlActiveUsers = dlActiveUsers - incActiveUsers; }
else
{ exit = true ;}

dlConnections = library.dlCalcActiveConnections(dlActiveUsers);

if (data.calcOVSF == true)
{

Page 71 27/04/2020
dlCodeAvailable = true ;
double sumCodes = library.dlCodeAvailability(dlConnections);
percentageNumberofCodesUsed = sumCodes
/ data.numberOfOVSFCodeTreesPerCarrier ;
if (percentageNumberofCodesUsed > data.OVSFCodeTreeUtilisation)
dlCodeAvailable = false ;
}

dlMeanload = library.dlCalcMeanLoad(dlConnections) ;

// Calculate Gross Throughput (dlThroughputpercell) &


// Useful Throughput (dlUsefulThroughputpercell)
library.dlCalcThroughputPerCell(dlConnections, dlCarriers) ;
dlCellsrequiredThroughput=(dlTotalRequiredThroughput
/(dlUsefulThroughputpercell*dlCarriers));
dltotalNetworkThroughput= dlCellsrequiredThroughput * (dlThroughputpercell*dlCarriers) ;

dlPercentileNoiseRise = library.dlCalcPercentileNoiseRise(dlConnections) ;
dlPercentilepathloss = library.dlCalcPercentilepathloss(dlPercentileNoiseRise,
fade_margin, dlPathlossDiff) ;

// BTSPWR
BTSPWR = library.dlCalcBTSPower(fade_margin, dlPercentileNoiseRise, dlPathlossDiff,
dlConnections, dlMeanload) ;
total_BTSPWR =(BTSPWR + data.variables.maxPilot); // Total BTS Power
}

if (ulMaxrange>dlMaxrange)
{
while (ulMaxrange>dlMaxrange) // Limit UL range if still greater than DL
{
ulPathlossDiff = ulPathlossDiff + decPathloss ;
ulPercentilepathloss = library.ulCalcPercentilepathloss(ulPercentileNoiseRise,
fade_margin, ulPathlossDiff) ;
ulMaxrange=Math.pow(10,((ulPercentilepathloss-pathconst)/pathexp));
}
ulAreasite=ulMaxrange*ulMaxrange*2.598;
ulAreacell=ulAreasite/data.environment.numOfSectors;
ulCellsrequiredRange=data.environment.year.areaRequired/ulAreacell;
ulCellsdiff= (ulCellsrequiredThroughput-ulCellsrequiredRange);
}
else if (dlMaxrange>ulMaxrange)
{
while ((dlMaxrange>ulMaxrange)) // Limit DL range if still > UL at min loading
{
dlPathlossDiff = dlPathlossDiff + decPathloss ;
dlPercentilepathloss = library.dlCalcPercentilepathloss(dlPercentileNoiseRise,
fade_margin, dlPathlossDiff) ;
dlMaxrange=Math.pow(10,((dlPercentilepathloss-pathconstDL)/pathexp));
}
dlAreasite=dlMaxrange*dlMaxrange*2.598;

Page 72 27/04/2020
dlAreacell=dlAreasite/data.environment.numOfSectors;
dlCellsRequiredRange=data.environment.year.areaRequired/dlAreacell;

// BTSPWR
BTSPWR = library.dlCalcBTSPower(fade_margin, dlPercentileNoiseRise, dlPathlossDiff,
dlConnections, dlMeanload) ;
total_BTSPWR =(BTSPWR + data.variables.maxPilot);
}

stopopti= true;
}

Page 73 27/04/2020
References

Page 74 27/04/2020

You might also like