Main Content

ダウンリンク制御の処理と手順

この例では、5G New Radio 通信システムでの物理ダウンリンク制御チャネル (PDCCH) のブラインド サーチ復号化について説明します。チュートリアルDownlink Control Information のモデル化に基づいて、この例では、control resource set (CORESET) とサーチ スペースの概念、その一般的な仕様を紹介し、PDCCH インスタンスがサーチ スペース内の複数の候補の 1 つにマッピングされる仕組みについて説明します。送信された制御情報を受信機で復元するために、この例では候補のセットに対してブラインド サーチを実行します。

システム パラメーター

キャリア、CORESET、サーチ スペース セット、PDCCH インスタンスにそれぞれ対応するシステム パラメーターを設定します。

rng(111);                               % Set RNG state for repeatability

% Carrier configuration
carrier = nrCarrierConfig;
carrier.NCellID = 2;                    % Cell identity
carrier.SubcarrierSpacing = 30;         % Carrier/BWP Subcarrier spacing
carrier.CyclicPrefix = 'normal';        % Cyclic prefix
carrier.NSlot      = 0;                 % Slot counter
carrier.NFrame     = 0;                 % Frame counter
carrier.NStartGrid = 10;                % Carrier offset
carrier.NSizeGrid  = 48;                % Size of carrier in RB

% CORESET configuration
coreset = nrCORESETConfig;
coreset.CORESETID = 1;                  % CORESET ID (0...11)
coreset.FrequencyResources = ones(1,4); % 6 RB sized
coreset.Duration = 1;                   % CORESET symbol duration (1,2,3)
coreset.CCEREGMapping = 'interleaved';  % CORESET Mapping
coreset.REGBundleSize = 2;              % L (2,6) or (3,6)
coreset.InterleaverSize = 2;            % R (2,3,6)
coreset.ShiftIndex = carrier.NCellID;   % default to NCellID

% Search space configuration
ss = nrSearchSpaceConfig;
ss.CORESETID = 1;                       % Associated CORESET ID (0...11)
ss.SearchSpaceType = 'ue';              % 'ue', 'common'
ss.StartSymbolWithinSlot = 0;           % Starting symbol in slot
ss.SlotPeriodAndOffset = [1 0];         % Search space period and offset
ss.Duration = 1;                        % Search space duration in slots
ss.NumCandidates = [4 2 1 0 0];         % For (1,2,4,8,16) levels respectively

% PDCCH configuration
pdcch = nrPDCCHConfig;
pdcch.NStartBWP  = 10;                  % BWP offset wrt CRB 0
pdcch.NSizeBWP   = 48;                  % Size of BWP in resource blocks
pdcch.CORESET = coreset;                % Associated CORESET
pdcch.SearchSpace = ss;                 % Associated SearchSpace
pdcch.RNTI = 1;                         % C-RNTI
pdcch.DMRSScramblingID = [];            % Use carrier.NCellID instead
pdcch.AggregationLevel = 4;             % Number of CCEs in PDCCH (1,2,4,8,16)
pdcch.AllocatedCandidate = 1;           % 1-based scalar

この例では、単一の PDCCH 送信と単一の bandwidth part を関連する CORESET とサーチ スペース セットに対して使用する単一のスロット処理を想定しています。

複数の物理チャネルを使用した波形生成の詳細については、5G NR ダウンリンク ベクトル波形の生成の例を参照してください。

PDCCH ビット容量

PDCCH インスタンスのビット容量は、PDCCH に対して構成された制御チャネル要素 (CCE) の数に基づいて決まります。CCE は、6 つのリソースエレメント グループ (REG) で構成され、REG は 1 つの OFDM シンボル内の 1 つのリソース ブロック (RB) に相当します。

% Number of bits for PDCCH resources and actual indices
[ind,dmrs,dmrsInd] = nrPDCCHResources(carrier,pdcch);
E = 2*numel(ind);

DCI の符号化

