Этот пример демонстрирует, как сконфигурировать передачу пользовательского оборудования (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 для заданного субкадра. The IsSRSSubframe
поле структуры srsInfo
возвращается из lteSRSInfo
вызов указывает, является ли текущий подкадр (задается как ue.NSubframe
) - специфический для ячеек субкадр SRS (IsSRSSubframe = 1
) или нет (IsSRSSubframe = 0
). Значение этого поля может быть скопировано в ue.Shortened
поле. Это гарантирует, что последующая генерация PUCCH будет правильно соответствовать строению SRS ячеек для всех субкадров, опуская последний символ PUCCH в конкретных субкадрах SRS ячеек.
PUCCH 1 Demodulation Reference Signal (DRS) Generation and Mapping: Сигнал DRS расположен в 3-м, 4-м и 5-м символах каждого паза и поэтому никогда не имеет возможности столкнуться с SRS.
PUCCH 1 Generation and Mapping: В отличие от DRS, коробка передач PUCCH 1 может занимать последний символ подрамника, если только ue.Shortened = 1
. В этом случае последний символ подрамника будет оставлен пустым.
Генерация and Mapping: Здесь мы генерируем и сопоставляем SRS в соответствии с строением 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 периодичности 2ms со смещением 0 (сигнализируется srs.ConfigIdx = 0
). В этом случае SRS передается этим UE на четных подкадрах, и передающая антенна чередуется с каждой передачей.
Передача SRS на нескольких антеннах, использующих ресурсное разнесение, может быть показана путем установки ue.NTxAnts = 2
и srs.NTxAnts = 2
. В этом случае SRS всегда передается на обеих (всех) антеннах с ортогональными ресурсами на каждой антенне.
Этот пример использует эту вспомогательную функцию.
3GPP ТС 36.211 «Физические каналы и модуляция»
3GPP TS 36.213 «Процедуры физического слоя»