Динамический выбор точек CoMP с несколькими процессами CSI

Этот пример показывает, как несколько процессов информации о состоянии канала (CSI) предоставляют сети обратную связь для операции скоординированной многоточки (CoMP). В этом примере данные пользовательского оборудования (UE) передаются от одного из двух взаимодействующих eNodeB как часть схемы динамического выбора точек (DPS). Решение о передаче основано на отчетах индикатора качества канала (CQI) от UE.

Введение

Скоординированная многоточка (CoMP) является термином, используемым для описания схем, в которых группа базовых станций динамически сотрудничает, чтобы уменьшить интерференцию или даже превратить эту интерференцию в полезный сигнал. Группа координирующих базовых станций называется взаимодействующим набором. CoMP в Релиз 11 спроектирован таким образом, чтобы иметь возможность использовать преимущества низкой задержки и высокой пропускной способности обратного перехода между базовыми станциями в рамках взаимодействующего набора. Поэтому данные для пользовательского оборудования (UE) могут быть доступны в одной или нескольких взаимодействующих базовых станциях.

Существует три категории нисходящего CoMP:

  • При скоординированном планировании и формировании луча (CS/CB) данные UE доступны только на одной базовой станции в пределах координирующего набора, поэтому PDSCH передается от одной базовой станции. Планирование и адаптация ссылки координируются с использованием информации от других базовых станций в взаимодействующем наборе. Другие взаимодействующие базовые станции могут также координировать свои решения о планировании и формировании луча, чтобы уменьшить помехи.

  • В динамическом выборе точек (DPS) данные UE доступны на нескольких базовых станциях в пределах координационного набора, но данные передаются только от одной базовой станции за раз. Базовая станция, передающая в UE, названная точкой передачи (TP), может быть изменена в подкадр на субкадр, чтобы обеспечить лучшую передачу для UE с изменяющимися условиями канала. Этот сценарий наиболее вероятно находится на ребре камеры, где характеристики долгосрочного канала благоприятствуют обслуживающей базовой станции, но краткосрочные характеристики могут благоприятствовать другим взаимодействующим базовым станциям.

  • В совместной передаче (JT) данные UE передаются от нескольких базовых станций одновременно. Это может быть когерентным или некогерентным. Когерентный JT совместно предваряет передачи от нескольких TP, чтобы позволить приемнику достичь когерентного объединения передачи. В некогерентном JT каждый TP предваряет передачу независимо, поэтому приемнику доступен только коэффициент усиления степени.

Сеть использует информацию о состоянии канала (CSI), сообщенную UE или выведенную из передач восходящей линии связи TDD, чтобы принять решения о передаче CoMP. UE осуществляет обратную связь с несколькими отчетами, каждый из которых соответствует различным гипотезам относительно решений о передаче взаимодействующих базовых станций. Для предоставления отчета UE сконфигурировано с процессом CSI. Процесс CSI состоит из ресурса Опорный Сигнал (CSI-RS), ресурса CSI interference Measurement (CSI-IM) и механизма отчетности. Для отчетов CSI сеть может конфигурировать UE с четырьмя процессами CSI. Для каждого процесса CSI UE сообщает вычисленные индикаторы CSI по запросу сети:

  • Индикатор качества канала (CQI)

  • Индикатор ранга (RI)

  • Матричный индикатор прекодера (PMI)

Для получения дополнительной информации об отчетности CQI/RI/PMI см. Примеры проверки соответствия индикатора ранга (RI) и проверки соответствия индикатора качества канала (CQI).

Этот пример показывает простой сценарий DPS для передачи PDSCH к UE. Взаимодействующий набор содержит две точки TP1 и TP2 передачи, каждая из которых способна передавать PDSCH к UE. TP1 является обслуживающей камерой для UE. Сеть выбирает точку передачи PDSCH и схему модуляции и кодирования, используя CQI, сообщенный UE. Следующая схема показывает принцип операции DPS в этом примере. Обе точки передачи передают CSI-RS и специфический для ячейки опорный сигнал (CRS). Обслуживающая камера также передает управляющую информацию нисходящей линии связи для UE в PDCCH. Точка передачи PDSCH может изменить подкадр на субкадр, чтобы использовать преимущества мгновенных условий канала. На схеме точка передачи PDSCH изменяется с TP1 в подкадре n для TP2 в подкадрах n+1.

В этом примере процессы CSI и точки передачи конфигурируются в соответствии с требованиями теста соответствия «Требования к отчетности CQI с несколькими процессами CSI» в TS36.101. 9.3.6.1 [1]. Этот пример отличается от этого теста соответствия выбором одной из двух возможных точек передачи PDSCH на основе самой высокой сообщаемой широкополосной CQI из любой точки передачи. В этом тесте соответствия фиксирована точка передачи PDSCH. Кроме того, задержка отчетности CQI не выполняется.

Управление симуляцией

