Извлечение символов PBCH и оценок канала для декодирования

Извлекают символы физического широковещательного канала (PBCH) из принятой сетки и связанных с ней оценок канала при подготовке к декодированию сформированного лучом PBCH.

PBCH-кодирование и формирования луча

Создайте случайную последовательность двоичных значений, соответствующих кодовому слову BCH. Длина кодового слова 864, как указано в TS 38.212 Раздел 7.1.5. Используя кодовое слово, создайте символы и индексы для передачи PBCH. Укажите идентификационный номер камеры физического слоя.

E = 864;
cw = randi([0 1],E,1);
ncellid = 17;
v = 0;
pbchTxSym = nrPBCH(cw,ncellid,v);
pbchInd = nrPBCHIndices(ncellid);

Использование nrExtractResources для создания индексов для двух передающих антенн пучкового PBCH. Используйте эти индексы, чтобы сопоставить сформированный лучом PBCH с ресурсным массивом передатчика.

carrier = nrCarrierConfig('NSizeGrid',20);
P = 2;
txGrid = nrResourceGrid(carrier,P);
F = [1 1i];
[~,bfInd] = nrExtractResources(pbchInd,txGrid);
txGrid(bfInd) = pbchTxSym*F;

OFDM модулирует символы PBCH, отображенные в ресурсный массив передатчика.

txWaveform = nrOFDMModulate(carrier,txGrid);

Передача и декодирование PBCH

Создайте и примените матрицу канала к форме волны. Получите переданные формы волны.

R = 3;
H = dftmtx(max([P R]));
H = H(1:P,1:R);
H = H/norm(H);
rxWaveform = txWaveform*H;

Создайте оценки канала, включая формирование луча.

 hEstGrid = repmat(permute(H.'*F.',[3 4 1 2]),[240 4]);
 nEst = 0;

Демодулируйте принятую форму волны, используя ортогональное частотное деление мультиплексирование (OFDM).

 rxGrid = nrOFDMDemodulate(carrier,rxWaveform);

При подготовке к декодированию PBCH извлекают символы из принятой сетки и сетки оценки канала.

[pbchRxSym,pbchHestSym] = nrExtractResources(pbchInd,rxGrid,hEstGrid);
figure;
plot(pbchRxSym,'o:');
title('Received PBCH Constellation'); 

Figure contains an axes. The axes with title Received PBCH Constellation contains 3 objects of type line.

Выравнивание символов путем выполнения MMSE эквализации на извлеченных ресурсах. Постройте график результатов.

pbchEqSym = nrEqualizeMMSE(pbchRxSym,pbchHestSym,nEst);
figure;
plot(pbchEqSym,'o:');
title('Equalized PBCH Constellation');

Figure contains an axes. The axes with title Equalized PBCH Constellation contains an object of type line.

Извлеките мягкие биты путем выполнения декодирования PBCH на уравненных символах.

pbchBits = nrPBCHDecode(pbchEqSym,ncellid,v)
pbchBits = 864×1
1010 ×

   -2.0000
   -2.0000
    2.0000
   -2.0000
   -2.0000
    2.0000
    2.0000
   -2.0000
   -2.0000
   -2.0000
      ⋮

См. также

Функции