NR SRS Строения

Этот пример показов, как сгенерировать зондирующие опорные сигналы (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 (носитель, ср);

Figure contains an axes. The axes with title Resource Grid Containing SRS. NRRC = 0 contains 4 objects of type image, line, text. This object represents SRS 1.

Этот рисунок показывает однослотную ресурсную сетку OFDM, содержащую SRS. Для CSRS = 10 и BSRS = 1, положение частоты SRS (F0) сдвиги на NRBT когда NRRC находится в области значений (3... 5) и 2NRBT когда NRRC находится в области значений (6... 8). SRS возвращается в начальное положение (FrequencyStart) когда NRRC равен 9. NRBT количество ресурсных блоков (RB), выделенных SRS на передачу.

Этот рисунок иллюстрирует концепции, введенные выше для CSRS = 10 и BSRS = 1.

NRRC является дополнительным смещением частоты, заданным как число 4 RB, и соответствует параметру более высокого слоя freqDomainPosition (см. TS 38.331 Раздел 6.3.2 SRS-Config [2]). Для значений NRRC между k(NRBT/4) и (k+1)(NRBT/4)-1, положение частоты SRS сдвигается на kNRBT, где k - целое число. ТС 38.211 Раздел 6.4.1.4 относится к NRBT как mSRS.b с b=BSRS. Для получения дополнительной информации смотрите NRBPerTransmission свойство nrSRSConfig объект строения.

Это уравнение определяет источник SRS по частоте:

F0=FrequencyStart+NRBTmod(4NRRCNRBT,NSB)

NSB обозначает количество поддиапазонов SRS (частота полос размера NRBT) где SRS может быть расположен через параметр NRRC. Вычислять NSBможно использовать таблицу строения полосы пропускания 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 NSB=N0NBSRS=3, где N0=1 и N1=3.

% 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 является FrequencyStart+(0NSBNRBT-1). Для CSRS = 10, SRS оборачивается, когда NRRC=NSBNRBT/4=N0NBSRSmSRS,b/4=mSRS,0/4=9 , что приводит к тому же положению частоты, что и положение NRRC=0.

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 (носитель, ср);

Figure contains an axes. The axes with title Resource Grid with Full-Band SRS. CSRS = 13 contains 3 objects of type image, line, text. This object represents SRS 1.

Для распределения частот 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')

Figure contains an axes. The axes with title Carrier Grid Containing Frequency-Hopping SRS contains 2 objects of type image, line. This object represents SRS 1.

Шумовая полоса, по которой происходит скачок символов 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 как NFHP=NBHop+1NBSRS. Шаблоны скачкообразного изменения частоты повторяются, когда NRRC>NFHPNRBT/4.

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) производит скачкообразное изменение частоты с помощью Nb параметр из таблицы строения полосы пропускания и оценка условия NFHP=NBHop+1NBSRS>1.

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 во временной области несколькими способами, например:

  • Сконфигурируйте различную периодичность пазов и смещение для различных 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]);

Figure contains an axes. The axes with title SRS with Different Slot Offsets (SRSPeriod) contains 3 objects of type image, line. These objects represent SRS 1, SRS 2.

Укажите количество символов 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]);

Figure contains an axes. The axes with title SRS with Different Symbol Locations (SymbolStart) contains 3 objects of type image, line. These objects represent SRS 1, SRS 2.

Ортогональный SRS частотного диапазона

Можно создать ортогональные передачи 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]);

Figure contains an axes. The axes with title SRS with Different Comb Offsets (KBarTC) contains 3 objects of type image, line. These objects represent SRS 1, SRS 2.

Создайте ортогональные строения 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))]);

Figure contains an axes. The axes with title SRS with Different Frequency-Hopping Patterns contains 10 objects of type image, line. These objects represent SRS 1, SRS 2, SRS 3, SRS 4, SRS 5, SRS 6, SRS 7, SRS 8, SRS 9.

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 циклического сдвига

Этот раздел генерирует несколько 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

Figure contains an axes. The axes with title Correlation of SRS with Different CyclicShift contains an object of type image.

Низкие корреляции среди форм волны 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; Группа технических спецификаций Радиосеть доступ.

См. также

Функции

Объекты

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте