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

Этот пример показывает, как сгенерировать блок сигнала синхронизации (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. Обратите внимание, что коэффициент масштабирования 1 применяется к символам PSS, чтобы представлять βPSS в ТС 38.211 Раздел 7.4.3.1.1:

ssblock(pssIndices) = 1 * pssSymbols;

Постройте график блочной матрицы SS/PBCH, чтобы показать местоположение PSS:

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 для тех же тождеств камеры, что и для PSS:

sssSymbols = nrSSS(ncellid)
sssSymbols = 127×1

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

Создайте индексы SSS и сопоставьте символы SSS с блоком SS/PBCH по тому же шаблону, что и для PSS. Обратите внимание, что коэффициент масштабирования 2 применяется к символам SSS, чтобы представлять βSSS в ТС 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 передаются через половину системы координат, как описано в процедуре поиска камеры в разделе 4.1 TS 38.213. Каждому блоку SS/PBCH задается индекс от 0L-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 в ТС 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 и конфигурируется с помощью переменной iSSB описан в ТУ 38.211 Раздел 7.4.1.4.1. Здесь iSSB=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 в ТС 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 имеет правильные параметры в соответствии с местоположением.

Создайте сигнальную сетку СБ

В стандарте 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, с соответствующим интервалом поднесущих, 152μ кГц. В этом примере мы будем использовать μ=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 шаблонов блоков, Случай A - Случай 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, iSSB и v устанавливаются в соответствии с правилами ТС 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.

См. также

Функции

Похожие темы

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