提取 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 0.3i];
[~,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); scatterplot(pbchRxSym(:),[],[],'y+'); title('Received PBCH Constellation');

通过对提取的资源进行 MMSE 均衡处理,实现符号均衡。绘制结果。
pbchEqSym = nrEqualizeMMSE(pbchRxSym,pbchHestSym,nEst); scatterplot(pbchEqSym(:),[],[],'y+'); 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
2.0000
-2.0000
-2.0000
2.0000
-2.0000
⋮