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