exponenta event banner

Блоки и пакеты сигнала синхронизации

В этом примере показано, как генерировать блок сигнала синхронизации (SSB) и генерировать множество SSB для формирования пакета сигнала синхронизации (пакета SS). Каналы и сигналы, которые образуют блок сигналов синхронизации (первичный и вторичный сигналы синхронизации, физический широковещательный канал), создаются и преобразуются в матрицу, представляющую блок. Наконец, создается матрица, представляющая пакет сигнала синхронизации, и каждый блок сигнала синхронизации в пакете создается и отображается в матрицу.

Блок SS/PBCH

TS 38.211 Раздел 7.4.3.1 определяет блок сигнала синхронизации/физического широковещательного канала (SS/PBCH) как 240 поднесущих и 4 символа OFDM, содержащих следующие каналы и сигналы:

  • Первичный сигнал синхронизации (PSS)

  • Вторичный сигнал синхронизации (SSS)

  • Физический широковещательный канал (PBCH)

  • Опорный сигнал демодуляции PBCH (PBCH DM-RS)

В других документах, например, TS 38.331, SS/PBCH называется «блоком сигнала синхронизации» или «блоком SS».

Создайте матрицу 240 на 4, представляющую блок SS/PBCH:

ssblock = zeros([240 4])
ssblock = 240×4

     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
      ⋮

Первичный сигнал синхронизации (PSS)

Создайте PSS для данного идентификатора соты:

ncellid = 17;
pssSymbols = nrPSS(ncellid)
pssSymbols = 127×1

    -1
    -1
    -1
    -1
    -1
    -1
     1
     1
     1
    -1
      ⋮

The переменная pssSymbols - вектор столбца, содержащий 127 символов BPSK PSS.

Создайте индексы PSS:

pssIndices = nrPSSIndices;

Переменная pssIndices - вектор столбца того же размера, что и pssSymbols. Значение в каждом элементе pssIndices - линейный индекс местоположения в блоке SS/PBCH, в котором находятся соответствующие символы в pssSymbols должно быть сопоставлено. Поэтому преобразование символов PSS в блок SS/PBCH может быть выполнено с простым назначением MATLAB, используя линейное индексирование для выбора правильных элементов матрицы блоков SS/PBCH. Обратите внимание, что к символам PSS применяется коэффициент масштабирования 1 для представления βPSS в TS 38.211 Раздел 7.4.3.1.1:

ssblock(pssIndices) = 1 * pssSymbols;

Постройте график матрицы блоков SS/PBCH для отображения местоположения основной системы 2х2:

imagesc(abs(ssblock));
caxis([0 4]);
axis xy;
xlabel('OFDM symbol');
ylabel('Subcarrier');
title('SS/PBCH block containing PSS');

Figure contains an axes. The axes with title SS/PBCH block containing PSS contains an object of type image.

Вторичный сигнал синхронизации (SSS)

Создайте SSS для того же идентификатора соты, что и сконфигурированный для основной системы 2х2:

sssSymbols = nrSSS(ncellid)
sssSymbols = 127×1

    -1
     1
    -1
    -1
    -1
     1
    -1
     1
    -1
     1
      ⋮

Создайте индексы SSS и сопоставьте символы SSS с блоком SS/PBCH, следуя тому же шаблону, что и для основной системы 2х2. Обратите внимание, что к символам SSS применяется коэффициент масштабирования 2 для представления βSSS в TS 38.211 Раздел 7.4.3.1.2:

sssIndices = nrSSSIndices;
ssblock(sssIndices) = 2 * sssSymbols;

Форма индексов по умолчанию - линейные индексы на основе 1, пригодные для линейного индексирования матриц MATLAB, как ssblock как уже показано. Однако стандартные документы NR описывают ресурсы OFDM в терминах поднесущей OFDM и подстрочных индексов символов, используя нумерацию на основе 0. Для удобной перекрестной проверки со стандартом NR функции индексов принимают опции, позволяющие выбрать стиль индексации (линейный индекс в сравнении с подстрочным индексом) и базу (на основе 0 против 1):

sssSubscripts = nrSSSIndices('IndexStyle','subscript','IndexBase','0based')
sssSubscripts = 127x3 uint32 matrix

   56    2    0
   57    2    0
   58    2    0
   59    2    0
   60    2    0
   61    2    0
   62    2    0
   63    2    0
   64    2    0
   65    2    0
      ⋮

Из подстрочных индексов видно, что SSS находится в OFDM-символе 2 (на основе 0) блока SS/PBCH, начиная с поднесущей 56 (на основе 0).

Снова постройте график матрицы блоков SS/PBCH для отображения местоположений PSS и SSS:

imagesc(abs(ssblock));
caxis([0 4]);
axis xy;
xlabel('OFDM symbol');
ylabel('Subcarrier');
title('SS/PBCH block containing PSS and SSS');

