文档

NR同步流程

本例演示如何构造包含同步信号突发(SS突发)的波形,将该波形通过带有AWGN的衰落信道传递,然后盲目同步到接收到的波形以解码主信息块(MIB)。

简介

在用户终端(UT)可以与网络通信之前,它必须执行单元搜索和选择程序,并获得初始的系统信息。该过程的前几个步骤是获取帧同步,找出单元标识和解码主信息块(MIB)。本示例演示了如何使用5G Toolbox (TM)执行这些步骤。

下图显示了处理链中的主要步骤。

  • 破裂的一代:结构破裂创建了配置SS突发的功能hSSBurst用于创建包含SS突发的OFDM资源网格。

  • 光束扫描:用于SS突发的OFDM资源网格波束形成到一组物理传输天线上,突发中的每个SS/PBCH块具有不同的波束形成矢量。

  • 传播渠道:传输波形通过TDL传播信道模型传递。

  • 情况下:接收天线采用加性高斯白噪声。

  • 接收机:对接收到的波形应用各种同步和解调过程,以建立单元标识并解码主信息块(MIB)。

下图显示了接收器内部的处理步骤。

下面将详细解释这些处理步骤。

破裂的配置

一个结构破裂用于配置SS突发,包括突发内SS/PBCH块的模式配置和MIB (Master Information Block)的内容配置。

%与突发结构本身相关的突发配置:破裂。BlockPattern =“案例B”;破裂。SSBPeriodicity = 20;破裂。NFrame = 4;破裂。SSBTransmitted = [1 1 1 1 1 1 1 1];破裂。NCellID = 102;%与载波相关的突发配置(10mhz,参见TS 38.104表% 5.3.2-1):gnb。SubcarrierSpacing = 15;gnb。NRB = 52;gnb。CyclicPrefix =“正常”;carrierInfo = hOFDMInfo(gnb);破裂。SampleRate = carrierInfo.SamplingRate;K = carrierInfo.NSubcarriers;破裂。FrequencyPointA = -K/2 * gnb。SubcarrierSpacing * 1e3;%与MIB内容相关的突发配置:破裂。dmrstypeposition = 2;破裂。PDCCHConfigSIB1 = 17;破裂。cellbars = 0;破裂。IntraFreqReselection = 0;破裂。SubcarrierSpacingCommon = carrierInfo.SubcarrierSpacing; burst.DisplayBurst = true;

通道配置

一种抽动延迟线(TDL)传播信道通道,以及在接收端添加AWGN的信噪比。

%配置发送和接收天线个数Ntxants = 8;Nrxants = 2;%配置通道速度= 30.0;Fc = 4e9;C = physconst(“光速”);Fd =(速度*1000/3600)/c*fc;channel = nrTDLChannel;通道。种子= 24;通道。DelayProfile =“TDL-C”;通道。DelaySpread = 300e-9;通道。MaximumDopplerShift = fd;通道。MIMOCorrelation =“媒介”;通道。极化=“Cross-Polar”;通道。numtransmitantenna = ntxants;通道。numreceiveantenna = nrxants;%配置AWGN的信噪比SNRdB = 10;

破裂的一代

这个函数hSSBurst用于创建包含SS突发的OFDM资源网格。资源网格的大小使相应的OFDM调制波形具有等于所指定的采样率破裂。SampleRate,这使得它可以很容易地添加到携带PDCCH和PDSCH的波形中。当SS/PBCH块和PDCCH/PDSCH具有不同的子载波间距时,需要进行时域波形组合。

显示间隔百分比disp(破裂);创建并显示突发信息burstInfo = hSSBurstInfo(burst);disp (burstInfo);%创建突发资源网格[~,burstGrid] = hSSBurst(burst);
BlockPattern:“案例B”SSBPeriodicity: 20 NFrame: 4 SSBTransmitted: [1 1 1 1 1 1 1 1] NCellID: 102 SampleRate: 15360000 FrequencyPointA: -4680000 DMRSTypeAPosition: 2 PDCCHConfigSIB1: 17 CellBarred: 0 IntraFreqReselection: 0 SubcarrierSpacingCommon: 15 DisplayBurst: 1 SubcarrierSpacing: 30 NCRB_SSB: 6 k_SSB: 0 FrequencyOffsetSSB: 0 MIB:[24×1双)L: 8 SSBIndex: [0 1 2 3 4 5 6 7] i_SSB: [0 1 2 3 4 5 6 7] ibar_SSB: [0 1 2 3 4 5 6 7] SampleRate: 15360000 Nfft: 512 NRB: 36 CyclicPrefix:'Normal' occupiedsubcarrier: [240×1 double] OccupiedSymbols: [8×4 double]

