exponenta event banner

Выбор динамических точек CoMP с несколькими процессами CSI

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

Введение

Скоординированный многоточечный (CoMP) термин, используемый для описания схем, в которых группа базовых станций динамически взаимодействует для уменьшения помех или даже превращения этих помех в полезный сигнал. Группа координирующих базовых станций называется взаимодействующим набором. COMP в LTE Release 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 (CSI-RS), ресурса измерения помех CSI (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

Конфигурации точек передачи

Два пункта передачи определены и настроены согласно Таблице 9.3.6.1-1 [1] TS36.101: 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, сообщая о способе и ограничении подмножества шифровальной книги для каждого процесса настроены согласно Таблице 9.3.6.1-1 [1] TS36.101. Ограничение поднабора кодовой книги для каждого процесса ограничивает выбор 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.

Конфигурация канала с замиранием и SNR

SNR для каждой передачи в 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' поэтому для измерения помех используются только RE ZP CSI-RS.

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

Настройка моделирования

Требуемая мощность сигнала для удовлетворения SNR для каждой 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.

  • TP PDSCH выбирается с использованием широкополосного 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

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

Пропускная способность Block Error Rate (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 обеспечивают обратную связь для работы CoMP DPS. Данные UE передавались от одного из двух взаимодействующих eNaseB на основе широкополосного CQI, сообщаемого UE. Эти примеры моделируют сценарий на границе соты, где DPS обеспечивает усиление пропускной способности для UE. Попробуйте отключить DPS с помощью параметра dpsOperation = false и обратите внимание на снижение пропускной способности.

Приложение

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

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

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

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

  3. Эрик Дальман, 4G: LTE/LTE-Advanced для мобильного широкополосного доступа, Elsevier 2014

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