Click or drag to resize

Link Budget and Constraints

In order to compute a LinkBudget, several pieces of information are needed to produce each scalar parameter. After setting up the various links, signal processors, antennas, and other models, the scalar needs to be able to identify the output of a given receiver object. This is accomplished by using a SignalOutputExtension to identify which SignalProcessor to use as the receiver's output (prior to demodulating the signal into data).

Note Note

The functionality described in this topic requires a license for the Communications Library.

Identifying Signals

In addition, the scalar needs to know how to identify which signal among the SignalCollection to use as the intended signal from which to compute the link budget parameter. This is accomplished by specifying an IntendedSignalStrategy. Using multiple strategies, it is possible to define scalar parameters for more than one signal at a time, allowing users to model multiple access scenarios without having to reoptimize the EvaluatorGroup. Currently, the following strategies are provided by the library:

You can also create your own strategy by extending IntendedSignalStrategy.

Computing Link Budgets

Each scalar representing a communication parameter needs to know which links are propagating signals to which receivers. This is done using a SignalPropagationGraph, which contains all the links which propagate the intended signals as well as links which act purely as interference. The Communications Library is designed to model the real world as closely as possible. As such, there is no a priori distinction between "intended" and "interfering" signals until the user specifies an IntendedSignalStrategy. Signals which otherwise act as intended signals for other scalars will be treated as interference unless explicitly removed from the list of unintended signals in the IntendedSignalStrategy. Alternatively, the use of RectangularFilter will eliminate unintended signals (and intended signals) which do not lie within a certain bandwidth.

The following CommunicationLinkScalars can be computed for a given wireless link:

  • ScalarAntennaGainInLinkDirection - The ratio of signal power after the antenna to the signal power before the antenna, for a given intended signal.

  • ScalarEffectiveIsotropicRadiatedPower (EIRP) - The power of the intended signal after it has been transmitted along the communication link but before any propagation effects are applied.

  • ScalarReceivedIsotropicPower (RIP) - The power of the intended signal after it has been propagated along the communication link but before applying any gain from the receiving antenna.

The following CommunicationObjectScalars can be computed, based on the SignalOutputExtension, which specifies the output of a receiver, prior to demodulating the signal into data:

  • ScalarPowerAtReceiverOutput - The power, in watts, of the intended signal at the output of the receiver, as specified by the SignalOutputExtension.

  • ScalarCarrierToNoise (C/N) - The ratio of the power of the carrier (or signal) at the output to the noise power of the signal, based on the thermal noise contributions of the electronics in the receiver as well as any noise generated by the antenna or propagation models.

  • ScalarCarrierToNoiseDensity (C/No) - The ratio of the power of the carrier (or signal) at the output to the noise of the signal without taking into account the receiver bandwidth. The noise is based on the thermal noise contributions of the electronics in the receiver as well as any noise generated by the antenna or propagation models.

  • ScalarCarrierToInterference (C/I) - The ratio of the power of the carrier (or signal) at the output to the power of the interfering signals.

  • ScalarCarrierToNoisePlusInterference (C/(N+I)) - The ratio of the power of the carrier (or signal) at the output to the noise power of the signal plus the power of the interfering signals. The noise is based on the thermal noise contributions of the electronics in the receiver as well as any noise generated by the antenna or propagation models.

  • ScalarEnergyPerBitToNoiseDensity<TModulation> (Eb/No) - The ratio of the energy per bit to the carrier noise without taking into account the receiver bandwidth. The energy per bit is calculated based on the carrier power and the SignalDataRate.

  • ScalarBitErrorRate<TModulation> (BER) - The probability that any given bit will be incorrect, based on the modulation and the value of Eb/No for the intended signal.

Using the given Scalar base classes, it is also possible to define custom communication parameters.

Access

The Communications Library also provides AccessConstraints, which can be used to find the periods of time when the above Scalar values are within desired minimum and maximum thresholds.

Setting up an access constraint using a link budget parameter is as simple as specifying which parameters to use and combining them together with boolean expressions. For more information, see the Access Queries topic.

Java
double minThreshold = CommunicationAnalysis.fromDecibels(14.198);
double maxThreshold = CommunicationAnalysis.fromDecibels(1000.0);

// Combine two link budget constraints
CommunicationObjectConstraint interferenceConstraint = new CommunicationObjectConstraint(
        new ScalarCarrierToInterference(downlinkRcvrAntenna, propagationGraph, intendedDownlinkSignal),
        minThreshold, maxThreshold);
CommunicationObjectConstraint berConstraint = new CommunicationObjectConstraint(
        new ScalarBitErrorRate<>(new TypeLiteral<ModulationBpsk>() {},
                downlinkRcvrAntenna, propagationGraph, intendedDownlinkSignal),
        0.0, 0.012271);

// Combine access constraints (queries) using boolean operators
AccessQuery combinedQuery = AccessQuery.and(berConstraint, interferenceConstraint);

// Use the philadelphia platform as the time observer
AccessEvaluator accessEval = combinedQuery.getEvaluator(downlinkRcvrAntenna);
// Compute Access
AccessQueryResult result = accessEval.evaluate(startAccess, stopAccess);
Coverage

The Communications Library also provides a generalized CommunicationFigureOfMerit class, which can be used with the Spatial Analysis Library to compute coverage over a grid using the above Scalar values. To learn more about setting up a coverage calculation, see the Coverage topic.

Including communications analysis into a coverage calculation is simple. Communications based access constraints can be used as assets in a coverage calculation. Then, in order to create a figure of merit, simply use a CommunicationFigureOfMerit with the desired scalar value.

Java
ScalarCarrierToNoise carrierToNoise = new ScalarCarrierToNoise(
        coverage.getGridPointPlaceholder(), network,
        new IntendedSignalByFrequency(source.getSignalToTransmit().getFrequency()));
CommunicationObjectConstraint carrierToNoiseConstraint = new CommunicationObjectConstraint(
        carrierToNoise, CommunicationAnalysis.fromDecibels(12.0), CommunicationAnalysis.fromDecibels(200.0));
coverage.addAsset(new AssetDefinition(transmitterPlatform, AccessQuery.and(carrierToNoiseConstraint, cbConstraint)));

Java
// Compute Coverage
CoverageResults coverageResult = coverage.computeCoverageOverTheGrid(start, stop);

// Create Signal to Noise Figure of Merit
CommunicationFigureOfMerit carrierToNoiseFoM = new CommunicationFigureOfMerit(carrierToNoise);

// Compute the Figure of Merit over the grid results
GridTimeSampledValues sampledGrid = GridTimeSampledValues.computeData(coverageResult, carrierToNoiseFoM,
        new TimeInterval(start, stop), Duration.fromSeconds(60.0));