В этом примере показано, как сгенерировать звучание опорными сигналами (SRS), как задано в Разделе TS 38.211 6.4.1.4 [1], включая настройку SRS, символ и генерацию индексов, отображение сетки ресурса OFDM и генерацию сигналов SRS. Пример демонстрирует, как выбрать соответствующие параметры, чтобы расположить SRS в частоту и установить:
Передачи полной полосы: Сгенерируйте SRS, охватывающий всю доступную полосу пропускания.
Скачкообразно перемещающие частоту передачи: Сгенерируйте периодические и апериодические передачи SRS с различными скачкообразно перемещающими частоту шаблонами.
Многопользовательские передачи: Сгенерируйте ортогональный SRS, использующий время, частоту и циклические сдвиги.
Звучащие опорные сигналы являются восходящими физическими сигналами, используемыми оборудованием пользователя (UE) для восходящего звучания канала, включая качественную оценку канала и синхронизацию. В отличие от опорных сигналов демодуляции (DM-RS), SRS не сопоставлен ни к каким физическим восходящим каналам, и они поддерживают восходящее зависимое каналом планирование и адаптацию ссылки. SRS помогает в:
Основанное на книге шифров пространственное мультиплексирование с обратной связью.
Управляйте восходящей синхронизацией передачи.
Основанное на взаимности предварительное кодирование нисходящего канала в многопользовательских настройках MIMO.
Квази соразмещение физических каналов и опорных сигналов.
Этот раздел показывает, как сконфигурировать положение SRS в частотном диапазоне и определить полосу пропускания, выделенную SRS.
Сконфигурируйте несущую полосы пропускания на 15 МГц с расстоянием между поднесущими на 15 кГц (SCS).
carrier = nrCarrierConfig; carrier.NSizeGrid = 79; % Bandwidth in RB carrier.SubcarrierSpacing = 15;
Параметры конфигурации полосы пропускания CSRS
и BSRS
управляйте полосой пропускания, выделенной SRS, который обычно увеличивается с CSRS
и уменьшения с BSRS
. Используйте эти интерактивные способы управления, чтобы сконфигурировать полосу пропускания SRS.
srs = nrSRSConfig; srs.CSRS = 10; % Bandwidth configuration C_SRS (0...63) srs.BSRS = 1; % Bandwidth configuration B_SRS (0...3)
Чтобы изменить положение частоты SRS, измените значения FrequencyStart
и NRRC
. FrequencyStart
задает источник частоты SRS в RBS относительно источника несущей когда NRRC = 0
.
srs.FrequencyStart = 30; % Frequency position of the SRS in carrier in RB (0...271) srs.NRRC = 0; % Frequency domain position in blocks of 4 PRB (0...67) hSRSGrid (несущая, сэры, 1 год, верный); % Create and display a single-slot resource grid containing SRS заголовок'Resource Grid Containing SRS. NRRC = ' num2str (srs.NRRC)]); hSRSAnnotations (несущая, сэры);
Этот рисунок отображает одно паз сетка ресурса OFDM, содержащая SRS. Для CSRS = 10
и BSRS = 1
, положение частоты SRS сдвиги когда NRRC
находится в области значений (3... 5) и когда NRRC
находится в области значений (6... 8). SRS возвращается к исходному положению (FrequencyStart
) когда NRRC
9. количество блоков ресурса (RBS), выделенный SRS на передачу.
Этот рисунок иллюстрирует концепции, введенные выше для CSRS = 10
и BSRS = 1
.
NRRC
дополнительное смещение частоты, заданное как много 4 RBS, и они соответствуют более высокому параметру слоя freqDomainPosition (см. Раздел TS 38.331 6.3.2 Config SRS [2]). Для значений NRRC
между и , положение частоты SRS смещено , где целое число. Раздел TS 38.211 6.4.1.4 относится к как с . Для получения дополнительной информации смотрите NRBPerTransmission
свойство nrSRSConfig
объект настройки.
Это уравнение определяет источник SRS в частоте:
обозначает количество поддиапазонов SRS (диапазоны частот размера ) где SRS может быть расположен через параметр NRRC
. Вычислять , можно использовать таблицу настройки полосы пропускания SRS (см. таблицу 6.4.1.4.3-1 TS 38.211). Можно также получить доступ к этой таблице через BandwidthConfigurationTable
свойство nrSRSConfig
объект.
csrs = srs.CSRS; disp(nrSRSConfig.BandwidthConfigurationTable(csrs+(0:2) + (csrs==0),:));
C_SRS m_SRS_0 N_0 m_SRS_1 N_1 m_SRS_2 N_2 m_SRS_3 N_3 _____ _______ ___ _______ ___ _______ ___ _______ ___ 9 32 1 16 2 8 2 4 2 10 36 1 12 3 4 3 4 1 11 40 1 20 2 4 5 4 1
Первый столбец содержит возможные значения параметра CSRS
. Для CSRS = 10
и BSRS = 1
, количество уникальных поддиапазонов SRS , где и .
% Calculate and display the number of SRS subbands configurable by NRRC NSBTable = hSRSNumberOfSubbandsOrHoppingPatterns(srs); fprintf('Number of SRS subbands (NRRC < %d): %d', NSBTable*srs.NRBPerTransmission/4,NSBTable);
Number of SRS subbands (NRRC < 9): 3
% Calculate the frequency origin of the first SRS symbol f0 = hSRSFrequencyOrigin(srs); fprintf('The frequency origin of the SRS is F0 = %d RB.', f0);
The frequency origin of the SRS is F0 = 30 RB.
Подтвердите положение частоты SRS с помощью info
выход nrSRSIndices
[~,info] = nrSRSIndices(carrier,srs); display(info.PRBSet(1))
30
Для данного значения CSRS
, диапазон частот, где SRS может быть выделен с помощью NRRC
. Для CSRS = 10
, SRS повторяется когда , который заканчивается в ту же позицию частоты того из .
fprintf('The SRS frequency range is limited to the range (%d,%d) RB for the current value of CSRS (%d).',srs.FrequencyStart,srs.FrequencyStart + NSBTable*srs.NRBPerTransmission,srs.CSRS);
The SRS frequency range is limited to the range (30,66) RB for the current value of CSRS (10).
Когда скачкообразное движение частоты внутрипаза включено, вычисление FrequencyOrigin
только допустимо для первого символа SRS в пазе. Для скачкообразно перемещающего частоту SRS используйте выходные параметры info.PRBset
или info.SubcarrierOffset
из nrSRSIndices
функция, чтобы определить положение частоты последующих символов.
fprintf('The frequency origin of the SRS is F0 = %d RB.',info.PRBSet(1));
The frequency origin of the SRS is F0 = 30 RB.
Этот раздел показывает, как сконфигурировать и сгенерировать полную полосу передача SRS путем вычисления соответствующих параметров полосы пропускания SRS для несущей.
Сконфигурируйте несущую полосы пропускания на 10 МГц с SCS на 15 кГц.
carrier = nrCarrierConfig; carrier.NSizeGrid = 52; carrier.SubcarrierSpacing = 15;
Параметры конфигурации полосы пропускания CSRS
, BSRS
, и BHop
управляйте полосой пропускания, выделенной SRS. Чтобы сконфигурировать полную полосу SRS, установите CSRS = 14
и BSRS = 0
.
srs = nrSRSConfig; srs.CSRS = 13; % Bandwidth configuration C_SRS (0...63) srs.BSRS = 1; % Bandwidth configuration B_SRS (0...3) hSRSGrid (несущая, сэры, 1 год, верный); % Create and display a single-slot resource grid containing SRS заголовок'Resource Grid with Full-Band SRS. CSRS = ' num2str (srs.CSRS)]); hSRSAnnotations (несущая, сэры);
Для выделения частоты SRS можно найти соответствующие значения CSRS
, BSRS
, и BHop
в таблице настройки полосы пропускания SRS (см. таблицу 6.4.1.4.3-1 TS 38.211). В качестве альтернативы nrSRSConfig.BandwidthConfigurationTable
обеспечивает простой способ получить доступ и отобразить эту таблицу.
% To display relevant rows of the bandwidth configuration table, calculate the value of CSRS for a full band SRS [csrs,bsrs] = hSRSBandwidthConfiguration(srs,carrier.NSizeGrid); % Display bandwidth configuration table disp(nrSRSConfig.BandwidthConfigurationTable(csrs+(0:2) + 1*(csrs==0),:));
C_SRS m_SRS_0 N_0 m_SRS_1 N_1 m_SRS_2 N_2 m_SRS_3 N_3 _____ _______ ___ _______ ___ _______ ___ _______ ___ 13 48 1 24 2 12 2 4 3 14 52 1 4 13 4 1 4 1 15 56 1 28 2 4 7 4 1
Столбцы, помеченные как m_SRS_b
с b
= 0... 3 содержат количество RBS, выделенного SRS для параметра b = BSRS
и нескачкообразное движение настроек. Строка, соответствующая C_SRS = 14
содержит много RBS m_SRS_0 = 52
, который является самым близким значением к полосе пропускания несущей. Поэтому параметры CSRS = 14
и BSRS = 0
сконфигурируйте полную полосу передача SRS для текущей настройки несущей. Этот пример использует таблицу настройки полосы пропускания, чтобы вычислить значения CSRS
и BSRS
это максимизирует полосу пропускания SRS в несущей.
fprintf('For a full-band SRS in a carrier bandwidth of %d RB, set CSRS = %d and BSRS = %d.',carrier.NSizeGrid,csrs,bsrs);
For a full-band SRS in a carrier bandwidth of 52 RB, set CSRS = 14 and BSRS = 0.
Можно использовать SRS свойство NRBPerTransmission
только для чтения подтвердить, что сгенерированный SRS помещается в полосу пропускания несущей.
fprintf('The SRS bandwidth (%d RB) is lower than or equal to the carrier bandwidth (%d RB).',srs.NRBPerTransmission,carrier.NSizeGrid);
The SRS bandwidth (24 RB) is lower than or equal to the carrier bandwidth (52 RB).
Можно сконфигурировать частоту внутрипаза и межпаза, скачкообразно двигающуюся для мультисимвола и передач мультипаза SRS, соответственно. Мгновенная полоса пропускания на символ OFDM является постоянной через символы SRS OFDM и является меньшей, чем полоса пропускания, по которой скачкообразно двигается SRS.
Сконфигурируйте несущую полосы пропускания на 15 МГц с SCS на 15 кГц.
carrier = nrCarrierConfig; carrier.NSizeGrid = 79; carrier.SubcarrierSpacing = 15;
Создайте SRS с четырьмя символами, расположенный в конце паза. Выберите фактор повторения, чтобы указать на количество равных последовательных передач SRS (символы OFDM) в пазе. Для скачкообразно перемещающих частоту настроек, Repetition
должно быть ниже, чем количество символов SRS.
srs = nrSRSConfig; srs.NumSRSSymbols = 4; srs.Repetition = 1; srs.SymbolStart = 10; % Time-domain position of the SRS in the slot. (8...13) for normal cyclic prefix (CP) and (6...11) for extended CP
Нисходящая управляющая информация (DCI) может инициировать апериодические передачи SRS с помощью более высокого параметра слоя resourceType (см. Раздел TS 38.331 6.3.2 Config SRS). Когда шаблон скачкообразного движения частоты сбрасывается для апериодических типов ресурсов SRS в каждом пазе, выберите periodic
или semi-persistent
Типы ресурсов SRS, чтобы включить скачкообразное движение частоты межпаза или aperiodic
отключить его. Можно сконфигурировать мудрую пазом периодичность и смещение передач SRS при помощи свойства SRSPeriod
. Для aperiodic
типы ресурсов, параметр SRSPeriod
управляет периодичностью и смещением сигналов DCI, инициировавших апериодические передачи SRS.
srs.ResourceType = "periodic"; srs.SRSPeriod = [2 0]; % Periodicity in slots (1,2,4,5,8,10,...) srs.SRSPeriod (2) = 0; % Offset in slots must be smaller than the periodicity
Используйте эти интерактивные способы управления, чтобы выбрать скачкообразно двигающуюся настройку и наблюдать изменения в сетке ресурса OFDM.
srs.CSRS = 19; % Bandwidth configuration C_SRS (0...63) srs.BSRS = 2; % Bandwidth configuration B_SRS (0...3) srs.BHop = 0; % Frequency hopping configuration (0...3). Set BHop >= BSRS to disable frequency hopping srs.NRRC = 14; % Frequency domain position in blocks of 4 PRB (0...67) % Create and display a multi-slot resource grid containing SRS длительность = 2*srs.SRSPeriod (1); % Transmission length in slots hSRSGrid (несущая, сэры, длительность, верная); заголовок'Carrier Grid Containing Frequency-Hopping SRS')
Полоса пропускания, по которой символы SRS скачкообразно перемещают увеличения со значением CSRS
и уменьшения с BHop
(пока BHop = BSRS
отключает скачкообразное движение). Увеличение BSRS
уменьшает выделенную полосу пропускания на символ OFDM (свойство NRBPerTransmission
) и может уменьшить частоту внутрипаза, скачкообразно двигающуюся также. Чтобы отключить скачкообразное движение частоты, установите BHop >= BSRS
. Для нескачкообразного движения настроек, ролей CSRS
и BSRS
аналогичны, когда выделенная полоса пропускания увеличивается с CSRS
и уменьшения с BSRS
.
Можно использовать таблицу настройки полосы пропускания (таблица 6.4.1.4.3-1 TS 38.211), чтобы вычислить количество различных скачкообразно перемещающих частоту шаблонов, конфигурируемых параметром SRS NRRC
как . Скачкообразно перемещающие частоту шаблоны повторяются когда .
N = hSRSNumberOfSubbandsOrHoppingPatterns(srs); if srs.BHop < srs.BSRS && srs(1).NRB > 16 % Number of unique frequency-hopping patterns fprintf('Number of unique frequency-hopping patterns (configurable by NRRC < %d): %d.',N*srs.NRBPerTransmission/4,N); else % Number of unique SRS subbands fprintf('Number of unique SRS subbands (configurable by NRRC < %d): %d.',N*srs.NRBPerTransmission/4,N); end
Number of unique frequency-hopping patterns (configurable by NRRC < 18): 6.
Установите параметры настроек полосы пропускания как CSRS = 20, BSRS = 2
, и BHop = 1
. Условие BHop < BSRS
не гарантирует скачкообразное движение частоты. Однако противоположное верно: BHop >= BSRS
всегда отключает скачкообразное движение частоты. Можно определить когда настройка полосы пропускания SRS (CSRS
, BSRS
, BHop
) производит скачкообразное движение частоты с помощью параметр из таблицы настройки полосы пропускания и оценки условия .
isFreqHoppingConfiguration = hSRSNumberOfSubbandsOrHoppingPatterns(srs) > 1; disp(['Frequency hopping is' repmat(' not',1,~isFreqHoppingConfiguration) ' enabled.'])
Frequency hopping is enabled.
В скачкообразно перемещающих частоту случаях, свойстве NRB
только для чтения задает полосу пропускания по который транзитные участки SRS и
NRBPerTransmission
задает мгновенную полосу пропускания, выделенную на символ SRS OFDM.
t = table([srs.NRB; srs.NRBPerTransmission],'RowNames', {'Freq-Hopping bandwidth','Instantaneous bandwidth'},'VariableNames',"NRB"); disp(t)
NRB ___ Freq-Hopping bandwidth 72 Instantaneous bandwidth 12
Этот раздел объясняет, как сконфигурировать несколько передач SRS, подходящих для многопользовательских настроек. Можно использовать временной интервал, частотный диапазон и доменные последовательностью параметры, чтобы создать наборы ортогональных передач SRS (без интерференции).
Можно создать временной интервал ортогональные передачи SRS несколькими способами, например:
Сконфигурируйте различную периодичность паза и смещение для различного SRS при помощи свойства SRSPeriod
.
Сконфигурируйте различные мудрые символом выделения области времени для различного SRS при помощи свойства SymbolStart
.
Сконфигурируйте несущую полосы пропускания на 10 МГц с SCS на 15 кГц.
carrier = nrCarrierConfig; carrier.NSizeGrid = 52; carrier.SubcarrierSpacing = 15;
Задайте периодичность паза и возместите, чтобы создать ортогональные передачи SRS.
Первая настройка SRS:
srs = nrSRSConfig; srs(1).SRSPeriod = [1 0]; srs(1).SRSPeriod(1) = 4; % Slot periodicity and offset сэры (1).SRSPeriod (2) = 0; % Slot offset of first SRS
Вторая настройка SRS:
srs(2) = srs(1); % Create a copy of the configured SRS srs(2).SRSPeriod(1) = 2; % Periodicity in slots сэры (2).SRSPeriod (2) = 1; % Offset in slots
Этот рисунок отображает сетку ресурса OFDM, содержащую сконфигурированные передачи SRS.
hSRSGrid(carrier,srs,srs(1).SRSPeriod(1)*2, true); % Generate a multi-slot resource grid containing SRS title('SRS with Different Slot Offsets (SRSPeriod)') ylim([0 srs(1).NRBPerTransmission]);
Задайте количество символов SRS и местоположения в пазе, чтобы создать ортогональные передачи SRS.
Первая настройка SRS:
srs = nrSRSConfig; srs(1).NumSRSSymbols = 1; % Number of SRS symbols in a slot (1,2,4) сэры (1).SymbolStart = 12; % Time-domain position of the SRS in the slot. (8...13) for normal cyclic prefix (CP) and (6...11) for extended CP
Вторая настройка SRS:
srs(2) = srs(1); % Create a copy of the configured SRS srs(2).NumSRSSymbols = 2; сэры (2).SymbolStart = 9;
Этот рисунок отображает сетку ресурса OFDM, содержащую передачи SRS.
hSRSGrid(carrier,srs, 2, true); % Generate and display a 2-slot resource grid containing SRS title('SRS with Different Symbol Locations (SymbolStart)'); ylim([0 srs(1).NRBPerTransmission]);
Можно создать частотный диапазон ортогональные передачи SRS несколькими способами:
Сконфигурируйте различные смещения расчески для различного SRS при помощи свойства KBarTC
.
Сконфигурируйте различные скачкообразно перемещающие частоту шаблоны с помощью CSRS
, BSRS
, BHop
и NRRC
.
Сконфигурируйте несущую полосы пропускания на 10 МГц с SCS на 15 кГц.
carrier = nrCarrierConfig; carrier.NSizeGrid = 52; carrier.SubcarrierSpacing = 15;
Задайте числа расчески и смещения, чтобы создать ортогональные передачи SRS.
Первая настройка SRS:
srs = nrSRSConfig; srs(1).KTC = 2; % Comb number (2,4). It indicates the allocation of the SRS every KTC subcarriers сэры (1).KBarTC = 1; % Comb offset (0...KTC-1)
Вторая настройка SRS:
srs(2) = srs(1); % Create a copy of the configured SRS srs(2).KTC = 4; сэры (2).KBarTC = 0;
Этот рисунок отображает сетку ресурса OFDM, содержащую передачи SRS.
hSRSGrid(carrier,srs,2,true);
title('SRS with Different Comb Offsets (KBarTC)')
ylim([0 srs(1).NRBPerTransmission]);
Создайте частотный диапазон ортогональные настройки SRS с помощью различных скачкообразно перемещающих частоту шаблонов.
srs = nrSRSConfig; srs.NumSRSSymbols = 4; % Number of SRS symbols in a slot srs.SymbolStart =8; % Allocate SRS in OFDM symbols 10:13
Выберите желаемые параметры конфигурации полосы пропускания, тип ресурса и фактор повторения.
srs.CSRS = 10; % Bandwidth configuration C_SRS (0...63) srs.BSRS = 2; % Bandwidth configuration B_SRS (0...3) srs.BHop = 0; % Frequency hopping configuration (0...3). Set BHop >= BSRS to disable frequency hopping srs.ResourceType = "periodic"; % ('periodic','semi-persistent','aperiodic') srs.Repetition = 1; % Number of equal consecutive SRS transmissions (1,2,4). It must be lower than NumSRSSymbols
Этот пример вычисляет количество ортогональных последовательностей SRS, которые могут быть сконфигурированы NRRC
и создает частоту неперекрывающиеся настройки SRS. Фигура отображает сетку ресурса OFDM, содержащую передачи SRS.
NRRC = num2cell(hNRRCSet(srs)); srs(2:length(NRRC)) = srs(1); % Create N-1 copies of the configured SRS [srs(:).NRRC] = deal(NRRC{:}); % Assign the appropriate NRRC to each SRS configuration hSRSGrid(carrier,srs, 3, true); % Generate and display a 3-slot resource grid containing SRS title('SRS with Different Frequency-Hopping Patterns'); ylim([0 srs(1).NRBPerTransmission*hSRSNumberOfSubbandsOrHoppingPatterns(srs(1))]);
N = hSRSNumberOfSubbandsOrHoppingPatterns(srs(1)); if srs(1).BHop < srs(1).BSRS % Frequency-hopping cases fprintf('Number of unique frequency-hopping patterns (configurable by NRRC < %d): %d.', N*srs(1).NRBPerTransmission/4, N); else fprintf('Number of unique subbands (configurable by NRRC < %d): %d.', N*srs(1).NRBPerTransmission/4,N); end
Number of unique frequency-hopping patterns (configurable by NRRC < 9): 9.
Обратите внимание на то, что передачи SRS никогда не перекрываются независимо от Repetition
фактор и ResourceType
(aperiodic
отключает скачкообразное движение частоты межпаза). Отключите частоту, скачкообразно двигающуюся установкой BHop >= BSRS
и заметьте, что различный SRS все еще выделяется различным поддиапазонам.
Этот раздел генерирует несколько SRS, выделенный тому же времени и ресурсам частоты (символы OFDM и поднесущие), но различные циклические сдвиги временного интервала. Из-за свойств Последовательностей Задова-Чу, эта настройка производит ортогональный SRS. Чтобы продемонстрировать ортогональность среди сконфигурированного SRS, этот раздел выполняет модуляцию CP-OFDM и вычисляет взаимную корреляцию форм волны временного интервала.
% Configure a 10 MHz bandwidth carrier with 15 kHz SCS. carrier = nrCarrierConfig; carrier.NSizeGrid = 52; carrier.SubcarrierSpacing = 15; % Create a full-band SRS srs = nrSRSConfig; srs.CSRS = hSRSBandwidthConfiguration(srs,carrier.NSizeGrid); % All SRS share the same physical resources, but they are configured with % different cyclic shifts. for i = 1:8 srs(i) = srs(1); srs(i).CyclicShift = i-1; end % Create a resource grid containing SRS numSlots = 1; % Number of slots to generate for ich = length(srs):-1:1 slotGrid{ich} = hSRSGrid(carrier,srs(ich),numSlots); end % Get OFDM modulation related information ofdmInfo = nrOFDMInfo(carrier); % OFDM modulation nsrs = length(srs); % Number of SRS waveforms numSamples = numSlots*ofdmInfo.SampleRate/1000/carrier.SlotsPerSubframe; txWaveform = zeros(numSamples,srs(1).NumSRSPorts,nsrs); for i = 1:nsrs txWaveform(:,:,i) = nrOFDMModulate(carrier,slotGrid{i}); end % Cross correlation of SRS waveforms generated with different cyclic shifts txWaveform = reshape(txWaveform,[],nsrs*srs(1).NumSRSPorts); C = txWaveform'*txWaveform; srsCorr = C./diag(C);
Этот рисунок показывает взаимную корреляцию временного интервала форм волны SRS с различными циклическими сдвигами.
imagesc(abs(srsCorr)) title('Correlation of SRS with Different CyclicShift') xlabel('SRS configuration'); ylabel('SRS configuration'); colorbar
Низкие корреляции среди форм волны SRS, сгенерированных с помощью различных циклических сдвигов временного интервала, показывают свою ортогональность.
disp('Absolute value of correlation matrix: '); disp(' '); disp(abs(srsCorr));
Absolute value of correlation matrix: Columns 1 through 7 1.0000 0.0027 0.0021 0.0008 0.0003 0.0010 0.0007 0.0027 1.0000 0.0030 0.0006 0.0006 0.0001 0.0006 0.0021 0.0030 1.0000 0.0041 0.0007 0.0008 0.0003 0.0008 0.0006 0.0041 1.0000 0.0040 0.0004 0.0009 0.0003 0.0006 0.0007 0.0040 1.0000 0.0039 0.0002 0.0010 0.0001 0.0008 0.0004 0.0039 1.0000 0.0039 0.0007 0.0006 0.0003 0.0009 0.0002 0.0039 1.0000 0.0038 0.0005 0.0008 0.0000 0.0009 0.0003 0.0039 Column 8 0.0038 0.0005 0.0008 0.0000 0.0009 0.0003 0.0039 1.0000
Этот пример описывает, как сгенерировать и сопоставить последовательности SRS в сетку ресурса несущей OFDM, и как сгенерировать соответствующую форму волны для нескольких настройки SRS и несущая. Пример подсвечивает отношение между параметрами конфигурации SRS и их эффектами и на сетке ресурса и на свойствах формы волны SRS. Например:
Полоса пропускания, выделенная SRS обычно, увеличивается с CSRS
и уменьшения с BSRS
. Для скачкообразно перемещающих частоту настроек мгновенная полоса пропускания и скачкообразно двигающаяся полоса пропускания уменьшаются с BSRS
и BHop
, соответственно.
Положение частоты SRS зависит от FrequencyStart
и NRRC
параметры. NRRC
позволяет выбирать различные поддиапазоны SRS и скачкообразно перемещающие частоту шаблоны.
BHop < BSRS
обычно производит скачкообразное движение частоты, но оно не гарантируется. Однако BHop >= BSRS
достаточно, чтобы отключить скачкообразное движение частоты.
Скачкообразное движение частоты межпаза активно только для periodic
и semi-persistent
типы ресурсов.
Время - частота - и связанные с последовательностью параметры может использоваться, чтобы создать ортогональные передачи SRS.
Пример также демонстрирует, как извлечь полезную информацию и из таблицы настройки полосы пропускания SRS и из свойств только для чтения, такой как, количество уникальных поддиапазонов SRS и скачкообразно перемещающих частоту шаблонов, конфигурируемых NRRC
.
Генерация последовательности SRS для многопортовых настроек использует механизм ортогонализации, представленный в Циклическом сдвиге Ортогональный SRS. Чтобы проверить ортогональность через несколько портов, сконфигурируйте многопортовый SRS, сгенерируйте символы и индексы, сопоставьте символы в сетку ресурса, сгенерируйте формы волны SRS и вычислите взаимную корреляцию между формами волны, сгенерированными для различных портов.
[1] 3GPP TS 38.211. “NR; Физические каналы и модуляция”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[2] 3GPP TS 38.331. “NR; спецификация протокола Радио-управления ресурсами (RRC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
Этот пример использует эти локальные функции:
function [csrs,bsrs] = hSRSBandwidthConfiguration(srs, NRB) % [CSRS,BSRS] = hBandwidthConfiguration(SRS, NRB) returns the SRS % bandwidth configuration parameters CSRS and BSRS required to transmit an % SRS in a bandwidth specified by NRB. The function calculates CSRS and % BSRS considering the SRS properties FrequencyStart and NRRC, so the % available bandwidth NRB is reduced by the frequency origin of the SRS. % For frequency hopping cases, the value of BSRS returned is equal to that % of the BSRS property in the input SRS configuration object. f0 = hSRSFrequencyOrigin(srs); NRB = NRB - f0; if NRB < 4 error('The available bandwidth is not sufficient to allocate an SRS transmission. Increase the carrier bandwidth or configure the SRS in a lower frequency.' ) end % For frequency hopping configurations if srs.BHop >= srs.BSRS && nargout == 2 % No frequency hopping and BSRS is requested BSRS = 0:3; else BSRS = 0; end % Initialize gap between SRS frequency allocation and carrier bandwidth NRBGap = NRB; % Find the appropriate CSRS for each BSRS that minimizes the gap only % in non-hopping cases. For freq. hopping, find the value of CSRS only. for b = BSRS % NRB allocated to the SRS for BSRS = b and all CSRS srsNRBb = srs.BandwidthConfigurationTable{:,2*(b+1)}; mSRSbMax = max( srsNRBb( srsNRBb <= NRB )); % Calculate gap between SRS allocation and carrier bandwidth gap = NRB - mSRSbMax; if gap < NRBGap csrs = srs.BandwidthConfigurationTable{ srsNRBb == mSRSbMax ,1}; bsrs = b; NRBGap = gap; end end csrs = csrs(1); if srs.BHop < bsrs bsrs = srs.BSRS; end end function out = hSRSNumberOfSubbandsOrHoppingPatterns(srs) % N = hSRSNumberOfSubbandsOrHoppingPatterns(SRS) returns the number of % unique SRS subbands or frequency-hopping patterns N configurable by the % SRS property NRRC. An SRS subband is the frequency band allocated for SRS % in a given OFDM symbol (See SRS property NRBPerTransmission). N is % calculated using TS 38.211 Table 6.4.1.4.3-1 for the bandwidth % configuration parameters CSRS, BSRS, and BHop specified in the SRS % configuration object SRS. bwct = nrSRSConfig.BandwidthConfigurationTable{:,:}; if srs.BHop < srs.BSRS % Number of unique frequency-hopping patterns b0 = srs.BHop+1; else % Number of unique SRS subbands b0 = 0; end out = prod(bwct(srs.CSRS+1,2*(b0:srs.BSRS)+3)); end function [Grid,dispGrid] = hSRSGrid(carrier,srs,Duration,displayGrid,chplevels) % [GRID,DISPGRID] = hSRSGrid(CARRIER,SRS,DURATION,DISPLAYGRID,CHPLEVELS) % returns a multi-slot OFDM resource grid GRID containing a set of sounding % reference signals in a carrier, as specified by the configuration objects % CARRIER and SRS. This function also returns a scaled version of the grid % used for display purposes. The optional input DURATION (Default 1) % specifies the number of slots of the generated grid. The resource grid % can be displayed using the optional input DISPLAYGRID (Default false). % CHPLEVELS specifies the channel power levels for display purposes only % and it must be of the same size as SRS. numSRS = length(srs); if nargin < 5 chplevels = 1:-1/numSRS:1/numSRS; if nargin < 4 displayGrid = false; if nargin < 3 Duration = 1; end end end SymbolsPerSlot = carrier.SymbolsPerSlot; emptySlotGrid = nrResourceGrid(carrier,max([srs(:).NumSRSPorts])); % Initialize slot grid % Create the SRS symbols and indices and populate the grid with the SRS symbols Grid = repmat(emptySlotGrid,1,Duration); dispGrid = repmat(emptySlotGrid,1,Duration); % Frame-size grid for display for ns = 0:Duration-1 slotGrid = emptySlotGrid; dispSlotGrid = emptySlotGrid; % Slot-size grid for display for ich = 1:numSRS srsIndices = nrSRSIndices(carrier,srs(ich)); srsSymbols = nrSRS(carrier,srs(ich)); slotGrid(srsIndices) = srsSymbols; dispSlotGrid(srsIndices) = chplevels(ich)*srsSymbols; % Scale the SRS for display only end OFDMSymIdx = ns*SymbolsPerSlot + (1:SymbolsPerSlot); Grid(:,OFDMSymIdx,:) = slotGrid; dispGrid(:,OFDMSymIdx,:) = dispSlotGrid; carrier.NSlot = carrier.NSlot+1; end if displayGrid plotGrid(dispGrid(:,:,1),chplevels,"SRS " + (1:numSRS)'); end end function varargout = plotGrid(Grid,chplevels,leg) % plotGrid(GRID, CHPLEVEL,LEG) displays a resource grid GRID containing % channels or signals at different power levels CHPLEVEL and create a % legend for these using a cell array of character vector LEG if nargin < 3 leg = {'SRS'}; if nargin < 2 chplevels = 1; end end cmap = colormap(gcf); chpscale = length(cmap); % Scaling factor h = figure; image(0:size(Grid,2)-1,(0:size(Grid,1)-1)/12,chpscale*abs(Grid(:,:,1))); % Multiplied with scaling factor for better visualization axis xy; title('Carrier Grid Containing SRS') xlabel('OFDM Symbol'); ylabel('RB'); clevels = chpscale*chplevels(:); N = length(clevels); L = line(ones(N),ones(N),'LineWidth',8); % Generate lines % Index the color map and associate the selected colors with the lines set(L,{'color'},mat2cell(cmap( min(1+fix(clevels),length(cmap) ),:),ones(1,N),3)); % Set the colors according to cmap % Create legend legend(leg(:)); if nargout > 0 varargout = {h}; end end function hSRSAnnotations(carrier,srs) % hSRSAnnotations(carrier,srs) adds annotation to the current figure % indicating the frequency origin of the SRS and the number of RB used per % OFDM symbol for the configuration objects CARRIER and SRS. % Calculate the frequency origin of the first SRS symbol f0 = hSRSFrequencyOrigin(srs); hold on; hfig = gcf; set(hfig,'Units','Normalized'); Sym0 = srs.SymbolStart-0.5; if isnumeric(srs.SRSPeriod) Sym0 = srs.SRSPeriod(2)*carrier.SymbolsPerSlot + srs.SymbolStart-0.5; end IP = get(gca,'Position'); % Y-coordinate in the current axes of the SRS freq position f0 Yf0 = f0/carrier.NSizeGrid*IP(4)+IP(2); Xc = Sym0/((carrier.NSlot+1)*carrier.SymbolsPerSlot)*IP(3)+IP(1); % Add annotation to the figure including f0 in RB if f0/carrier.NSizeGrid > 0.08 % Only plot f0 when there is enough space in the y-axis % Create doublearrow for F0 YMin = IP(2); annotation(hfig,'doublearrow',Xc*[1 1], [YMin Yf0],... 'Color',[1 0.4 0.15]); % Text for F0 str = sprintf('$$F_0 = %d $$ RB', f0); Ystr = f0/carrier.NSizeGrid/2; text(gca,(Xc-IP(1))/IP(3)-0.25, Ystr,str,... 'Color',[1 0.4 0.15],'FontSize',14, ... 'Units','Normalized','Interpreter','latex'); end % Create doublearrow from f0 and spanning the SRS bandwidth Yf1 = Yf0 + srs.NRBPerTransmission/carrier.NSizeGrid*IP(4); annotation(hfig,'doublearrow',Xc*[1 1], [Yf0 Yf1],... 'Color',[1 0.4 0.15]); % Text for NRBt str = sprintf('$$\\textrm{NRB}_T = %d $$ RB', srs.NRBPerTransmission); Ystr = (f0 + 0.5*srs.NRBPerTransmission)/carrier.NSizeGrid; text(gca,(Xc-IP(1))/IP(3)-0.32, Ystr ,str,... 'Color',[1 0.4 0.15],'FontSize',14, ... 'Units','Normalized','Interpreter','latex'); end function f0 = hSRSFrequencyOrigin(srs) % Calculate the frequency origin of the first SRS symbol in a slot NSBTable = hSRSNumberOfSubbandsOrHoppingPatterns(srs); NRBt = srs.NRBPerTransmission; % Origin of the SRS in frequency in RB f0 = srs.FrequencyStart + NRBt*mod(floor(4*srs.NRRC/NRBt),NSBTable); end function [NRRC,NRB] = hNRRCSet(srs) % Calculate the values of NRRC that generate a unique set of orthogonal SRS in frequency if srs.BHop < srs.BSRS % Frequency-hopping cases NRB = srs(1).NRB; % Hopping bandwidth else NRB = nrSRSConfig.BandwidthConfigurationTable{srs(1).CSRS+1,2}; end % Number of frequency-hopping patterns or SRS subbands depending on the values of BSRS and BHop N = hSRSNumberOfSubbandsOrHoppingPatterns(srs); NRRC = NRB/4*(0:N-1)/N; end
[1] 3GPP TS 38.211. “NR; Физические каналы и модуляция”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.