NR同步程序

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

介绍

终端设备在与网络通信之前,必须执行cell搜索和cell选择程序,并获取初始系统信息。该过程的前几个步骤是获取帧同步,找出单元身份和解码主信息块(MIB)。本示例演示如何使用5G工具箱™执行这些步骤。

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

  • 破裂的一代:一个结构TxBurst.是创建配置SS突发,功能冰爆用于创建包含SS突发的OFDM资源网格。

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

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

  • AWGN.:添加到接收天线的添加剂白色高斯噪声。

  • 接收者:将各种同步和解调过程应用于接收的波形,以便建立小区标识并解码主信息块(MIB)。

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

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

突发配置

结构TxBurst.,用于配置SS突发,包括配置突发内SS/PBCH块的模式和主信息块(MIB)的内容。

%突发配置与突发结构本身相关:txBurst。BlockPattern ='案例b';txburst.ssbperiodicity = 20;txburst.nframe = 4;txburst.ssbtransmited = [1 1 1 1 1 11 1];txburst.ncellid = 102;与载体(10兆赫%突发配置,见TS 38.104的表%5.3.2-1):gnb.subcarrierspacing = 15;gnb.nrb = 52;gnb.cyclicprefix ='正常';carrationinfo = hofdminfo(gnb);txburst.samplerver = carrierinfo.samplingrate;k = carrierinfo.nsubcarriers;txburst.frequencypointa = -k / 2 * gnb.subcarrierspacing * 1e3;%突发配置与MIB内容相关:txburst.dmrstypeaposition = 2;txburst.pdcchconfigsib1 = 17;txburst.cellbarred = 0;txburst.intrafreqreselection = 0;txburst.subcarrierspacingcommon = carrierinfo.subcarrierspacing;txburst.displayburst = true;

频道配置

触发延迟线(TDL)传播信道渠道配置了,以及在接收器处添加AWGN的SNR。

%配置发射号码和接收天线数量ntxants = 8;nrxants = 2;%配置信道速度= 30.0;fc = 4 e9;c = physconst (“光速”);fd =速度* 1000/3600)/ c *俱乐部;频道= nrTDLChannel;通道。种子= 24;通道。DelayProfile ='tdl-c';通道。DelaySpread = 300 e-9;通道。MaximumDopplerShift = fd;通道。MIMOCorrelation =“中”;通道。极化=“穿越极地”;channel.numtransmitantennas = ntxants;channel.numreceiveantennas = nrxants;channel.samplerve = txburst.sampleate;%为awgn配置snrSNRDB = 10;

爆发生成

这个函数冰爆用于创建包含SS突发的OFDM资源网格。资源网格的大小使相应的OFDM调制波形具有与指定的采样率相等的采样率txburst.sampleate.,这允许它容易地添加到携带PDCCH和PDSCH的波形中。在SS / PBCH块和PDCCH / PDSCH具有不同的子载波间隔的情况下,需要时域组合波形。

%显示爆发DISP(txBurst);%创建和显示突发信息txBurstInfo = hSSBurstInfo (txBurst);disp (txBurstInfo);%创建突发资源网格[〜,txburstgrid] =冰爆(TxBurst);
BlockPattern:'Case B'SSBPerioDicity:20 NFRAME:4 SSBTransmited:[1 1 1 1 1 1 1] Ncellid:102 Samplege:15360000 DresimencyPointa:-4680000 Dmrstypeaposition:2 PDCCHConfigSIB1:17 Cellbarred:0 IntraFRIERSPACINGCOMMON:15展出者:1个子载波:30 NCRB_SSB:6 K_SSB:0频率OFFORMOFFSSB:0 MIB:[24x1 DOUBLE] L:8 SSBINDEX:[0 1 2 3 4 5 6 7] I_SSB:[0 1 2 3 4 5 6 7] IBBAR_SSB:[0 1 2 3 4 5 6 7] SAMPLEDE:15360000 NFFT:512 NRB:36 CyclicPrefix:'正常'占用了 -  [240x1 Double]占用了yembols:[8x4双]窗口:4

梁扫

用于SS突发的OFDM资源网格被波束地形成在一组物理传输天线上,每个SS / PBCH块在具有不同的波束形成矢量的脉冲中。然后,波束成形的OFDM资源网格是OFDM调制以提供时域波形。

