В этом примере показано, как сконфигурировать передачу абонентского оборудования (UE) и определенных для соты зондирующих опорных сигналов (SRS). Физический канал управления восходящей линии связи (PUCCH) также сконфигурирован для передачи.
Конфигурация SRS разделена на 2 части - специфичные для UE и соты. Специфичная для UE часть описывает расписание и содержание фактических передач SRS для этого UE. Специфичная для соты часть описывает временной график, когда любое UE в соте может передавать - специфичный для UE график должен быть подмножеством этого расписания.
В этом примере специфичная для соты конфигурация SRS имеет периодичность 5 мс со смещением 0 (сигнализируется srs.SubframeConfig = 3 как обозначено в TS36.211, Таблице 5.5.3.3-1 [1]). Специфичная для UE конфигурация SRS имеет периодичность 10 мс со смещением 0 (сигнализируется srs.ConfigIdx = 7 как указано в TS36.213, таблица 8.2-1 [2]). Специфичная для соты конфигурация означает, что для этой соты существуют две возможности для передачи SRS в каждом кадре, подкадры 0 и 5. Все UE в соте должны сократить свои передачи по физическому каналу управления восходящей линии связи (PUCCH) во время этих подкадров, чтобы обеспечить прием SRS без помех, даже если они не передают SRS сами. Специфичная для UE конфигурация означает, что это UE сконфигурировано для генерации SRS только в субкадре 0.
Выходные данные в окне команд MATLAB ® при выполнении этого примера показывают передачу PUCCH во всех 10 подкадрах с сокращением в подкадрах 0 и 5 и передачу SRS в подкадре 0.
ue = struct; ue.NULRB = 15; % Number of resource blocks ue.NCellID = 10; % Physical layer cell identity ue.Hopping = 'Off'; % Disable frequency hopping ue.CyclicPrefixUL = 'Normal'; % Normal cyclic prefix ue.DuplexMode = 'FDD'; % Frequency Division Duplex (FDD) ue.NTxAnts = 1; % Number of transmit antennas ue.NFrame = 0; % Frame number
pucch = struct; % Vector of PUCCH resource indices, one per transmission antenna pucch.ResourceIdx = 0:ue.NTxAnts-1; pucch.DeltaShift = 1; % PUCCH delta shift parameter pucch.CyclicShifts = 0; % PUCCH delta offset parameter pucch.ResourceSize = 0; % Size of resources allocated to PUCCH
srs = struct; srs.NTxAnts = 1; % Number of transmit antennas srs.SubframeConfig = 3; % Cell-specific SRS period = 5ms, offset = 0 srs.BWConfig = 6; % Cell-specific SRS bandwidth configuration srs.BW = 0; % UE-specific SRS bandwidth configuration srs.HoppingBW = 0; % SRS frequency hopping configuration srs.TxComb = 0; % Even indices for comb transmission srs.FreqPosition = 0; % Frequency domain position srs.ConfigIdx = 7; % UE-specific SRS period = 10ms, offset = 0 srs.CyclicShift = 0; % UE-cyclic shift
Цикл обработки генерирует подкадр за один раз. Все они объединяются для создания сетки ресурсов для кадра (10 подкадров). Цикл выполняет следующие операции:
Информация SRS: по вызову lteSRSInfo мы можем получить информацию, связанную с SRS для данного подкадра. IsSRSSubframe поле структуры srsInfo возвращено из lteSRSInfo вызов указывает, является ли текущий подкадр (заданный ue.NSubframe) - специфичный для соты подкадр SRS (IsSRSSubframe = 1) или нет (IsSRSSubframe = 0). Значение этого поля можно скопировать в ue.Shortened поле. Это гарантирует, что последующее формирование PUCCH будет правильно уважать конфигурацию SRS, специфичную для соты, для всех подкадров, исключая последний символ PUCCH в подкадрах SRS, специфичных для соты.
Генерация и отображение опорного сигнала демодуляции (DRS) PUCCH 1: сигнал DRS расположен в 3-м, 4-м и 5-м символах каждого слота и поэтому никогда не имеет потенциала для столкновения с SRS.
Генерация и отображение PUCCH 1: В отличие от DRS, передача PUCCH 1 может занимать последний символ подкадра, если только ue.Shortened = 1. В этом случае последний символ подкадра останется пустым.
Формирование и отображение SRS: Здесь мы генерируем и отображаем SRS в соответствии со специфичной для UE конфигурацией SRS. Оба lteSRSIndices и lteSRS функции используют поля ue.NSubframe и srs.ConfigIdx определяют, сконфигурирован ли текущий подкадр для передачи SRS; в противном случае выходные данные обеих функций пусты.
txGrid = []; % Create empty resource grid for i = 1:10 % Process 10 subframes % Configure subframe number (0-based) ue.NSubframe = i-1; fprintf('Subframe %d:\n',ue.NSubframe); % Establish if this subframe is a cell-specific SRS subframe, % and if so configure the PUCCH for shortened transmission srsInfo = lteSRSInfo(ue, srs); ue.Shortened = srsInfo.IsSRSSubframe; % Copy SRS info to ue struct % Create empty uplink subframe txSubframe = lteULResourceGrid(ue); % Generate and map PUCCH1 DRS to resource grid drsIndices = ltePUCCH1DRSIndices(ue, pucch);% DRS indices drsSymbols = ltePUCCH1DRS(ue, pucch); % DRS sequence txSubframe(drsIndices) = drsSymbols; % Map to resource grid % Generate and map PUCCH1 to resource grid pucchIndices = ltePUCCH1Indices(ue, pucch); % PUCCH1 indices ACK = [0; 1]; % HARQ indicator values pucchSymbols = ltePUCCH1(ue, pucch, ACK); % PUCCH1 sequence txSubframe(pucchIndices) = pucchSymbols; % Map to resource grid if (ue.Shortened) disp('Transmitting shortened PUCCH'); else disp('Transmitting full-length PUCCH'); end % Configure the SRS sequence group number (u) according to TS % 36.211 Section 5.5.1.3 with group hopping disabled srs.SeqGroup = mod(ue.NCellID,30); % Configure the SRS base sequence number (v) according to TS 36.211 % Section 5.5.1.4 with sequence hopping disabled srs.SeqIdx = 0; % Generate and map SRS to resource grid % (if active under UE-specific SRS configuration) [srsIndices, srsIndicesInfo] = lteSRSIndices(ue, srs);% SRS indices srsSymbols = lteSRS(ue, srs); % SRS seq. if (srs.NTxAnts == 1 && ue.NTxAnts > 1) % Map to resource grid % Select antenna for multiple antenna selection diversity txSubframe( ... hSRSOffsetIndices(ue, srsIndices, srsIndicesInfo.Port)) = ... srsSymbols; else txSubframe(srsIndices) = srsSymbols; end % Message to console indicating when SRS is mapped to the resource % grid. if(~isempty(srsIndices)) disp('Transmitting SRS'); end % Concatenate subframes to form frame txGrid = [txGrid txSubframe]; %#ok end
Subframe 0: Transmitting shortened PUCCH Transmitting SRS Subframe 1: Transmitting full-length PUCCH Subframe 2: Transmitting full-length PUCCH Subframe 3: Transmitting full-length PUCCH Subframe 4: Transmitting full-length PUCCH Subframe 5: Transmitting shortened PUCCH Subframe 6: Transmitting full-length PUCCH Subframe 7: Transmitting full-length PUCCH Subframe 8: Transmitting full-length PUCCH Subframe 9: Transmitting full-length PUCCH
Полученный рисунок показывает количество активных поднесущих в каждом символе SC-FDMA через 140 символов в txGrid. Все символы SC-FDMA содержат 12 активных поднесущих, соответствующих полосе пропускания одного блока ресурсов PUCCH, за исключением:
символ 13, последний символ подкадра 0, который имеет 48 активных поднесущих, соответствующих передаче 8 ресурсного блока SRS
символ 83, последний символ подкадра 5, который имеет 0 активных поднесущих, соответствующих укороченному PUCCH (последний символ пуст), чтобы обеспечить возможность потенциальной передачи SRS другим UE в этой ячейке.
figure; for i = 1:ue.NTxAnts subplot(ue.NTxAnts,1,i); plot(0:size(txGrid,2)-1,sum(abs(txGrid(:,:,i)) ~= 0),'r:o') xlabel('symbol number'); ylabel('active subcarriers'); title(sprintf('Antenna %d',i-1)); end

