主要内容

NR细胞搜索和MIB和SIB1复苏

这个例子演示了如何使用5 g工具箱™同步解调和解码现场gNodeB信号。示例解码主信息块(MIB)和第一个系统信息块(SIB1)。解码MIB和SIB1需要一个全面的接收器,能够解调和解码的大多数下行通道和信号。

介绍

之前用户设备(UE)可以与网络通信,必须执行单元的搜索和选择程序和获取初始系统信息。这一过程的第一步是获取帧同步,发现细胞的身份和解码MIB和SIB1。这个例子展示了如何使用5 g工具箱执行这些步骤。

您可以使用这个例子捕获的波形的I / Q样本或生成本地波形包含同步信号(SS)破裂,SIB1使用nrWaveformGenerator。对于在本地生成的波形,示例执行以下步骤:

  • 波形的一代:配置和生成一个同步信号携带MIB, CORESET0, PDCCH PDSCH携带SIB1利用下行波形发生器从5 g的工具箱。一个党卫军的发射机可以提高信噪比,但它不执行波束形成。单边带波束形成的更多信息,请参阅NR单边带束扫

  • 情况下:加性高斯白噪声(AWGN)波形。

  • 接收机:各种同步和解调过程应用于接收到的波形来建立系统的帧数,细胞身份和单边带、MIB和解码。这些为盲人提供所需的信息解码PDCCH下行控制信息(DCI)。接收方使用DCI配置PDSCH解调器,解码DL-SCH最后恢复SIB1。

这些数据显示接收机内部的处理步骤。

接收器的配置

同步和解调接收到的波形,这信息是必要的:

  • 解调接收到的波形的波形采样率。

  • 载波中心频率符号相位补偿应用于接收到的波形。

  • 的最小通道带宽来确定CORESET0频率资源。TS 5.3.5-1[38.101 - 1表1为每个NR乐队)描述了信道带宽。

  • 党卫军块模式(Case…E)来确定的副载波间距SS / PBCH块。问题搜索党卫军块模式基于NR操作乐队。有关更多信息,请参见TS 38.104表5.4.3.3-1和5.4.3.3-2 [2]。

  • 学生的数量/ PBCH块破裂(美元L_{马克斯}$)计算参数的PBCH DM-RS序列和PBCH descrambling。这些参数取决于SS / PBCH块索引7.3.3.1 TS 38.211部分中描述和7.4.1.4.1 [3]。TS 38.213 4.1节(5)描述了一组SS / PBCH块的破裂。问题知道的价值美元L_{马克斯}$基于SS块模式和NR操作乐队。

loadFromFile = 0;%设置为1加载波形捕获如果loadFromFile%负载捕获的波形rx =负载(“capturedWaveformSIB1.mat”);rxWaveform = rx.waveform;%配置接收机的采样率(样本/秒)rxSampleRate = rx.sampleRate;%符号相位补偿频率。指定承运人中心%频率或相位补偿设置为0禁用标志fPhaseComp = rx.fPhaseComp;%载波中心频率(赫兹)%设置最小通道带宽所必需的NR乐队%在FR1配置CORESET0(见表5.3.5-1 TS 38.101 - 1)minChannelBW = rx.minChannelBW;% 5 10 40 MHz%在接收器配置必要的爆破参数。单边带模式%可以的情况下,“案例B”、“案例C”FR1或“D”,“E”% FR2。的最大数量可以4或8块L_max FR1和64年FR2 %。refBurst。BlockPattern = rx.ssbBlockPattern;refBurst。L_max = rx.L_max;其他的包含党卫军破裂,SIB1 %产生波形%配置单元的身份配置=结构();配置。NCellID = 102;%配置一个党卫军破裂配置。BlockPattern =“案例B”;% FR1:“情况”、“案例B”、“案例C”。FR2:“D”、“E”配置。TransmittedBlocks = 1 (1,8);%党卫军的位图块传输配置。SubcarrierSpacingCommon = 15;% SIB1副载波间距FR1千赫(15或30。FR2 60或120)配置。EnableSIB1 = 1;%设置为0禁用SIB1%设置最小通道带宽所必需的NR乐队%在FR1配置CORESET0(见表5.3.5-1 TS 38.101 - 1)配置。MinChannelBW = 5;% 5 10 40 MHz%配置和生成一个包含党卫军破裂,SIB1波形wavegenConfig = hSIB1WaveformConfiguration(配置);[txWaveform, waveInfo] = nrWaveformGenerator (wavegenConfig);txOfdmInfo = waveInfo.ResourceGrids(1)信息;%引入一个波束形成获得通过提高一个单边带和信噪比%相关SIB1 PDCCH PDSCHssbIdx = 0;%的指数单边带提高(基于)提高= 6;在dB %信噪比提高txWaveform = hSIB1Boost (txWaveform wavegenConfig、waveInfo ssbIdx,提高);%添加高斯白噪声波形rng (“默认”);%重置随机数发生器SNRdB = 20;%信噪比的情况下rxWaveform = awgn (txWaveform SNRdB-boost -10 * log10(双(txOfdmInfo.Nfft)));%配置接收机%采样率rxSampleRate = txOfdmInfo.SampleRate;%符号相位补偿频率(赫兹)。这个函数% nrWaveformGenerator不适用相位补偿的象征%生成的波形。fPhaseComp = 0;%载波中心频率(赫兹)%的最小通道带宽(MHz)minChannelBW = config.MinChannelBW;%在接收器配置必要的爆破参数refBurst。BlockPattern = config.BlockPattern;refBurst。L_max =元素个数(config.TransmittedBlocks);结束%得到OFDM破裂和接收机参数信息配置nrbSSB = 20;scsSSB = hSSBurstSubcarrierSpacing (refBurst.BlockPattern);rxOfdmInfo = nrOFDMInfo (nrbSSB scsSSB,“SampleRate”,rxSampleRate);%显示接收波形的光谱图图;nfft = rxOfdmInfo.Nfft;光谱图(rxWaveform(: 1)的(nfft, 1), 0, nfft,“中心”rxSampleRate,“桠溪”,“MinThreshold”,-130);标题(接收到的波形的光谱图)

