このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ダウンリンク制御の処理と手順
この例では、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 = chInfo.MaximumChannelDelay;
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
構成パラメーターで指定された単一のサーチ スペース セット内のすべての候補を検索しました。複数のサーチ スペース セットに対する検索では、定義されたすべてのセットに対して別の外部ループ処理が必要になります。
参考文献
3GPP TS 38.211. "NR; Physical channels and modulation" 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.
3GPP TS 38.212. "NR; Multiplexing and channel coding" 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.
3GPP TS 38.213. "NR; Physical layer procedures for control" 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.