光束扫描

用于SS突发的OFDM资源网格被波束形成到一组物理传输天线上,突发中的每个SS/PBCH块具有不同的波束形成向量。然后对波束形成的OFDM资源网格进行OFDM调制,得到时域波形。

配置波束形成权值W = fft(eye(ntxants)) / sqrt(ntxants);%波束构成OFDM符号对应于每个突发beamformedGrid = 0 ([size(burstGrid) ntxants]);blockSubcarriers = burstInfo.OccupiedSubcarriers;ssb = 1:length(burstInfo.SSBIndex) blockSymbols = burstinfo . occuedsymbols (ssb,:);block = burstGrid(blockSubcarriers,blockSymbols);Wssb = W(mod(ssb-1,ntxants)+1,:);beamformedBlock =重塑(block(:) * Wssb,[size(block) ntxants]);beamformedGrid(blockSubcarriers,blockSymbols,:) = beamformedBlock;结束执行OFDM调制beamformedGrid = beamformedGrid(:,1:max(burstinfo . occuedsymbols (:))+1,:);ofdmConfig。SubcarrierSpacing = burstInfo.SubcarrierSpacing;ofdmConfig。NRB = burstInfo.NRB;ofdmConfig。CyclicPrefix = burstInfo.CyclicPrefix;ofdmConfig。窗口= 0;[burst波形,ofdmInfo] = hofdm调制(ofdmConfig,beamformedGrid);

传播渠道

所述传输波形通过TDL传播信道模型传递,从而得到所配置天线数量的接收波形。

rx波形=通道(burst波形);

情况下

接收天线采用加性高斯白噪声。

rng (“默认”);rx波形= awgn(rx波形,SNRdB,-10*log10(double(ofdmInfo.Nfft)));

PSS搜索

执行PSS搜索,包括将接收到的波形(跨所有SS/PBCH块)与三个可能的PSS序列中的每一个相关,并提取最强相关峰值。具有最强相关峰值的SS/PBCH块表示波束扫描中哪一束最有效地将信号定向到接收机。

pssIndices = nrPSSIndices;pssGrid = 0 ([240 4]);refGrid = 0 ([ofdmInfo.]NSubcarriers ofdmInfo.SymbolsPerSlot]);k = burstinfo .占用子载波;图;持有;Peak_value = 0 (1,3);Peak_index = 0 (1,3);NID2 = [0 1 2] pssRef = nrPSS(NID2);pssGrid(pssIndices) = pssRef;refGrid(k,2:5) = pssGrid;nSlot = 0;[~,corr] = nrTimingEstimate(rx波形,ofdmConfig.NRB,ofdmConfig.SubcarrierSpacing,nSlot,refGrid,“CyclicPrefix”, ofdmConfig.CyclicPrefix);Corr = sum(abs(Corr),2);[peak_value(NID2+1),peak_index(NID2+1)] = max(corr);peak_index(NID2+1) = peak_index(NID2+1) + ofdminfo . symbollength (1);情节(corr);结束绘制PSS相关性axis([1 length(rx波形(:,1))0 max(peak_value)*1.1]);标题(“PSS相关性(时域)”);ylabel (“级”);包含(“样本指数”);通过找到最强的相关性来确定NID2NID2 = find(peak_value==max(peak_value)) - 1;确定定时偏移量offset = peak_index(NID2+1) - 1;绘制选定的NID2情节(抵消+ 1-ofdmInfo.SymbolLengths (1) peak_value (NID2 + 1),“kx”“线宽”,2,“MarkerSize”8);LGD =传说;乐金显示器。翻译=“乳胶”;传说=$ n_ {id}^{(2)}$ = "+ num2cell (0:2);传奇([传说$ n_ {id}^{(2)}$ = "+ num2str (NID2)]);提取最强爆发offset = offset - ofdinfo . symbollength (1);rxGrid = hOFDMDemodulate(ofdmConfig, rx波形(1+偏移量:结束,:));rxGrid = rxGrid(burstInfo.OccupiedSubcarriers,2:5,:);

SSS搜索

利用PSS相关峰值的时序同步波形,并进行OFDM解调。提取与SSS相关联的子载波,并与每个可能的SSS序列相关联。结合最强的PSS和SSS序列的指标,给出物理层细胞身份,这是PBCH DM-RS和PBCH处理所必需的。

从SS/PBCH块中提取接收到的SSS符号sssIndices = nrSSSIndices;sssRx = nrExtractResources(sssIndices,rxGrid);将接收到的SSS符号与每个可能的SSS序列相关联ss本= 0 (1336);NID1 = 0:335 ncellid = (3*NID1) + NID2;sssRef = nrSSS(ncellid);党卫军(NID1 + 1) =总和(abs(平均(sssRx。*连词(sssRef), 1)) ^ 2);结束绘制SSS相关性图;茎(0:335党卫军,“o”);标题(“SSS相关性(频域)”);包含(“美元N_ {ID} ^{(1)} $”“翻译”“乳胶”);ylabel (“级”);轴([-1 336 0 max(ss最深)*1.1]);通过找到最强的相关性来确定NID1NID1 = find(ss最深层==max(ss最深层))- 1;绘制选定的NID1持有;情节(NID1马克斯(ss),“kx”“线宽”,2,“MarkerSize”8);LGD =传说;乐金显示器。翻译=“乳胶”;传奇([“相关性”"$ n_ {id}^{(1)}$ = "+ num2str (NID1)]);从NID1和NID2形成整体细胞标识ncellid = (3*NID1) + NID2;

PBCH DM-RS搜索

在类似于SSS搜索的过程中,提取PBCH DM-RS对应的子载波,并与每个可能的PBCH DM-RS序列进行关联。最强的PBCH DM-RS的索引决定了SS/PBCH块索引的lsb,这是PBCH置乱初始化所必需的。

从SS/PBCH块中提取接收到的PBCH DM-RS符号dmrsIndices = nrPBCHDMRSIndices(ncellid);[dmrsRx,dmrsRxIndices] = nrExtractResources(dmrsIndices,rxGrid);%将接收到的DM-RS符号与每个可能的DM-RS序列相关联dmr本= 0 (1,8);ibar_SSB = 0:7 dmrsRef = nrPBCHDMRS(ncellid,ibar_SSB);dmrsRx (ibar_SSB+1) = sum(abs(mean(dmrsRx .* conj(dmrsRef),1)).^2);结束绘制PBCH DM-RS相关性图;茎(0:7 dmrsEst,“o”);标题(PBCH DM-RS相关性(频域));包含(“美元\眉题{我}_{单边带}$”“翻译”“乳胶”);xticks (0:7);ylabel (“级”);轴([-1 8 0 max(dmrsse)*1.1]);为最强的相关性记录ibar_SSBibar_SSB = find(dmrse ==max(dmrse)) - 1;绘制选定的ibar_SSB持有;情节(ibar_SSB马克斯(dmrsEst),“kx”“线宽”,2,“MarkerSize”8);LGD =传说;乐金显示器。翻译=“乳胶”;传奇([“相关性”"$\overline{i}_{SSB}$ = "+ num2str (ibar_SSB)]);

基于PBCH DM-RS的信道估计

既然知道了PBCH DM-RS序列,就可以通过估计每个PBCH DM-RS资源元素位置中的信道并在SS/PBCH块上进行插值来创建SS/PBCH块的信道估计。对PBCH DM-RS上的加性噪声进行了估计。

refGrid = 0 ([240 4]);refGrid(dmrsIndices) = nrPBCHDMRS(ncellid,ibar_SSB);[hest,nest] = nrChannelEstimate(rxGrid,refGrid,“CyclicPrefix”, ofdmConfig.CyclicPrefix);

PBCH解调

提取与PBCH相关的子载波,并使用信道和噪声估计来执行MMSE均衡。然后对均衡的PBCH符号进行解调和解扰,以给出编码的BCH块的位估计。

