Main Content

Planning a 5G Fixed Wireless Access Link over Terrain

This example shows how to plan a fixed wireless access (FWA) link over terrain using 5G technologies. FWA is a use case for 5G to enable broadband service to homes or enterprises where wireline services are either unavailable or underperforming. FWA connects a base station to a user's fixed wireless terminal (FWT) [1]. At the high frequencies required for 5G, terrain and path loss impairments like foliage and weather play an important role in determining link success.

The example creates a base station and multiple receiver sites in a suburban environment, situating the antennas to achieve line-of-sight visibility over intermediate terrain. A multi-user multiple-input, multiple-output (MU-MIMO) system with high gain antennas is designed using Antenna Toolbox™ and Phased Array System Toolbox™. Signal strength at the receiver sites is assessed for two frequencies in the presence of path loss impairments.

Create Base Station Site in 28 GHz Band

Create a transmitter site on South Uncanoonuc Mountain in Goffstown, New Hampshire, US. The mountain is home to several transmitting facilities that serve the area. Define the transmitter site to represent a base station transmitting at 28 GHz with 1 Watt of power. Show the site in Site Viewer and rotate the view to visualize the site with surrounding terrain.

fq = 28e9; % 28 GHz

tx = txsite("Name","South Uncanoonuc (BS)", ...
    "Latitude",42.983723, ...
    "Longitude",-71.587173, ...
    "TransmitterPower",1, ...
    "TransmitterFrequency",fq);
show(tx)

PlanningA5GFixedWirelessAccessLinkOverTerrainExample-1.jpg

Create Receiver Sites

Create three receiver sites in the area and show the sites on the map. Each receiver site represents a site where a user's fixed wireless terminal is placed.

rxBedford = rxsite("Name","Bedford Town Center", ...
    "Latitude",42.946193, ...
    "Longitude",-71.516234);

rxStA = rxsite("Name","St. Anselm College", ...
    "Latitude",42.987386, ...
    "Longitude",-71.507475);

rxGPD = rxsite("Name","Goffstown Police Dept", ...
    "Latitude",43.009335, ...
    "Longitude",-71.539083);

rxs = [rxBedford, rxStA, rxGPD];
show(rxs)

Achieve Line-of-Sight Link Visibility

A challenge for 5G communication is achieving a successful link in the presence of terrain and other obstacles, since propagation losses increase at high frequency. A visible line-of-sight path is required for optimal propagation conditions. In the suburban environment considered here, terrain is the dominant obstacle to achieving line-of-sight visibility. Plot the line-of-sight propagation paths between the base station and receiver sites. The line-of-sight calculation includes terrain but no other obstacles and reveals obstructed line-of-sight with two of the three receiver sites.

los(tx,rxs)

PlanningA5GFixedWirelessAccessLinkOverTerrainExample-2.jpg

Adjust antenna heights in order to achieve line-of-sight visibility.

% Place antennas on structures at receiver sites. Assume 6 m utility poles for Bedford
% and St. Anselm sites, and 15 m antenna pole at Goffstown Police Department.
rxBedford.AntennaHeight = 6;
rxStA.AntennaHeight = 6;
rxGPD.AntennaHeight = 15;

% Increase height of antenna at base station until line-of-sight is achieved with all receiver sites
tx.AntennaHeight = 10;
while ~all(los(tx,rxs))
    tx.AntennaHeight = tx.AntennaHeight + 5;
end

% Display line-of-sight
los(tx,rxs)
disp("Antenna height required for line-of-sight: " + tx.AntennaHeight + " m")
Antenna height required for line-of-sight: 70 m

PlanningA5GFixedWirelessAccessLinkOverTerrainExample-3.jpg

Create 8-by-12 Base Station Antenna Array

Design an 8-by-12 antenna array of crossed dipole antenna elements to generate a highly directive beam. This system implements a 5G concept utilizing MU-MIMO [1]. Plot the radiation pattern on the map, using the default antenna orientation so that the antenna array is physically oriented in the east direction.

