Этот пример показов, как сгенерировать зондирующие опорные сигналы (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 МГц с интервалом между поднесущими (SCS) 15 кГц.
carrier = nrCarrierConfig; carrier.NSizeGrid = 79; % Bandwidth in RB перевозчик. SubcarrierSpacing = 15;
Параметры конфигурации полосы пропускания CSRS
и BSRS
управляйте пропускной способностью, выделенной SRS, которая обычно увеличивается с CSRS
и уменьшается с BSRS
. Используйте эти интерактивные элементы управления для настройки полосы пропускания SRS.
srs = nrSRSConfig; srs.CSRS = 10; % Bandwidth configuration C_SRS (0...63) сэры BSRS = 1; % Bandwidth configuration B_SRS (0...3)
Чтобы изменить положение частоты SRS, измените значения FrequencyStart
и NRRC
. FrequencyStart
задает частотный центр SRS в RB относительно источника несущей, когда NRRC = 0
.
srs.FrequencyStart = 30; % Frequency position of the SRS in carrier in RB (0...271) сэры NRRC = 0; % Frequency domain position in blocks of 4 PRB (0...67) hSRSGrid (носитель, srs, 1, true);% Create and display a single-slot resource grid containing SRS заголовок (['Resource Grid Containing SRS. NRRC = ' num2str (сэры NRRC)]); hSRSAnotations (носитель, ср);
Этот рисунок показывает однослотную ресурсную сетку OFDM, содержащую SRS. Для CSRS = 10
и BSRS = 1
, положение частоты SRS сдвиги на когда NRRC
находится в области значений (3... 5) и когда NRRC
находится в области значений (6... 8). SRS возвращается в начальное положение (FrequencyStart
) когда NRRC
равен 9. количество ресурсных блоков (RB), выделенных SRS на передачу.
Этот рисунок иллюстрирует концепции, введенные выше для CSRS = 10
и BSRS = 1
.
NRRC
является дополнительным смещением частоты, заданным как число 4 RB, и соответствует параметру более высокого слоя freqDomainPosition (см. TS 38.331 Раздел 6.3.2 SRS-Config [2]). Для значений NRRC
между и , положение частоты SRS сдвигается на , где - целое число. ТС 38.211 Раздел 6.4.1.4 относится к как с . Для получения дополнительной информации смотрите NRBPerTransmission
свойство nrSRSConfig
объект строения.
Это уравнение определяет источник SRS по частоте:
обозначает количество поддиапазонов SRS (частота полос размера ) где SRS может быть расположен через параметр NRRC
. Вычислять можно использовать таблицу строения полосы пропускания SRS (см. TS 38.211 таблица 6.4.1.4.3-1). Вы также можете получить доступ к этой таблице через 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 МГц с 15 кГц SCS.
carrier = nrCarrierConfig; carrier.NSizeGrid = 52; перевозчик. SubcarrierSpacing = 15;
Параметры конфигурации полосы пропускания CSRS
, BSRS
, и BHop
управляйте пропускной способностью, выделенной SRS. Чтобы сконфигурировать полнополосный SRS, задайте CSRS = 14
и BSRS = 0
.
srs = nrSRSConfig; srs.CSRS = 13; % Bandwidth configuration C_SRS (0...63) сэры BSRS = 1; % Bandwidth configuration B_SRS (0...3) hSRSGrid (носитель, srs, 1, true );% Create and display a single-slot resource grid containing SRS заголовок (['Resource Grid with Full-Band SRS. CSRS = ' num2str (сэры CSRS)]); hSRSAnotations (носитель, ср);
Для распределения частот SRS можно найти соответствующие значения CSRS
, BSRS
, и BHop
в таблице строения полосы пропускания SRS (см. TS 38.211 таблица 6.4.1.4.3-1). Другой способ 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 содержать количество RB, выделенных SRS для параметра b = BSRS
и без скачкообразных строений. Строка, соответствующая C_SRS = 14
содержит ряд RB 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 является постоянной для символов OFDM SRS и меньше, чем полоса пропускания, по которой SRS переходит.
Сконфигурируйте полку пропускания 15 МГц с 15 кГц SCS.
carrier = nrCarrierConfig; carrier.NSizeGrid = 79; перевозчик. SubcarrierSpacing = 15;
Создайте четырехсимвольную SRS, расположенную в конце паза. Выберите коэффициент повторения, чтобы указать количество одинаковых последовательных передач SRS (символов OFDM) в пазе. Для строений скачкообразного изменения частоты, Repetition
должно быть меньше, чем количество символов SRS.
srs = nrSRSConfig; srs.NumSRSSymbols = 4; сэры Репетайшн = 1; сэры 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 SRS-Config). Когда шаблон скачкообразной перестройки частоты сбрасывается для апериодических типов ресурсов SRS в каждом пазе, выберите periodic
или semi-persistent
Типы ресурсов SRS для включения скачкообразного изменения частоты между межпазами или aperiodic
чтобы отключить его. Можно сконфигурировать интервальную периодичность и смещение передач SRS с помощью свойства SRSPeriod
. Для aperiodic
типы ресурсов, тип параметра SRSPeriod
управляет периодичностью и смещением сигналов DCI, запускающих апериодические передачи SRS.
srs.ResourceType = "periodic"; сэры Срсперайод = [2 0]; % Periodicity in slots (1,2,4,5,8,10,...) сэры Срсперайод (2) = 0; % Offset in slots must be smaller than the periodicity
Используйте эти интерактивные элементы управления для выбора строения скачкообразного изменения и наблюдения изменений в ресурсной сетке OFDM.
srs.CSRS = 19; % Bandwidth configuration C_SRS (0...63) сэры BSRS = 2; % Bandwidth configuration B_SRS (0...3) сэры Бхоп = 0; % Frequency hopping configuration (0...3). Set BHop >= BSRS to disable frequency hopping сэры 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 (носитель, srs, длительность, true); заголовок ('Carrier Grid Containing Frequency-Hopping SRS')
Шумовая полоса, по которой происходит скачок символов SRS, увеличивается со значением CSRS
и уменьшается с BHop
(до BHop = BSRS
отключает скачкообразное изменение). Увеличение BSRS
уменьшает выделенную пропускную способность на символ OFDM (свойство NRBPerTransmission
) и также может уменьшить скачкообразное изменение частоты внутри внутрипаза. Чтобы отключить скачкообразное изменение частоты, установите BHop >= BSRS
. Для не скачущих строений, роли CSRS
и BSRS
аналогичны, так как выделенная полоса пропускания увеличивается с CSRS
и уменьшается с BSRS
.
Можно использовать таблицу строения полосы пропускания (TS 38.211 Таблица 6.4.1.4.3-1), чтобы вычислить количество различных шаблонов скачкообразного изменения частоты, конфигурируемых параметром 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
задает мгновенную пропускную способность, выделенную на символ OFDM SRS.
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 МГц с 15 кГц SCS.
carrier = nrCarrierConfig; carrier.NSizeGrid = 52; перевозчик. SubcarrierSpacing = 15;
Задайте периодичность и смещение паза, чтобы создать ортогональные передачи SRS.
Первое строение SRS:
srs = nrSRSConfig; srs(1).SRSPeriod = [1 0]; srs(1).SRSPeriod(1) = 4; % Slot periodicity and offset srs (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 srs (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) srs (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; srs (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 МГц с 15 кГц SCS.
carrier = nrCarrierConfig; carrier.NSizeGrid = 52; перевозчик. SubcarrierSpacing = 15;
Задайте номера гребней и смещения, чтобы создать ортогональные передачи SRS.
Первое строение SRS:
srs = nrSRSConfig; srs(1).KTC = 2; % Comb number (2,4). It indicates the allocation of the SRS every KTC subcarriers srs (1) .KBarTC =1; % Comb offset (0...KTC-1)
Второе строение SRS:
srs(2) = srs(1); % Create a copy of the configured SRS srs(2).KTC = 4; srs (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 сэры SymbolStart =8; % Allocate SRS in OFDM symbols 10:13
Выберите требуемые параметры конфигурации полосы пропускания, тип ресурса и коэффициент повторения.
srs.CSRS = 10; % Bandwidth configuration C_SRS (0...63) сэры BSRS = 2; % Bandwidth configuration B_SRS (0...3) сэры Бхоп = 0; % Frequency hopping configuration (0...3). Set BHop >= BSRS to disable frequency hopping сэры ResourceType = "periodic"; % ('periodic','semi-persistent','aperiodic') сэры Репетайшн = 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 Cyclic-Shift. Чтобы проверить ортогональность между несколькими портами, сконфигурируйте multi-port SRS, сгенерируйте символы и индексы, сопоставьте символы в ресурсную сетку, сгенерируйте формы сигналов SRS и вычислите перекрестную корреляцию между формами сигналов, сгенерированных для различных портов.
[1] 3GPP TS 38.211. "NR; Физические каналы и модуляция ". 3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.
[2] 3GPP TS 38.331. "NR; Спецификация протокола управления радиоресурсами (RRC). "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.
Этот пример использует следующие локальные функции:
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; Физические каналы и модуляция ". 3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.