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

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

Блок SS/PBCH

Раздел TS 38.211 7.4.3.1 задает блок Synchronization Signal / Physical Broadcast Channel (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 в TS 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 в 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 и MIB и примере Восстановления SIB1. Здесь кодовая комбинация PBCH, состоящая из 864 случайных битов, используется:

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

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

  • Скремблирование

  • Модуляция

  • Отображение с физическими ресурсами

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

Несколько блоков SS/PBCH передаются через половину системы координат, как описано в процедуре поиска ячейки в Разделе TS 38.213 4.1. Каждому блоку SS/PBCH дают индекс от 0L-1, где L номер блоки SS/PBCH в половине системы координат. Борющаяся последовательность для PBCH инициализируется согласно идентичности ячейки ncellid, и подпоследовательность, используемая, чтобы скремблировать кодовую комбинацию PBCH, зависит от значения v, 2 или 3 LSBs индекса блока 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 и сконфигурирована с помощью переменной iSSB описанный в Разделе TS 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 в 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, с соответствующей разрядкой поднесущей быть 152μ kHz. В этом примере мы будем использовать μ=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 составов блока, Случаются - Случай E, которые имеют различные интервалы поднесущей и применимы для различных несущих частот.

Создайте индексы первых символов в кандидате блоки SS/PBCH для Случая состава блока 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 настраиваются согласно правилам в Разделах 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.

Смотрите также

Функции

Похожие темы