% Design reflector-backed crossed dipole antenna
txElement = reflectorCrossedDipoleElement(fq);

% Define array size
ntxrow = 8;
ntxcol = 12;

% Define element spacing
lambda = physconst("lightspeed")/fq;
drow = lambda/2;
dcol = lambda/2;

% Create 8-by-12 antenna array
tx.Antenna = phased.URA("Size",[ntxrow ntxcol], ...
    "Element",txElement, ...
    "ElementSpacing",[drow dcol]);

% Plot pattern on the map
pattern(tx)

PlanningA5GFixedWirelessAccessLinkOverTerrainExample-4.jpg

Create 3-by-3 Receiver Site Antenna Array

Create a 3-by-3 rectangular array from a reflector-backed vertical dipole antenna element. At each receiver site, point the array toward the base station and plot the radiation pattern on the map.

rxElement = reflectorDipoleElement(fq);

% Define array size
nrxrow = 3;
nrxcol = 3;
    
% Define element spacing
lambda = physconst("lightspeed")/fq;
drow = lambda/2;
dcol = lambda/2;

% Create antenna array
rxarray = phased.URA("Size",[nrxrow nrxcol], ...
    "Element",rxElement, ...
    "ElementSpacing",[drow dcol]);

% Assign array to each receiver site and point toward base station
for rx = rxs
    rx.Antenna = rxarray;
    rx.AntennaAngle = angle(rx, tx);
    pattern(rx,fq)
end

PlanningA5GFixedWirelessAccessLinkOverTerrainExample-5.jpg

Predict Signal Strength in Free Space with Beamforming

Use the free space propagation model to compute received signal strength for each receiver site. For each site, steer the base station beam to optimize directivity for the link. The favorable conditions assumed by free space produce strong signals at the receiver sites, assuming a receiver sensitivity of -84 dBm [2].

steeringVector = phased.SteeringVector("SensorArray",tx.Antenna);
for rx = rxs
    % Compute steering vector for receiver site
    [az,el] = angle(tx,rx);
    sv = steeringVector(fq,[az;el]);
    
    % Update base station radiation pattern
    tx.Antenna.Taper = conj(sv);
    pattern(tx)
    
    % Compute signal strength (dBm)
    ss = sigstrength(rx,tx,"freespace");
    disp("Signal strength at " + rx.Name + ":")
    disp(ss + " dBm")
end
Signal strength at Bedford Town Center:
-69.6743 dBm
Signal strength at St. Anselm College:
-68.0441 dBm
Signal strength at Goffstown Police Dept:
-66.3306 dBm

PlanningA5GFixedWirelessAccessLinkOverTerrainExample-6.jpg

Simultaneous Transmission

Instead of steering the base station antenna beam to each receiver site in turn, generate a single beam that can transmit to all receiver sites simultaneously. The single beam generates radiation lobes toward the three receiver sites. The signal strength drops at each receiver site with simultaneous transmission but still meets the receiver sensitivity.

steeringVector = phased.SteeringVector("SensorArray",tx.Antenna);