PSS搜索和频率偏移校正

接收者执行PSS搜索和粗频率偏移估计以下步骤:

  • 移频接收到的波形与频率偏移。候选人抵消间距为半副载波。使用searchBW来控制搜索的带宽频率偏移。

  • 关联的移频接收波形的三种可能的PSS序列(NID2)和提取相关性最强的峰。参考PSS序列是集中在频率。因此,最强烈的相关性提供了一个测量峰值粗频率偏移对承运人的中心频率。的峰值也表明这三个PSS (NID2)在接收到的波形和时间即时发现信道条件最好的。

  • 估计频率偏移量低于一半副载波的循环前缀关联每个OFDM符号的单边带相应的OFDM符号的有用的部分。阶段的相关波形频率偏移量成正比。

disp (“——频率校正和时间估计”)%指定频率偏移搜索在千赫带宽searchBW = 6 * scsSSB;[rxWaveform, freqOffset NID2] = hSSBurstFrequencyCorrect (rxWaveform、refBurst.BlockPattern rxSampleRate, searchBW);disp ([的频率偏移量:num2str (freqOffset“% .0f”)“赫兹”])
——频率校正和时间估计频率偏移:65 Hz

时间同步和OFDM解调

接收者估计时间抵消最强的党卫军块通过使用参考PSS序列中发现频率搜索过程。频率偏移校正后,接收机可以假定参考PSS和接收波形的中心频率是一致的。最后,接收机OFDM解调同步提取波形以及党卫军块。

