同步信号块和突发
本例介绍如何生成一个同步信号块(SSB),并生成多个SSB形成一个同步信号突发(SS突发)。形成同步信号块的通道和信号(主要和次要同步信号,物理广播通道)被创建并映射到表示该块的矩阵中。最后创建一个表示同步信号突发的矩阵,并创建突发中的每个同步信号块并映射到该矩阵中。
SS / PBCH块
TS 38.211章节7.4.3.1将同步信号/物理广播信道(SS/PBCH)块定义为240个子载波和4个OFDM符号,包含以下信道和信号:
主同步信号
二次同步信号(SSS)
物理广播信道(PBCH)
PBCH解调参考信号(PBCH DM-RS)
在其他文档中,例如TS 38.331, SS/PBCH被称为“同步信号块”或“SS块”。
创建一个240 × 4的矩阵表示SS/PBCH块:
Ssblock = 0 ([240 4])
ssblock =240×40 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 0 0
主同步信号(PSS)
为给定的单元格标识创建PSS:
Ncellid = 17;pssSymbols = nrPSS(ncellid)
pssSymbols =127×1-1 -1 -1 -1 -1 1 1 1 -1
的
变量pssSymbols
是包含PSS的127个BPSK符号的列向量。
创建PSS指数:
pssIndices = nrPSSIndices;
的变量pssIndices
列向量的大小和pssSymbols
.的每个元素中的值pssIndices
对应符号所在的SS/PBCH块中的位置是否为线性索引pssSymbols
应该映射。因此,PSS符号到SS/PBCH块的映射可以通过简单的MATLAB赋值来执行,使用线性索引来选择SS/PBCH块矩阵的正确元素。请注意,缩放因子1应用于PSS符号,以表示
TS 38.211第7.4.3.1.1节:
ssblock(pssIndices) = 1 * pssSymbols;
绘制SS/PBCH块矩阵以显示PSS的位置:
显示亮度图像(abs (ssblock));caxis ([0 4]);轴xy;包含(OFDM符号的);ylabel (副载波的);标题(包含PSS的SS/PBCH块);
辅助同步信号(SSS)
创建与PSS配置相同的单元格标识的SSS:
sssSymbols = nrSSS(ncelllid)
sssSymbols =127×1-1 1 -1 -1 1 -1 1 -1 1 -1 1
按照用于PSS的相同模式,创建SSS索引并将SSS符号映射到SS/PBCH块。请注意,SSS符号的比例因子为2,以表示 TS 38.211第7.4.3.1.2节:
sssIndices = nrSSSIndices;ssblock(sssIndices) = 2 * sssSymbols;
索引的默认形式是基于1的线性索引,适用于MATLAB矩阵的线性索引,如ssblock
如前面所示。然而,NR标准文档在OFDM子载波和符号下标方面描述OFDM资源,使用基于0的编号。为了方便与NR标准进行交叉检查,indexes函数接受选项,允许选择索引样式(线性索引与下标)和基数(基于0的与基于1的):
sssSubscripts = nrSSSIndices(“IndexStyle”,“下标”,“IndexBase”,基于“0”)
sssSubscripts =127x3 uint32矩阵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 0
从下标可以看出,SSS位于SS/PBCH块的OFDM符号2(基于0的)中,从子载波56(基于0的)开始。
再次绘制SS/PBCH块矩阵,以显示PSS和SSS的位置:
显示亮度图像(abs (ssblock));caxis ([0 4]);轴xy;包含(OFDM符号的);ylabel (副载波的);标题(包含PSS和SSS的SS/PBCH块);
物理广播频道(PBCH)
PBCH携带一个长度为864位的码字,由对MIB (master information block)进行BCH编码生成。有关BCH编码的更多信息,请参阅函数nrBCH
而且nrBCHDecode
以及它们在NR Cell搜索、MIB和SIB1恢复的例子。这里使用了一个由864个随机位组成的PBCH码字:
Cw = randi([0 1],864,1);
PBCH调制由TS 38.211节7.3.3中描述的以下步骤组成:
加扰
调制
物理资源映射
置乱和调制
多个SS/PBCH块在半帧内传输,如TS 38.213章节4.1中的单元搜索过程所述。每个SS/PBCH块都有一个索引
,在那里
为半帧内SS/PBCH块数。根据单元标识初始化PBCH的置乱序列ncellid
,用于打乱PBCH码字的子序列取决于该值
, SS/PBCH块索引的2或3个lsb,如TS 38.211章节7.3.3.1所述。在这个例子中,
使用。这个函数nrPBCH
创建置乱序列的相应子序列,执行置乱,然后执行QPSK调制:
V = 0;pbchSymbols = nrPBCH(cw,ncellid,v)
pbchSymbols =432×1复杂-0.7071 + 0.7071我-0.7071 + 0.7071我-0.7071 + 0.7071 -0.7071 - 0.7071 0.7071 -0.7071 + 0.7071 + 0.7071我-0.7071 + 0.7071我0.7071 - 0.7071 0.7071 + 0.7071我⋮0.7071 + 0.7071
映射到资源元素
创建PBCH索引并将PBCH符号映射到SS/PBCH块。请注意,缩放因子3应用于PBCH符号,以表示 TS 38.211第7.4.3.1.3节:
pbchIndices = nrPBCHIndices(ncellid);ssblock(pbchIndices) = 3 * pbchSymbols;
再次绘制SS/PBCH块矩阵,以显示PSS、SSS和PBCH的位置:
显示亮度图像(abs (ssblock));caxis ([0 4]);轴xy;包含(OFDM符号的);ylabel (副载波的);标题(包含PSS, SSS和PBCH的SS/PBCH块);
PBCH解调参考信号(PBCH DM-RS)
SS/PBCH块的最后一个组件是与PBCH相关联的DM-RS。与PBCH类似,使用的DM-RS序列派生自SS/PBCH块索引,并使用该变量进行配置 TS 38.211节7.4.1.4.1所述。在这里 使用:
ibar_SSB = 0;dmrsSymbols = nrPBCHDMRS(ncellid,ibar_SSB)
dmrsSymbols =144×1复杂0.7071 -0.7071 i 0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 i 0.7071 -0.7071 i 0.7071i -0.7071 i 0.7071i 0.7071i 0.7071 + 0.7071i
注意TS 38.211章节7.4.1.4.1定义了一个中间变量 它的定义是一样的 前面描述的PBCH。
创建PBCH DM-RS索引并将PBCH DM-RS符号映射到SS/PBCH块。请注意,将比例因子4应用于PBCH DM-RS符号,以表示 TS 38.211第7.4.3.1.3节:
dmrsIndices = nrPBCHDMRSIndices(ncellid);ssblock(dmrsIndices) = 4 * dmrsSymbols;
再次绘制SS/PBCH块矩阵,以显示PSS、SSS、PBCH和PBCH DM-RS的位置:
显示亮度图像(abs (ssblock));caxis ([0 4]);轴xy;包含(OFDM符号的);ylabel (副载波的);标题(SS/PBCH块,包含PSS, SSS, PBCH和PBCH DM-RS);
产生SS爆发
SS突发由多个SS/PBCH块组成,可以通过创建一个更大的网格并将SS/PBCH块映射到适当的位置来生成,每个SS/PBCH块根据位置具有正确的参数。
创建SS爆发网格
在NR标准中,OFDM符号被分组为插槽、子帧和帧。TS 38.211章节4.3.1定义,一帧有10个子帧,每个子帧的持续时间固定为1ms。每个SS爆发的持续时间为半帧,因此横跨5个子帧:
nSubframes = 5
nSubframes = 5
TS 38.211章节4.3.2定义每个槽有14个OFDM符号(用于正常循环前缀长度),这是固定的:
symbolsPerSlot = 14
symbolsPerSlot = 14
然而,每个子帧的槽数是变化的,是子载波间距的函数。随着子载波间距的增大,OFDM符号持续时间减小,因此可以在1ms的固定子帧持续时间内拟合更多的OFDM符号。
有5种子载波间距配置 ,对应的子载波间距为 kHz。在这个例子中,我们将使用 ,对应30 kHz子载波间距:
= 1
= 1
每个子帧的槽数为 ,因为加倍的子载波间距使OFDM符号持续时间减半。请注意,在NR中插槽的定义与LTE不同:LTE中的子帧由2个7个符号的插槽(用于普通循环前缀)组成,而在NR中,使用LTE子载波间距的子帧( , 15千赫)由一个槽14个符号组成。
计算SS突发中OFDM符号的总数:
nSymbols = symbolsPerSlot * 2^mu * nSubframes
nSymbols = 140
为整个SS爆发创建一个空网格:
ssburst = 0 ([240 nSymbols]);
定义SS块模式
SS爆发中SS/PBCH块的模式由TS 38.213中的单元搜索过程间接指定,该过程描述了UE可能检测到SS/PBCH块的位置。有5种分组模式,Case A - Case E,具有不同的子载波间距,适用于不同的载波频率。
为块模式Case B创建候选SS/PBCH块中第一个符号的索引 每次爆发的块数:
N = [0,1];firstSymbolIndex = [4;8;16;20] + 28*n;firstSymbolIndex = firstSymbolIndex(:).'
firstSymbolIndex =1×848 16 20 32 36 44 48
创建SS突发内容
现在可以创建一个循环,生成每个SS块,并将其分配到SS爆发的适当位置。注意事项:
代码重用了本例前面创建的各种变量(PSS、SSS和4组索引)
PSS和SSS独立于SS/PBCH块索引,因此可以在循环之前映射到SS块中
PBCH索引和PBCH DM-RS索引独立于SS/PBCH块索引,因此不需要在循环中更新
, 而且 根据TS 38.211章节7.3.3.1和7.4.1.4.1的规则设置 .
每个通道/信号都被缩放,以便在最终的图形中赋予它们不同的颜色
Ssblock = 0 ([240 4]);ssblock(pssIndices) = pssSymbols;ssblock(sssIndices) = 2 * sssSymbols;为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;结束
最后绘制SS爆发内容:
显示亮度图像(abs (ssburst));caxis ([0 4]);轴xy;包含(OFDM符号的);ylabel (副载波的);标题('SS爆裂,块状模式B案例');