Figure contains an axes. The axes with title SS/PBCH block containing PSS and SSS contains an object of type image.

Физический широковещательный канал (PBCH)

PBCH несет кодовое слово длиной 864 бита, созданное посредством выполнения кодирования BCH главного информационного блока (MIB). Для получения дополнительной информации о кодировании BCH см. функции nrBCH и nrBCHDecode и их использование в примере NR Cell Search и MIB и SIB1 Recovery. Здесь используется кодовое слово PBCH, состоящее из 864 случайных битов:

cw = randi([0 1],864,1);

Модуляция PBCH состоит из следующих этапов, описанных в TS 38.211 Раздел 7.3.3:

  • Борьба

  • Модуляция

  • Сопоставление с физическими ресурсами

Скремблирование и модуляция

Несколько блоков SS/PBCH передаются по половине кадра, как описано в процедуре поиска ячеек в TS 38.213 Раздел 4.1. Каждому блоку SS/PBCH присваивается индекс от 0...L-1, где L - число блоков SS/PBCH в полукадре. Последовательность скремблирования для PBCH инициализируется в соответствии с идентификацией соты.ncellidи подпоследовательность, используемая для скремблирования кодового слова PBCH, зависит от значения v, 2 или 3 LSB индекса блока SS/PBCH, как описано в TS 38.211 раздел 7.3.3.1. В этом примере используется v = 0. ФункцияnrPBCH создает соответствующую подпоследовательность скремблирующей последовательности, выполняет скремблирование и затем выполняет QPSK модуляцию:

v = 0;
pbchSymbols = nrPBCH(cw,ncellid,v)
pbchSymbols = 432×1 complex

  -0.7071 + 0.7071i
  -0.7071 + 0.7071i
  -0.7071 + 0.7071i
  -0.7071 - 0.7071i
   0.7071 + 0.7071i
  -0.7071 + 0.7071i
  -0.7071 + 0.7071i
   0.7071 - 0.7071i
   0.7071 + 0.7071i
   0.7071 + 0.7071i
      ⋮

Сопоставление с элементами ресурсов

Создайте индексы PBCH и сопоставьте символы PBCH с блоком SS/PBCH. Следует отметить, что коэффициент масштабирования 3 применяется к символам PBCH для представления βPBCH в TS 38.211 Раздел 7.4.3.1.3:

pbchIndices = nrPBCHIndices(ncellid);
ssblock(pbchIndices) = 3 * pbchSymbols;

Снова постройте график матрицы блоков SS/PBCH для отображения местоположений PSS, SSS и PBCH:

imagesc(abs(ssblock));
caxis([0 4]);
axis xy;
xlabel('OFDM symbol');
ylabel('Subcarrier');
title('SS/PBCH block containing PSS, SSS and PBCH');

Figure contains an axes. The axes with title SS/PBCH block containing PSS, SSS and PBCH contains an object of type image.

Опорный сигнал демодуляции PBCH (PBCH DM-RS)

Конечным компонентом блока SS/PBCH является DM-RS, связанный с PBCH. Аналогично PBCH, используемая последовательность DM-RS вытекает из индекса блока SS/PBCH и конфигурируется с использованием переменной i‾SSB, описанной в TS 38.211 Раздел 7.4.1.4.1. Здесь используется i‾SSB=0:

ibar_SSB = 0;
dmrsSymbols = nrPBCHDMRS(ncellid,ibar_SSB)
dmrsSymbols = 144×1 complex

   0.7071 - 0.7071i
   0.7071 + 0.7071i
  -0.7071 + 0.7071i
  -0.7071 + 0.7071i
   0.7071 - 0.7071i
   0.7071 + 0.7071i
   0.7071 - 0.7071i
  -0.7071 - 0.7071i
  -0.7071 - 0.7071i
   0.7071 + 0.7071i
      ⋮

Обратите внимание, что TS 38.211 раздел 7.4.1.4.1 определяет промежуточную переменную iSSB, которая определена аналогично v, описанной ранее для PBCH.

Создайте индексы PBCH DM-RS и сопоставьте символы PBCH DM-RS с блоком SS/PBCH. Обратите внимание, что коэффициент масштабирования 4 применяется к символам PBCH DM-RS для представления β PBCHDM-RS в TS 38.211 Раздел 7.4.3.1.3:

dmrsIndices = nrPBCHDMRSIndices(ncellid);
ssblock(dmrsIndices) = 4 * dmrsSymbols;

Снова постройте график матрицы блоков SS/PBCH, чтобы показать местоположения PSS, SSS, PBCH и PBCH DM-RS:

imagesc(abs(ssblock));
caxis([0 4]);
axis xy;
xlabel('OFDM symbol');
ylabel('Subcarrier');
title('SS/PBCH block containing PSS, SSS, PBCH and PBCH DM-RS');

Figure contains an axes. The axes with title SS/PBCH block containing PSS, SSS, PBCH and PBCH DM-RS contains an object of type image.