%创建一个参考网格使用发现PSS定时估计。PSS的%被放置在第二网格,以避免OFDM符号的引用%特殊CP第一个OFDM符号的长度。refGrid = 0 ([nrbSSB * 12 2]);refGrid (nrPSSIndices 2) = nrPSS (NID2);%的第二个OFDM符号正确CP长度%的时间估计。这是时间抵消之前OFDM符号%的单边带发现由于内容参考网格nSlot = 0;timingOffset = nrTimingEstimate (rxWaveform nrbSSB、scsSSB nSlot, refGrid,“SampleRate”,rxSampleRate);%同步、OFDM解调和提取最强党卫军块rxGrid = nrOFDMDemodulate (rxWaveform (1 + timingOffset:,:), nrbSSB, scsSSB, nSlot,“SampleRate”,rxSampleRate);2:5,rxGrid = rxGrid (::);%显示样品的时间抵消。作为象征的长度测量% FFT样本,规模的符号长度占接收机%采样率。srRatio = rxSampleRate / (e3 * rxOfdmInfo.Nfft scsSSB * 1);* srRatio firstSymbolLength = rxOfdmInfo.SymbolLengths (1);str = sprintf (的时间抵消同步块:% %。0 f样本(% % %。0 ff) \ n '女士、地板(log10 (rxSampleRate)) 3);流(str timingOffset + firstSymbolLength (timingOffset + firstSymbolLength) / rxSampleRate * 1 e3);
时间同步块偏移量:2200个样本(0.1432 ms)

SSS搜索

接收方提取资源元素相关联的SSS收到网格和相关本地每个可能的SSS序列生成。最强的PSS和瑞士的指数序列组合给物理层细胞身份,这是需要PBCH DM-RS和PBCH处理。

%提取收到SS / PBCH SSS符号块sssIndices = nrSSSIndices;sssRx = nrExtractResources (sssIndices rxGrid);%关联收到瑞士符号,每个可能的SSS序列党卫军= 0 (1336);NID1 = 0:335 ncellid = (3 * NID1) + NID2;sssRef = nrSSS (ncellid);党卫军(NID1 + 1) =总和(abs(平均(sssRx。*连词(sssRef), 1)) ^ 2);结束%的阴谋SSS的相关性图;茎(0:335党卫军,“o”);标题(“瑞士相关性(频域)”);包含(“美元N_ {ID} ^ {(1)} $”,“翻译”,“乳胶”);ylabel (“级”);轴([1 336 0马克斯(ss) * 1.1]);%确定NID1通过寻找最强的相关性NID1 =找到(ss = = max (ss)) - 1;%情节选择NID1持有;情节(NID1马克斯(ss),“kx”,“线宽”2,“MarkerSize”8);传奇([“相关性”" $ N_ {ID} ^ {(1)} $ = "+ num2str (NID1)),“翻译”,“乳胶”);%整体细胞身份估计NID1和NID2形式ncellid = (3 * NID1) + NID2;disp ([的细胞标识:num2str (ncellid)))
细胞的身份:102

PBCH DM-RS搜索

在瑞士搜索过程类似,接收机结构每个可能PBCH DM-RS序列和执行信道和噪声的估计。的索引PBCH DM-RS最好的信噪比决定了SS / PBCH块指数的lsb PBCH所需初始化。

%计算PBCH DM-RS指数dmrsIndices = nrPBCHDMRSIndices (ncellid);%使用DM-RS符号执行信道估计为每个可能的DM-RS%序列和估计信噪比dmrsEst = 0 (1,8);ibar_SSB = 0:7 refGrid = 0 (240 [4]);refGrid (dmrsIndices) = nrPBCHDMRS (ncellid ibar_SSB);[命令,巢]= nrChannelEstimate (rxGrid refGrid,“AveragingWindow”[0,1]);dmrsEst (ibar_SSB + 1) = 10 * log10(平均(abs(命令(:)。^ 2))/巢);结束%绘制PBCH DM-RS信噪比图;茎(0:7 dmrsEst,“o”);标题(“PBCH DM-RS信噪比估计的);包含(“美元\眉题{我}_{单边带}$”,“翻译”,“乳胶”);xticks (0:7);ylabel (“估计信噪比(dB)”);轴([1 8分钟(dmrsEst) 1马克斯(dmrsEst) + 1]);%记录ibar_SSB最高的信噪比ibar_SSB =找到(dmrsEst = = max (dmrsEst)) - 1;%情节选择ibar_SSB持有;情节(ibar_SSB马克斯(dmrsEst),“kx”,“线宽”2,“MarkerSize”8);传奇([“信噪比”" $ \眉题{我}_{单边带}$ = "+ num2str (ibar_SSB)),“翻译”,“乳胶”);

信道估计使用PBCH DM-RS和瑞士

接收者的通道估计整个SS / PBCH块使用SSS和PBCH DM-RS发现在之前的步骤。估计加性噪声的PBCH DM-RS /瑞士也执行。

refGrid = 0 ([nrbSSB * 12 4]);refGrid (dmrsIndices) = nrPBCHDMRS (ncellid ibar_SSB);refGrid (sssIndices) = nrSSS (ncellid);[命令,鸟巢,hestInfo] = nrChannelEstimate (rxGrid refGrid,“AveragingWindow”[0,1]);

PBCH解调

接收者使用细胞的身份来确定和提取相关的资源元素的PBCH收到网格。此外,接收方使用执行MMSE均衡信道和噪声的估计。然后均衡PBCH符号解调和descrambled给BCH编码块的估计。

disp (“——PBCH解调和BCH译码——”)%提取收到SS / PBCH PBCH符号块[pbchIndices, pbchIndicesInfo] = nrPBCHIndices (ncellid);pbchRx = nrExtractResources (pbchIndices rxGrid);%为PBCH配置“v”纷纷根据7.3.3.1 TS 38.211部分% ' v '也是2 SS / PBCH块索引的lsb L_max = 4,或3% lsb L_max = 8或64。如果refBurst。L_max = = 4 v =国防部(ibar_SSB 4);其他的v = ibar_SSB;结束ssbIndex = v;% PBCH均衡和CSI计算pbchHest = nrExtractResources (pbchIndices、命令);[pbchEq, csi] = nrEqualizeMMSE (pbchRx pbchHest,巢);Qm = pbchIndicesInfo。G / pbchIndicesInfo.Gd;csi = repmat (csi。”、Qm 1);csi =重塑(csi, [], 1);%的阴谋收到PBCH均衡后的星座图;情节(pbchEq“o”);包含(“同步”);ylabel (“交”)标题(“均衡PBCH星座”);m = max (abs([真实(pbchEq (:));图像放大(pbchEq (:))))) * 1.1;轴([- m m - m m]);% PBCH解调pbchBits = nrPBCHDecode (pbchEq ncellid, v,巢);%计算均方根PBCH维生素pbchRef = nrPBCH (pbchBits < 0 ncellid v);维生素与= comm.EVM;pbchEVMrms =维生素(pbchRef pbchEq);%显示维生素与计算disp ([“PBCH RMS维生素:”num2str (pbchEVMrms' % 0.3 f ')“%”]);
——PBCH解调和BCH译码——PBCH RMS维生素:8.687%

BCH译码

接收者权重BCH位估计的信道状态信息(CSI) BCH MMSE均衡器和解码。BCH译码的速度复苏,极地解码、CRC解码,descrambling,分离24 BCH运输阻止位8额外timing-related载荷。

%应用CSIpbchBits = pbchBits。* csi;%执行BCH译码包括速度复苏,极地解码和CRC%解码。PBCH descrambling和BCH传输块的分离%位从8额外负载trblk的位…一个+ 7也可以执行:%…+ 3:4 lsb的系统帧数% + 4:帧数的一半% + 5…L_max = 64 + 7:, 3位元的SS / PBCH块索引% L_max = 4或8 + 5是副载波的MSB抵消k_SSBpolarListLength = 8;[~,crcBCH trblk、sfn4lsb nHalfFrame, msbidxoffset] =nrBCHDecode (pbchBits polarListLength、refBurst.L_max ncellid);%显示BCH CRCdisp ([“BCH CRC:”num2str (crcBCH)]);%停止处理MIB和SIB1 BCH收到了错误如果crcBCH disp (BCH CRC不为零。);返回结束%使用“msbidxoffset”值设置的“k_SSB”或“ssbIndex”,不同%的数量在爆炸中SS / PBCH块如果(refBurst.L_max = = 64) ssbIndex = ssbIndex + (bi2de (msbidxoffset。’,“left-msb”)* 8);k_SSB = 0;其他的k_SSB = msbidxoffset * 16;结束%显示单边带索引disp ([的单边带指数:num2str (ssbIndex)]);
BCH CRC: 0单边带指数:0

MIB解析

解析的例子24位解码BCH传输块结构代表了MIB信息字段。这个过程包括10位重组系统帧数(SFN)NFrame6位元的MIB和4 lsb PBCH载荷。它还包括合并的MSB副载波偏移量k_SSB从PBCH载荷位L_max = 4或8的SS / PBCH块/破裂。

%创建组副载波间距暗示的第七位解码% MIB,一组是不同的FR1 (L_max = 4或8)和FR2 (L_max = 64)如果(refBurst.L_max = = 64) commonSCSs = (120);其他的commonSCSs = 30 [15];结束%的MIB字段创建一个结构解码MIB碎片。的BCH%传输块的trblk RRC消息BCCH-BCH-Message组成%的0位23位对应MIBmib。NFrame = bi2de ([trblk (7);sfn4lsb]。”“left-msb”);mib。SubcarrierSpacingCommon = commonSCSs (trblk (8) + 1);mib。k_SSB = k_SSB + bi2de (trblk (9:12)。”“left-msb”);mib。DMRSTypeAPosition = 2 + trblk (13);mib。PDCCHConfigSIB1 = bi2de (trblk (14:21)。”“left-msb”);mib。CellBarred = trblk (22);mib。IntraFreqReselection = trblk (23);%显示MIB结构disp (的BCH / MIB的内容:)disp (mib);%检查如果CORESET Type0-PDCCH常见搜索空间(CSS),%根据TS 38.213 4.1节如果~ isCORESET0Present (refBurst.BlockPattern mib.k_SSB)流(“CORESET0不存在(k_SSB > k_SSB_max)。\ n”);返回结束
BCH / MIB内容:NFrame: 0 SubcarrierSpacingCommon: 15 k_SSB: 0 DMRSTypeAPosition: 3 PDCCHConfigSIB1: 4 CellBarred: 0 IntraFreqReselection: 0

OFDM解调全带宽

MIB一旦恢复,接收方使用常见的副载波间距和带宽支持CORESET0 OFDM解调包含检测SS块的帧。金宝app接收机决定CORESET0频率资源在常见的数字命理学一个偏移量从单边带的位置检测和带宽TS 38.213节13表中指定的佳绩(通过13 - 105]。频率校正过程的中心对齐OFDM资源网格的中心频率党卫军破裂。然而,这些中心并不一定符合CORESET0的中心频率。这个图显示了单边带之间的关系,CORESET0频率资源和相关PDCCH监控场合。

与纳粹党卫军破灭,控制和数据通道必须与他们的共同一致的频率资源块(CRB)光栅。KSSB的MIB的价值信号的频率偏移单边带CRB光栅。频率校正过程为中心的单边带频率、频移取决于k_SSB使数据和控制通道与他们的CRB OFDM解调之前

如果(refBurst.L_max = = 64) scsKSSB = mib.SubcarrierSpacingCommon;其他的scsKSSB = 15;结束k_SSB = mib.k_SSB;kFreqShift = e3 k_SSB * scsKSSB * 1;rxWaveform = rxWaveform。* exp(1 * 2 *π* kFreqShift *(0:长度(rxWaveform) 1)”/ rxSampleRate);%调整时间抵消坐标系原点frameOffset = hTimingOffsetToFrame (refBurst timingOffset、ssbIndex rxSampleRate);%如果帧偏移是负的,感兴趣的框架是不完整的。添加%前导零的波形一致wavefom的框架如果frameOffset < 0 rxWaveform = [0 (-frameOffset、大小(rxWaveform 2)); rxWaveform);其他的rxWaveform = rxWaveform (1 + frameOffset:最终,);结束%确定OFDM解调带宽使用CORESET0带宽msbIdx =地板(mib.PDCCHConfigSIB1/16);% 4 MSB PDCCHConfigSIB1 MIBscsCommon = mib.SubcarrierSpacingCommon;scsPair = [scsSSB scsCommon];[csetNRB ~, csetFreqOffset] = hCORESET0Resources (msbIdx、scsPair minChannelBW, k_SSB);%在RB,包括CORESET0最小带宽波形。c0 = csetFreqOffset + 10 * scsSSB / scsCommon;% CORESET从载波中心频率偏移nrb = 2 *马克斯(c0, csetNRB-c0);%最小数量的RB CORESET0如果rxSampleRate < nrb * 12 * scsCommon * 1 e3 disp ([“SIB1复苏不能继续。CORESET0资源以外的接收到的波形的频率限制配置的采样率。]);返回;结束% OFDM解调接收波形与常见的副载波间距nSlot = 0;rxGrid = nrOFDMDemodulate (rxWaveform nrb、scsCommon nSlot,“SampleRate”rxSampleRate,“CarrierFrequency”,fPhaseComp);%显示OFDM资源网格和突出最强党卫军块图;显示亮度图像(abs (rxGrid (:,: 1)));轴xy包含(OFDM符号的);ylabel (副载波的);numFrames =地板(长度(rxWaveform) / rxSampleRate / 10 e - 3);sfn = sprintf (“(%…% d)”mib。NFrame mib.NFrame + numFrames-1);标题([收到资源网格。系统帧数:sfn));highlightSSBlock (refBurst、ssbIndex nrb、scsPair kFreqShift)

PDCCH解调和解码下行控制信息

盲目搜索系统信息CORESET / SS DCI消息,接收者执行这些步骤:

  • 测定PDCCH OFDM的监控场合和提取资源网格包含控制信息。

  • 配置CORESET0、搜索空间和PDCCH。

  • 盲目的搜索格式1 _0 DCI的消息。

接收机决定PDCCH监控场合通过槽和OFDM符号抵消党卫军块检测到的位置,所述TS 38.213表骁将,13-12 [5]。

msbIdx =地板(mib.PDCCHConfigSIB1/16);% 4 MSB PDCCHConfigSIB1 MIB指数表13 - 10的佳绩。[csetNRB, csetDuration csetOffset csetPattern] = hCORESET0Resources (msbIdx, scsPair, minChannelBW k_SSB);lsbIdx = mod (mib.PDCCHConfigSIB1, 16);[ssSlot, ssFirstSym isOccasion] = hPDCCH0MonitoringOccasions (lsbIdx、ssbIndex scsPair, csetPattern, csetDuration, mib.NFrame);% PDCCH监控场合可以在不同的党卫军块有关%不同的帧。如果没有监控场合在这个框架,必须有一个在接下来的一个百分比。slotsPerFrame = 10 * scsCommon / 15;如果~ isOccasion [ssSlot、ssFirstSym isOccasion] = hPDCCH0MonitoringOccasions (lsbIdx、ssbIndex scsPair, csetPattern, csetDuration, mib.NFrame + 1);ssSlot = ssSlot + slotsPerFrame;结束%,FR1问题监控PDCCH Type0-PDCCH CSS在两个连续的%插槽CORESET模式1如果csetPattern = = 1 monSlotsPerPeriod = 2;其他的monSlotsPerPeriod = 1;结束%计算基于副载波和OFDM符号的下标%槽包含PDCCH0相关检测党卫军块%和随后2-frame块csetSubcarriers = 12 * (nrb-20 * scsSSB / scsCommon) / 2 - csetOffset * 12 + (1: csetNRB * 12);numRxSym =大小(rxGrid, 2);symbolsPerSlot = 14;numRxSlots =装天花板(numRxSym / symbolsPerSlot);monSlots = ssSlot + (0: monSlotsPerPeriod-1) + (0:2 * slotsPerFrame: (numRxSlots-ssSlot-1));monSlots = monSlots (:)”;monSymbols = monSlots * symbolsPerSlot + (1: symbolsPerSlot) ';monSymbols = monSymbols (:)”;%去除监测符号超过波形的限制monSymbols (monSymbols > numRxSym) = [];%检查搜索空间是否超出了波形的结束如果isempty (monSymbols) disp (的搜索空间位置超出波形的结束。”);返回;结束%提取槽包含最强PDCCH从接收到的网格rxMonSlotGrid = rxGrid (csetSubcarriers、monSymbols:);

配置CORESET、搜索空间和其他PDCCH参数。CORESET资源和搜索空间配置根据TS 38.213节13表佳绩通过13 - 155]。CCE-to-REG交错映射参数(REGBundleSize = 6, InterleaverSize = 2, ShiftIndex = NCellID) TS 38.211节描述7.3.2.2 [3]。CORESET 0, BWP大小的TS 38.212节中描述的CORESET 7.3.1.0 [4]。PDCCH匆忙参数nRNTI = = 0和国家免疫日NCellID TS 38.211节所述7.3.2.3 [3]。