関数nrDCIEncodeは、ダウンリンク フォーマットに基づく DCI メッセージ ビットを符号化します。DCI 符号化には、CRC の付加、Polar 符号化、PDCCH ビット容量 E に対するコードワードのレート マッチングの各段階が含まれます。

K = 64;                             % Number of DCI message bits
dciBits = randi([0 1],K,1,'int8');

dciCW = nrDCIEncode(dciBits,pdcch.RNTI,E);

PDCCH シンボルの生成とマッピング

関数nrPDCCHは、符号化された DCI ビットを物理ダウンリンク制御チャネル (PDCCH) にマッピングします。この関数は、スクランブルされた QPSK 変調シンボルを返します。スクランブルでは、ユーザー固有のパラメーターが使用されます。

if isempty(pdcch.DMRSScramblingID)
    nID = carrier.NCellID;
else
    nID = pdcch.DMRSScramblingID;
end
sym = nrPDCCH(dciCW,nID,pdcch.RNTI);

PDCCH シンボルは、OFDM グリッド内の割り当てられた候補に対応するリソース エレメントにマッピングされます。リソース グリッドにはまた、PDSCH シンボル、PBCH シンボル、その他の基準信号要素が含まれます。簡略化するために、この例では、グリッドに対する PDCCH DM-RS シンボルの追加のマッピングのみを行います。

carrierGrid = nrResourceGrid(carrier);
carrierGrid(ind) = sym;                 % PDCCH symbols
carrierGrid(dmrsInd) = dmrs;            % PDCCH DM-RS

次の図は、bandwidth part 全体にまたがるリソース グリッドの 1 つのスロットについて、選択した構成例の CORESET、サーチ スペース セット、PDCCH インスタンス パラメーターのいくつかを示したものです。

OFDM 変調

キャリア グリッドを OFDM 変調します。スロットベースの処理にウィンドウ非処理を指定します。

[wave,winfo] = nrOFDMModulate(carrier,carrierGrid,'Windowing',0);

フェージング チャネル

生成した波形を、遅延プロファイル A と遅延スプレッド 30 ns の TDL フェージング チャネルで送信します。

channel = nrTDLChannel;
channel.DelayProfile = 'TDL-A';
channel.DelaySpread = 30e-9;
channel.NumTransmitAntennas = 1;
channel.NumReceiveAntennas = 1;
channel.SampleRate = winfo.SampleRate;

chInfo = info(channel);
maxChDelay = ceil(max(chInfo.PathDelays*channel.SampleRate)) +  ...
             chInfo.ChannelFilterDelay;
txWave = [wave; zeros(maxChDelay, size(wave,2))];

rxWave = channel(txWave);

ノイズの付加

符号化率、QPSK 変調、サンプル レートをもとにレベルを指定したホワイト ガウス ノイズを受信信号に付加します。

EbNo = 6;                            % in dB
bps = 2;                             % bits per symbol, 2 for QPSK
EsNo = EbNo + 10*log10(bps);
snrdB = EsNo + 10*log10(K/E);
noiseVar = 10.^(-snrdB/10);          % assumes unit signal power
N0 = sqrt(noiseVar)/sqrt(2*winfo.Nfft);
noise = N0 * complex(randn(size(rxWave)),randn(size(rxWave)));
rxWaveN = rxWave + noise;

PDCCH と DCI のブラインド復号化

UE には、詳細な制御チャネル構造に関する情報がありません。そのため、UE は UE の RNTI を使用して各スロットの PDCCH 候補のセットを監視し、適切な候補 (またはインスタンス) を識別することで、受信した PDCCH シンボルをブラインドで復号化します。

候補の監視は、返されたチェックサムが既知の RNTI (UE) に対してゼロであるかを確認することで、候補に対応するリソース エレメントのセットの復号化を試みることを意味します。関数nrPDCCHSpaceを使用して、PDCCH リソース エレメント インデックス、および対応する DM-RS のシンボルとインデックスに関して、サーチ スペース セットで指定されたすべての候補を判定します。

