Смешанная передача и прием в формате PUCCH

Этот пример показывает передачу и прием форматов 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 1 Строения

Первый 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 2 Строений

Точно так же структура строения используется для конфигурирования второго 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

Строение PUCCH 1

Для первого 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

Строение PUCCH 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;

Шумовые Строения

ОСШ задается как SNR=Es/N0 где Es - энергия интересующего сигнала и N0 - степень шума. Степень добавляемого шума может быть определена так, чтобы Es и N0 нормализуются после демодуляции SC-FDMA для достижения желаемого ОСШ SNRdB. Шум, добавленный перед демодуляцией SC-FDMA, будет усилен ОБПФ. Усиление является квадратным корнем из размера IFFT. В этой симуляции это принимается во факторе путем деления необходимой степени шума на это значение. В сложение, поскольку действительная и мнимая части шума создаются отдельно перед объединением в комплексные аддитивные белые Гауссовы шумы, амплитуда шума должна быть масштабирована 1/2 поэтому сгенерированная степень равна 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 формата 1

Теперь всёсь необходимое строение завершено, 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);

Генерация PUCCH формата 2

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 и PUCCH DRS

pucch1Indices = ltePUCCH1Indices(ue1, pucch1);    
pucch2Indices = ltePUCCH2Indices(ue2, pucch2);        

pucch1DRSIndices = ltePUCCH1DRSIndices(ue1, pucch1);  
pucch2DRSIndices = ltePUCCH2DRSIndices(ue2, pucch2);

Коробка передач для UE 1

Теперь передается полный сигнал для первого 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 2

Теперь передается полный сигнал для второго 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;

Синхронизация и демодуляция SC-FDMA для UE 1

Оценка временных параметров системы координат восходящей линии связи для 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, :));

Оценка и эквализация канала для UE 1

Оценка канала между каждым передатчиком и приемником базовой станции получена и используется для выравнивания его эффектов. Чтобы создать оценку канала 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);

Декодирование PUCCH 1

Наконец, канал Формат 1 декодируется, и извлекаются полезные биты индикатора HARQ.

rxhi1 = ltePUCCH1Decode(ue1, pucch1, length(hi1), ...
    eqgrid1(pucch1Indices));
disp('rxhi1:');
rxhi1:
disp(rxhi1.');
   0   1

Приемник для UE 2

Оценка временных параметров системы координат восходящей линии связи для 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);

Figure contains an axes. The axes with title Magnitude of channel estimates for different channels contains 2 objects of type surface. These objects represent PUCCH 1, PUCCH 2.

Приложение

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