Формирование пакета SS

Пакет SS, состоящий из множества блоков SS/PBCH, может быть сформирован путем создания более крупной сетки и отображения блоков SS/PBCH в соответствующие местоположения, причем каждый блок SS/PBCH имеет правильные параметры в соответствии с местоположением.

Создание сетки пакетов SS

В стандарте NR символы OFDM группируются в слоты, подкадры и кадры. Как определено в TS 38.211 Раздел 4.3.1, в кадре имеется 10 подкадров, и каждый подкадр имеет фиксированную длительность 1 мс. Каждый пакет SS имеет длительность половины кадра и поэтому охватывает 5 подкадров:

nSubframes = 5
nSubframes = 5

TS 38.211 Раздел 4.3.2 определяет каждый слот как имеющий 14 символов OFDM (для обычной длины циклического префикса), и это фиксируется:

symbolsPerSlot = 14
symbolsPerSlot = 14

Однако количество временных интервалов на подкадр изменяется и является функцией интервала между поднесущими. По мере увеличения интервала между поднесущими длительность символа OFDM уменьшается, и поэтому большее количество символов OFDM может быть установлено в фиксированную длительность подкадра, равную 1 мс.

Имеется 5 конфигураций интервалов между поднесущими λ = 0... 4, причем соответствующий интервал между поднесущими равен 15⋅2μ кГц. В этом примере мы будем использовать λ = 1, соответствующий интервалу между поднесущими 30 кГц:

mu = 1
mu = 1

Количество временных интервалов на подкадр составляет 2 мкм, так как удвоение интервала между поднесущими вдвое увеличивает длительность символа OFDM. Следует отметить, что определение слота в NR отличается от LTE: подкадр в LTE состоит из 2 слотов по 7 символов (для нормального циклического префикса), тогда как в NR подкадр, использующий интервал поднесущих LTE (λ = 0, 15 кГц), состоит из 1 слота по 14 символов.

Вычислите общее количество символов OFDM в пакете SS:

nSymbols = symbolsPerSlot * 2^mu * nSubframes
nSymbols = 140

Создайте пустую сетку для всего пакета SS:

ssburst = zeros([240 nSymbols]);

Определение образца блока SS

Шаблон блоков SS/PBCH в пакете SS косвенно определяется процедурой поиска соты в TS 38.213, которая описывает местоположения, в которых UE может обнаружить блок SS/PBCH. Имеется 5 блочных шаблонов, Case A - Case E, которые имеют различные расстояния между поднесущими и применимы для различных несущих частот.

Создайте индексы первых символов в возможных блоках SS/PBCH для шаблона блока Case B, который имеет L = 8 блоков на пакет:

n = [0, 1];
firstSymbolIndex = [4; 8; 16; 20] + 28*n;
firstSymbolIndex = firstSymbolIndex(:).'
firstSymbolIndex = 1×8

     4     8    16    20    32    36    44    48

Создание содержимого пакета SS

Теперь может быть создан цикл, который генерирует каждый блок SS и назначает его в соответствующее местоположение пакета SS. Обратите внимание на следующее:

  • Код повторно использует различные переменные, созданные ранее в этом примере (PSS, SSS и 4 набора индексов).

  • PSS и SSS не зависят от индекса блока SS/PBCH, поэтому они могут быть преобразованы в блок SS перед закольцовыванием.

  • Индексы PBCH и индексы PBCH DM-RS не зависят от индекса блока SS/PBCH, поэтому не требуется обновление в цикле

  • iSSB, i‾SSB и v устанавливаются в соответствии с правилами TS 38.211 разделы 7.3.3.1 и 7.4.1.4.1 для случая L = 8.

  • Каждый канал/сигнал был масштабирован, чтобы придать им различные цвета на конечном графике

ssblock = zeros([240 4]);
ssblock(pssIndices) = pssSymbols;
ssblock(sssIndices) = 2 * sssSymbols;

for ssbIndex = 1:length(firstSymbolIndex)
    
    i_SSB = mod(ssbIndex - 1,8);
    ibar_SSB = i_SSB;
    v = i_SSB;
    
    pbchSymbols = nrPBCH(cw,ncellid,v);
    ssblock(pbchIndices) = 3 * pbchSymbols;
    
    dmrsSymbols = nrPBCHDMRS(ncellid,ibar_SSB);
    ssblock(dmrsIndices) = 4 * dmrsSymbols;
    
    ssburst(:,firstSymbolIndex(ssbIndex) + (0:3)) = ssblock;
    
end

Наконец, постройте график содержимого пакета SS:

imagesc(abs(ssburst));
caxis([0 4]);
axis xy;
xlabel('OFDM symbol');
ylabel('Subcarrier');
title('SS burst, block pattern Case B');

Figure contains an axes. The axes with title SS burst, block pattern Case B contains an object of type image.

См. также

Функции

Связанные темы