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

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

PBCH Coding и Beamforming

Создайте случайную последовательность двоичных значений, соответствующих кодовой комбинации 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 создать индексы для двух антенн передачи beamformed PBCH. Используйте эти индексы, чтобы сопоставить beamformed PBCH в массив ресурса передатчика.

P = 2;
txGrid = zeros([240 4 P]);
F = [1 1i];
[~,bfInd] = nrExtractResources(pbchInd,txGrid);
txGrid(bfInd) = pbchTxSym*F;

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

txWaveform = ofdmmod(txGrid,256,[22 18 18 18],[1:8 249:256].');

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

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

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

Создайте оценки канала включая beamforming.

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

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

 rxGrid = ofdmdemod(rxWaveform,256,[22 18 18 18],0,[1:8 249:256].');

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

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

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

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

Получите мягкие биты путем выполнения 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
      ⋮

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

Функции

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