Этот пример показывает передачу и прием форматов 1 и 2 Физического канала управления восходящей линии связи (PUCCH), включая случай, когда один и тот же физический ресурс разделяется между переданиями Формата 1 и Формата 2 одновременно от двух различных Пользовательских Аппаратов (UE) с использованием LTE Toolbox™.
Этот пример конфигурирует два пользовательских оборудования (UE) для передачи сигнала формата 1 физического канала управления восходящей линии связи (PUCCH) от первого UE и сигнала формата 2 PUCCH от второго UE. Также генерируются соответствующие опорные сигналы демодуляции (DRS). Переданные сигналы передаются через два разных канала с замираниями и добавляются вместе с Additive White Gaussian Noise (AWGN), симулируя прием сигналов от двух UE в eNodeB. Каждый сигнал (то есть тот, который принадлежит каждому UE) затем синхронизируется, SC-FDMA демодулируется, выравнивается, PUCCH демодулируется и затем, наконец, декодируется. Получен график, показывающий, что каналы могут быть оценены независимо для двух различных сигналов, хотя они имеют одни и те же физические ресурсные элементы (RE).
Первый UE конфигурируется с помощью структуры ue1
.
ue1.NULRB = 6; % Number of resource blocks ue1.NSubframe = 0; % Subframe number ue1.NCellID = 10; % Physical layer cell identity ue1.RNTI = 61; % Radio network temporary identifier ue1.CyclicPrefixUL = 'Normal'; % Cyclic prefix ue1.Hopping = 'Off'; % Frequency hopping ue1.Shortened = 0; % Reserve last symbols for SRS transmission ue1.NTxAnts = 1; % Number of transmit antennas
Точно так же структура строения используется для конфигурирования второго UE, ue2
. Эта структура идентична строению ue1
за двумя исключениями:
Нет Shortened
поле, так как это не относится к Формат 2.
Другое значение временного идентификатора радиосети (RNTI) (не используется здесь, так как это относится только к передаче совместно используемого канала физического восходящего канала (PUSCH), но различные UE будут иметь разный RNTI).
ue2.NULRB = 6; % Number of resource blocks ue2.NSubframe = 0; % Subframe number ue2.NCellID = 10; % Physical layer cell identity ue2.RNTI = 77; % Radio network temporary identifier ue2.CyclicPrefixUL = 'Normal'; % Cyclic prefix ue2.Hopping = 'Off'; % Frequency hopping ue2.NTxAnts = 1; % Number of transmit antennas
Для первого UE используется PUCCH формата 1, поэтому соответствующая структура строения pucch1
создается. Значение параметра CyclicShifts
определяет количество циклических сдвигов, используемых PUCCH Format 1 в ресурсных блоках, где должна передаваться смесь Формат 1 и PUCCH Format 2. Значение параметра ResourceSize
определяет размер ресурсов, используемых PUCCH Format 2, эффективно определяя начальное положение передач PUCCH Format 1; здесь мы задаем ResourceIdx=0
который будет использовать первый ресурс PUCCH Format 1.
pucch1.ResourceIdx = 0; % PUCCH resource index pucch1.DeltaShift = 1; % Delta shift pucch1.CyclicShifts = 1; % Number of cyclic shifts pucch1.ResourceSize = 0; % Size of resources allocated to PUCCH Format 2
Для второго UE используется PUCCH формата 2, поэтому соответствующая структура строения pucch2
создается. Значения параметров CyclicShifts
и ResourceSize
те же, что и в строении PUCCH Format 1. Значение ResourceIdx
устанавливается на первый ресурс PUCCH Format 2, что означает, что физические ресурсные блоки, настроенные для PUCCH Format 1 и PUCCH Format 2, будут одинаковыми.
pucch2.ResourceIdx = 0; % PUCCH resource index pucch2.CyclicShifts = 1; % Number of cyclic shifts pucch2.ResourceSize = 0; % Size of resources allocated to PUCCH Format 2
Канал распространения, через который будут переданы два UE, сконфигурирован с использованием структуры channel
. Частота дискретизации канала сконфигурирована так, чтобы соответствовать частоте дискретизации на выходе первого UE; обратите внимание, что та же частота дискретизации используется на выходе второго UE, потому что ue1.NULRB
и ue2.NULRB
те же самые. Когда мы используем это строение канала для каждого UE, Seed
параметр структуры будет установлен по-разному для каждого UE так, чтобы возникали различные условия распространения.
channel.NRxAnts = 4; % Number of receive antennas channel.DelayProfile = 'ETU'; % Delay profile channel.DopplerFreq = 300.0; % Doppler frequency channel.MIMOCorrelation = 'Low'; % MIMO correlation channel.InitTime = 0.0; % Initialization time channel.NTerms = 16; % Oscillators used in fading model channel.ModelType = 'GMEDS'; % Rayleigh fading model type channel.InitPhase = 'Random'; % Random initial phases channel.NormalizePathGains = 'On'; % Normalize delay profile power channel.NormalizeTxAnts = 'On'; % Normalize for transmit antennas % Set sampling rate info = lteSCFDMAInfo(ue1); channel.SamplingRate = info.SamplingRate;
ОСШ задается как где - энергия интересующего сигнала и - степень шума. Степень добавляемого шума может быть определена так, чтобы и нормализуются после демодуляции SC-FDMA для достижения желаемого ОСШ SNRdB
. Шум, добавленный перед демодуляцией SC-FDMA, будет усилен ОБПФ. Усиление является квадратным корнем из размера IFFT. В этой симуляции это принимается во факторе путем деления необходимой степени шума на это значение. В сложение, поскольку действительная и мнимая части шума создаются отдельно перед объединением в комплексные аддитивные белые Гауссовы шумы, амплитуда шума должна быть масштабирована поэтому сгенерированная степень равна 1.
SNRdB = 21.0; % Normalize noise power SNR = 10^(SNRdB/20); N = 1/(SNR*sqrt(double(info.Nfft)))/sqrt(2.0); % Configure random number generators rng('default');
Устройство оценки канала сконфигурировано с использованием структуры cec
. Здесь кубическая интерполяция будет использоваться с окном усреднения 12 на 1 RE. Это конфигурирует устройство оценки канала, чтобы использовать специальный режим, который обеспечивает способность сжимать и ортогонализировать различные перекрывающиеся PUCCH передачи.
cec = struct; % Channel estimation config structure cec.PilotAverage = 'UserDefined'; % Type of pilot averaging cec.FreqWindow = 12; % Frequency averaging window in REs (special mode) cec.TimeWindow = 1; % Time averaging window in REs (Special mode) cec.InterpType = 'cubic'; % Cubic interpolation
Теперь всёсь необходимое строение завершено, PUCCH Format 1 и его DRS сгенерированы. Формат 1 PUCCH содержит индикаторы HARQ hi1
и в этом случае существует 2 индикатора, что означает, что передача будет иметь Формат 1b. DRS Формат 1 не содержит данных.
% PUCCH 1 modulation/coding hi1 = [0; 1]; % Create HARQ indicators disp('hi1:');
hi1:
disp(hi1.');
0 1
pucch1Sym = ltePUCCH1(ue1, pucch1, hi1);
% PUCCH 1 DRS creation
pucch1DRSSym = ltePUCCH1DRS(ue1, pucch1);
DRS Формат 2 содержит индикаторы HARQ hi2
и в этом случае существует 2 индикатора, что означает, что передача будет иметь Формат 2b. Сам Формат 2 содержит закодированную информацию о качестве канала (CQI). Информационный cqi
здесь кодируется и затем модулируется.
% PUCCH 2 DRS modulation hi2 = [1; 1]; % Create HARQ indicators disp('hi2:');
hi2:
disp(hi2.');
1 1
pucch2DRSSym = ltePUCCH2DRS(ue2, pucch2, hi2); % PUCCH 2 coding cqi = [0; 1; 1; 0; 0; 1]; % Create channel quality information disp('cqi:');
cqi:
disp(cqi.');
0 1 1 0 0 1
codedcqi = lteUCIEncode(cqi);
% PUCCH 2 modulation
pucch2Sym = ltePUCCH2(ue2, pucch2, codedcqi);
Создаются индексы для передач PUCCH и PUCCH DRS
pucch1Indices = ltePUCCH1Indices(ue1, pucch1); pucch2Indices = ltePUCCH2Indices(ue2, pucch2); pucch1DRSIndices = ltePUCCH1DRSIndices(ue1, pucch1); pucch2DRSIndices = ltePUCCH2DRSIndices(ue2, pucch2);
Теперь передается полный сигнал для первого UE. Этапы состоят в том, чтобы преобразовать формат 1 PUCCH и соответствующий сигнал DRS в пустую ресурсную сетку, выполнить модуляцию SC-FDMA и затем передать через канал распространения с замираниями.
% Create resource grid grid1 = lteULResourceGrid(ue1); grid1(pucch1Indices) = pucch1Sym; grid1(pucch1DRSIndices) = pucch1DRSSym; % SC-FDMA modulation txwave1 = lteSCFDMAModulate(ue1, grid1); % Channel modeling. An additional 25 samples added to the end of the % waveform to cover the range of delays expected from the channel modeling % (a combination of implementation delay and channel delay spread) channel.Seed = 13; rxwave1 = lteFadingChannel(channel,[txwave1; zeros(25,1)]);
Теперь передается полный сигнал для второго UE. Обратите внимание, что другое случайное начальное channel.Seed
используется по сравнению с используемым для первого UE. Это гарантирует, что для этих двух передач используются различные распространения.
% Create resource grid grid2 = lteULResourceGrid(ue2); grid2(pucch2Indices) = pucch2Sym; grid2(pucch2DRSIndices) = pucch2DRSSym; % SC-FDMA modulation txwave2 = lteSCFDMAModulate(ue2, grid2); % Channel modeling. An additional 25 samples added to the end of the % waveform to cover the range of delays expected from the channel modeling % (a combination of implementation delay and channel delay spread) channel.Seed = 15; rxwave2 = lteFadingChannel(channel, [txwave2; zeros(25, 1)]);
Вход в приемник базовой станции моделируется путем добавления двух затухших сигналов вместе с Гауссовым шумом с степенью, как описано выше.
rxwave = rxwave1 + rxwave2;
% Add noise
noise = N*complex(randn(size(rxwave)), randn(size(rxwave)));
rxwave = rxwave + noise;
Оценка временных параметров системы координат восходящей линии связи для UE1 вычисляется с использованием сигналов PUCCH 1 DRS и затем используется для демодуляции сигнала SC-FDMA. Получившаяся сетка rxgrid1
является 3 размерной матрицей. Количество строк представляет количество поднесущих. Количество столбцов равняется количеству символов SC-FDMA в подкадре. Количество поднесущих и символов одинаковое для возвращенной сетки от lteSLSCFDMADemodulate
когда сетка перешла в lteSLSCFDMAInfo
. Количество плоскостей (3-ья размерность) в сетке соответствует количеству приемных антенн.
% Synchronization offset1 = lteULFrameOffsetPUCCH1(ue1, pucch1, rxwave); % SC-FDMA demodulation rxgrid1 = lteSCFDMADemodulate(ue1, rxwave(1+offset1:end, :));
Оценка канала между каждым передатчиком и приемником базовой станции получена и используется для выравнивания его эффектов. Чтобы создать оценку канала lteULChannelEstimatePUCCH1
используется. Функция оценки канала сконфигурирована структурой cec
. Функция возвращает 3-D матрицу комплексных весов, которые применяются к каждому ресурсному элементу каналом в переданной сетке. 1-ая размерность является поднесущей, 2-ая размерность - это символ SC-FDMA, а 3-ья размерность - это приемная антенна. Эффект канала на полученной ресурсной сетке выравнивается с помощью lteEqualizeMMSE
. Эта функция использует оценку канала (H1
) для выравнивания полученной ресурсной сетки (rxGrid1
).
% Channel estimation [H1, n0] = lteULChannelEstimatePUCCH1(ue1, pucch1, cec, rxgrid1); % Extract REs corresponding to the PUCCH from the given subframe across all % receive antennas and channel estimates [pucchrx1, pucchH1] = lteExtractResources(pucch1Indices, rxgrid1, H1); % Equalization eqgrid1 = lteULResourceGrid(ue1); eqgrid1(pucch1Indices) = lteEqualizeMMSE(pucchrx1, pucchH1, n0);
Наконец, канал Формат 1 декодируется, и извлекаются полезные биты индикатора HARQ.
rxhi1 = ltePUCCH1Decode(ue1, pucch1, length(hi1), ... eqgrid1(pucch1Indices)); disp('rxhi1:');
rxhi1:
disp(rxhi1.');
0 1
Оценка временных параметров системы координат восходящей линии связи для UE2 вычисляется с использованием сигналов PUCCH 2 DRS и затем используется для демодуляции сигнала SC-FDMA. В этом случае также найдены гибридные индикаторы ARQ, переданные на DRS Формат 2. Получившаяся сетка rxgrid2
является 3 размерной матрицей. Чтобы создать оценку канала lteULChannelEstimatePUCCH2
используется. Эффект канала на полученной ресурсной сетке выравнивается с помощью lteEqualizeMMSE. Наконец, канал Формат 2 декодируется, и извлекаются полезные информационные биты CQI.
% Synchronization (and PUCCH 2 DRS demodulation/decoding) [offset2,rxhi2] = lteULFrameOffsetPUCCH2(ue2,pucch2,rxwave,length(hi2)); disp('rxhi2:');
rxhi2:
disp(rxhi2.');
1 1
% SC-FDMA demodulation rxgrid2 = lteSCFDMADemodulate(ue2, rxwave(1+offset2:end, :)); % Channel estimation [H2, n0] = lteULChannelEstimatePUCCH2(ue2, pucch2, cec, rxgrid2, rxhi2); % Extract REs corresponding to the PUCCH from the given subframe across all % receive antennas and channel estimates [pucchrx2, pucchH2] = lteExtractResources(pucch2Indices, rxgrid2, H2); % Equalization eqgrid2 = lteULResourceGrid(ue2); eqgrid2(pucch2Indices) = lteEqualizeMMSE(pucchrx2, pucchH2, n0); % PUCCH 2 demodulation rxcodedcqi = ltePUCCH2Decode(ue2, pucch2, eqgrid2(pucch2Indices)); % PUCCH 2 decoding rxcqi = lteUCIDecode(rxcodedcqi, length(cqi)); disp('rxcqi:');
rxcqi:
disp(rxcqi.');
0 1 1 0 0 1
Получен график, показывающий, что каналы могут быть оценены независимо для двух различных сигналов, даже несмотря на то, что они имеют одинаковые физические RE. Оценка канала Формат 1 показана красным цветом, и оценка канала PUCCH Format 2 показана синим цветом.
hPUCCHMixedFormatDisplay(H1, eqgrid1, H2, eqgrid2);
Этот пример использует эту вспомогательную функцию.