メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

NB-IoT NTNリンクバジェット解析

この例では、3GPP TR 36.763 で説明されているパラメーターセットを使用して、非地上ネットワーク ( NTN ) 内の狭帯域 IoT (NB-IoT) 機器のリンク バジェットを計算する方法を示します。NB-IoT システムの無線カバレッジを改善するために、送信機は同じ信号を追加期間にわたって繰り返します。この例では、NB-IoT 送信に必要な追加の繰り返しの最小回数を計算して報告します。

衛星ペイロード特性の設定

衛星伝送のペイロード特性を設定します。TR 36.763 セクション 6.2.1 [1] で提供されている衛星パラメーターセットを使用するには、satelliteParamsSource を次のいずれかの値に設定します。あるいは、satelliteParamsSourceCustom として指定することもできますが、その場合は satellite 構造の EIRPDensityRxGByT、および Altitude フィールドの値を手動で更新する必要があります。

  • Set 1 GEO

  • Set 1 LEO-1200

  • Set 1 LEO-600

  • Set 2 GEO

  • Set 2 LEO-1200

  • Set 2 LEO-600

  • Set 3 GEO

  • Set 3 LEO-1200

  • Set 3 LEO-600

  • Set 4 LEO-600

  • Set 5 MEO-10000

デフォルトでは、この例ではTR 36.763表6.2-5のセットGEO衛星パラメーターを使用します。この例では、衛星が円軌道上を移動していると想定しています。

satelliteParamsSource = "Set 2 GEO";
% When you set satelliteParamsSource to Custom, provide these fields.
satellite = struct;
satellite.EIRPDensity = 59;   % dBW/MHz
satellite.RxGByT = 19;        % dB/K
satellite.Altitude = 35786e3; % m

ユーザー機器のペイロード特性を設定する

ユーザー機器 (UE) 送信のペイロード特性を設定します。TR 36.763 では、2 つの UE 電力クラスが定義されています。PC5とPC3。PC5 の送信電力は 20 dBm、PC3 の送信電力は 23 dBm です。

デフォルトでは、この例ではノイズ指数が 7 dB の UE 電力クラス PC3 を使用します。

ue = struct;
ue.TxPower = 23;               % dBm
ue.TxGain = 0;                 % dBi
ue.TxCableLoss = 0;            % dB
ue.RxNoiseFigure = 7;          % dB
ue.RxGain = 0;                 % dBi
ue.RxAntennaTemperature = 290; % K
ue.RxAmbientTemperature = 290; % K
ue.Altitude = 0;               % m

リンク特性を設定する

リンクの方向、仰角、帯域幅、周波数、大気損失を定義して、リンクの特性を設定します。

NB-IoT の伝送帯域幅は次のとおりです。

  • ダウンリンク— 180 kHz

  • アップリンク— 3.75 kHz、15 kHz、45 kHz、90 kHz、または 180 kHz

デフォルトでは、この例では 180 kHz の帯域幅の S バンドダウンリンクシナリオを使用します。この例では、セル内のさまざまな場所にある IoT デバイスのリンク統計を計算するために、仰角のベクトルをサポートしています。

% Enable or disable the ITU-R P.618 propagation losses
useP618PropagationLosses = false;           % 0 (false), 1 (true)

% Set the link characteristics
link = struct;
link.Direction = "downlink";    % "uplink", "downlink"
link.ElevationAngle = [10.95 20];         % degrees (Vector of elevation angles)
link.Frequency = 2e9;                     % Hz
link.Bandwidth = 180e3;                   % Hz
link.ShadowMargin = 3;                    % dB
link.AdditionalLosses = 0;                % dB
link.PolarizationLoss = 3;                % dB

if useP618PropagationLosses == 0
    % Set these fields when you set useP618PropagationLosses to false.
    link.ScintillationLosses = 2.2;           % dB
    link.AtmosphericLosses = 0.2;             % dB
