このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
NB-IoT NTNリンクバジェット解析
この例では、3GPP TR 36.763 で説明されているパラメーターセットを使用して、非地上ネットワーク ( NTN ) 内の狭帯域 IoT (NB-IoT) 機器のリンク バジェットを計算する方法を示します。NB-IoT システムの無線カバレッジを改善するために、送信機は同じ信号を追加期間にわたって繰り返します。この例では、NB-IoT 送信に必要な追加の繰り返しの最小回数を計算して報告します。
衛星ペイロード特性の設定
衛星伝送のペイロード特性を設定します。TR 36.763 セクション 6.2.1 [1] で提供されている衛星パラメーターセットを使用するには、satelliteParamsSource を次のいずれかの値に設定します。あるいは、satelliteParamsSource を Custom として指定することもできますが、その場合は satellite 構造の EIRPDensity、RxGByT、および Altitude フィールドの値を手動で更新する必要があります。
Set 1 GEOSet 1 LEO-1200Set 1 LEO-600Set 2 GEOSet 2 LEO-1200Set 2 LEO-600Set 3 GEOSet 3 LEO-1200Set 3 LEO-600Set 4 LEO-600Set 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パラメーターを設定します。
変調スキーム
トランスポートブロックサイズ ()
送信に使用されるシンボルの数 ()
繰り返し回数 ()
ダウンリンクのサブフレーム数 ()
アップリンクのリソースユニット数 ()
この例では、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 波形パラメーターを設定します。
使用されているデータサブキャリアの数 ()
高速フーリエ変換(FFT)ビンの数()
データシンボル期間 ()
巡回プレフィックス期間 ()
オーバーサンプリング係数 ()
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 は、 が 10.5 dB で 1e-6 のビット エラー レートを実現します。
QPSK は、 が 10.5 dB で 1e-6 のビット エラー レートを実現します。
16-QAM は、14.4 dB の で 1e-6 のビット エラー レートを実現します。
結果として、この例では、変調方式に応じて 10.5 dB または 14.4 dB の 値が使用されます。
% 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 単位で計算するには、次の式を使用します。
,
ここで、
は、目的のビット エラー レートの dB 値です。
は変調順序です。
は有効なコード レートです。
TS 36.213 セクション7.1.7 [3]で定義されているNB-IoTダウンリンクの有効コードレートは、
,
ここで、
は、送信する有効なビット数 (トランスポート ブロック サイズ) です。
はチェックコードに使用されるビット数です (NB-IoT の場合は 24)。
は割り当てられたサブフレームの数です。
はシンボルの数です。
は繰り返し回数です。
同様に、NB-IoTアップリンクの実効コードレートは
,
ここで、 は割り当てられたリソース ユニットの数です。1 トーン伝送の場合、 は 96 で、3 トーン伝送の場合、 は 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]に記載されている次の式を使用します。
,
ここで、
は dBW での有効等方放射電力です。
は、アンテナ利得対雑音温度(dB/K)です。
は、-228.6 dBW/K/Hz の値を持つボルツマン定数です。
は dB 単位の自由空間パス ロス(FSPL) です。
は、ガスとシャドウイングマージンによる大気のパス ロス(dB) です。
は dB 単位のシャドウイングマージンです。
はシンチレーション損失(dB)です。
は dB 単位の追加損失です。
は dBHz 単位のチャネル帯域幅です。
アンテナ利得対ノイズ温度を計算するには、次の式を使用します。
,
ここで、
は受信アンテナ ゲイン(dBi)です。
は dB 単位のノイズ指数です。
はケルビン単位での周囲温度です。
はケルビン単位でのアンテナ温度です。
受信アンテナ ゲインは、使用するアンテナの種類によって異なり、偏波損失を考慮します。
実効等方放射電力を dBW 単位で計算するには、次の式を使用します。
,
ここで、
は dBW 単位の送信アンテナ電力です。
はケーブル損失(dB)です。
は送信アンテナ ゲイン(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

リンク マージンとNB-IoTの繰り返しを計算する
リンク マージン(dB) は、計算された CNR と基準 CNR の差です。リンク マージンがゼロまたは正の場合、リンクは閉じられます。
リンク マージンを計算するには、次の式を使用します。
.
% Compute link margin
linkMargin = cnr - cnrRef;リンク クロージャーに必要な追加の NB-IoT 繰り返しの最小数 () は です。ここで、 は ceil 機能を表します。リンク クロージャーために必要な全体の繰り返しは、 と の合計です。
% 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



