Этот пример показывает передачу и прием форматов 1 и 2 физического канала управления восходящей линии связи (PUCCH), включая случай, когда один и тот же физический ресурс совместно используется между передачами форматов 1 и 2 одновременно от двух различных пользовательских устройств (UE), использующих LTE Toolbox™.
Этот пример конфигурирует два пользовательских оборудования (UE) для передачи сигнала формата 1 физического канала управления восходящей линии связи (PUCCH) от первого UE и сигнала формата 2 PUCCH от второго UE. Также генерируются соответствующие опорные сигналы демодуляции (DRS). Передаваемые сигналы проходят через два различных канала замирания и суммируются вместе с аддитивным белым гауссовым шумом (AWGN), имитируя прием сигналов от двух UE в eNireB. Каждый сигнал (т.е. сигнал, принадлежащий каждому 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 PUCCH.
Другое значение временного идентификатора радиосети (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 определяет количество циклических сдвигов, используемых форматом 1 PUCCH в блоках ресурсов, где должна передаваться смесь формата 1 PUCCH и формата 2 PUCCH. Параметр ResourceSize определяет размер ресурсов, используемых форматом 2 PUCCH, эффективно определяя начальную позицию передач формата 1 PUCCH; здесь мы указываем ResourceIdx=0 который будет использовать первый ресурс формата 1 PUCCH.
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 те же, что и в конфигурации формата 1 PUCCH. Значение ResourceIdx имеет значение первого ресурса формата 2 PUCCH, что означает, что физические блоки ресурсов, сконфигурированные для формата 1 PUCCH и формата 2 PUCCH, будут одинаковыми.
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;
SNR задается Es/N0, Es - энергия интересующего сигнала, N0 - мощность шума. Мощность добавляемого шума может быть определена так, Es N0 нормализовались после демодуляции SC-FDMA для достижения требуемого SNR.SNRdB. Шум, добавленный перед демодуляцией SC-FDMA, будет усилен IFFT. Усиление представляет собой квадратный корень размера 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
Теперь вся необходимая конфигурация завершена, формат 1 PUCCH и его DRS генерируются. Формат 1 PUCCH переносит индикаторы HARQ hi1 и в этом случае имеется 2 индикатора, что означает, что передача будет иметь формат 1b. DRS формата 1 PUCCH не несет данных.
% 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 PUCCH содержит индикаторы HARQ. hi2 и в этом случае имеется 2 индикатора, что означает, что передача будет иметь формат 2b. Сам формат 2 PUCCH несет кодированную информацию о качестве канала (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 вычисляется с использованием сигналов DRS PUCCH 1 и затем используется для демодуляции сигнала 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 комплексных весов, которые применяются к каждому элементу ресурса каналом в передаваемой сетке. Первое измерение является поднесущей, второе измерение является символом SC-FDMA, а третье измерение является приемной антенной. Влияние канала на сетку принимаемых ресурсов выравнивается с помощью 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 PUCCH и извлекаются полезные биты индикатора HARQ.
rxhi1 = ltePUCCH1Decode(ue1, pucch1, length(hi1), ... eqgrid1(pucch1Indices)); disp('rxhi1:');
rxhi1:
disp(rxhi1.');
0 1
Оценка синхронизации кадра восходящей линии связи для UE2 вычисляется с использованием сигналов DRS PUCCH 2 и затем используется для демодуляции сигнала SC-FDMA. В этом случае также обнаруживаются индикаторы гибридного ARQ, передаваемые по DRS формата PUCCH 2. Результирующая сетка rxgrid2 является 3-мерной матрицей. Создание оценки канала lteULChannelEstimatePUCCH2 используется. Влияние канала на полученную сетку ресурсов выравнивается с помощью lteEqualityMMSE. Наконец, декодируется канал формата 2 PUCCH и извлекаются полезные биты информации 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 показана красным цветом, а оценка канала формата 2 PUCCH показана синим цветом.
hPUCCHMixedFormatDisplay(H1, eqgrid1, H2, eqgrid2);

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