else
    % Set these fields when you set useP618PropagationLosses to true. In
    % this case, the example uses digital maps to calculate the
    % attenuation.
    link.P618Configuration = p618Config;
    link.P618Configuration.Latitude = 51.5;                   % degrees
    link.P618Configuration.Longitude = -0.14;                 % degrees
    link.P618Configuration.GasAnnualExceedance = 1;
    link.P618Configuration.CloudAnnualExceedance = 1;
    link.P618Configuration.ScintillationAnnualExceedance = 1;
    link.P618Configuration.TotalAnnualExceedance = 1;
    link.P618Configuration.PolarizationTiltAngle = 0;         % degrees
    link.P618Configuration.AntennaDiameter = 1;               % meters
    link.P618Configuration.AntennaEfficiency = 0.5;
end

NB-IoTデータチャネルパラメーターを設定する

NB-IoT データチャネル送信の基準搬送波対雑音比 (CNR) を計算するには、次の NB-IoTパラメーターを設定します。

  • 変調スキーム

  • トランスポートブロックサイズ (Nbits)

  • 送信に使用されるシンボルの数 (Nsymbols)

  • 繰り返し回数 (NRep)

  • ダウンリンクのサブフレーム数 (NSF)

  • アップリンクのリソースユニット数 (NRU)

この例では、2 位相偏移変調 (BPSK)、直交位相偏移変調 (QPSK)、および直交振幅変調(16-QAM) の 3 つの変調方式を考慮します。NB-IoT システムは、データ送信にこれらの変調方式を使用します。BPSK、QPSK、16-QAM の変調次数はそれぞれ 1、2、4 です。

modulation = "QPSK"; % Modulation scheme
nBits = 208;                       % Number of useful bits (transport block size)
nSymbols = 160;                    % Number of symbols used for transmission
nRep = 1;                          % Number of repetitions
nSF = 8;                           % Number of subframes (used in downlink)
nRU = 1;                           % Number of resource units (used in uplink)

