Этот пример показывает, как несколько процессов Информации о состоянии канала (CSI) предоставляют сети обратную связь для операции Coordinated Multipoint (CoMP). В этом примере данные об Оборудовании пользователя (UE) передаются от одного из двух сотрудничества eNodeB как часть схемы Dynamic Point Selection (DPS). Решение передачи основано на отчетах Качественной характеристики канала (CQI) от UE.
Скоординированный многоточечный (АККОМПАНЕМЕНТ) термин, использованный, чтобы описать схемы, в которые группа базовых станций динамически сотрудничает, чтобы смягчить интерференцию, или даже превратить эту интерференцию в полезный сигнал. Группу координирования базовых станций называют набором сотрудничества. CoMP в Релизе 11 LTE разработан, чтобы смочь использовать в своих интересах низкую задержку и обратный рейс большой емкости между базовыми станциями в наборе сотрудничества. Поэтому данные для Оборудования пользователя (UE) могут быть доступными в одной или нескольких сотрудничающих базовых станциях.
Существует три категории нисходящего CoMP:
В Скоординированном Scheduling и Beamforming (CS/CB), данные UE только доступны в одной базовой станции в наборе координирования, поэтому PDSCH передается с одной базовой станции. Планирование и адаптация ссылки координируется с помощью информации с других базовых станций в наборе сотрудничества. Другие сотрудничающие базовые станции могут также скоординировать свое планирование и beamforming решения смягчить интерференцию.
В Динамическом выборе точки (DPS) данные UE доступны в нескольких базовых станциях в наборе координирования, но данные только передаются с одной базовой станции за один раз. Передача базовой станции к UE, названному точкой передачи (TP), может быть измененным от подкадра к подкадру, чтобы обеспечить лучшую передачу для UE с переменными условиями канала. Этот сценарий наиболее вероятен в границе ячейки, где долгосрочные характеристики канала способствуют служащей базовой станции, но краткосрочные характеристики могут способствовать другим сотрудничающим базовым станциям.
В Объединенной передаче (JT) данные UE передаются с нескольких базовых станций одновременно. Это может быть когерентным или некогерентным. Когерентный JT совместно передачи предкода от нескольких TPS, чтобы позволить получателю достигать когерентного объединения передачи. В некогерентном 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. Право преимущественной покупки должно служить другому UEs использование тех же ресурсов, таким образом, вмешивающихся в передачу 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 для этих гипотез передачи, два ресурса CSI-RS и три ресурса CSI-IM сконфигурированы в UE. Процессы 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 описывают набор Элементов Ресурса (REs), по которому средняя степень измеряется UE. Эти измерения используются, чтобы оценить интерференцию для вычислений CSI. Три CSI-IM требуется, чтобы измерять интерференцию, когда TPS передает:
CSI-IM № 0: Измерьте фоновый шум, когда оба TPS будут отключены звук
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. Поэтому только обратная связь от процессов CSI 2 и 3 используется для решения передачи.
ОСШ для каждой передачи к UE задан в Таблице 9.3.6.1-1 [1] TS36.101. Шумовая степень задана с помощью 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 REs. Это конфигурирует средство оценки канала, чтобы использовать специальный режим, который гарантирует способность к despread, и ортогонализируйте 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 RS CSI
Ресурсы Zero Power (ZP) CSI-RS препятствуют тому, чтобы PDSCH был сопоставлен с набором REs. Поэтому ZP CSI-RS используется, чтобы отключить звук REs в каждом TP передача PDSCH, чтобы позволить сконфигурированному CSI-IM измерять интерференцию для различных гипотез.
Схема ниже иллюстрирует, как ZP CSI-RS сконфигурирован, чтобы позволить ресурсам CSI-IM измерять интерференцию. CSI-IM № 0 измеряет шум, когда никакой TP не передает в ресурсе 2. Поэтому, чтобы предотвратить передачу TPS в этом ресурсе, ZP CSI-RS сконфигурирован в ресурсе 2 для обоих TPS. Это останавливает 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-битным битовым массивом. Каждый бит управляет, должен ли набор REs быть отключен звук (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'
поэтому, только ZP CSI-RS REs используется, чтобы измерить интерференцию.
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). Самые низкие SINRs, рекомендуемые достигнуть 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
Необходимая степень сигнала удовлетворить ОСШ для каждого 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
Частота появления ошибочных блоков (BLER) и пропускная способность PDSCH отображена на время симуляции. Две фигуры также создаются:
Первая фигура строит широкополосный CQI, о котором сообщают, для каждого процесса CSI по длительности симуляции. CQI, о которых сообщают, процесса 0 и процесса 1 показывают, что условия канала способствуют TP1 в течение середины симуляции, но TP2 в противном случае, когда CQI, о котором сообщают, превышает, чем TP1. CQI, о которых сообщают, процессов 2 и 3 показывают подобный шаблон, но CQI, о котором сообщают, ниже, чем для процессов 0 и 1. Это вызвано тем, что эти процессы принимают добавленную интерференцию от TPS.
Вторая фигура строит выбранную точку передачи 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
и отметьте уменьшение в пропускной способности.
Этот пример использует следующую функцию помощника:
3GPP TS 36.101 "Передача радио оборудования пользователя (UE) и прием"
3GPP TS 36.211 "Физические каналы и модуляция"
Эрик Дэхлмен, 4G: LTE/LTE-Advanced для Мобильной Широкополосной связи, Elsevier 2014
Joydeep Acharya, неоднородные сети в усовершенствованном LTE, Вайли 2014