В этом примере точка передачи PDSCH может быть динамически выбрана или прикреплена к обслуживающей камере, TP1, используя параметр dpsOperation. Используйте этот параметр, чтобы исследовать влияние DPS на пропускную способность.

dpsOperation = true; % Enable DPS {true,false}
totSubframes = 150;  % Number of subframes to simulate

Строения точки передачи

Две точки передачи заданы и сконфигурированы согласно TS36.101 таблицы 9.3.6.1-1 [1]: TP1 является макроячекой (обслуживающей камерой) и TP2 является взаимодействующей базовой станцией, такой как удаленная радиоголовка. Массив структур enb содержит параметры для обеих точек передачи.

% Transmission point 1 cell-wide settings
enb = struct;
enb.NDLRB = 50;
enb.CellRefP = 2;
enb.DuplexMode = 'FDD';
enb.CFI = 3;
enb.CyclicPrefix = 'Normal';
enb.NFrame = 0;
enb.NCellID = 0;

% PDSCH configuration for transmission mode 10 (TM10)
enb.PDSCH.TxScheme = 'Port7-14';
enb.PDSCH.NLayers = 1;
enb.PDSCH.RNTI = 1;
enb.PDSCH.NSCID = 0;
enb.PDSCH.Modulation = {'16QAM'};
enb.PDSCH.Rho = 0;
enb.PDSCH.RV = 0;
enb.PDSCH.NTurboDecIts = 5;
enb.PDSCH.PRBSet = (0:enb.NDLRB-1).';
enb.PDSCH.NTxAnts = 4;
enb.PDSCH.W = lteCSICodebook(enb.PDSCH.NLayers,enb.PDSCH.NTxAnts,0).';
enb.PDSCH.AltCodebook4Tx = 'Off';
enb.PDSCH.CSI = 'On';

Строение для TP2 основано на TP1. При необходимости настраиваются различные параметры ячеек.

enb = repmat(enb,2,1);
enb(2).NCellID = 6;
enb(2).PDSCH.NTxAnts = 2;
enb(2).PDSCH.W = lteCSICodebook(enb(2).PDSCH.NLayers,enb(2).PDSCH.NTxAnts,0).';

Гипотеза передачи, ресурсы CSI и процессы CSI

Когда две координационные точки передачи используют DPS, PDSCH может быть передан как от TP1, так и от TP2. Когда PDSCH передается одной точкой передачи в UE, например TP1, существуют две опции передачи для другой точки передачи, TP2. Первая опция состоит в том, чтобы обслуживать другие UE, использующие те же ресурсы, таким образом препятствуя передаче PDSCH от TP1. Вторая опция состоит в том, чтобы отключить передачу в этих ресурсах, таким образом, не мешая передаче PDSCH от TP1. Эти опции сгруппированы в гипотезы передачи. В этом примере четыре гипотезы передачи проверяются сетью:

               TP1 Hypothesis       TP2 Hypothesis
------------------------------------------------------
Hypothesis 0:  Transmitting PDSCH   Muting
Hypothesis 1:  Muting               Transmitting PDSCH
Hypothesis 2:  Transmitting PDSCH   Interfering
Hypothesis 3:  Interfering          Transmitting PDSCH

Хотя в этом примере проверяются четыре гипотезы, передачи PDSCH, сделанные к UE, соответствуют только гипотезам 2 или 3.

Чтобы предоставить сети CSI для этих гипотез передачи, в UE сконфигурированы два ресурса CSI-RS и три ресурса CSI-IM. Процессы CSI используют эти ресурсы, чтобы сообщить CSI для каждой гипотезы.

В следующих разделах ресурсы и процессы CSI сконфигурированы, чтобы протестировать эти четыре гипотезы передачи.

Ресурсы CSI-RS

Уникальная CSI-RS передается каждой взаимодействующей базовой станцией. UE сконфигурировано с двумя ресурсами CSI-RS, чтобы предоставить оценки качества канала, по одному для каждой точки передачи:

  • CSI-RS # 0: передача от TP1

  • CSI-RS # 1: передача от TP2

Каждый CSI-RS определяется строением, периодом и скремблирующими тождествами CSI-RS. Количество эталонных портов CSI является количеством передающих антенн. Для этой симуляции периоды ресурсов CSI-RS и CSI-IM должны быть одинаковыми. Они параметризованы SimCSIPeriod.

SimCSIPeriod = [5 1]; % [Tcsi-rs Dcsi-rs]