pdcch = hPDCCH0Configuration (ssbIndex mib, scsPair ncellid, minChannelBW);%配置承运人跨越BWP (CORESET0)c0Carrier = nrCarrierConfig;c0Carrier。SubcarrierSpacing = mib.SubcarrierSpacingCommon;c0Carrier。NStartGrid = pdcch.NStartBWP;c0Carrier。NSizeGrid = pdcch.NSizeBWP;c0Carrier。NSlot = pdcch.SearchSpace.SlotPeriodAndOffset (2);c0Carrier。NFrame = mib.NFrame; c0Carrier.NCellID = ncellid;

寻找DCI的消息。问题盲目地解码收到PDCCH符号通过监控所有PDCCH候选人每使用SI-RNTI聚合级别来确定合适的候选人(或实例)。

%指定DCI消息格式1 _0炒SI-RNTI (TS 38.212% 7.3.1.2.1节)dcispec1_0 = hSystemInformationDCIFieldsSize (pdcch.NSizeBWP);numDCIBits =总和(structfun (@ (x) x, dcispec1_0));disp (”,下行控制信息消息搜索PDCCH……”);siRNTI = 65535;% TS 38.321表7.1 - 1dciCRC = true;mSlot = 0;%循环遍历所有监测时段(mSlot <长度(monSlots)) & & dciCRC c0Carrier ~ = 0。NSlot = monSlots (mSlot + 1);如果monSlotsPerPeriod = = 2如果国防部(mSlot, 2) pdcch.SearchSpace.SlotPeriodAndOffset (2) = monSlots (2);其他的pdcch.SearchSpace.SlotPeriodAndOffset (2) = monSlots (1);结束结束%得到PDCCH候选人根据TS 38.213 10.1节[pdcchInd, pdcchDmrsSym pdcchDmrsInd] = nrPDCCHSpace (c0Carrier pdcch);rxSlotGrid = rxMonSlotGrid (:, (1: symbolsPerSlot) + symbolsPerSlot * mSlot:);rxSlotGrid = rxSlotGrid / max (abs (rxSlotGrid (:)));%正常化收到大小%循环遍历所有支持聚合的水平金宝appaLev = 1;(aLev < = 5) & & dciCRC ~ = 0%循环遍历所有候选人在党卫军每个聚合级别cIdx = 1;numCandidatesAL = pdcch.SearchSpace.NumCandidates (aLev);(cIdx < = numCandidatesAL) & & dciCRC ~ = 0%信道估计使用PDCCH DM-RS[命令,据nVar pdcchHestInfo] = nrChannelEstimate (rxSlotGrid, pdcchDmrsInd {aLev} (:, cIdx) pdcchDmrsSym {aLev} (:, cIdx));%的均衡和解调PDCCH符号[pdcchRxSym, pdcchHest] = nrExtractResources (pdcchInd {aLev} (:, cIdx) rxSlotGrid,命令);据nVar pdcchEqSym = nrEqualizeMMSE (pdcchRxSym pdcchHest);dcicw = nrPDCCHDecode (pdcchEqSym pdcch.DMRSScramblingID pdcch.RNTI,据nVar);% DCI消息解码polarListLength = 8;[dcibits, dciCRC] = nrDCIDecode (dcicw、numDCIBits polarListLength, siRNTI);如果dciCRC = = 0 disp ([“解码PDCCH候选人#”num2str (cIdx)“在聚合级别”num2str (2 ^ (aLev-1))))结束cIdx = cIdx + 1;结束aLev = aLev + 1;结束mSlot = mSlot + 1;结束cIdx = cIdx-1;aLev = aLev-1;mSlot = mSlot-1;monSymbols = monSymbols (mSlot * symbolsPerSlot + (1: symbolsPerSlot));%计算均方根PDCCH维生素pdcchRef = nrPDCCH(双(dcicw < 0)、pdcch.DMRSScramblingID pdcch.RNTI);维生素与= comm.EVM;pdcchEVMrms =维生素(pdcchRef pdcchEqSym);%显示维生素与计算disp ([“PDCCH RMS维生素:”num2str (pdcchEVMrms' % 0.3 f ')“%”]);disp ([“PDCCH CRC:”num2str (dciCRC)]);%突出CORESET0 / SS对应于强烈的单边带bounding_box = @ (y, x, h, w)矩形(“位置”,(0.5 x + y - 0.5 w h),“EdgeColor”,“r”);bounding_box (csetSubcarriers (1) monSymbols (1) + ssFirstSym-1 csetNRB * 12, csetDuration);str = sprintf (“CORESET0 / SS”);文本(monSymbols (1) + ssFirstSym-7 csetSubcarriers(1) -20年,0,str,“字形大小”10“颜色”,' w ')如果dciCRC disp (“DCI解码失败了。”);返回结束%的阴谋收到PDCCH均衡后的星座图;情节(pdcchEqSym“o”);包含(“同步”);ylabel (“交”)标题(“均衡PDCCH星座”);m = max (abs([真实(pdcchEqSym (:));图像放大(pdcchEqSym (:))))) * 1.1;轴([- m m - m m]);%的OFDM网格显示包含最强PDCCH槽图;显示亮度图像(abs (rxSlotGrid (:,: 1)));轴xy包含(OFDM符号的);ylabel (副载波的);标题(“槽包含PDCCH最强”);%突出PDCCH在网格资源subsPdcch = nrPDCCHSpace (c0Carrier pdcch,“IndexStyle”,“潜艇”);subsPdcch =双(subsPdcch {aLev} (:,:, cIdx));x = min (subsPdcch (:, 2)) 1;X = max (subsPdcch (:, 2)) - X;y = min (subsPdcch (: 1));Y = max (subsPdcch (: 1)) - Y + 1;bounding_box (y, x, y, x);str = sprintf (“PDCCH \ n聚合级别:% d \ n候选人:% d '2 . ^ (aLev-1), cIdx-1);文本(x + x + 1, y + y / 2, 0, str,“字形大小”10“颜色”,' w ')
——下行控制信息消息搜索PDCCH解码PDCCH候选人# 1在聚合级别8 PDCCH RMS维生素:10.759% PDCCH CRC: 0

DL-SCH PDSCH解调、解码和SIB1提取

第一个系统信息块中恢复过来,接收者执行这些步骤:

  • 确定使用细胞PDSCH配置ID、MIB和DCI

  • PDSCH符号的信道估计、均衡和解调

  • 解码DL-SCH和SIB1提取

disp (“——PDSCH解调和DL-SCH解码——”)%建立DCI消息结构dci = hDCI (dcispec1_0 dcibits);%从细胞获得PDSCH配置ID、MIB和DCI[pdsch, K_0] = hSIB1PDSCHConfiguration (dci、pdcch.NSizeBWP mib.DMRSTypeAPosition, csetPattern);% CORESET模式2,gNodeB可以分配PDSCH在下一个槽,%表示的槽通过DCI抵消K_0暗示。更多的%的信息,请参阅表5.1.2.1.1-4 TS 38.214。c0Carrier。NSlot = c0Carrier.NSlot + K_0;symbolOffset = symbolsPerSlot * (mSlot + K_0);monSymbols = monSymbols + symbolOffset;rxSlotGrid = rxGrid (csetSubcarriers、monSymbols:);rxSlotGrid = rxSlotGrid / max (abs (rxSlotGrid (:)));%正常化收到大小如果K_0 > 0%显示槽的OFDM网格包含PDSCH有关图;显示亮度图像(abs (rxSlotGrid (:,: 1)));轴xy包含(OFDM符号的);ylabel (副载波的);标题(“槽包含PDSCH(槽抵消K_0 = 1)的);结束% PDSCH信道估计和均衡使用PDSCH DM-RSpdschDmrsIndices = nrPDSCHDMRSIndices (c0Carrier pdsch);pdschDmrsSymbols = nrPDSCHDMRS (c0Carrier pdsch);
——PDSCH解调和DL-SCH解码

为了弥补负面影响载波频率不匹配的符号相位补偿和信道估计,接收者OFDM解调载波频率的波形与一组搜索的带宽fPhaseComp。搜索完成当DL-SCH解码成功或最后一个频率。搜索最小带宽产生相等符号相位补偿1920,3840,7680,和15360 kHz常见的副载波间距15日30、60和120 kHz,分别。增加了搜索的带宽SIB1解码失败时这些值和平衡的PDSCH符号导致严重扭曲和旋转星座。

μ= log2 (scsCommon / 15);bw = 2 ^μ* 100;搜索的带宽百分比(赫兹)freqStep = 2 ^μ;%频率(赫兹)步freqSearch = bw / 2: freqStep: bw / 2-freqStep;[~,fSearchIdx] = (abs (freqSearch));%从中心频率freqSearch = freqSearch (fSearchIdx);fpc = fPhaseComp + 1 e3 * freqSearch% OFDM解调接收波形nSlot = 0;rxGrid = nrOFDMDemodulate (rxWaveform nrb、scsCommon nSlot,“SampleRate”rxSampleRate,“CarrierFrequency”fpc);%从收到网格中提取监测槽rxSlotGrid = rxGrid (csetSubcarriers、monSymbols:);rxSlotGrid = rxSlotGrid / max (abs (rxSlotGrid (:)));%正常化收到大小% PDSCH符号的信道估计和均衡[命令,据nVar pdschHestInfo] = nrChannelEstimate (rxSlotGrid, pdschDmrsIndices pdschDmrsSymbols);[pdschIndices, pdschIndicesInfo] = nrPDSCHIndices (c0Carrier pdsch);[pdschRxSym, pdschHest] = nrExtractResources (pdschIndices rxSlotGrid,命令);据nVar pdschEqSym = nrEqualizeMMSE (pdschRxSym pdschHest);% PDSCH解调连续波= nrPDSCHDecode (c0Carrier pdsch pdschEqSym,据nVar);%初始化DL-SCH译码器decodeDLSCH = nrDLSCHDecoder;%的目标编码速率和传输块大小Xoh_PDSCH = 0;5.1.3.2 % TS 38.214部分tcr = hmc (dci.ModCoding);NREPerPRB = pdschIndicesInfo.NREPerPRB;tbsLength = nrTBS (pdsch.Modulation pdsch.NumLayers、长度(pdsch.PRBSet) NREPerPRB, tcr, Xoh_PDSCH);decodeDLSCH。TransportBlockLength = tbsLength;decodeDLSCH。TargetCodeRate =识别;%解码DL-SCH[sib1bits, sib1CRC] = decodeDLSCH (cw、pdsch.Modulation pdsch.NumLayers, dci.RV);如果sib1CRC = = 0打破;结束结束%突出PDSCH在网格资源subsPdsch =双(nrPDSCHIndices (c0Carrier pdsch,“IndexStyle”,“下标”));x = min (subsPdsch (:, 2)) 1;X = max (subsPdsch (:, 2)) - X;y = min (subsPdsch (: 1));Y = max (subsPdsch (: 1)) - Y + 1;bounding_box (y, x, y, x);str = sprintf (“PDSCH (SIB1) \ n调制:% s \ n代码率:% .2f '、pdsch.Modulation tcr);文本(x + 4, y + y + 60 0, str,“字形大小”10“颜色”,' w ')%的阴谋收到PDSCH均衡后的星座图;情节(pdschEqSym“o”);包含(“同步”);ylabel (“交”)标题(“均衡PDSCH星座”);m = max (abs([真实(pdschEqSym (:));图像放大(pdschEqSym (:))))) * 1.1;轴([- m m - m m]);%计算均方根PDSCH维生素,包括PDSCH正常化的象征% DM-RS和PDSCH力量之间的抵消pdschRef = nrPDSCH (c0Carrier、pdsch、双(cw {1} < 0));维生素与= comm.EVM;pdschEVMrms =维生素(pdschRef pdschEqSym /√(var (pdschEqSym)));%显示PDSCH维生素和DL-SCH CRCdisp ([“PDSCH RMS维生素:”num2str (pdschEVMrms' % 0.3 f ')“%”]);disp ([“PDSCH CRC:”num2str (sib1CRC)]);如果sib1CRC = = 0 disp (“SIB1解码成功了。”);其他的disp (“SIB1解码失败了。”);结束
PDSCH RMS维生素:10.835% PDSCH CRC: 0 SIB1解码成功了。

附录

这个示例使用这些辅助函数:

引用

  1. 3 gpp TS 38.101 - 1。“NR;用户设备(UE)无线电发射和接受;第1部分:范围1独立”第三代合作伙伴项目;技术规范集团无线接入网络

  2. 3 gpp TS 38.104。“NR;基站(BS)无线电发射和接受。”第三代合作伙伴项目;技术规范集团无线接入网络

  3. 3 gpp TS 38.211。“NR;物理渠道和调制。”第三代合作伙伴项目;技术规范集团无线接入网络

  4. 3 gpp TS 38.212。“NR;多路复用和信道编码”。第三代合作伙伴项目;技术规范集团无线接入网络

  5. 3 gpp TS 38.213。“NR;物理层控制程序”。第三代合作伙伴项目;技术规范集团无线接入网络

  6. 3 gpp TS 38.214。“NR;物理层数据程序。”第三代合作伙伴项目;技术规范集团无线接入网络

  7. 3 gpp TS 38.321。“NR;介质访问控制(MAC)协议规范。”第三代合作伙伴项目;技术规范集团无线接入网络

本地函数

函数现在= isCORESET0Present (ssbBlockPattern kSSB)开关ssbBlockPattern情况下{的情况下,“案例B”,“案例C”}% FR1kssb_max = 23;情况下{“D”,“E”}% FR2kssb_max = 11;结束如果(kSSB < = kssb_max) = true;其他的= false;结束结束函数dci = hDCI (dcispec dcibits)% DCI消息解析成一个结构DCI的消息字段fieldsizes = structfun (@ (x) x, dcispec);fieldbits2dec = @ (x, y) bin2dec (char (x (y (1): y (2)) +' 0 '));fieldbitranges = [[0;cumsum (fieldsizes (1: end-1))) + 1 cumsum (fieldsizes)];fieldbitranges = num2cell (fieldbitranges 2);值= cellfun (@ (x) fieldbits2dec (dcibits。”, fieldbitranges x)“UniformOutput”、假);dci = cell2struct(值,字段名(dcispec));结束函数timingOffset = hTimingOffsetToFrame(破裂,抵消,ssbIdx rxSampleRate)%符号长度测量的FFT样本,规模的象征%的长度占接收机的采样率。非整数延迟%是近似的过程。scs = hSSBurstSubcarrierSpacing (burst.BlockPattern);scs ofdmInfo = nrOFDMInfo (1,“SampleRate”,rxSampleRate);% SCS-SR FFT最小大小srRatio = rxSampleRate / (scs * 1 e3 * ofdmInfo.Nfft);symbolLengths = ofdmInfo.SymbolLengths * srRatio;%调整时间抵消党卫军块的开始。这个步骤删除%的额外补偿引入参考网格在PSS搜索,%含有PSS在第二个OFDM符号。抵消=抵消+ symbolLengths (1);%时间偏移调整,以便收到网格开始%帧头即调整时间偏移之间的区别单边带%的第一象征作用最强,帧的开始burstStartSymbols = hSSBurstStartSymbols (burst.BlockPattern burst.L_max);%在单边带数字命理学开始符号ssbFirstSym = burstStartSymbols (ssbIdx + 1);%基于%调整整个子帧symbolsPerSubframe =长度(symbolLengths);subframeOffset =地板(ssbFirstSym / symbolsPerSubframe);samplesPerSubframe =总和(symbolLengths);timingOffset =抵消- (subframeOffset * samplesPerSubframe);%调整剩余的OFDM符号和一轮抵消如果不是整数symbolOffset =国防部(ssbFirstSym symbolsPerSubframe);timingOffset =圆(timingOffset总和(symbolLengths (1: symbolOffset)));结束函数highlightSSBlock (refBurst ssbIndex commonNRB, scs, kFreqShift) scsSSB = scs (1);scsCommon = scs (2);%确定频率的单边带常见的数字命理学的起源bounding_box = @ (y, x, h, w)矩形(“位置”,(0.5 x + y - 0.5 w h),“EdgeColor”,“r”);scsRatio = scsSSB / scsCommon;ssbFreqOrig = 12 * (commonNRB-20 * scsRatio) / 2 + 1 + kFreqShift / (e3 scsCommon * 1);%确定时间的单边带常见的数字命理学的起源ssbStartSymbols = hSSBurstStartSymbols (refBurst.BlockPattern refBurst.L_max);ssbHeadSymbol = ssbStartSymbols (ssbIndex + 1) / scsRatio;地板ssbTailSymbol = ((ssbStartSymbols (ssbIndex + 1) + 4) / scsRatio) 1;bounding_box (ssbFreqOrig ssbHeadSymbol 240 * scsRatio ssbTailSymbol-ssbHeadSymbol + 1);str = sprintf (“最强\ n单边带:% d ',ssbIndex);文本(str ssbHeadSymbol ssbFreqOrig-20 0,“字形大小”10“颜色”,' w ')结束

相关的话题