これらの NB-IoT 波形パラメーターを設定します。

  • 使用されているデータサブキャリアの数 (NDSC)

  • 高速フーリエ変換(FFT)ビンの数(NFFT

  • データシンボル期間 (Td)

  • 巡回プレフィックス期間 (TCP)

  • オーバーサンプリング係数 (OSR)

nDSC = 72;                         % Number of data subcarriers (6 resource blocks)
nFFT = 128;                        % FFT length
tsamp = 1/1.92e6;                  % Sample time (in s)
td = nFFT*tsamp;                   % Data symbol duration (in s)
nCP = 9;                           % Number of cyclic prefix samples
tCP = nCP*tsamp;                   % Cyclic prefix duration (in s)
osr = 1;                           % Oversampling factor

チャネルコーディングのない加法性ホワイト ガウス ノイズが存在する場合、変調方式は次の結果を返します。

  • BPSK は、EbNo が 10.5 dB で 1e-6 のビット エラー レートを実現します。

  • QPSK は、EbNo が 10.5 dB で 1e-6 のビット エラー レートを実現します。

  • 16-QAM は、14.4 dB の EbNo で 1e-6 のビット エラー レートを実現します。

結果として、この例では、変調方式に応じて 10.5 dB または 14.4 dB の (EbNo)ref 値が使用されます。

% Reference Eb/No in dB
if modulation == "16-QAM"
    % Modulation scheme is 16-QAM
    ebnoRef = 14.4;
else 
    % Modulation scheme is either BPSK or QPSK
    ebnoRef = 10.5;
end

参照CNRを計算する

基準 CNR を dB 単位で計算するには、次の式を使用します。

(CN)ref=(EbNo)ref+10 log10(m Reff)+10 log10(NDSCNFFT)+10 log10(TdTd+TCP)-10 log10(OSR),

ここで、

  • (EbNo)ref は、目的のビット エラー レートの dB 値です。

  • m は変調順序です。

  • Reff は有効なコード レートです。

TS 36.213 セクション7.1.7 [3]で定義されているNB-IoTダウンリンクの有効コードレートは、

Reff=Nbits+NCRCNSF Nsymbols m NRep,

ここで、

  • Nbits は、送信する有効なビット数 (トランスポート ブロック サイズ) です。

  • NCRC はチェックコードに使用されるビット数です (NB-IoT の場合は 24)。

  • NSF は割り当てられたサブフレームの数です。

  • Nsymbols はシンボルの数です。

  • NRep は繰り返し回数です。

同様に、NB-IoTアップリンクの実効コードレートは

Reff=Nbits+NCRCNRU Nsymbols m NRep,

ここで、NRU は割り当てられたリソース ユニットの数です。1 トーン伝送の場合、Nsymbols は 96 で、3 トーン伝送の場合、Nsymbols は 144 です。

% Modulation order
m = 1;
if modulation == "QPSK"
    m = 2;
elseif modulation == "16-QAM"
    m = 4;
end

% Number of CRC bits
nCRC = 24;

% Calculate the effective code rate and the reference CNR
if link.Direction == "downlink"
    Reff = (nBits + nCRC)/(nSF*nSymbols*m*nRep);
else % "uplink"
    Reff = (nBits + nCRC)/(nRU*nSymbols*m*nRep);
end
cnrRef = ebnoRef + 10*log10(m*Reff) + 10*log10(nDSC/nFFT) + ...
        10*log10(td/(td + tCP)) - 10*log10(osr);

disp("Reference CNR: " + cnrRef + " dB")
Reference CNR: 0.2889 dB

リンク バジェットを計算する

各仰角における衛星、UE、リンクの特性を使用してCNRを計算します。この例では、CNR を計算するために、satelliteCNRConfig オブジェクトと satelliteCNR 関数を使用します。

CNRをdB単位で計算するには、TR 38.821のセクション6.1.3.1 [2]に記載されている次の式を使用します。

CNR=EIRP+GT-k-PLFS-PLA-PLSM-PLSL-PLAD-B,

ここで、

  • EIRP は dBW での有効等方放射電力です。

  • GT は、アンテナ利得対雑音温度(dB/K)です。

  • k は、-228.6 dBW/K/Hz の値を持つボルツマン定数です。

  • PLFS は dB 単位の自由空間パス ロス(FSPL) です。

  • PLA は、ガスとシャドウイングマージンによる大気のパス ロス(dB) です。

  • PLSM は dB 単位のシャドウイングマージンです。

  • PLSL はシンチレーション損失(dB)です。

  • PLAD は dB 単位の追加損失です。

  • B は dBHz 単位のチャネル帯域幅です。

アンテナ利得対ノイズ温度を計算するには、次の式を使用します。

GT=GR-Nf-10 log10(T0 +(Ta-T0)10-0.1Nf),

ここで、

  • GR は受信アンテナ ゲイン(dBi)です。

  • Nf は dB 単位のノイズ指数です。

  • T0 はケルビン単位での周囲温度です。

  • Ta はケルビン単位でのアンテナ温度です。

受信アンテナ ゲインは、使用するアンテナの種類によって異なり、偏波損失を考慮します。

実効等方放射電力を dBW 単位で計算するには、次の式を使用します。

EIRP=PT-LC+GT,

ここで、

  • PT は dBW 単位の送信アンテナ電力です。

  • LC はケーブル損失(dB)です。

  • GT は送信アンテナ ゲイン(dBi)です。

% Get the satellite parameters based on satelliteParamsSource
if satelliteParamsSource ~= "Custom"
    satellite = getSatelliteParams(satelliteParamsSource);
end

% Calculate EIRP when the satellite is a transmitter (dB)
% To get a value in decibels from density: 
% Value in dB = Value in dB/MHz + 10*log10[BW in MHz]
satellite.EIRP = satellite.EIRPDensity + 10*log10(link.Bandwidth/1e6);

% Calculate EIRP when the UE is a transmitter (dB)
% To get a value in decibels from dBm: dB = dBm - 30
ue.EIRP = (ue.TxPower-30) + ue.TxGain - ue.TxCableLoss;

% Calculate the gain-to-noise temperature or the figure of merit for the UE
% as a receiver.
ue.RxGByT = ue.RxGain - ue.RxNoiseFigure ...
    - 10*log10(ue.RxAmbientTemperature + ...
    (ue.RxAntennaTemperature-ue.RxAmbientTemperature)*10^(-0.1*ue.RxNoiseFigure));

% Set the transmitter and the receiver based on the link direction
if link.Direction == "uplink"
    tx = ue;
    rx = satellite;
else
    tx = satellite;
    rx = ue;
end

% Range of elevation angles
elevAngles = link.ElevationAngle(:);
numElevAngles = numel(elevAngles);

% Calculate the distance from the satellite to the UE for all elevation
% angles
d = slantRangeCircularOrbit(elevAngles,satellite.Altitude,ue.Altitude); % m

% Get the total atmospheric losses for each elevation angle
totalAtmosphericLoss = zeros(numElevAngles,1);
if useP618PropagationLosses == 1
    % Download and extract the digital maps, if not available on the path
    maps = exist("maps.mat","file");
    p836 = exist("p836.mat","file");
    p837 = exist("p837.mat","file");
    p840 = exist("p840.mat","file");
    matFiles = [maps p836 p837 p840];
    if ~all(matFiles)
        if ~exist("ITURDigitalMaps.tar.gz","file")
            url = "https://www.mathworks.com/supportfiles/spc/P618/ITURDigitalMaps.tar.gz";
            websave("ITURDigitalMaps.tar.gz",url);
            untar("ITURDigitalMaps.tar.gz")
        else
            untar("ITURDigitalMaps.tar.gz")
        end
    end
    link.P618Configuration.Frequency = link.Frequency;
    elevAnglesToConsider = elevAngles;
    if any(elevAngles < 5)
        warning("The prediction method for scintillation losses is valid for elevation " + ... 
            "angle greater than 5 degree. For elevation angle less than 5 degree, the " + ... 
            "nearest valid value of 5 degree will be used in the computation.")
        elevAnglesToConsider(elevAngles < 5) = 5;
    end
    for index = 1:numElevAngles
        link.P618Configuration.ElevationAngle = elevAnglesToConsider(index);
        pl = p618PropagationLosses(link.P618Configuration);
        totalAtmosphericLoss(index) = pl.At;
    end
else
    totalAtmosphericLoss(:) = link.AtmosphericLosses + link.ScintillationLosses;
end

% Define the configuration parameters
config = satelliteCNRConfig;
config.TransmitterPower = tx.EIRP;
config.TransmitterAntennaGain = 0;
config.Frequency = link.Frequency/1e9;          % GHz
config.GainToNoiseTemperatureRatio = rx.RxGByT;
config.Bandwidth = link.Bandwidth/1e6;          % MHz

% Compute the CNR and the free space path loss for each elevation angle
cnr = zeros(numElevAngles,1);
pathLoss = cnr;
for index = 1:numElevAngles
    config.Distance = d(index)/1e3;                                         % km
    config.MiscellaneousLoss = totalAtmosphericLoss(index) + ...
         link.PolarizationLoss + link.ShadowMargin + link.AdditionalLosses;
    [cnr(index),cnrInfo] = satelliteCNR(config);
    pathLoss(index) = cnrInfo.FSPL;
end

% Report the results in a table
table(elevAngles,cnr,pathLoss,VariableNames=["Elevation Angle (degrees)", "CNR (dB)", "FSPL (dB)"])
ans=2×3 table
    Elevation Angle (degrees)    CNR (dB)    FSPL (dB)
    _________________________    ________    _________

              10.95               -8.538      190.61  
                 20              -8.3363      190.41  

% Plot CNR as a function of the elevation angle
plot(elevAngles,cnr,"*")
title("CNR As a Function of Elevation Angle")
xlabel("Elevation Angle (degrees)")
ylabel("CNR (dB)")
ylim([min(cnr)-0.2 max(cnr)+0.2])
xlim([min(elevAngles)-1 max(elevAngles)+1])
grid on

Figure contains an axes object. The axes object with title CNR As a Function of Elevation Angle, xlabel Elevation Angle (degrees), ylabel CNR (dB) contains a line object which displays its values using only markers.

リンク マージンとNB-IoTの繰り返しを計算する

リンク マージン(dB) は、計算された CNR と基準 CNR の差です。リンク マージンがゼロまたは正の場合、リンクは閉じられます。

リンク マージンを計算するには、次の式を使用します。

LinkMargin=CN-(CN)ref.

% Compute link margin
linkMargin = cnr - cnrRef;

リンク クロージャーに必要な追加の NB-IoT 繰り返しの最小数 (NRep_Add) は NRep(10-LinkMargin10-1) です。ここで、ceil 機能を表します。リンク クロージャーために必要な全体の繰り返しは、NRep_AddNRep の合計です。

% Minimum number of additional repetitions required for link closure
minRepetitions = 10.^(-linkMargin./10);
idx = linkMargin >= 0;
additionalRepetitions = minRepetitions;
additionalRepetitions(idx) = 0;
% When the link margin is negative, improve the CNR by adding repetitions.
% Calculate the required number of additional repetitions.
additionalRepetitions(~idx) = ceil(nRep*(additionalRepetitions(~idx)-1));

% Report the results in a table with this format.
% Elevation Angle | Link Margin | Min. Additional Repetitions Required
table(elevAngles,linkMargin,additionalRepetitions, ...
    VariableNames=["Elevation Angle (degrees)", ...
    "Link Margin (dB)", "NRep_Add"])
ans=2×3 table
    Elevation Angle (degrees)    Link Margin (dB)    NRep_Add
    _________________________    ________________    ________

              10.95                  -8.8269            7    
                 20                  -8.6252            7    

その他の調査

この例では、リンク バジェットを仰角の変化として計算しました。これらのバリエーションを使用して例を調べてみることを検討してください。

  • 異なる軌道の衛星パラメーターセットを変更して、リンク マージンを観察します。

  • useP618PropagationLosses を true に設定して、 ITU-R P.618 伝播損失を追加します。

  • リンク方向、帯域幅、仰角を変えて、さまざまな条件下での NB-IoT の CNR と追加繰り返しの最小回数を解析します。

  • 関連する伝送帯域幅を使用して、拡張マシン型通信のリンク特性を確認します。ダウンリンク伝送には、1080 kHz の帯域幅を使用します。アップリンク伝送の場合、許容されるすべての小さなリソース割り当てで最大 1080 kHz の帯域幅を使用します。1080 kHz までのアップリンク伝送用の小さなリソース割り当てには、360 kHz、180 kHz、90 kHz、45 kHz、および 30 kHz が含まれます。

参考文献

[1] 3rd Generation Partnership Project (3GPP). Study on Narrow-Band Internet of Things (NB-IoT)/Enhanced Machine Type Communication (eMTC) Support for Non-Terrestrial Networks (NTN).3GPP TR 36.763. 3GPP, accessed 23 September 2021. https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3747.

[2] 3rd Generation Partnership Project (3GPP).Solutions for NR to Support Non-Terrestrial Networks (NTN). 3GPP TR 38.821. 3GPP, accessed 8 May 2021. https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3525.

[3] 3rd Generation Partnership Project (3GPP). Evolved Universal Terrestrial Radio Access (E-UTRA) Physical Layer Procedures.3GPP TS 36.213. 3GPP, accessed 21 May 2021. https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=2427.

[4] International Telecommunication Union Radiocommunication Sector (ITU-R). Propagation Data Required for the Design Systems in the Land Mobile-Satellite Service. Recommendation ITU-R P.618-11 (08/2019). https://www.itu.int/rec/R-REC-P.681/en.

ローカル関数

getSatelliteParams — 3GPP TR 36.763 仕様のセクション 6.2.1 で選択された satelliteParamsSource に対して定義されている衛星パラメーターを取得します。

function satellite = getSatelliteParams(satelliteParamsSource)
    
    if satelliteParamsSource == "Set 1 GEO"
        % Table 6.2-4, TR 36.763
        satellite = struct;
        satellite.EIRPDensity = 59;    % dBW/MHz
        satellite.RxGByT = 19;         % dB/K
        satellite.Altitude = 35786e3;  % m
    elseif satelliteParamsSource == "Set 1 LEO-1200"
        % Table 6.2-4, TR 36.763
        satellite = struct;
        satellite.EIRPDensity = 40;    % dBW/MHz
        satellite.RxGByT = 1.1;        % dB/K
        satellite.Altitude = 1200e3;   % m
    elseif satelliteParamsSource == "Set 1 LEO-600"
        % Table 6.2-4, TR 36.763
        satellite = struct;
        satellite.EIRPDensity = 34;    % dBW/MHz
        satellite.RxGByT = 1.1;        % dB/K
        satellite.Altitude = 600e3;    % m
    elseif satelliteParamsSource == "Set 2 GEO"
        % Table 6.2-5, TR 36.763
        satellite = struct;
        satellite.EIRPDensity = 53.5;  % dBW/MHz
        satellite.RxGByT = 14;         % dB/K
        satellite.Altitude = 35786e3;  % m
    elseif satelliteParamsSource == "Set 2 LEO-1200"
        % Table 6.2-5, TR 36.763
        satellite = struct;
        satellite.EIRPDensity = 34;    % dBW/MHz
        satellite.RxGByT = -4.9;       % dB/K
        satellite.Altitude = 1200e3;   % m
    elseif satelliteParamsSource == "Set 2 LEO-600"
        % Table 6.2-5, TR 36.763
        satellite = struct;
        satellite.EIRPDensity = 28;    % dBW/MHz
        satellite.RxGByT = -4.9;       % dB/K
        satellite.Altitude = 600e3;    % m
    elseif satelliteParamsSource == "Set 3 GEO"
        % Table 6.2-6, TR 36.763
        satellite = struct;
        satellite.EIRPDensity = 59.8;  % dBW/MHz
        satellite.RxGByT = 16.7;       % dB/K
        satellite.Altitude = 35786e3;  % m
    elseif satelliteParamsSource == "Set 3 LEO-1200"
        % Table 6.2-6, TR 36.763
        satellite = struct;
        satellite.EIRPDensity = 33.7;  % dBW/MHz
        satellite.RxGByT = -12.8;      % dB/K
        satellite.Altitude = 1200e3;   % m
    elseif satelliteParamsSource == "Set 3 LEO-600"
        % Table 6.2-6, TR 36.763
        satellite = struct;
        satellite.EIRPDensity = 28.3;  % dBW/MHz
        satellite.RxGByT = -12.8;      % dB/K
        satellite.Altitude = 600e3;    % m
    elseif satelliteParamsSource == "Set 4 LEO-600"
        % Table 6.2-7, TR 36.763
        satellite = struct;
        satellite.EIRPDensity = 21.45; % dBW/MHz
        satellite.RxGByT = -18.6;      % dB/K
        satellite.Altitude = 600e3;    % m
    else % "Set 5 MEO-10000"
        % Table 6.2-8, TR 36.763
        satellite = struct;
        satellite.EIRPDensity = 45.4;  % dBW/MHz
        satellite.RxGByT = 3.8;        % dB/K
        satellite.Altitude = 10000e3;  % m
    end

end

参考

関数

オブジェクト