%配置波束成形权重w = fft(眼睛(ntxants))/ sqrt(ntxants);%波束成形对应于每个突发的OFDM符号波束形成网格= 0 ([size(txBurstGrid) ntxants]);blockSubcarriers = txBurstInfo.OccupiedSubcarriers;对于SSB = 1:长度(txBurstInfo.SSBIndex)blockSymbols = txBurstInfo.OccupiedSymbols(SSB,:);块= txBurstGrid(blockSubcarriers,blockSymbols);Wssb = W(MOD(SSB-1,ntxants)+1,:);beamformedBlock =重塑(块(:) * Wssb,[大小(块)ntxants]);beamformedGrid(blockSubcarriers,blockSymbols,:) = beamformedBlock;结束%执行OFDM调制BeamFormedGrid = ChapFormedGrid(:,1:max(txburstinfo.occupiedsymbols(:))+ 1,:);txofdmconfig.subcarrierspacing = txburstinfo.subcarrierspacing;txofdmconfig.nrb = txburstinfo.nrb;txofdmconfig.cyclicprefix = txburstinfo.cyclicprefix;txofdmconfig.windowing = 0;[txwaveform,txofdminfo] = hofdmodulate(txofdmconfig,beamformedgrid);

传播信道

传输的波形通过TDL传播信道模型,从而产生用于配置数量的天线的接收波形。

rxWaveform =通道(txWaveform);

AWGN.

添加白色高斯噪声适用于接收天线。

RNG('默认');rxWaveform = awgn (rxWaveform SNRdB -10 * log10(双(txOfdmInfo.Nfft)));

接收器配置

