Этот пример показывает передачу и прием Физического Восходящего Канала Управления (PUCCH) Форматы 1 и 2, включая случай, где тот же физический ресурс совместно используется передачами Формата 1 и Формата 2 одновременно от двух различного Оборудования пользователя (UEs) использование LTE Toolbox™.
Этот пример конфигурирует два Оборудования пользователя (UEs), чтобы передать Физический Восходящий Канал Управления (PUCCH) сигнал Формата 1 сначала UE и сигнал Формата 2 PUCCH от второго UE. Соответствующие Сигналы ссылки демодуляции (DRS) также сгенерированы. Переданные сигналы передаются через два различных исчезающих канала и добавляются, вместе с Аддитивным белым гауссовым шумом (AWGN), моделируя прием сигналов от двух UEs в eNodeB. Каждый сигнал (т.е. что, принадлежа каждому UE) затем синхронизируется, демодулируемый SC-FDMA, компенсируемый, демодулируемый PUCCH и затем наконец декодируемый. График производится, показывая, что каналы могут быть оценены независимо для двух различных сигналов, даже при том, что они совместно используют те же физические Элементы Ресурса (REs).
Первый 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) передача, но различный 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
Для первого 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
Канал распространения, который два 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;
ОСШ дан тем, где энергия сигнала интереса и является шумовой степенью. Степень шума, который будет добавлен, может быть определена так, чтобы и были нормированы после демодуляции SC-FDMA, чтобы достигнуть желаемого ОСШ SNRdB
. Шум, добавленный перед демодуляцией SC-FDMA, будет усилен ОБПФ. Усиление является квадратным корнем из размера ОБПФ. В этой симуляции это учтено путем деления желаемой шумовой степени этим значением. Кроме того, потому что действительные и мнимые части шума создаются отдельно прежде чем быть объединенным в комплексный аддитивный белый Гауссов шум, шумовая амплитуда должна масштабироваться так произведенной шумовой энергией, 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 и его DRS сгенерированы. Формат 1 PUCCH несет индикаторы HARQ hi1
и в этом случае существует 2 индикатора, означая, что передача будет иметь Формат 1b. Формат 1 DRS PUCCH не несет данных.
% PUCCH 1 modulation/coding hi1 = [0; 1]; % Create HARQ indicators disp('hi1:'); disp(hi1.'); pucch1Sym = ltePUCCH1(ue1, pucch1, hi1); % PUCCH 1 DRS creation pucch1DRSSym = ltePUCCH1DRS(ue1, pucch1);
hi1: 0 1
Формат 2 DRS PUCCH несет индикаторы HARQ hi2
и в этом случае существует 2 индикатора, означая, что передача будет иметь Формат 2b. Сам Формат 2 PUCCH несет закодированную Информацию о качестве канала (CQI). Информация cqi
здесь кодируется и затем модулируется.
% PUCCH 2 DRS modulation hi2 = [1; 1]; % Create HARQ indicators disp('hi2:'); disp(hi2.'); pucch2DRSSym = ltePUCCH2DRS(ue2, pucch2, hi2); % PUCCH 2 coding cqi = [0; 1; 1; 0; 0; 1]; % Create channel quality information disp('cqi:'); disp(cqi.'); codedcqi = lteUCIEncode(cqi); % PUCCH 2 modulation pucch2Sym = ltePUCCH2(ue2, pucch2, codedcqi);
hi2: 1 1 cqi: 0 1 1 0 0 1
Индексы для 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 теперь передается. Обратите внимание на то, что различный случайный 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;
Восходящая оценка синхронизации кадра для 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, :));
Оценка канала между каждым передатчиком и получателем базовой станции получается и используется, чтобы компенсировать его эффекты. Чтобы создать оценку канала, 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 PUCCH декодируется, и полезные биты индикатора HARQ извлечены.
rxhi1 = ltePUCCH1Decode(ue1, pucch1, length(hi1), ... eqgrid1(pucch1Indices)); disp('rxhi1:'); disp(rxhi1.');
rxhi1: 0 1
Восходящая оценка синхронизации кадра для 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:'); disp(rxhi2.'); % 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:'); disp(rxcqi.');
rxhi2: 1 1 rxcqi: 0 1 1 0 0 1
График производится, показывая, что каналы могут быть оценены независимо для двух различных сигналов, даже если они совместно используют тот же физический REs. Оценку канала Формата 1 PUCCH отображают красным, и оценку канала Формата 2 PUCCH отображают синим.
hPUCCHMixedFormatDisplay(H1, eqgrid1, H2, eqgrid2);
Этот пример использует функцию помощника: