这个例子展示了如何生成一个同步信号块(SSB)和生成多个SSB来形成一个同步信号突发(SS突发)。形成同步信号块的通道和信号(主、次同步信号、物理广播通道)被创建并映射到表示该块的矩阵中。最后创建一个表示同步信号突发的矩阵,并将突发中的每个同步信号块映射到该矩阵中。
TS 38.211第7.4.3.1节将同步信号/物理广播信道(SS/PBCH)块定义为240个子载波和4个OFDM符号,包含以下信道和信号:
一次同步信号(PSS)
二次同步信号(SSS)
物理广播信道(PBCH)
PBCH解调参考信号(PBCH DM-RS)
在其他文档中,例如TS 38.331, SS/PBCH被称为“同步信号块”或“SS块”。
创建一个240 × 4矩阵表示SS/PBCH块:
Ssblock = 0 ([240 4])
ssblock =240×4⋮
为给定的单元格标识创建PSS:
ncellid = 17;pssSymbols = nrPSS (ncellid)
pssSymbols =127×1-1 -1 -1 -1 -1 1 1 1 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 (副载波的);标题('SS/PBCH block containing PSS');
创建与PSS配置相同的cell标识的SSS:
sssSymbols = nrSSS (ncellid)
sssSymbols =127×11 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1⋮
创建SSS索引并将SSS符号映射到SS/PBCH块,遵循用于PSS的相同模式。注意,缩放因子2应用于SSS符号,以表示 TS 38.211第7.4.3.1.2节:
sssIndices = nrSSSIndices;ssblock(sssIndices) = 2 * sssSymbols;
索引的默认形式是基于1的线性索引,适用于MATLAB矩阵的线性索引,如ssblock
正如已经显示。然而,NR标准文档用OFDM子载波和符号下标来描述OFDM资源,使用基于0的编号。为了方便与NR标准进行交叉检查,索引函数接受选项,允许选择索引样式(线性索引vs下标)和基(0基vs 1基):
sssSubscripts = nrSSSIndices (“IndexStyle”,“下标”,“IndexBase”,基于“0”)
sssSubscripts =127年x3 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 20 0⋮
从下标可以看出,SSS位于SS/PBCH块的OFDM符号2(基于0)中,从子载波56(基于0)开始。
再次绘制SS/PBCH块矩阵,以显示PSS和SSS的位置:
显示亮度图像(abs (ssblock));caxis ([0 4]);轴xy;包含(OFDM符号的);ylabel (副载波的);标题('SS/PBCH block containing PSS and SSS');
PBCH携带长度为864位的码字,是通过对主信息块(MIB)进行BCH编码而创建的。有关BCH编码的更多信息,请参阅函数nrBCH
和nrBCHDecode
以及它们在NR Cell Search and MIB and SIB1 Recovery的例子。这里使用的是由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 lbs,如TS 38.211第7.3.3.1节所述。在这个例子中,
使用。这个函数nrPBCH
生成置乱序列的适当子序列,进行置乱,然后进行QPSK调制:
v = 0;pbchSymbols = nrPBCH (cw、ncellid v)
pbchSymbols =432×1复杂0.7071 + 0.7071i 0.7071 + 0.7071i 0.7071 -0.7071 i 0.7071 + 0.7071i 0.7071 -0.7071 i 0.7071 + 0.7071i 0.7071 + 0.7071i⋮
创建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块');
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 + 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 (副载波的);标题('含PSS, SSS, PBCH和PBCH DM-RS的SS/PBCH块');
通过创建一个更大的网格,将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码元持续时间减小,因此更多的OFDM码元可以装入固定的1ms子帧持续时间中。
有5个子载波间距配置 ,对应的子载波间距为 kHz。在这个例子中我们将使用 ,对应30 kHz子载波间距:
μ= 1
μ= 1
每个子帧的槽位数为 ,当副载波间距加倍时,OFDM符号持续时间减半。注意,在NR中插槽的定义与LTE不同:在LTE中,一个子帧由2个7个符号的插槽(普通循环前缀)组成,而在NR中,一个子帧使用LTE子载波间距( , 15千赫)由一个槽14个符号组成。
计算一次SS突发中OFDM符号的总数:
nSymbols = symbolsPerSlot * 2^mu * n子帧
nSymbols = 140
创建一个空的网格为整个SS爆发:
ssburst = zero ([240 nSymbols]);
SS突发中的SS/PBCH块模式是由TS 38.213中的cell搜索程序间接指定的,该程序描述了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突发的适当位置。请注意以下几点:
代码重用了在此示例前面创建的各种变量(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');