为了同步和解调接收到的波形,需要以下信息:

  • SS块模式(案例a ... e):UE将知道需要基于NR工作频带搜索哪些块模式,请参阅TS 38.104表5.4.3.3-1和5.4.3.3-2 [1].SS块模式决定了SS/PBCH块的子载波间距。

  • 波形采样率:OFDM解调所需的波形所需。

  • 美元L_{马克斯}$,突发中的SS / PBCH块的数量:UE将知道值美元L_{马克斯}$基于SS块模式和NR操作频带,TS 38.213章节4.1 [2[每种情况下,描述了突发中的SS / PBCH块集。美元L_{马克斯}$用于计算PBCH DM-RS序列和PBCH解扰的参数。这些参数是SS / PBCH块索引的函数,请参阅TS 38.211部分7.3.3.1和7.4.1.4.1 [2].

%配置必要突发参数burst.blockpattern = txburst.blockpattern;burst.samplerver = txburst.samplerate;l_max = numel(txburst.ssbtransmited);burst.ssbtransmited = sone(1,l_max);%从配置中创建突发信息结构和OFDM信息%突发参数burstInfo = hSSBurstInfo(破裂);ofdmConfig。SubcarrierSpacing = burstInfo.SubcarrierSpacing;ofdmConfig。NRB = burstInfo.NRB;ofdmConfig。CyclicPrefix = burstInfo.CyclicPrefix;ofdmInfo = hOFDMInfo (ofdmConfig);

PSS和粗略频率搜索

PSS执行搜索,其由与每个三种可能的PSS序列的所接收的波形(在所有SS / PBCH块)相关联,并提取相关性最强峰的。具有最强相关峰值的SS / PBCH块指示哪个光束在光束扫描是最有效地朝向接收器引导信号。粗略频率所接收的波形的偏移量也被确定,通过使各种假说有关频率偏移,校正每个偏移,并发现所述偏移,使该相关性最强。

pssindices = nrpssindices;pssgrid = zeros([240 4]);refrovrid = zeros([ofdminfo.nsubcarriers ofdminfo.symbolslot]);k = burstinfo.occupiedsubcarriers;fstep = burstinfo.subcarrierspacing * 1e3 / 2;%的一半的子载波fshifts =(-6:6)* fstep;peak_value = zeros(numel(fshifts),3);peak_index =零(numel(fshifts),3);t =(0:size(rxwaveform,1)-1)。'/ burst.samplerate;对于FIDX = 1:NUMER(FSHIFT)COARSORFREQUENCYOFFSET = FSHIFT(FIDX);rxwaveformfreqcorrited = rxwaveform。* exp(-1i * 2 * pi * coarsefrequencyoffset * t);对于nid2 = [0 1 2] pssref = nrpss(nid2);pssgrid(pssindices)= pssref;refrovrid(k,2:5)= pssgrid;nslot = 0;[〜,corr] = nrtimingestimate(rxwaveformfreqcorrited,Ofdmconfig.nrb,Ofdmconfig.subcarrierspacing,nslot,refratigd,'cyclicprefix',OfdMconfig.CyclicPrefix);corr = sum(abs(corr),2);[peak_value(fidx,nid2 + 1),peak_index(fidx,nid2 + 1)] = max(corr);peak_index(fidx,nid2 + 1)= peak_index(fidx,nid2 + 1)+ ofdminfo.symbollength(1);结束结束%plot pss相关性图;hold;情节(fshifts / 1E3,peak_value);标题('PSS相关性与频率偏移');ylabel ('幅度');Xlabel('频率偏移(kHz)');通过找到最强的最强的%来确定NID2和粗频偏移%相关性[fidx,nid2] =查找(peak_value == max(peak_value(:)));coarsfrequencyOffset = fshifts(Fidx);nid2 = nid2  -  1;%应用粗略频率校正rxwaveform = rxwaveform。* exp(-1i * 2 * pi * coarsefrequencyoffset * t);%plot选择了nid2绘图(CoarseFrequencyOffset / 1E3,Peak_Value(Fidx,NID2 + 1),'kx''linewidth'2,“MarkerSize”,8);LGD =传说;lgd.Interpreter =.“乳胶”;传奇=“$ n_ {id} ^ {(2)} $ =”+ num2cell(0:2);传说([传说"粗$\Delta_f$ = "+ num2str(coarsfrequencyOffset)+", $ n_ {id}^{(2)}$ = "+ num2str (NID2)),“位置”'东');%确定定时偏移量offset = peak_index(fidx,nid2 + 1) -  1;

细频偏移估计和校正

定时为最强PSS序列相关偏移可以被用于将波形在时间上同步。然后,精细频率偏移估计可以通过在SSB每个OFDM码元的循环前缀,而OFDM符号的有用相应部件之间进行相关来计算。这种相关性的相位正比于频率的波形的偏移。

%执行精细的频率偏移估计使用CP相关%SSB的4个OFDM符号finefrequencyOffset = surformoffsssb(rxwaveform(1 + offset:结束,:),Ofdminfo);%应用细频校正rxwaveform = rxwaveform。* exp(-1i * 2 * pi * finefrequencyoffset * t);%提取最强的爆发offset = offset  -  OFDMINFO.SYMBollengths(1);rxgrid = hofdmdemodulate(Ofdmconfig,rxwaveform(1 + offset:结束,:));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序列相关SSSEST =零(1,336);对于nid1 = 0:335 ncellid =(3 * nid1)+ nid2;sssref = nrsss(ncellid);SSSEST(NID1 + 1)= SUM(ABS(平均值(SSSRX。*结合(SSSREF),1))。^ 2);结束%plot sss相关性图;茎(0:335党卫军,'o');标题('SSS相关性(频域)');Xlabel('$ n_ {id} ^ {(1)} $'“解释”“乳胶”);ylabel ('幅度');轴([ -  1 336 0最大(SSSEST)* 1.1]);%通过找到最强的相关性确定NID1NID1 = find(sssEst==max(sssEst)) - 1;%plot选择了nid1hold;绘图(NID1,MAX(SSSEST),'kx''linewidth'2,“MarkerSize”,8);LGD =传说;lgd.Interpreter =.“乳胶”;传奇([“相关性”“$ n_ {id} ^ {(1)} $ =”+ num2str(nid1)]);%表格来自NID1和NID2的整体小区标识ncellid =(3 * nid1)+ nid2;

PBCH DM-RS搜索

在类似于SSS搜索的过程中,构造了每个可能的PBCH DM-RS序列,并且执行信道估计和噪声估计。PBCH DM-RS的索引与最佳SNR确定了PBCH加扰初始化所需的SS / PBCH块索引的LSB。

%计算PBCH DM-RS的索引dmrsIndices = nrPBCHDMRSIndices (ncellid);%使用DM-RS符号为每个可能的DM-RS执行信道估计%序列,估计信噪比dmrsest =零(1,8);对于ibar_ssb = 0:7 refrogrid =零([240 4]);refGrid (dmrsIndices) = nrPBCHDMRS (ncellid ibar_SSB);[hest,nest] = nrchannelestimate(rxgrid,crefgrid,'cyclicprefix', ofdmConfig。CyclicPrefix,'verigesswindow',[0 1]);DMRSEST(ibar_ssb + 1)= 10 * log10(平均值(abs(hest(:)。^ 2))/ nest);结束%plot pbch dm-rs snrs图;茎(0:7,DMRSEST,'o');标题(“PBCH DM-RS信噪比估计”);Xlabel('$ \ overline {i} _ {ssb} $'“解释”“乳胶”);xticks (0:7);ylabel (“估计信噪比(dB)”);轴([ -  1 8 min(dmrsest)-1 max(dmrsest)+1]);%记录最高SNR的ibar_ssbibar_SSB = find(dmrsEst==max(dmrsEst)) - 1;%plot选择了ibar_ssbhold;plot(ibar_ssb,max(dmrsest),'kx''linewidth'2,“MarkerSize”,8);LGD =传说;lgd.Interpreter =.“乳胶”;传奇([“snrs”“$ \ overline {i} _ {ssb} $ =”+ num2str(ibar_ssb)]);

使用PBCH DM-RS和SSS的信道估计

既然已知PBCH DM-RS序列,可以通过估计每个PBCH DM-RS资源单元位置的信道并在SS/PBCH块内插值来创建SS/PBCH块的信道估计。SSS还用于辅助信道估计。对PBCH DM-RS / SSS的加性噪声进行了估计。

refGrid = 0 ([240 4]);refGrid (dmrsIndices) = nrPBCHDMRS (ncellid ibar_SSB);refGrid (sssIndices) = nrSSS (ncellid);[hest,nest] = nrchannelestimate(rxgrid,crefgrid,'cyclicprefix', ofdmConfig。CyclicPrefix,'verigesswindow',[0 1]);

PBCH解调

提取与PBCH相关联的子载波,并且信道和噪声估计用于执行MMSE均衡。然后将均衡的PBCH符号解调并解扰以给出编码BCH块的比特估计。

%从SS / PBCH块中提取所接收的PBCH符号[Pbchindices,PBchindicsInfo] = nrpbchindices(ncellid);pbchrx = nrextractresources(pbchindices,rxgrid);%均衡前接收到PBCH星座图图;情节(PBCHRX,'o');标题('收到PBCH Constellation');m = max(abs([真实(pbchrx(pbchrx(:)); impt(pbchrx(:))]))* 1.1;轴([ -  m m-m]);根据TS 38.211第7.3.3.1节PBCH加扰的%配置'v'部分%'v'也是L = 4的SS / PBCH块索引的2LSB,或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] = NREQUALIZEMSE(PBCHRX,PBCHHEST,NEST);qm = pbchindicesinfo.g / pbchindicsinfo.gd;CSI = Repmat(CSI',QM,1);CSI = REPAPE(CSI,[],1);%均衡化后收到PBCH星座图图;情节(pbchEq'o');标题('均衡的PBCH CONTLELATION');m = max(abs([真实(pbcheq(:)); impt(pbcheq(:))]))* 1.1;轴([ -  m m-m]);% PBCH解调pbchBits = nrPBCHDecode (pbchEq ncellid, v,巢);%计算RMS PBCH EVMpbchRef = nrPBCH(pbchBits <0,ncellid,V);EVM = comm.EVM;evm_rms = EVM(pbchRef,pbchEq);%显示计算的EVMDISP(['rms pbch evm ='num2str(EVM_RMS,'%0.3f''%']);
RMS PBCH evm = 28.477%

BCH解码

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

%应用CSIpbchbits = pbchbits。* csi;%执行BCH解码,包括速率恢复,极性解码和CRC%解码。PBCH传输块的解扰和分离来自8个附加有效载荷位的%位'trblk'还执行了a + 7:%A ... A + 3:4 LSB的系统帧号%A + 4:半帧号%A + 5 ... A + 7:对于L = 64,SS / PBCH块索引的3个MSBL = 4或8的%,A + 5是子载波偏移k_ssb的MSB北极星碧眼列长= 8;[〜,err,trblk,sfn4lsb,nhalfframe,msbidxoffset] =...NRBCHDECODE(PBCHBITS,POLARLISTLENG,BURSTINFO.L,NCELLID);%使用'msbidxoffset'值来设置'k_ssb'或'ssbindex'的位,具体取决于突发中SS / PBCH块数的百分比如果(burstinfo.l == 64)ssbindex = ssbindex +(bi2de(msbidxoffset。','左幕 -  MSB')* 8);k_ssb = 0;别的k_SSB = msbidxoffset * 16;结束%显示BCH CRCDISP([' bch CRC = 'num2str(错误)]);%显示SSB索引DISP(['SSB索引='num2str (ssbIndex)]);
BCH CRC = 0 SSB index = 1

MIB解析

最后,将24个解码的BCH传输块位解析为表示MIB消息字段的结构。这包括重构10位系统帧号(SFN)nframe.从MIB中的6个msb和PBCH有效载荷位中的4个lsb中获取。它还包括合并副载波偏移的MSBk_SSB从L = 4或8 SS / PBCH块的PBCH有效载荷位,每个突发的情况。

%创建由解码的第7位发出的子载波间隔集合%MIB,设定为FR1(L = 4或8)和FR2(L = 64)不同如果(burstInfo.L==64) commonSCSs = [60 120];别的commonSCSs = [15 30];结束%从解码的MIB比特中创建MIB字段的结构。BCH.% transport block 'trblk'是RRC消息bch - bch - message,由前导0位的%,然后是MIB对应的23位mib.NFrame = bi2de([trblk(2:7); sfn4lsb]'。'左幕 -  MSB');mib.subcarrierspacingcommon = commonscss(trblk(8)+ 1);mib.k_ssb = k_ssb + bi2de(trblk(9:12)。','左幕 -  MSB');mib.dmrstypeaposition = 2 + trblk(13);mib.pdcchconfigsib1 = bi2de(trblk(14:21)。','左幕 -  MSB');mib.CellBarred = trblk(22);mib.IntraFreqReselection = trblk(23);%显示MIB结构DISP(MIB);
NFrame: 4 SubcarrierSpacingCommon: 15 k_SSB: 0 dmrstypeposition: 2 pdchconfigsib1: 17 cellblocked: 0 IntraFreqReselection: 0 . NFrame: 4 SubcarrierSpacingCommon: 15 k_SSB: 0 dmrstypeposition: 2 pdchconfigsib1: 17 cellblocked: 0 IntraFreqReselection: 0

附录

此示例使用以下辅助功能:

选定的书目

  1. 3GPP TS 38.104。“NR;基站(BS)无线电传输和接收(版本15)。”第三代合作伙伴计划;技术规范集团无线电接入网络。

  2. 3GPP TS 38.213。“NR;控制物理层程序(第15版)。”第三代合作伙伴计划;技术规范集团无线电接入网络。

本地功能

功能surformOffset = surformoffsssb(波形,OFDMINFO)% Get 'Lsym', OFDM符号中时域采样的次数,%是'lcp'和'lu'的总和,循环前缀的数量分别样本和有用的样本LCP = ofdmInfo.CyclicPrefixLengths(2);鲁= ofdmInfo.Nfft;Lsym = LCP +路;%乘以Lu样品和缀合的延迟波形。延迟= [零(lu,尺寸(波形,2));波形(1:end-lu,:)];cpproduct =波形。*结婚(延迟);%应用一个移动求和过滤器,窗口大小等于CP长度cpxcorr =滤波器(滤波器([LCP 1]),1,CpProduct);%移动总和超过4个OFDM符号(即SS块的大小)Y = cpXCorr;cpXCorrDelayed = cpXCorr;对于k = 1:3 cpxcorrdelayed = [zeros(lsym,size(波形,2));cpxcorrdelayed(1:end-lsym,:)];y = y + cpxcorrdelayed;结束%提取相关峰值,平均接收天线,然后计算相位和相应的频率偏移量cpCorrIndex =(Lsym * 4)+ 1;频偏= ofdmInfo.SubcarrierSpacing * 1E3 *角(平均值(Y(cpCorrIndex,:)))/(2 * PI);结束

另请参阅

对象

功能

相关的话题