% CSI-RS resource: {CSI-RS #0, CSI-RS #1}
SimCSIRS.CSIRSConfig = [0 5];                       % CSI-RS configuration
SimCSIRS.CSIRSPeriod = {SimCSIPeriod,SimCSIPeriod}; % CSI-RS period
SimCSIRS.NCSIID = [10 16];                          % CSI-RS scrambling identity
SimCSIRS.CSIRefP = [enb(1).PDSCH.NTxAnts enb(2).PDSCH.NTxAnts];

Ресурсы CSI-IM

Ресурсы CSI-IM описывают набор ресурсных элементов (RE), над которыми UE измеряет среднюю степень. Эти измерения используются для оценки интерференции для вычислений CSI. Для измерения помех при передаче TP требуются три CSI-IM:

  • CSI-IM # 0: Измерение фонового шума при отключении обеих TP

  • CSI-IM # 1: Измерение TP2 помех

  • CSI-IM # 2: Измерение TP1 интерференции

Каждый CSI-IM определяется строением и периодом. Обратите внимание, что строения отличаются от строений CSI-RS, но периоды совпадают.

% CSI-IM resource: {CSI-IM #0, CSI-IM #1, CSI-IM #2}
SimCSIIM.ZeroPowerCSIRSConfig = [2 6 1];
SimCSIIM.ZeroPowerCSIRSPeriod = {SimCSIPeriod,SimCSIPeriod,SimCSIPeriod};

Процессы CSI

Четыре процесса сконфигурированы, чтобы протестировать четыре гипотезы передачи. Они используют ресурсы CSI-RS и CSI-IM, описанные выше:

            TP1 Hypothesis      TP2 Hypothesis      CSI-RS     CSI-IM
------------------------------------------------------------------------
Process 0:  Transmitting PDSCH  Muting              CSI-RS #0  CSI-IM #0
Process 1:  Muting              Transmitting PDSCH  CSI-RS #1  CSI-IM #0
Process 2:  Transmitting PDSCH  Interfering         CSI-RS #0  CSI-IM #1
Process 3:  Interfering         Transmitting PDSCH  CSI-RS #1  CSI-IM #2

Процесс определяется ресурсом CSI-RS, ресурсом CSI-IM и режимом отчетности. Режим отчетности CSI, режим отчетности PMI и ограничение подмножества кодовой книги для каждого процесса конфигурируются согласно TS36.101 таблицы 9.3.6.1-1 [1]. Ограничение подмножества кодовой книги для каждого процесса ограничивает выбор PMI одним PMI, поэтому PMI и RI отчетность не требуется.

% {CSI Process #0, CSI Process #1, CSI Process #2, CSI Process #3}
SimCSIProcess.CSIRSResource  = [1 2 1 2]; % CSI-RS resources index (1 based)
SimCSIProcess.CSIIMResource  = [1 1 2 3]; % CSI-IM resources index (1 based)
SimCSIProcess.CSIMode        = {'PUCCH 1-1','PUSCH 3-1','PUSCH 3-1','PUSCH 3-1'}; % CSI reporting modes
SimCSIProcess.PMIMode        = {'Wideband' ,'Wideband' ,'Wideband','Wideband'};   % PMI reporting modes
SimCSIProcess.CodebookSubset = {'0x0000000000000001','000001','0x0000000000000001','000001'}; % Codebook subset restrictions

В этой симуляции сетью реализуются только две из четырех гипотез; Передача PDSCH от TP1 или от TP2 с другими помехами TP. Поэтому для принятия решения о передаче используется только обратная связь от процессов 2 и 3 CSI.

Канал с замираниями и ОСШ Строения

ОСШ для каждой передачи на UE определен в TS36.101 таблице 9.3.6.1-1 [1]. Шумовая степень определяется с помощью Noc.

snrTP = [11 8]; % SNR of received transmission from TP1 and TP2
Noc = -98;      % dBm/15kHz average power spectral density

Канал с замираниями сконфигурирован между TP1 и UE и TP2 и UE. Массив структур chcfg параметризирует каналы из TP1 и TP2.

% Channel between TP1 and UE
ofdmInfo = lteOFDMInfo(enb(1));
chcfg = struct;
chcfg.DelayProfile = 'EPA';
chcfg.NRxAnts = 2;
chcfg.DopplerFreq = 5;
chcfg.MIMOCorrelation = 'Low';
chcfg.SamplingRate = ofdmInfo.SamplingRate;
chcfg.InitPhase = 'Random';
chcfg.ModelType = 'GMEDS';
chcfg.NTerms = 16;
chcfg.NormalizeTxAnts = 'On';
chcfg.NormalizePathGains = 'On';
chcfg.Seed = 1;

% Channel between TP2 and UE
chcfg = repmat(chcfg,2,1);
chcfg(2).Seed = 2;

% Calculate the size of the received waveform
rxWaveformSize = [chcfg(1).SamplingRate*1e-3+15 chcfg(1).NRxAnts];

Оценка канала Строения

UE должны использовать два опорных сигналов: CSI-RS и DM-RS. Для оценки каждого опорного сигнала требуются два отдельных строений оценки канала. Здесь кубическая интерполяция будет использоваться с окном усреднения 1 на 2 RE. Это конфигурирует устройство оценки канала, чтобы использовать специальный режим, который обеспечивает способность сжимать и ортогонализировать передачи CSI-RS и DMRS.

% CSI-RS estimation
ceccsi.FreqWindow = 1;
ceccsi.TimeWindow = 2;
ceccsi.InterpType = 'cubic';
ceccsi.PilotAverage = 'UserDefined';
ceccsi.InterpWinSize = 1;
ceccsi.InterpWindow = 'Causal';
ceccsi.Reference = 'CSIRS';

% DM-RS estimation
cecdmrs = ceccsi;
cecdmrs.Reference = 'DMRS';

Параметризация точки передачи для оценки и отчетности CSI

В этом разделе точки передачи параметризованы из сконфигурированных ресурсов CSI-RS и ресурсов CSI-IM для генерации CSI-RS и отображения PDSCH. Соответствующие параметры установлены в строение массиве структур enb.

Ресурсы CSI-RS

Обе точки передачи параметризованы со всеми CSI-RS, сконфигурированными в UE.

% Set TP1 and TP2 CSI-RS configuration
for enbIdx = 1:2
    enb(enbIdx).CSIRefP = SimCSIRS.CSIRefP;
    enb(enbIdx).CSIRSConfig = SimCSIRS.CSIRSConfig;
    enb(enbIdx).CSIRSPeriod = SimCSIRS.CSIRSPeriod;
    enb(enbIdx).NCSIID = SimCSIRS.NCSIID;
end

Ресурсы ZP CSI-RS

Ресурсы CSI-RS с нулевой степенью (ZP) препятствуют сопоставлению PDSCH с набором RE. Поэтому ZP CSI-RS используются для отключения RE в каждой передаче TP PDSCH, чтобы позволить сконфигурированному CSI-IM измерить помехи для различных гипотез.

Схема ниже иллюстрирует, как ZP CSI-RS сконфигурированы, чтобы позволить ресурсам CSI-IM измерять помехи. CSI-IM # 0 измеряет шум, когда ни одна TP не передает в ресурсе 2. Поэтому, чтобы предотвратить передачу TP в этом ресурсе, ZP CSI-RS сконфигурирован в ресурсе 2 для обоих TP. Это останавливает соответствие PDSCH этому ресурсу, мутируя передачу. ZP CSI-RS для каждой TP также сконфигурирован для отображения вокруг CSI-RS координирующей TP для предотвращения помех. CSI-IM # 1 и CSI-IM # 2 измеряют индивидуальные помехи, вызванные TP2 и TP1 в ресурсах 6 и 1. Поэтому ZP CSI-RS для TP1 сконфигурирован, чтобы предотвратить передачу PDSCH в ресурсе 6, чтобы разрешить измерение с CSI-IM # 1. ZP CSI-RS для TP2 сконфигурирован, чтобы предотвратить передачу PDSCH в ресурсе 1, чтобы разрешить измерение с CSI-IM # 2.

ZP CSI-RS сконфигурированы с 16-битной растровой картой. Каждый бит управляет тем, следует ли отключать набор RE (1) или разблокировать (0). Для каждой точки передачи строение ZP CSI-RS создаётся из необходимых строений CSI-IM и строения CSI-RS, используемой координационной точкой передачи.

% ZP CSI-RS resource for TP1
zp1 = '0000000000000000';                          % Assume all CSI configurations unmuted
zp1(SimCSIIM.ZeroPowerCSIRSConfig([1 2])+1) = '1'; % Mute CSI-IM #0,1 (background & TP2 interference)
zp1(SimCSIRS.CSIRSConfig(2)+1) = '1';              % Mute CSI-RS #1 (TP2 transmission)

% Add ZP CSI-RS resource to TP1 parameters
enb(1).ZeroPowerCSIRSConfig = zp1;
enb(1).ZeroPowerCSIRSPeriod = SimCSIPeriod;

% ZP CSI-RS resource for TP2
zp2 = '0000000000000000';                          % Assume all CSI configurations unmuted
zp2(SimCSIIM.ZeroPowerCSIRSConfig([1 3])+1) = '1'; % Mute CSI-IM #0,2 (background & TP1 interference)
zp2(SimCSIRS.CSIRSConfig(1)+1) = '1';              % Mute CSI-RS #0 (TP1 transmission)

% Add ZP CSI-RS resource to TP2 parameters
enb(2).ZeroPowerCSIRSConfig = zp2;
enb(2).ZeroPowerCSIRSPeriod = SimCSIPeriod;

Параметризация UE для оценки и отчетности CSI

В этом примере процессы CSI-RS, CSI-IM и CSI представлены в UE как массивы структур. Каждый элемент массива структур конфигурирует один ресурс или процесс. В этом разделе эти массивы структур создаются из сконфигурированных ресурсов CSI-RS и ресурсов CSI-IM.

Массив структур csirs содержит параметризацию ресурса CSI-RS. Это основано на параметрах обслуживающей камеры, но параметры CSI-RS сконфигурированы так, чтобы использовать соответствующий ресурс, заданный в настройках симуляции.

numCSIRS = numel(SimCSIRS.CSIRSConfig);
csirs = repmat(enb(1),numCSIRS,1);
for idx = 1:numCSIRS
    csirs(idx).CSIRefP = SimCSIRS.CSIRefP(idx);
    csirs(idx).CSIRSConfig = SimCSIRS.CSIRSConfig(idx);
    csirs(idx).CSIRSPeriod = SimCSIRS.CSIRSPeriod{idx};
    csirs(idx).NCSIID = SimCSIRS.NCSIID(idx);
end

Массив структур csiim содержит параметризацию ресурса CSI-IM. Это основано на параметрах обслуживающей камеры, но параметры CSI-IM сконфигурированы, чтобы использовать соответствующий ресурс, предоставленный в настройках симуляции. Как ресурс CSI-IM является строением ZP CSI-RS, CSIRSPeriod параметру задано значение 'Off' таким образом, для измерения интерференции используются только ZP CSI-RS RE.

numCSIIM = numel(SimCSIIM.ZeroPowerCSIRSConfig);
csiim = repmat(enb(1),numCSIIM,1);
for idx = 1:numCSIIM
    csiim(idx).ZeroPowerCSIRSConfig = SimCSIIM.ZeroPowerCSIRSConfig(idx);
    csiim(idx).ZeroPowerCSIRSPeriod = SimCSIIM.ZeroPowerCSIRSPeriod{idx};
    csiim(idx).CSIRSPeriod = 'Off';
end

Массив структур process содержит параметризацию процесса CSI. Это основано на параметрах обслуживающей камеры. Параметры CSIRSIdx и CSIIMIdx используются для индексации ресурсов CSI-RS и CSI-IM для вычисления CSI. Режимы отчетов настраиваются для каждого процесса из настроек симуляции. CQI, сообщенный UE для каждого процесса CSI, выбирается с использованием оцененного отношения сигнал/помеха плюс шум (SINR). Самые низкие SINR, рекомендуемые для достижения 90% пропускной способности для каждого индекса CQI в этом сценарии, определяются вектором SINRs. Этот вектор используется для параметризации выбора CQI для каждого процесса CSI.

SINRs = [1.3 1.3 2.3 3.7 5 6.8 9.2 10.9 13 14.8 17.1 18.9 21 23.9 24.3];
numCSIProcesses = numel(SimCSIProcess.CSIRSResource);
process = repmat(enb(1),numCSIProcesses,1);
for idx = 1:numCSIProcesses
    % Index CSI-RS and CSI-IM resources used by the process
    process(idx).CSIRSIdx = SimCSIProcess.CSIRSResource(idx);
    process(idx).CSIIMIdx = SimCSIProcess.CSIIMResource(idx);

    % Reporting configuration
    process(idx).PDSCH.CSIMode = SimCSIProcess.CSIMode{idx};
    process(idx).PDSCH.PMIMode = SimCSIProcess.PMIMode{idx};
    process(idx).PDSCH.CodebookSubset = SimCSIProcess.CodebookSubset{idx};
    process(idx).PDSCH.SINRs90pc = SINRs;

    % CSI-RS configuration for CSI estimation
    process(idx).CSIRefP = SimCSIRS.CSIRefP(process(idx).CSIRSIdx);
    process(idx).CSIRSConfig = SimCSIRS.CSIRSConfig(process(idx).CSIRSIdx);
    process(idx).CSIRSPeriod = SimCSIRS.CSIRSPeriod(process(idx).CSIRSIdx);
    process(idx).NCSIID = SimCSIRS.NCSIID(process(idx).CSIRSIdx);
end

Область Setup

Необходимая степень сигнала, чтобы удовлетворить ОСШ для каждой TP, вычисляется ниже.

% Convert to linear and Watts
nocLin = 10.^(Noc/10)*(1e-3); % linear in Watts
% Take into account number of antennas and FFT (OFDM) scaling
No = sqrt(nocLin/(2*double(ofdmInfo.Nfft)));
NocW = 10.^((Noc-30)/10); % convert to W/15kHz

% SINR = Es/Noc TS 36.101 Sec. 8.1.1
NocTot = NocW; % W/15kHz
snrLin = 10.^(snrTP/10);
Es = snrLin*NocTot; % W/15kHz

% Amplitude scaling factors
K = sqrt(Es);

Переменные, необходимые для симуляции, инициализируются в этом разделе.

% Set the random number seed
rng('default');

% Initialize containers which store the channel estimates interference
% measurements for CSI-RS and CSI-IM resources
csirshest = cell(numCSIRS,1);
csiimnest = zeros(numCSIIM,1);

% Initialize a buffer to store CQI reports for each process. Size buffer
% for subband CQI reporting.
numCSIReports = ceil(totSubframes/SimCSIPeriod(1));
pmiInfo = ltePMIInfo(process(1),setfield(process(1).PDSCH,'PMIMode','Subband')); %#ok<SFLD>
cqiBuffer = ones(numCSIReports,pmiInfo.NSubbands+1,numCSIProcesses);

% Initialize buffers to store the CRC, BER and TP selected
crcBuffer = cell(totSubframes,1);
berBuffer =  zeros(totSubframes,2);
tpBuffer = zeros(totSubframes,1);

csiReportIdx = 1; % Index of CSI report
lastOffset = 0;   % Initialize overall frame timing offset
frameOffset = 0;  % Initialize frame timing offset

Область Цикла

Эта симуляция является запуском субкадром по субкадрам. Для каждого подкадра выполняются следующие шаги:

  • Форма волны во временном интервале rxWaveform инициализируется шумом. К этому будет добавлена полученная форма волны от TP1 и TP2.

  • PDSCH TP выбирается с помощью широкополосного CQI, сообщенного UE.

  • Для каждой TP в свою очередь генерируется субкадр, содержащий соответствующие синхронизации и опорные сигналы и TM10 OCNG.

  • PDSCH для UE генерируется из TP1 или TP2 в одном поддиапазоне.

  • Два субкадра модулированы OFDM, прошли через канал с замираниями и объединены.

  • Принятая форма волны в UE синхронизируется и демодулируется OFDM.

  • Сконфигурированные измерения CSI-RS и CSI-IM выполняются UE

  • Отчет CSI генерируется с использованием ресурсов CSI-RS и CSI-IM для сконфигурированных процессов CSI.

  • PDSCH демодулируется.

for nsf = 0:totSubframes-1
    % Initialize UE receive waveform with noise
    rxWaveform = No*complex(randn(rxWaveformSize),randn(rxWaveformSize));

    % Select PDSCH TP based on the highest reported wideband CQI
    bufferIdx = mod(csiReportIdx-2,numCSIReports)+1; % Buffered CQI to use
    if dpsOperation
        widebandCQI = permute(cqiBuffer(:,1,:),[1 3 2]);
        if (widebandCQI(bufferIdx,3)>=widebandCQI(bufferIdx,4))
            pdschTransmissionPoint = 1; % TP1
        else
            pdschTransmissionPoint = 2; % TP2
        end
    else
        pdschTransmissionPoint = 1; %#ok<UNRCH> % TP1
    end

    % Generate TP1 and TP2 transmissions.
    % Each transmission contains cell-specific reference signal,
    % synchronizing signals, CSI-RS and TM10 OCNG. One transmission
    % contains the PDSCH for the UE.
    for enbIdx = 1:2
        % Update subframe number for each transmission
        enb(enbIdx).NSubframe = nsf;

        % Turn off the CSI resource not transmitted by this TP
        tpenb = enb(enbIdx);
        tpenb.CSIRSPeriod{mod(enbIdx,2)+1} = 'Off';

        % Blank subframe; CRS, PSS and SSS
        sf = lteResourceGrid(tpenb,tpenb.PDSCH.NTxAnts);
        crsInd = lteCellRSIndices(tpenb); % Cell-specific reference signal
        sf(crsInd) = lteCellRS(tpenb);
        pssInd = ltePSSIndices(tpenb);    % Primary synchronizing signal
        sf(pssInd) = ltePSS(tpenb);
        sssInd = lteSSSIndices(tpenb);    % Secondary synchronizing signal
        sf(sssInd) = lteSSS(tpenb);

        % CSI-RS resource
        csitp = tpenb;
        csitp.ZeroPowerCSIRSPeriod = 'Off';
        csiInd = lteCSIRSIndices(csitp);
        sf(csiInd) = lteCSIRS(csitp);

        % TM10 OCNG transmitted apart from subframes containing PSS/SSS/PBCH
        if isempty(pssInd)
            tpenb.PDSCH.RNTI = 0;

            % Add OCNG at DMRS locations
            oncngInd = lteDMRSIndices(tpenb,tpenb.PDSCH);
            ocngSym = lteDMRS(tpenb,tpenb.PDSCH);
            sf(oncngInd) = ocngSym;

            % Add OCNG for PDSCH symbols
            [oncngInd,ocngInfo] = ltePDSCHIndices(tpenb,tpenb.PDSCH,tpenb.PDSCH.PRBSet);
            ocngSym = ltePDSCH(tpenb,tpenb.PDSCH,randi([0 1],ocngInfo.G,1));
            sf(oncngInd) = ocngSym;
        end

        % PDSCH and DMRS Transmission to UE from either TP1 or TP2.
        % The transport block size and modulation scheme for transmission
        % are selected using the reported CQI for the appropriate CSI
        % process. The PDSCH must be mapped around the ZP CSI-RS configured
        % for the UE and the ZP CSI-RS of the TP. Only transmit PDSCH for
        % subframes not containing CSI resources or PSS/SSS as per TS36.101
        % Table 9.3.6.1-1.
        if ~isempty(pssInd)||~isempty(csiInd)
            tbs = 0; % Transport block size is 0 as no PDSCH transmitted
        elseif (pdschTransmissionPoint==enbIdx)
            tpBuffer(nsf+1) = pdschTransmissionPoint;
            % Get relevant configuration for transmission point and CQI to
            % use.
            txenb = enb(enbIdx);
            cqi = cqiBuffer(bufferIdx,:,enbIdx+2);

            % Select subband for PDSCH transmission.
            % The PDSCH is transmitted in the highest differential CQI
            % subband. Subbands less than full size are excluded.
            partialSubband = (pmiInfo.k*pmiInfo.NSubbands>txenb.NDLRB);
            [~,idx] = max(cqi(2:(end-partialSubband))); % Maximum differential
            sbCandidates = find(cqi(2:(end-partialSubband))==cqi(idx+1));
            sb = sbCandidates(randi([1 numel(sbCandidates)],1,1));
            cqi = cqi(1)+cqi(1+sb); % Calculate SB PMI from wideband and differential
            txenb.PDSCH.PRBSet = ((sb-1)*pmiInfo.k+(0:(pmiInfo.k-1))).'; % PRB allocation for subband

            % Select MCS according to CQI using TS36.101 Table A.4-1 CSI
            % RMC RC.12 FDD (MCS.13), which defines the relationship
            % between CQI indices and MCS indices
            imcsTable = [-1 0 0 1 3 5 7 10 12 14 17 19 21 22 24 25];
            imcs = imcsTable(cqi+1);

            % Determine TBS and modulation order, fixed RI (1) and PMI (0).
            % Generate PDSCH for only a non-zero transport block size.
            [itbs,modulation] = lteMCS(imcs);
            tbs = double(lteTBS(size(txenb.PDSCH.PRBSet,1),itbs));
            if any(tbs)
                if ~iscell(modulation)
                    modulation = {modulation};
                end
                txenb.PDSCH.NLayers = 1;
                txenb.PDSCH.Modulation = modulation;
                txenb.PDSCH.W = lteCSICodebook(txenb.PDSCH.NLayers,txenb.PDSCH.NTxAnts,0).';

                % PDSCH mapping
                [pdschInd,pdschInfo] = ltePDSCHIndices(txenb,txenb.PDSCH,txenb.PDSCH.PRBSet);

                % Generate DL-SCH data
                txtrblk = arrayfun(@(x)randi([0 1],x,1),tbs,'UniformOutput',false);
                cw = lteDLSCH(txenb,txenb.PDSCH,pdschInfo.G,txtrblk);

                % Generate PDSCH symbols with cell identity of serving cell
                % for correct scrambling
                txenb.NCellID = enb(1).NCellID;
                pdschSym = ltePDSCH(txenb,txenb.PDSCH,cw);

                % Create UE specific DMRS configuration to allow for
                % scrambling code to change depending on transmission point
                txenb.NCellID = enb(1).NCellID;
                if pdschTransmissionPoint == 2
                    txenb.NCellID = enb(2).NCellID;
                end
                dmrsInd = lteDMRSIndices(txenb,txenb.PDSCH);
                dmrsSym = lteDMRS(txenb,txenb.PDSCH);

                % Map PDSCH and DMRS
                sf(pdschInd) = pdschSym;
                sf(dmrsInd) = dmrsSym;
            end
        end

        % OFDM modulate, pass through a fading channel, scale for SNR and
        % add to existing receive waveform
        txWaveform = lteOFDMModulate(tpenb,sf);
        txWaveform = [txWaveform; zeros(15,size(txWaveform,2))]; %#ok<AGROW>
        chcfg(enbIdx).InitTime = nsf/1e3;
        rxWaveform = rxWaveform + K(enbIdx)*lteFadingChannel(chcfg(enbIdx),txWaveform);
    end

    % Receiver Synchronization and OFDM demodulation
    % Synchronize using the PSS/SSS of the serving cell (TP1) and OFDM
    % demodulate
    if ~isempty(pssInd)
        frameOffset = lteDLFrameOffset(enb(1),rxWaveform);
        if (frameOffset > 25)
            frameOffset = lastOffset;
        end
        lastOffset = frameOffset;
    end
    rxWaveform = rxWaveform(1+frameOffset:end,:);
    rxsf = lteOFDMDemodulate(enb(1),rxWaveform);

    % Calculate CSI-RS Estimates
    % Generate channel estimates for CSI-RS resources configured at the UE.
    for idx = 1:numCSIRS
        % Calculate channel estimate
        csirs(idx).NSubframe = nsf;
        csirshest{idx} = lteDLChannelEstimate(csirs(idx),csirs(idx).PDSCH,ceccsi,rxsf);
    end

    % Calculate interference using CSI-IM
    % For each CSI-IM resource calculate the energy in resource elements.
    % This is the noise+interference estimate.
    for idx = 1:numCSIIM
        % Calculate noise and interference estimate
        csiim(idx).NSubframe = nsf;
        imIndices = lteCSIRSIndices(csiim(idx));
        imSym = lteExtractResources(imIndices,rxsf);
        csiimnest(idx) = mean(abs(imSym(:)).^2);
    end

    % CSI Process Reporting
    % When estimated CSI resource elements are not zero calculate CSI
    if ~isempty(csiInd)
        % For each CSI process calculate CSI feedback
        for idx = 1:numCSIProcesses
            % Update subframe number
            process(idx).NSubframe = nsf;

            % Extract CSI-RS estimate and CSI-IM estimate for process
            hest = csirshest{process(idx).CSIRSIdx};
            nest = csiimnest(process(idx).CSIIMIdx);

            % Calculate CQI/PMI/RI, condition CQI on PMI/RI selection
            [ri,PMISet] = lteRISelect(process(idx),process(idx).PDSCH,hest,nest);
            process(idx).PDSCH.PMISet = PMISet;
            process(idx).PDSCH.NLayers = ri;
            process(idx).PDSCH.NCodewords = min(ri,2);
            [cqi,sinrs] = lteCQISelect(process(idx),process(idx).PDSCH,hest,nest);
            cqiBuffer(csiReportIdx,1:numel(cqi),idx) = cqi;
        end

        % New CSI report
        csiReportIdx = csiReportIdx+1;
    end

    % PDSCH Demodulation
    % If the transport block size is not 0, a PDSCH exists to decode
    if any(tbs)
        % Estimate channel using DMRS. To use the correct scrambling
        % sequence for the DMRS use the configuration for the active TP.
        [dmrshest,dmrsnest] = lteDLChannelEstimate(txenb,txenb.PDSCH,cecdmrs,rxsf);

        % Extract PDSCH symbols from received grid and channel estimate
        [sym,symhest] = lteExtractResources(pdschInd,rxsf,dmrshest);

        % Scale the received symbols by the PDSCH power factor Rho and
        % decode the PDSCH with the CellID for the serving cell
        sym = sym*(10^(-txenb.PDSCH.Rho/20));
        txenb.NCellID = enb(1).NCellID;
        [cws,recsym] = ltePDSCHDecode(txenb,txenb.PDSCH,sym,symhest,dmrsnest);
        % Scale cws by 1/K(1) to avoid numerical issues with DLSCH decoding
        cws = cellfun(@(x) x*(1/K(1)),cws,'UniformOutput',false);
        [trblk,crc] = lteDLSCHDecode(txenb,txenb.PDSCH,tbs,cws,[]);

        % Store CRC and BER
        crcBuffer{nsf+1} = double(crc);
        berBuffer(nsf+1,:) = [sum(trblk{1}~=txtrblk{1}),numel(trblk{1})];
    end
end

Заключение и результаты

Для Блока симуляции отображаются значения коэффициента ошибок (BLER) и пропускной способности PDSCH. Также создаются два рисунков:

Первый рисунок строит графики сообщенного CQI широкого диапазона для каждого процесса CSI в течение длительности симуляции. Сообщенный CQI процесса 0 и процесса 1 показывает, что условия канала благоприятствуют TP1 во время середины симуляции, но TP2 в противном случае, так как сообщенный CQI превышает TP1. Сообщенный CQI процессов 2 и 3 показывает аналогичный шаблон, но сообщенный CQI ниже, чем для процессов 0 и 1. Это связано с тем, что эти процессы предполагают дополнительную интерференцию от TP.

Второй рисунок изображает выбранную точку передачи PDSCH и сообщенный широкополосный CQI из двух процессов, используемых для принятия решения точки передачи. Этот рисунок показывает, TP1 был выбран для передачи PDSCH во время середины симуляции, поскольку сообщенный CQI благоприятствовал этой точке передачи.

hCoMPResults(totSubframes,SimCSIPeriod,crcBuffer,berBuffer,cqiBuffer,tpBuffer);
BLER: 0.044444 (target is 0.1)
Throughput: 266.875 kbps

Этот пример показал, как несколько процессов CSI обеспечивают обратную связь для операции DPS CoMP. Данные UE были переданы от одного из двух взаимодействующих eNodeB, на основе широкополосного CQI, сообщенного UE. Эти примеры моделировали сценарий края ячейки, где DPS обеспечивает коэффициент усиления пропускной способности для UE. Попробуйте отключить DPS, задав dpsOperation = false и обратите внимание на уменьшение пропускной способности.

Приложение

В этом примере используется следующая вспомогательная функция:

Избранная библиография

  1. 3GPP TS 36.101 «Радиопередача и прием пользовательского оборудования (UE)»

  2. 3GPP ТС 36.211 «Физические каналы и модуляция»

  3. Эрик Дальман, 4G: LTE/LTE-Advanced for Mobile Broadband, Elsevier 2014

  4. Joydeep Acharya, Разнородные сети в LTE-Advanced, Wiley 2014