这个例子展示了如何生成一个同步信号块(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的位置:
ImageC(ABS(SSBLOCK));caxis ([0 4]);轴xy;包含(OFDM符号的);ylabel ('subcarrier');标题(包含PSS的SS / PBCH块);
为与PSS配置的相同的单元格标识创建SSS:
ssssymbols = nrsss(ncellid)
ssssymbols =127×11 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1⋮
按照用于PSS的相同模式,创建SSS索引并将SSS符号映射到SS / PBCH块。注意,将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','0based')
SSSUBScripts =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的位置:
ImageC(ABS(SSBLOCK));caxis ([0 4]);轴xy;包含(OFDM符号的);ylabel ('subcarrier');标题('SS/PBCH block containing PSS and SSS');
PBCH通过执行主信息块(MIB)的BCH编码而创建的长度864位的码字。有关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 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.7071i -0.7071 - 0.7071i 0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 + 0.7071i 0.7071 - 0.7071i 0.7071 - 0.7071i 0.7071 + 0.7071i 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的位置:
ImageC(ABS(SSBLOCK));caxis ([0 4]);轴xy;包含(OFDM符号的);ylabel ('subcarrier');标题('含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-R的位置:
ImageC(ABS(SSBLOCK));caxis ([0 4]);轴xy;包含(OFDM符号的);ylabel ('subcarrier');标题('含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节第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×84 8 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 ('subcarrier');标题('SS爆裂,区块模式B');