exponenta event banner

Передача и прием в смешанном формате PUCCH

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

Конфигурирование PUCCH 1

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

Конфигурирование PUCCH 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 задается SNR = Es/N0, где Es - энергия интересующего сигнала, а N0 - мощность шума. Мощность добавляемого шума может быть определена так, чтобы Es и N0 нормализовались после демодуляции SC-FDMA для достижения требуемого SNR.SNRdB. Шум, добавленный перед демодуляцией SC-FDMA, будет усилен IFFT. Усиление представляет собой квадратный корень размера 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

Поколение формата 1 PUCCH

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

Поколение формата PUCCH 2

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 и 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 вычисляется с использованием сигналов 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, :));

Оценка и выравнивание канала для UE 1

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

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

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

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

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

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

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.

Приложение

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