% Compute steering vector for receiver site
[az,el] = angle(tx,rxs);
sv = steeringVector(fq,[az el]');

% Update base station radiation pattern
tx.Antenna.Taper = conj(sum(sv,2));
pattern(tx)

% Compute signal strength (dBm)
for rx = rxs
    ss = sigstrength(rx,tx,"freespace");
    disp("Signal strength at " + rx.Name + ":")
    disp(ss + " dBm")
end
Signal strength at Bedford Town Center:
-75.2896 dBm
Signal strength at St. Anselm College:
-72.2968 dBm
Signal strength at Goffstown Police Dept:
-72.0328 dBm

PlanningA5GFixedWirelessAccessLinkOverTerrainExample-7.jpg

Add Path Loss Impairments

Additional attenuation of the signal occurs due to foliage and weather. Use Weissberger's model [3] to estimate path loss due to foliage, and use the gas and rain propagation models to estimate signal strength due to weather. In the presence of path loss impairments, the estimated signal strength becomes weak and drops below the receiver sensitivity of -84 dBm.

% Assume that propagation path travels through 25 m of foliage
foliageDepth = 25;
L = 1.33*((fq/1e9)^0.284)*foliageDepth^0.588; % Weissberger model for d > 14
disp("Path loss due to foliage: " + L + " dB")
Path loss due to foliage: 22.7422 dB
% Assign foliage loss as static SystemLoss on each receiver site
for rx = rxs
    rx.SystemLoss = L;
end

% Compute signal strength with foliage loss
for rx = rxs
    rx.SystemLoss = L;
    ss = sigstrength(rx,tx,"freespace");
    disp("Signal strength at " + rx.Name + ":")
    disp(ss + " dBm")
end
Signal strength at Bedford Town Center:
-98.0318 dBm
Signal strength at St. Anselm College:
-95.0391 dBm
Signal strength at Goffstown Police Dept:
-94.775 dBm
% Compute signal strength including propagation through gas and rain. Use
% the "+" operator to add the propagation models to create a composite
% model including both atmospheric effects.
weatherpm = propagationModel("gas") + propagationModel("rain");
for rx = rxs
    ss = sigstrength(rx,tx,weatherpm);
    disp("Signal strength at " + rx.Name + ":")
    disp(ss + " dBm")
end
Signal strength at Bedford Town Center:
-114.4897 dBm
Signal strength at St. Anselm College:
-110.4526 dBm
Signal strength at Goffstown Police Dept:
-107.3242 dBm

Performance in the 3.5 GHz Band

The 3.5 GHz band is a prominent band under consideration for 5G radio [1]. Redesign the MU-MIMO system for this lower frequency to achieve more favorable path loss and achieve the required signal strength.

fq = 3.5e9; % 3.5 GHz

% Create antenna array for base station
lambda = physconst("lightspeed")/fq;
drow = lambda/2;
dcol = lambda/2;
tx.TransmitterFrequency = fq;
tx.Antenna = phased.URA("Size",[ntxrow ntxcol], ...
    "Element",reflectorCrossedDipoleElement(fq), ...
    "ElementSpacing",[drow dcol]);

% Create antenna array for receiver sites
lambda = physconst("lightspeed")/fq;
drow = lambda/2;
dcol = lambda/2;
rxarray = phased.URA("Size",[nrxrow nrxcol], ...
    "Element",reflectorDipoleElement(fq), ...
    "ElementSpacing",[drow dcol], ...
    "ArrayNormal","x");
for rx = rxs
    rx.Antenna = rxarray;
end

In addition to computing signal strength at each receiver site, generate a coverage map using the Longley-Rice propagation model with weather impairments. The Longley-Rice model, which is also known as the Irregular Terrain Model (ITM), estimates path loss based on diffraction and other losses derived from terrain. The Longley-Rice model is valid from 20 MHz to 20 GHz and is therefore available for 3.5 GHz but not for 28 GHz.

% Compute steering vector for receiver site
steeringVector = phased.SteeringVector("SensorArray",tx.Antenna);
[az,el] = angle(tx,rxs);
sv = steeringVector(fq,[az el]');

% Update base station radiation pattern
tx.Antenna.Taper = conj(sum(sv,2));
pattern(tx,'Size',4000)
    
% Recompute loss due to foliage
L = 1.33*((fq/1e9)^0.284)*foliageDepth^0.588; % Weissberger model for d > 14

% Assign foliage loss as static SystemLoss on each receiver site
for rx = rxs
    rx.SystemLoss = L;
end
disp("Path loss due to foliage: " + L + " dB")
Path loss due to foliage: 12.5996 dB
% Add weather-based path loss to the Longley-Rice propagation model
pm = propagationModel('longley-rice') + weatherpm;

% Compute receiver gain from peak antenna gain and system loss
G = pattern(rxarray, fq);
rxGain = max(G(:)) - L;

coverage(tx, ...
    'PropagationModel',pm, ...
    'ReceiverGain',rxGain, ...
    'ReceiverAntennaHeight',6, ...
    'SignalStrengths',-84:-50)

% Compute signal strength with foliage loss and weather
for rx = rxs
    ss = sigstrength(rx,tx,pm);
    disp("Signal strength at " + rx.Name + ":")
    disp(ss + " dBm")
end
Signal strength at Bedford Town Center:
-69.9048 dBm
Signal strength at St. Anselm College:
-66.8941 dBm
Signal strength at Goffstown Police Dept:
-66.6094 dBm

PlanningA5GFixedWirelessAccessLinkOverTerrainExample-8.jpg

Summary

This example shows how to plan a fixed wireless access link over terrain using 5G technologies in a multi-user suburban scenario. While line-of-sight propagation is achieved over the terrain, path loss impairments render the 28 GHz carrier frequency unsuitable for the links despite the use of high gain antennas and beamforming. The addition of foliage loss alone drops the signal strength below the receiver sensitivity of -84 dBm, and the addition of weather loss significantly drops it further. The lower frequency of 3.5 GHz is required to achieve successful links at the multi-kilometer ranges considered here. As a result, this example illustrates the sensitivity of high 5G carrier frequencies to common path loss impairments.

References

[1] Ericsson Technology Review, Fixed wireless access on a massive scale with 5G, Anders Furuskär, Kim Laraqui, Sibel Tombaz, Ala Nazari, Björn Skubic, Elmar Trojer, December, 2016

[2] Microwave Journal, Pre-5G and 5G: Will The mmWave Link Work?, Andreas Roessler, December, 2017

[3] John Seybold, Introduction to RF Propagation, Wiley, 2005

function element = reflectorCrossedDipoleElement(fq, showAntenna)
%reflectorCrossedDipoleElement   Design reflector-backed crossed dipole antenna element

if nargin < 2
    showAntenna = false;
end

lambda = physconst("lightspeed")/fq;
offset = lambda/50;
gndspacing = lambda/4;
gndLength = lambda;
gndWidth = lambda;

% Design crossed dipole elements
d1 = design(dipole,fq);
d1.Tilt = [90,-45];
d1.TiltAxis = ["y","z"];
d2 = copy(d1);
d2.Tilt = 45;
d2.TiltAxis = "x";

% Design reflector
r = design(reflector,fq);
r.Exciter = d1;
r.GroundPlaneLength = gndLength;
r.GroundPlaneWidth = gndWidth;
r.Spacing = gndspacing;
r.Tilt = 90;
r.TiltAxis = "y";
if showAntenna
    show(r)
end

% Form the crossed dipole backed by reflector
refarray = conformalArray;
refarray.ElementPosition(1,:) = [gndspacing 0 0];
refarray.ElementPosition(2,:) = [gndspacing+offset 0 0];
refarray.Element = {r, d2};
refarray.Reference = "feed";
refarray.PhaseShift = [0 90];
if showAntenna
    show(refarray);
    view(65,20)
end

% Create custom antenna element from pattern
[g,az,el] = pattern(refarray,fq);
element = phased.CustomAntennaElement;
element.AzimuthAngles = az;
element.ElevationAngles = el;
element.MagnitudePattern = g;
element.PhasePattern = zeros(size(g));
end

function element = reflectorDipoleElement(fq)
%reflectorDipoleElement   Design reflector-backed dipole antenna element

% Design reflector and exciter, which is vertical dipole by default
element = design(reflector,fq);
element.Exciter = design(element.Exciter,fq);

% Tilt antenna element to radiate in xy-plane, with boresight along x-axis
element.Tilt = 90;
element.TiltAxis = "y";
element.Exciter.Tilt = 90;
element.Exciter.TiltAxis = "y";
end

See Also

Functions

Objects

Related Topics