从SS/PBCH块中提取接收到的PBCH符号[pbchIndices,pbchIndicesInfo] = nrPBCHIndices(ncellid);pbchRx = nrExtractResources(pbchIndices,rxGrid);均衡前接收PBCH星座的百分比图;情节(pbchRx“o”);标题('已接收PBCH星座');m = max(abs([real(pbchRx(:)));imag(pbchRx(:))))) * 1.1;轴([-m m -m m]);根据TS 38.211章节7.3.3.1配置'v'用于PBCH置乱对于L=4, % 'v'也是SS/PBCH块索引的2个lsb,或者3个lsb当L=8或64时%如果(burstInfo.L==4) v = mod(ibar_SSB,4);其他的v = ibar_SSB;结束ssbIndex = v;% PBCH均衡和CSI计算pbchHest = nrExtractResources(pbchIndices,hest);[pbchEq,csi] = nrEqualizeMMSE(pbchRx, pbchest,nest);Qm = pbchIndicesInfo。G / pbchIndicesInfo.Gd;csi = repmat(csi.',Qm,1);Csi =重塑(Csi,[],1);均衡后接收PBCH星座的百分比图;情节(pbchEq“o”);标题(“均衡PBCH星座”);m = max(abs([real(pbchEq(:)));imag(pbchEq(:)))) * 1.1;轴([-m m -m m]);% PBCH解调pbchBits = nrPBCHDecode(pbchEq,ncellid,v,nest);计算RMS PBCH EVMpbchRef = nrPBCH(pbchBits<0,ncellid,v);evm = com . evm;evm_rms = evm(pbchRef,pbchEq);显示计算的EVMdisp ([' rms PBCH evm = 'num2str (evm_rms' % 0.3 f '“%”]);
RMS PBCH evm = 34.353%

BCH译码

BCH比特估计值使用MMSE均衡器的信道状态信息(CSI)进行加权,然后执行BCH解码,包括速率恢复、极性解码、CRC解码、解扰以及将24个BCH传输块位与8个额外的与时间相关的有效载荷位分离。

%适用CSIpbchBits = pbchBits .* csi;执行BCH解码,包括速率恢复、极性解码和CRC%解码。PBCH解扰和BCH传输块分离% bits 'trblk'从8个额外的有效负载位A…还执行A+7:% a…A+3:系统帧号为4个lsb% A+4:半帧数% a +5…A+7:对于L=64, SS/PBCH块指数的3个msb%对于L=4或8,A+5是子载波偏移量k_SSB的MSBpolarListLength = 8;(~呃,trblk、sfn4lsb nHalfFrame, msbidxoffset] =...nrBCHDecode (pbchBits polarListLength、burstInfo.L ncellid);%使用'msbidxoffset'值设置'k_SSB'或'ssbIndex'的位,具体取决于在突发中SS/PBCH块数量的%如果(burstInfo.L==64) ssbIndex = ssbIndex + (bi2de(msbidxoffset.',“left-msb”) * 8);k_SSB = 0;其他的k_SSB = msbidxoffset * 16;结束%显示BCH CRCdisp ([' bch CRC = 'num2str (err)]);%显示SSB索引disp (['SSB index = 'num2str (ssbIndex)]);
BCH CRC = 0 SSB index = 1

MIB解析

最后,24个解码后的BCH传输块位被解析成一个表示MIB消息字段的结构。这包括重构10位系统帧号(SFN)。NFrameMIB中的6个msb和PBCH负载位中的4个lsb。它还包括合并子载波偏移的MSBk_SSB在L=4或8个SS/PBCH块的情况下,从PBCH有效载荷位。

创建一组以解码后的第7位为信号的子载波间距FR1 (L=4或8)和FR2 (L=64)的set是不同的。如果(burstInfo.L==64) commonSCSs = [60 120];其他的commonSCSs = [15 30];结束从解码后的MIB位创建一个MIB字段结构。的BCH传输块'trblk'是RRC消息bch - bch - message,由对应MIB的前导0位到23位的%mib。NFrame = bi2de([trblk(2:7);sfn4lsb]。”“left-msb”);mib。SubcarrierSpacingCommon = commonSCSs(trblk(8) + 1);mib。k_SSB = k_SSB + bi2de(trblk(9:12).',“left-msb”);mib。dmrstypeposition = 2 + trblk(13);mib。PDCCHConfigSIB1 = bi2de(trblk(14:21).',“left-msb”);mib。cellbars = trblk(22);mib。IntraFreqReselection = trblk(23);显示MIB结构disp (mib);
NFrame: 4 SubcarrierSpacingCommon: 15 k_SSB: 0 dmrstypeposition: 2 PDCCHConfigSIB1: 17 cellblocked: 0 IntraFreqReselection: 0

另请参阅

对象

功能

相关的话题