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

Этот пример показывает передачу и прием Физического Восходящего Канала Управления (PUCCH) Форматы 1 и 2, включая случай, где тот же физический ресурс совместно используется передачами Формата 1 и Формата 2 одновременно от двух различного Оборудования пользователя (UEs) использование LTE Toolbox™.

Введение

Этот пример конфигурирует два Оборудования пользователя (UEs), чтобы передать Физический Восходящий Канал Управления (PUCCH) сигнал Формата 1 сначала UE и сигнал Формата 2 PUCCH от второго UE. Соответствующие Опорные сигналы демодуляции (DRS) также сгенерированы. Переданные сигналы передаются через два различных исчезающих канала и добавляются, вместе с Аддитивным белым Гауссовым шумом (AWGN), симулируя прием сигналов от двух UEs в eNodeB. Каждый сигнал (i.e. та принадлежность каждому UE), затем синхронизируется, демодулируемый SC-FDMA, компенсируемый, демодулируемый PUCCH и затем наконец декодируемый. График производится, показывая, что каналы могут быть оценены независимо для двух различных сигналов, даже при том, что они совместно используют те же физические Элементы Ресурса (REs).

Настройка 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) передача, но различный UEs, имел бы различный 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

Настройка модели распространения канала

Канал распространения, который два UEs передадут через, сконфигурирован с помощью структуры 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, будет усилен ОБПФ. Усиление является квадратным корнем из размера ОБПФ. В этой симуляции это учтено путем деления желаемой шумовой степени этим значением. Кроме того, потому что действительные и мнимые части шума создаются отдельно прежде чем быть объединенным в комплексный аддитивный белый Гауссов шум, шумовая амплитуда должна масштабироваться 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 REs. Это конфигурирует средство оценки канала, чтобы использовать специальный режим, который гарантирует способность к despread, и ортогонализируйте различное наложение передачи 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. Формат 1 DRS 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);

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

Формат 2 DRS 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 теперь передается. Обратите внимание на то, что различный случайный seed 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 в подкадре. Количество поднесущих и символов является тем же самым для возвращенной сетки от lteSCFDMADemodulate, когда сетка передала в lteSCFDMAModulate. Количество плоскостей (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 PUCCH декодируется, и полезные биты индикатора HARQ извлечены.

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

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

Восходящая оценка синхронизации системы координат для UE2 вычисляется с помощью сигналов PUCCH 2 DRS и затем используется, чтобы демодулировать сигнал SC-FDMA. В этом случае индикаторы Hybrid ARQ, как передано на Формате 2 DRS PUCCH также найдены. Получившаяся сетка rxgrid2 3 размерных матрицы. Чтобы создать оценку канала, lteULChannelEstimatePUCCH2 используется. Эффект канала на полученной сетке ресурса компенсируется с помощью lteEqualizeMMSE. Наконец канал Формата 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

Отобразите предполагаемые каналы

График производится, показывая, что каналы могут быть оценены независимо для двух различных сигналов, даже если они совместно используют тот же физический REs. Оценку канала Формата 1 PUCCH отображают красным, и оценку канала Формата 2 PUCCH отображают синим.

hPUCCHMixedFormatDisplay(H1, eqgrid1, H2, eqgrid2);

Приложение

Этот пример использует функцию помощника: