В этом примере показано, как несколько процессов информации о состоянии канала (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).';
Когда две координационные точки передачи используют 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 для каждой передачи в 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-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;
В этом примере процессы 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 и обратите внимание на снижение пропускной способности.
В этом примере используется следующая вспомогательная функция:
3GPP ТС 36.101 «Радиопередача и прием пользовательского оборудования (UE)»
3GPP ТС 36.211 «Физические каналы и модуляция»
Эрик Дальман, 4G: LTE/LTE-Advanced для мобильного широкополосного доступа, Elsevier 2014
Joydeep Acharya, разнородные сети в LTE-Advanced, Wiley 2014