Постройте график сетки ресурсов с PUCCH на краях полосы и передачей гребенки SRS в субкадре 0.
figure; pcolor(abs(txGrid)); colormap([1 1 1; 0 0 0.5]) shading flat; xlabel('SC-FDMA symbol'); ylabel('subcarrier')

Выбор передающей антенны SRS может быть продемонстрирован установкой ue.NTxAnts = 2 и анализ субплотов, полученных для каждой антенны; SRS передается на антенне 0, в то время как PUCCH укорачивается на обеих (всех) антеннах. Диаграмма выбора антенны для этого однокадрового прогона может быть показана путем дополнительной настройки srs.SubframeConfig = 0 и srs.ConfigIdx = 0. Это настраивает конфигурацию SRS для соты с периодичностью 2 мс со смещением 0 (сигнализируется srs.SubframeConfig = 0), а также специфическую для UE конфигурацию SRS периодичностью 2 мс со смещением 0 (сигнализируется srs.ConfigIdx = 0). В этом случае SRS передается этим UE в четных подкадрах, и передающая антенна чередуется с каждой передачей.
Передача SRS на нескольких антеннах с использованием разнесения ресурсов может быть показана путем установки ue.NTxAnts = 2 и srs.NTxAnts = 2. В этом случае SRS всегда передается на обеих (всех) антеннах с ортогональными ресурсами на каждой антенне.
В этом примере используется эта вспомогательная функция.
3GPP ТС 36.211 «Физические каналы и модуляция»
3GPP ТС 36.213 «Процедуры физического уровня»