各候補について、フロントエンドの復元に次を含めます。

  • 関数nrTimingEstimateを使用した DM-RS シンボルに基づくタイミング オフセットの推定、

  • 関数nrOFDMDemodulateを使用した OFDM 復調、

  • 関数nrChannelEstimateを使用した DM-RS シンボルに基づくチャネル推定、および

  • 関数nrEqualizeMMSEを使用した MMSE イコライズ

これらによって、イコライズされた PDCCH シンボルの候補を取得します。

関数nrPDCCHDecodeを使用し、候補ごとにイコライズしたシンボルを既知のユーザー固有のパラメーターとチャネル ノイズ分散で復調します。

受信した PDCCH コードワードのインスタンスに対し、関数nrDCIDecodeは、レート リカバリ、Polar 複合化、CRC 複合化の段階を含めます。出力マスク値が 0 の場合、PDCCH は正常に複合化されており、UE が DCI メッセージを処理できます。

この例では、DCI フォーマットと DCI ペイロード サイズ K が受信側にとって既知であることを前提にしています。実際にはそれらについても、サポートされているすべてのフォーマットと各フォーマットのビット長を外部ループで検索することになります。

listLen = 8;                         % polar decoding list length

% Get all possible candidates
[allInd,allDMRS,allDMRSInd] = nrPDCCHSpace(carrier,pdcch);

% Loop over all supported aggregation levels
decoded = false;
for alIdx = 1:5

    % Loop over all candidates at each aggregation level
    for cIdx = 1:pdcch.SearchSpace.NumCandidates(alIdx)

        % Get candidate
        cSymIdx = allInd{alIdx}(:,cIdx);
        cDMRS = allDMRS{alIdx}(:,cIdx);
        cDMRSInd = allDMRSInd{alIdx}(:,cIdx);

        % Timing estimate
        offset = nrTimingEstimate(carrier,rxWaveN,cDMRSInd,cDMRS);
        if offset > maxChDelay
            offset = 0;
        end
        rxWaveS = rxWaveN(1+offset:end,:);

        % OFDM demodulate the carrier
        rxCarrGrid = nrOFDMDemodulate(carrier,rxWaveS);

        % Channel estimate
        [hest,nVar] = nrChannelEstimate(carrier,rxCarrGrid,cDMRSInd,cDMRS);
        [rxSym,pdcchHest] = nrExtractResources(cSymIdx,rxCarrGrid,hest);

        % Equalization
        [pdcchEq,csi] = nrEqualizeMMSE(rxSym,pdcchHest,nVar);

        % Demodulate
        rxCW = nrPDCCHDecode(pdcchEq,nID,pdcch.RNTI,nVar);

        % Apply CSI
        csiRep = repmat(csi.',2,1);
        scalRxCW = rxCW.*csiRep(:);

        % Decode
        [decDCIBits,errFlag] = nrDCIDecode(scalRxCW,K,listLen,pdcch.RNTI);

        if isequal(errFlag,0)
            disp(['Decoded candidate #' num2str(cIdx)  ...
                ' at aggregation level ' num2str(2^(alIdx-1)) ...
                ' in slot'])
            decoded = true;
            if isequal(decDCIBits,dciBits)
                disp('   Recovered DCI bits with no errors');
            else
                disp('   Recovered DCI bits with errors');
            end
            break;
        end
    end
    % Dont loop over other aggregation levels if RNTI matched
    if decoded
        break;
    end
end
Decoded candidate #1 at aggregation level 4 in slot
   Recovered DCI bits with no errors

選択されたシステム パラメーターについて、復号化された情報は送信された情報ビットと一致しています。

この例では、ss 構成パラメーターで指定された単一のサーチ スペース セット内のすべての候補を検索しました。複数のサーチ スペース セットに対する検索では、定義されたすべてのセットに対して別の外部ループ処理が必要になります。

参考文献

  1. 3GPP TS 38.211. "NR; Physical channels and modulation" 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

  2. 3GPP TS 38.212. "NR; Multiplexing and channel coding" 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

  3. 3GPP TS 38.213. "NR; Physical layer procedures for control" 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

参考

関数