主要内容

NR PDSCH吞吐量

参考仿真演示了如何测量3GPP NR标准定义的5G新无线电(NR)链路的物理下行共享信道(PDSCH)吞吐量。该实例实现了PDSCH和下行共享通道(DL-SCH)。发射机模型包括PDSCH解调参考信号(DM-RS)、PDSCH相位跟踪参考信号(PT-RS)和同步信号(SS)突发。该示例支持集群延迟线(C金宝appDL)和抽头延迟线(TDL)传播通道。您可以执行完美或实际的同步和信道估计。为了减少总的模拟时间,您可以使用并行计算工具箱™并行执行信噪比环路中的信噪比点。

介绍

本示例测量3GPP NR标准定义的5G链路的PDSCH吞吐量[1], [2], [3.], [4].

该示例模拟了以下5G NR功能:

  • DL-SCH传输信道编码

  • 多个码字,取决于层数

  • PDSCH,PDSCH DM-RS和PDSCH PT-RS代

  • SS突发代(PSS / SSS / PBCH / PBCH DM-RS)

  • 变量子载波间隔和帧数字学(2 ^ N * 15千赫)

  • 普通和扩展循环前缀

  • TDL和CDL传播通道模型

模拟的其他特点是:

  • 基于SVD的PDSCH子带预编码

  • CP-OFDM调制

  • 槽位和非槽位PDSCH和DM-RS映射

  • SS突发生成(case A-E, SS/PBCH块位图控制)

  • 完美或实用的同步和信道估计

  • 用16个处理HARQ操作

  • 该示例使用整个载波的单个带宽部分

图中显示了实现的处理链。为了清晰起见,省略了DM-RS、PT-RS和SS的爆发生成。

对于在这个例子中实施的步骤的更详细说明,请参阅5G NR通信链路型号DL-SCH和PDSCH发送和接收处理链

这个例子支持宽带预编码和子金宝app带预编码。预编码矩阵使用SVD确定,通过平均分配(宽带情况)或子带中所有PDSCH prb的信道估计。在SS突发中没有任何SS/PBCH块的波束形成。

为了减少总的模拟时间,您可以使用并行计算工具箱并行执行信噪比环路的信噪比点。

仿真长度和信噪比点

将模拟的长度设置为10ms帧的数量。应该使用大量的nframe来产生有意义的吞吐量结果。设置模拟的信噪比点。每一层的信噪比是按RE定义的,它包括信号和噪声对所有天线的影响。有关此示例使用的信噪比定义的解释,请参见用于链路仿真的信噪比定义

simParameters=struct();%清除simParameters变量包含所有关键模拟参数simParameters。NFrames = 2;%10毫秒帧数simParameters.SNRIn=[-5 0 5];%SNR范围(dB)的

信道估计配置

逻辑变量PerfectChannelEstimator控制信道估计和同步行为。当设置为真正的,采用了完美的信道估计和同步。否则,根据接收到的PDSCH DM-RS的值,使用实际的信道估计和同步。

simParameters。PerfectChannelEstimator = true;

模拟诊断

的变量DisplaySimulationInformation控制的模拟信息的显示,如用于每个子帧中的HARQ过程ID。在CRC错误的情况下,还显示了索引到RV序列的值。

simParameters.DisplaySimulationInformation = TRUE;% |DisplayDiagnostics|标志允许绘制每层的EVM。此图监控均衡后接收信号的质量。每层的EVM图显示:% *每层每槽的EVM,显示EVM随时间的变化。%*每个每个资源块,其示出了在频率的EVM层的EVM。%这与模拟图的发展和与每个时隙更新。%通常,低信噪比或信道衰减会导致信号降低%质量(高EVM)。通道对每一层的影响是不同的,%因此,EVM值可以跨层不同。%在某些情况下,某些层的EVM可能比其他层高得多。这些%的低质量层可以导致CRC错误。此行为可能会导致%由低信噪比或使用太多的层信道条件。你%可以通过较高的信噪比,较低的数字组合来避免这种情况%层数多,天线数量多,传输更稳健%(较低的调制方案和目标码率)。simParameters。DisplayDiagnostics = false;

载波和PDSCH配置

设置仿真的关键参数。这些包括:

  • 资源块的带宽(每个资源块12个子载波)。

  • 子载波间隔:15、30、60、120(kHz)

  • 循环前缀长度:正常或扩展

  • 小区ID

  • 发送和接收天线数

还规定了包含DL-SCH和PDSCH参数的子结构。这包括:

  • 目标代码的速度

  • 已分配资源块(PRBSet)

  • 调制方案: 'QPSK', '16QAM', '64QAM', '256QAM'

  • 层数

  • PDSCH映射类型

  • DM-RS配置参数

  • PT-RS的配置参数

其他模拟宽参数有:

  • 传播信道模型延迟剖面(TDL或CDL)

  • SS突发配置参数。请注意,SS突发生成可以通过设置SSBTransmitted字段为[0 0 0 0]。

设定波形类型和PDSCH命理(SCS和CP类型)simParameters。载体= nrCarrierConfig;%运营商资源网格配置simParameters.Carrier.NSizeGrid = 51;%带宽中的资源块的数目(51个RB,在30个千赫SCS为20MHz的BW)simParameters.Carrier.SubcarrierSpacing = 30;% 15, 30, 60, 120(千赫)simParameters.Carrier.CyclicPrefix =“正常”%“正常”或“扩展”(扩展CP仅与60 kHz SCS相关)simParameters.Carrier.NCellID = 1;%细胞身份SS突发配置%突发可以通过SSBTransmitted字段设置为全零被禁用simParameters.SSBurst=struct();simParameters.SSBurst.BlockPattern=“案例B”% 30千赫副载波间距simparameters . ssburst . ssbtransmit = [0 1 0 1];%位图,指示块在突发发送simParameters.SSBurst.SSBPeriodicity = 20;% SS突发设置周期毫秒(5,10,20,40,80,160)%PDSCH / DL-SCH参数simParameters.PDSCH=nrPDSCHConfig;%这个PDSCH定义是BLER仿真中所有PDSCH传输的基础simParameters。PDSCHExtension =结构();该结构是为DL-SCH和PDSCH保留额外的仿真参数%将每个时隙的PDSCH时频资源分配定义为全网格(单个全网格BWP)simParameters.PDSCH.PRBSet = 0: simParameters.Carrier.NSizeGrid-1;% PDSCH PRB分配simParameters.PDSCH.SymbolAllocation = [0, simParameters.Carrier.SymbolsPerSlot];%每个PDSCH分配的起始符号和符号数simParameters.PDSCH.MappingType=“一个”% PDSCH映射类型('A'(slot-wise),'B'(non - slot-wise))%扰标识符simParameters.PDSCH.NID = simParameters.Carrier.NCellID;simParameters.PDSCH.RNTI = 1;% PDSCH资源块映射(TS 38.211章节7.3.1.6)simParameters.PDSCH.VRBToPRBInterleaving=0;%禁用交错资源映射simParameters.PDSCH.VRBBundleSize = 4;%定义要使用的传输层的数量simParameters.PDSCH.NumLayers = 2;% PDSCH传输层数定义码字调制和目标编码率码字的数量直接依赖于层的数量,因此要确保%层首先设置获得的码字数目之前如果simParameters.PDSCH.NumCodewords > 1%多字传输(当层数>4时)simParameters.PDSCH.Modulation = {16 qam的16 qam的};% ' qpsk ', ' 16qam ', ' 64qam ', ' 256qam 'simParameters.PDSCHExtension.TargetCodeRate = [490 490] / 1024;%用于计算传输块大小的码率其他的simParameters.PDSCH.Modulation =16 qam的% ' qpsk ', ' 16qam ', ' 64qam ', ' 256qam 'simParameters.PDSCHExtension.TargetCodeRate = 490/1024;%用于计算传输块大小的码率终止% DM-RS和天线端口配置(TS 38.211章节7.4.1.1)simParameters.PDSCH.DMRS.DMRSPortSet = 0: simParameters.PDSCH.NumLayers-1;用于各层的DM-RS端口simParameters.PDSCH.DMRS.DMRSTypeAPosition = 2;%仅映射类型A。第一个DM-RS符号位置(2,3)simParameters.PDSCH.DMRS.DMRSLength = 1;%前置DM-RS符号数(1个(单符号),2个(双符号))simParameters.PDSCH.DMRS.DMRSAdditionalPosition = 2;%附加DM-RS符号位置(最大范围0…3)simParameters.PDSCH.DMRS.DMRSConfigurationType = 2;% DM-RS配置类型(1,2)simParameters.PDSCH.DMRS.NumCDMGroupsWithoutData = 1;%无数据的CDM组数simParameters.PDSCH.DMRS.NIDNSCID = 1;%置乱标识(0…65535)simParameters.PDSCH.DMRS.NSCID = 0;%加扰初始化(0,1)%PT-RS配置(TS 38.211第7.4.1.2)simParameters.PDSCH.EnablePTRS=0;%启用或禁用PT-RS(1或0)simParameters.PDSCH.PTRS.TimeDensity = 1;PT-RS时间密度(L_PT-RS) (1,2,4)simParameters.PDSCH.PTRS.FrequencyDensity = 2;%PT-RS频率密度(K_PT-RS)(2或4)simParameters.PDSCH.PTRS.REOffset =“00”%PT-RS的资源元素的偏移( '00', '01', '10', '11')simParameters.PDSCH.PTRS.PTRSPortSet = [];% PT-RS天线端口,DM-RS端口集的子集。空对应较低的DM-RS端口号%保留PRB模式,如果需要(用于核心集、前向兼容性等)simParameters.PDSCH.ReservedPRB{1}。SymbolSet = [];%保留PDSCH符号simParameters.PDSCH.ReservedPRB{1}。PRBSet = [];%保留PDSCH PRBssimParameters.PDSCH.ReservedPRB{1}。时间= [];%预留资源周期%附加仿真和DL-SCH相关参数%PDSCH PRB捆绑(TS 38.214第5.1.2.3节)simParameters.PDSCHExtension.PRGBundleSize = [];% 2、4或[]表示“宽带”% HARQ过程和速率匹配/TBS参数simParameters.PDSCHExtension.XOverhead=6*simParameters.PDSCH.EnablePTRS;%启用PT-RS时,设置TBS (Xoh)的PDSCH速率匹配开销为6,否则为0simParameters.PDSCHExtension.NHARQProcesses = 16;%要使用的并行HARQ进程数simParameters.PDSCHExtension.EnableHARQ = TRUE;%启用每个进程的重传,使用RV序列[0,2,3,1]LDPC解码器参数%可用算法:“信念传播”,“分层信念传播”,“归一化最小和”,“偏移最小和”simParameters.PDSCHExtension.LDPCDecodingAlgorithm =“规范化min-sum”;simParameters.PDSCHExtension.MaximumLDPCIterationCount = 6;%定义在端点整体传输天线几何%如果使用CDL传播信道,则天线单元的整数数为%转换为天线面板配置时,通道模型对象被创建simParameters.NTxAnts = 8;% PDSCH发射天线数(1、2、4、8、16、32、64、128、256、512、1024)>= NumLayers如果simParameters.PDSCH.NumCodewords > 1%多码字传输simParameters。NRxAnts = 8;% UE接收天线数量(偶数>= NumLayers)其他的simParameters。NRxAnts = 2;% UE接收天线数量(1或偶数>= NumLayers)终止%定义常规CDL/TDL传播信道参数simParameters。DelayProfile =“CDL-C”使用CDL-C模型(Urban macrocell model)simParameters。DelaySpread = 300 e-9;simParameters。MaximumDopplerShift = 5;%交叉检查PDSCH分层与通道几何validateNumLayers (simParameters);

仿真依赖于基带波形的各种信息,如采样率。

waveformInfo = nrOFDMInfo(simParameters.Carrier);%获取OFDM调制步骤后的基带波形信息

传播信道模型构建

为仿真创建通道模型对象。支持CDL和TDL通道模型[金宝app5].

%构造了CDL或TDL通道模型对象如果包含(simParameters.DelayProfile,“CDL”“IgnoreCase”,true) channel = nrCDLChannel;% CDL通道对象%将总天线数转换为特定天线面板%阵列几何。此时,配置的天线数会更新% nTxAnts不是(1、2、4、8、16、32、64、128、256、512、1024)或nRxAnts中的一个%不是1或偶数。[channel.TransmitAntennaArray.Size, channel.ReceiveAntennaArray。大小]=...hArrayGeometry (simParameters.NTxAnts simParameters.NRxAnts);nTxAnts = prod (channel.TransmitAntennaArray.Size);nRxAnts = prod (channel.ReceiveAntennaArray.Size);simParameters。NTxAnts = NTxAnts;simParameters。NRxAnts = NRxAnts;其他的频道= nrTDLChannel;TDL通道对象设置通道几何形状通道。NumTransmitAntennas = simParameters.NTxAnts;通道。NumReceiveAntennas = simParameters.NRxAnts;终止%分配模拟信道的参数和波形采样率到对象通道。DelayProfile = simParameters.DelayProfile;通道。DelaySpread = simParameters.DelaySpread;通道。MaximumDopplerShift = simParameters.MaximumDopplerShift;通道。SampleRate = waveformInfo.SampleRate;

得到信道多径分量的最大延迟采样数。这是从具有最大延迟的信道路径和信道滤波器的实现延迟来计算的。这是稍后冲洗信道滤波器以获得接收信号所必需的。

chInfo =信息(渠道);maxChDelay = ceil(max(chInfo.PathDelays*channel.SampleRate)) + chInfo.ChannelFilterDelay;

预留SS突发对应的PDSCH资源

本节介绍如何为SS突发的传输预留资源。

%获取SS突发配置信息%首先需要指定一些相关参数simParameters.SSBurst.NCellID = simParameters.Carrier.NCellID;simParameters.SSBurst.SampleRate = waveformInfo.SampleRate;ssbInfo = hSSBurstInfo (simParameters.SSBurst);%映射SS暴被占用的子载波和发送的符号%(在SS突发命理学中定义)至PDSCH PRB和符号% PDSCH BWP/载体命理学[mappedPRB,mappedSymbols]=mapNumerology(ssbInfo.占用子载波,ssbInfo.占用符号,ssbInfo.NRB,simParameters.Carrier.NSizeGrid,ssbInfo.子载波间隔,simParameters.Carrier.子载波间隔);%配置PDSCH保留这些资源,以便PDSCH%传输不重叠的SS爆发预订= nrPDSCHReservedConfig;预订。SymbolSet = mappedSymbols;预订。PRBSet = mappedPRB;预订。Period = simParameters.SSBurst.SSBPeriodicity * (simParameters.Carrier.SubcarrierSpacing/15);%插槽的周期simParameters.PDSCH。ReservedPRB{结束+ 1}=预订;

处理循环

为了确定每个信噪比点的吞吐量,使用以下步骤分析每个传输实例的PDSCH数据:

  • 更新当前HARQ进程。检查给定HARQ进程的传输状态,确定是否需要重传。如果不是这样,则生成新的数据。

  • 资源网发电。的方法来执行信道编码nrDLSCH系统对象。对象对输入传输块进行操作,并保留传输块的内部副本,以备需要重新传输时使用。在PDSCH上使用nrPDSCH作用然后应用预编码所得到的信号。

  • 波形生成。OFDM调制生成的网格。

  • 噪声信道建模。将波形通过CDL或TDL衰落信道。添加情况。有关此示例使用的信噪比定义的解释,请参见用于链路仿真的信噪比定义

  • 执行同步和OFDM解调。为了实现完美的同步,重构信道脉冲响应以同步接收的波形。为了实际的同步,将接收到的波形与PDSCH DM-RS相关联。然后对同步信号进行OFDM解调。

  • 进行信道估计。对于完美的信道估计,重建的信道脉冲响应,并执行OFDM解调。对于实际信道估计,使用PDSCH DM-RS。

  • 执行均衡和CPE补偿。MMSE均衡估计的信道。利用PT-RS符号估计共相位误差(CPE),然后在PT-RS OFDM符号参考范围内对每个OFDM符号进行校正。

  • 预编码矩阵的计算。利用奇异值分解(SVD)生成下一传输的预编码矩阵W。

  • 解码PDSCH。为获得接收码字的估计,对所有发射和接收天线对的恢复PDSCH符号进行解调和解码,并对噪声进行估计nrPDSCHDecode作用

  • 解码下行链路共享信道(DL-SCH)并使用块CRC错误更新HARQ过程。将已解码软位的向量传递给nrDLSCHDecoder系统对象。对象进行解码所述码字,并返回用于确定系统的吞吐量的块CRC错误。

%阵列存储所有信噪比点的最大吞吐量maxThroughput = 0(长度(simParameters.SNRIn), 1);%阵列存储所有信噪比点的模拟吞吐量simThroughput = 0(长度(simParameters.SNRIn), 1);%为所有HARQ进程设置冗余版本(RV)序列如果simParameters.PDSCHExtension.EnableHARQ%在RAN WG1 #91会议(R1-1719301)的最终报告中,它是在R1-1717405中观察到的%,如果性能是优先级,[0 2 3 1]应该使用%。如果自解码是优先级,那么它应该是%考虑到码率的上限值,在%每个RV都是自解码的,其顺序如下:0>3>2>1rvSeq = [0 2 3 1];其他的% HARQ禁用-单次传输,RV=0,没有重传rvSeq = 0;终止创建DL-SCH编码器系统对象来执行传输通道编码encodeDLSCH = nrDLSCH;encodeDLSCH。MultipleHARQProcesses = true;encodeDLSCH。TargetCodeRate = simParameters.PDSCHExtension.TargetCodeRate;%创建DL-SCH的解码器系统对象来执行传输信道解码% LDPC译码采用分层信念传播,次数减半%与信念传播解码默认值相比的迭代次数decodeDLSCH = nrDLSCHDecoder;decodeDLSCH。MultipleHARQProcesses = true;decodeDLSCH。TargetCodeRate = simParameters.PDSCHExtension.TargetCodeRate;decodeDLSCH。LDPCDecodingAlgorithm = simParameters.PDSCHExtension.LDPCDecodingAlgorithm;decodeDLSCH。MaximumLDPCIterationCount = simParameters.PDSCHExtension.MaximumLDPCIterationCount;snrIdx = 1:元素个数(simParameters.SNRIn)%注释掉用于并行计算% parfor snrIdx = 1:numel(simParameters.SNRIn) % uncomment用于并行计算为了减少总的模拟时间,你可以执行这个循环% parallel使用并行计算工具箱。注释掉for%语句并取消“parfor”语句的注释。如果并行计算%工具箱没有安装,“PARFOR”默认为正常的“For”语句。%因为parfor循环迭代是在%不确定顺序,模拟信息显示为每个信噪比百分点可以交织在一起。要关闭模拟信息显示,%设置上面的'displaySimulationInformation'变量为false重置随机数生成器,使每个信噪比点将%体验相同的噪声实现rng (“默认”);%获取模拟级参数结构的完整副本,以便它们不存在使用parfor时,% PCT广播变量simLocal = simParameters;waveinfoLocal = waveformInfo;%获取通道级参数的副本,以简化后续参数引用载体= simLocal.Carrier;pdsch = simLocal.PDSCH;pdschextra = simLocal.PDSCHExtension;ssburst = simLocal.SSBurst;decodeDLSCHLocal = decodeDLSCH;%复制的解码器句柄,以帮助PCT分类变量decodeDLSCHLocal.reset ();%在每个信噪比点开始时重置译码器路径过滤器=[];ssbWaveform=[];%为新的信噪比点准备仿真SNRdB = simLocal.SNRIn (snrIdx);流('\n模拟传输方案1 (%dx%d)和SCS=%dkHz, %s通道在%gdB信噪比为%d 10ms帧(s)\n'...simLocal.NTxAnts、simLocal.NRxAnts carrier.SubcarrierSpacing,...simLocal.DelayProfile,SNRdB,simLocal.NFrames);%指定HARQ进程id循环的固定顺序harqSequence = 0:pdschextra.NHARQProcesses-1;%初始化所有HARQ进程的状态harqEntity=harqEntity(harqSequence,rvSeq,pdsch.NumCodewords);%重置信道,使每个SNR点都将经历相同的%通道实现复位(通道);%模拟周期内槽位总数NSlots = simLocal。NFrames * carrier.SlotsPerFrame;%指数到当前SS突发样本集合的开始%传送ssbSampleIndex = 1;获取用于传输的预编码矩阵(wtx)第一个传输块estChannelGrid = getInitialChannelEstimate(载体、simLocal.NTxAnts通道);newWtx=getPrecodingMatrix(载波、pdsch、estChannelGrid、PDSCHXTRA.PRGBundleSize);%定时偏移,在每个插槽中更新,以实现完美同步和%时的相关性强于实际同步抵消= 0;%循环整个波形长度nslot=0:NSlots-1%新插槽更新载体插槽号母舰。NSlot = NSlot;%必要时生成一个新的SS爆发如果(ssbSampleIndex==1) nSubframe = carrier. (ssbSampleIndex==1)NSlot / carrier.SlotsPerSubframe;ssburst。NFrame = floor(nSubframe / 10);ssburst。NHalfFrame = mod(nSubframe / 5,2);[ssbWaveform, ~, ssbInfo] = hSSBurst (ssburst);终止%计算槽中传输的传输块大小[pdschIndices,pdschIndicesInfo]=nrPDSCHIndices(载波,pdsch);trBlkSizes=nrTBS(pdsch.调制,pdsch.NumLayers,numel(pdsch.PRBSet),pdschIndicesInfo.NREPerPRB,pdschextra.TargetCodeRate,pdschextra.XOverhead);% HARQ处理cwIdx = 1: pdsch。NumCodewords%如果当前进程和码字有新数据,则创建一个新的DL-SCH传输块如果trBlk = randi([0 1], trblksizesize (cwIdx),1); / /设置数据大小setTransportBlock (encodeDLSCH trBlk、cwIdx-1 harqEntity.HARQProcessID);%如果新数据由于之前的RV序列超时,则显式刷新解码器软缓冲区如果harqEntity.SequenceTimeout(cwIdx)resetSoftBuffer(decodeDLSCHLocal,cwIdx-1,harqEntity.HARQProcessID);终止终止终止%编码DL-SCH传输块codedTrBlocks=encodeDLSCH(pdsch.调制,pdsch.NumLayers,...pdschIndicesInfo.G、harqEntity.RedundancyVersion harqEntity.HARQProcessID);得到在前一个槽中计算的预编码矩阵(wtx)wtx = newWtx;为槽位创建资源网格pdschGrid = nrResourceGrid(载体、simLocal.NTxAnts);%PDSCH调制与预编码pdschSymbols = nrPDSCH(载体,pdsch codedTrBlocks);[pdschAntSymbols, pdschAntIndices] = hPRGPrecode(大小(pdschGrid)、carrier.NStartGrid pdschSymbols, pdschIndices, mtx);与PDSCH传输周期相关联的电网中的PDSCH映射%pdschGrid (pdschAntIndices) = pdschAntSymbols;% PDSCH DM-RS预编码和映射dmrsSymbols = nrPDSCHDMRS(载体、pdsch);dmrsIndices = nrPDSCHDMRSIndices(载体、pdsch);[dmrsAntSymbols, dmrsAntIndices] = hPRGPrecode(大小(pdschGrid)、carrier.NStartGrid dmrsSymbols, dmrsIndices, mtx);pdschGrid (dmrsAntIndices) = dmrsAntSymbols;% PDSCH PT-RS预编码和映射ptrsSymbols = nrPDSCHPTRS(载体、pdsch);ptrsIndices = nrPDSCHPTRSIndices(载体、pdsch);[ptrsAntSymbols, ptrsAntIndices] = hPRGPrecode(大小(pdschGrid)、carrier.NStartGrid ptrsSymbols, ptrsIndices, mtx);pdschGrid (ptrsAntIndices) = ptrsAntSymbols;%OFDM调制TX波形=nrOFDMModulate(载波,pdschGrid);将SS突发波形的适当部分加到%传播波形元=大小(txWaveform, 1);txWaveform = txWaveform + ssbWaveform(ssbSampleIndex + (0:Nt-1),:);ssbSampleIndex = mod(ssbSampleIndex + Nt,size(ssb波形,1));%通过通道模型传递数据。的末尾加0%发送波形以刷新通道内容。这些零%考虑信道中引入的任何延迟。这是一种混合多路径延迟和实现延迟的百分比。这个值可能%的变化取决于采样率,延迟曲线和延迟% 传播txWaveform = [txWaveform;0 (maxChDelay、尺寸(txWaveform 2)));% #好< AGROW >[rxWaveform, pathGains sampleTimes] =通道(txWaveform);%将AWGN添加到接收的时域波形中根据OFDM调制中使用的IFFT尺寸对噪声功率进行归一化,%作为OFDM调制该标准化适用于%传播波形。也要按照接收的数量进行规范%天线,因为信道模型将这种标准化应用于默认情况下%接收波形信噪比= 10 ^ (SNRdB / 10);N0 = 1 /√(2.0 * simLocal.NRxAnts *双(waveinfoLocal.Nfft) *信噪比);噪音= N0 *复杂(randn(大小(rxWaveform)), randn(大小(rxWaveform)));rx波形= rx波形+噪声;如果(simLocal.PerfectChannelEstimator)%完美同步。使用由%通道以找到最强的多路径组件pathFilters = getPathFilters(渠道);(抵消,mag) = nrPerfectTimingEstimate (pathGains pathFilters);其他的%实际同步。相关接收波形%与PDSCH DM-RS给出时间偏移估计't'和%相关幅度'mag'。这个函数% hskipweaktiminggoffset用于更新接收机定时%抵消。如果'mag'的相关峰是弱的,电流%计时估计't'被忽略,之前的估计使用了% 'offset'(t, mag) = nrTimingEstimate(载体、rxWaveform dmrsIndices, dmrsSymbols);抵消= hSkipWeakTimingOffset(抵消t杂志);显示一个警告,如果估计的时间偏移超过%的最大信道延迟如果offset > maxChDelay warning([估计的时间偏移(%d)大于最大信道延迟(%d)。...这将导致解码失败。这可能是低信噪比造成的。”...或者没有足够的DM-RS符号来成功同步),抵消,maxChDelay);终止终止rxWaveform = rxWaveform(1 +偏移量:端,:);%对接收到的数据进行OFDM解调,重新创建%资源网格,其中包括在事件实际填充%同步导致一个不完整的槽被解调rxGrid = nrOFDMDemodulate(载体、rxWaveform);[K, L R] =大小(rxGrid);如果(L < carrier.SymbolsPerSlot) rxGrid = cat(2,rxGrid,zeros(K,carrier.SymbolsPerSlot-L,R));终止如果(simLocal.PerfectChannelEstimator)完美信道估计,使用路径增益的值%由通道提供。这个信道估计没有%包括发射机预编码的影响estChannelGrid = nrPerfectChannelEstimate(载体,pathGains pathFilters,抵消,sampleTimes);%得到完美的噪声估计(从噪声实现)noiseGrid = nrOFDMDemodulate(载波,噪声(1 +偏移量:端,:));noiseEst = VAR(noiseGrid(:));%得到下一个槽的预编码矩阵newWtx=getPrecodingMatrix(载波、pdsch、estChannelGrid、PDSCHXTRA.PRGBundleSize);%从接收的网格中获取PDSCH资源元素,并%信道估计[pdschRx pdschHest, ~, pdschHestIndices] = nrExtractResources (pdschIndices, rxGrid estChannelGrid);%对信道估计应用预编码pdschHest = hPRGPrecode(大小(estChannelGrid),运营商。NStartGrid,pdschHest,pdschHestIndices,permute(wtx,[2 1 3]));其他的%实际信道估计之间的接收网格和%每个传输层,使用PDSCH DM-RS为每个%层。该信道估计包括%发射机预编码[estChannelGrid,噪音]= nrChannelEstimate(载体、rxGrid dmrsIndices, dmrsSymbols,“CDMLengths”, pdsch.DMRS.CDMLengths);%从接收的网格中获取PDSCH资源元素,并%信道估计[pdschRx, pdschHest] = nrExtractResources (pdschIndices、rxGrid estChannelGrid);%在预编码之前从estChannelGrid中删除预编码%矩阵计算estChannelGridPorts = precodeChannelEstimate(载体、estChannelGrid连词(mtx));%得到下一个槽的预编码矩阵newWtx = getPrecodingMatrix(载体,pdsch、estChannelGridPorts pdschextra.PRGBundleSize);终止%均衡[pdschEq,CSI] = nrEqualizeMMSE(pdschRx,pdschHest,noiseEst);%共相位误差补偿如果~ isempty (ptrsIndices)初始化临时网格以存储相等的符号tempGrid=nResourceGrid(承运人,pdsch.NumLayers);%从接收的网格中提取PT-RS符号并进行估计%通道网格[ptrsRx,ptrsHest,〜,〜,ptrsHestIndices,ptrsLayerIndices] = nrExtractResources(ptrsIndices,rxGrid,estChannelGrid,tempGrid);如果(simLocal.PerfectChannelEstimator)%对信道估计应用预编码ptrsHest = hPRGPrecode(大小(estChannelGrid),carrier.NStartGrid,ptrsHest,ptrsHestIndices,置换(WTX,[2 1 3]));终止%均衡PT-RS符号并将它们映射到tempGridptrsEq = nrEqualizeMMSE(ptrsRx,ptrsHest,noiseEst);tempGrid(ptrsLayerIndices)= ptrsEq;%估计PT-RS位置的剩余通道% tempGridcpe = nrChannelEstimate (tempGrid ptrsIndices ptrsSymbols);在子载波,接收天线和%层。然后,通过取这个角得到CPE%的总和CPE =角度(总和(CPE,[1 3 4]));%将均衡的PDSCH符号映射到tempGridtempGrid (pdschIndices) = pdschEq;%在每个OFDM符号参考范围内正确的CPE% PT-RS OFDM符号symLoc = pdschIndicesInfo.PTRSSymbolSet (1) + 1: pdschIndicesInfo.PTRSSymbolSet(结束)+ 1;tempGrid (:, symLoc:) = tempGrid (:, symLoc:)。* exp (1 * cpe (symLoc));%提取PDSCH符号pdschEq = tempGrid (pdschIndices);终止%解码PDSCH物理信道[dlschLLRs,rxSymbols] = nrPDSCHDecode(载体,PDSCH,pdschEq,noiseEst);每层%显示EVM,每个时隙和每个RB如果(simLocal.DisplayDiagnostics) plotLayerEVM (NSlots、nslot pdsch,大小(pdschGrid) pdschIndices, pdschSymbols, pdschEq);终止百分比按CSI划分的llrcsi = nrLayerDemap (csi);% CSI层demappingcwIdx = 1: pdsch。NumCodewordsQm = length(dlschLLRs{cwIdx})/length(rxSymbols{cwIdx});每符号%位csi {cwIdx} = repmat (csi {cwIdx}。”、Qm 1);%按每个符号的每个位展开dlschLLRs{cwIdx} = dlschLLRs{cwIdx} .* csi{cwIdx}(:);百分率(CSI)终止%解码DL-SCH传输信道decodeDLSCHLocal。TransportBlockLength = trBlkSizes;[decbits, blkerr] = decodeDLSCHLocal (dlschLLRs、pdsch.Modulation pdsch.NumLayers, harqEntity.RedundancyVersion, harqEntity.HARQProcessID);%存储计算吞吐量的值simThroughput(snrIdx) = simThroughput(snrIdx) + sum(~blkerr .* trBlkSizes);maxThroughput(snrIdx) = maxThroughput(snrIdx) + sum(trBlkSizes);用CRC错误更新当前进程并推进到下一个进程procstatus = updateAndAdvance (harqEntity blkerr、trBlkSizes pdschIndicesInfo.G);如果(simLocal.DisplaySimulationInformation)流(' \ n (% 3.2 f % %) NSlot = % d % s的,100*(nslot+1)/nslot、nslot、procstatus);终止终止%在命令窗口中动态显示结果如果(simLocal.DisplaySimulationInformation)流(' \ n ');终止流('\nThroughput(Mbps) for %d frame(s) = %.4f\n',simLocal.NFrames,1E-6 * simThroughput(snrIdx)/(simLocal.NFrames * 10E-3));流('第%d帧的吞吐量(%)=%.4f\n'、simLocal.NFrames simThroughput (snrIdx) * 100 / maxThroughput (snrIdx));终止
模拟传输方案1(8×2)和SCS = 30kHz的与在-5dB SNR CDL-C通道2 10ms的帧(一个或多个)(2.50%)NSlot = 0,HARQ PROC 0:CW0:初始传输失败(RV = 0,CR= 0.537116)。(5.00%)NSlot = 1,HARQ PROC 1:CW0:初始传输失败(RV = 0,CR = 0.537116)。(7.50%)NSlot = 2,HARQ PROC 2:CW0:初始传输失败(RV = 0,CR = 0.474736)。(10.00%)NSlot = 3,HARQ PROC 3:CW0:初始传输失败(RV = 0,CR = 0.474736)。(12.50%)NSlot = 4,HARQ PROC 4:CW0:初始传输失败(RV = 0,CR = 0.474736)。(15.00%)NSlot = 5,HARQ PROC 5:CW0:初始传输失败(RV = 0,CR = 0.474736)。(17.50%)NSlot = 6,HARQ PROC 6:CW0:初始传输失败(RV = 0,CR = 0.474736)。(20.00%)NSlot = 7,HARQ PROC 7:CW0:初始传输失败(RV = 0,CR = 0.474736)。(22.50%)NSlot = 8,HARQ PROC 8:CW0:初始传输失败(RV = 0,CR = 0.474736)。(25.00%)NSlot = 9,HARQ PROC 9:CW0:初始传输失败(RV = 0,CR = 0.474736)。 (27.50%) NSlot=10, HARQ Proc 10: CW0: Initial transmission failed (RV=0,CR=0.474736). (30.00%) NSlot=11, HARQ Proc 11: CW0: Initial transmission failed (RV=0,CR=0.474736). (32.50%) NSlot=12, HARQ Proc 12: CW0: Initial transmission failed (RV=0,CR=0.474736). (35.00%) NSlot=13, HARQ Proc 13: CW0: Initial transmission failed (RV=0,CR=0.474736). (37.50%) NSlot=14, HARQ Proc 14: CW0: Initial transmission failed (RV=0,CR=0.474736). (40.00%) NSlot=15, HARQ Proc 15: CW0: Initial transmission failed (RV=0,CR=0.474736). (42.50%) NSlot=16, HARQ Proc 0: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (45.00%) NSlot=17, HARQ Proc 1: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (47.50%) NSlot=18, HARQ Proc 2: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (50.00%) NSlot=19, HARQ Proc 3: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (52.50%) NSlot=20, HARQ Proc 4: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (55.00%) NSlot=21, HARQ Proc 5: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (57.50%) NSlot=22, HARQ Proc 6: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (60.00%) NSlot=23, HARQ Proc 7: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (62.50%) NSlot=24, HARQ Proc 8: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (65.00%) NSlot=25, HARQ Proc 9: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (67.50%) NSlot=26, HARQ Proc 10: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (70.00%) NSlot=27, HARQ Proc 11: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (72.50%) NSlot=28, HARQ Proc 12: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (75.00%) NSlot=29, HARQ Proc 13: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (77.50%) NSlot=30, HARQ Proc 14: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (80.00%) NSlot=31, HARQ Proc 15: CW0: Retransmission #1 passed (RV=2,CR=0.474736). (82.50%) NSlot=32, HARQ Proc 0: CW0: Initial transmission failed (RV=0,CR=0.474736). (85.00%) NSlot=33, HARQ Proc 1: CW0: Initial transmission failed (RV=0,CR=0.474736). (87.50%) NSlot=34, HARQ Proc 2: CW0: Initial transmission failed (RV=0,CR=0.474736). (90.00%) NSlot=35, HARQ Proc 3: CW0: Initial transmission failed (RV=0,CR=0.474736). (92.50%) NSlot=36, HARQ Proc 4: CW0: Initial transmission failed (RV=0,CR=0.474736). (95.00%) NSlot=37, HARQ Proc 5: CW0: Initial transmission failed (RV=0,CR=0.474736). (97.50%) NSlot=38, HARQ Proc 6: CW0: Initial transmission failed (RV=0,CR=0.474736). (100.00%) NSlot=39, HARQ Proc 7: CW0: Initial transmission failed (RV=0,CR=0.474736). Throughput(Mbps) for 2 frame(s) = 24.1728 Throughput(%) for 2 frame(s) = 40.0000 Simulating transmission scheme 1 (8x2) and SCS=30kHz with CDL-C channel at 0dB SNR for 2 10ms frame(s) (2.50%) NSlot=0, HARQ Proc 0: CW0: Initial transmission passed (RV=0,CR=0.537116). (5.00%) NSlot=1, HARQ Proc 1: CW0: Initial transmission passed (RV=0,CR=0.537116). (7.50%) NSlot=2, HARQ Proc 2: CW0: Initial transmission passed (RV=0,CR=0.474736). (10.00%) NSlot=3, HARQ Proc 3: CW0: Initial transmission passed (RV=0,CR=0.474736). (12.50%) NSlot=4, HARQ Proc 4: CW0: Initial transmission passed (RV=0,CR=0.474736). (15.00%) NSlot=5, HARQ Proc 5: CW0: Initial transmission passed (RV=0,CR=0.474736). (17.50%) NSlot=6, HARQ Proc 6: CW0: Initial transmission passed (RV=0,CR=0.474736). (20.00%) NSlot=7, HARQ Proc 7: CW0: Initial transmission passed (RV=0,CR=0.474736). (22.50%) NSlot=8, HARQ Proc 8: CW0: Initial transmission passed (RV=0,CR=0.474736). (25.00%) NSlot=9, HARQ Proc 9: CW0: Initial transmission passed (RV=0,CR=0.474736). (27.50%) NSlot=10, HARQ Proc 10: CW0: Initial transmission passed (RV=0,CR=0.474736). (30.00%) NSlot=11, HARQ Proc 11: CW0: Initial transmission passed (RV=0,CR=0.474736). (32.50%) NSlot=12, HARQ Proc 12: CW0: Initial transmission passed (RV=0,CR=0.474736). (35.00%) NSlot=13, HARQ Proc 13: CW0: Initial transmission passed (RV=0,CR=0.474736). (37.50%) NSlot=14, HARQ Proc 14: CW0: Initial transmission passed (RV=0,CR=0.474736). (40.00%) NSlot=15, HARQ Proc 15: CW0: Initial transmission passed (RV=0,CR=0.474736). (42.50%) NSlot=16, HARQ Proc 0: CW0: Initial transmission passed (RV=0,CR=0.474736). (45.00%) NSlot=17, HARQ Proc 1: CW0: Initial transmission passed (RV=0,CR=0.474736). (47.50%) NSlot=18, HARQ Proc 2: CW0: Initial transmission passed (RV=0,CR=0.474736). (50.00%) NSlot=19, HARQ Proc 3: CW0: Initial transmission passed (RV=0,CR=0.474736). (52.50%) NSlot=20, HARQ Proc 4: CW0: Initial transmission passed (RV=0,CR=0.474736). (55.00%) NSlot=21, HARQ Proc 5: CW0: Initial transmission passed (RV=0,CR=0.474736). (57.50%) NSlot=22, HARQ Proc 6: CW0: Initial transmission passed (RV=0,CR=0.474736). (60.00%) NSlot=23, HARQ Proc 7: CW0: Initial transmission passed (RV=0,CR=0.474736). (62.50%) NSlot=24, HARQ Proc 8: CW0: Initial transmission passed (RV=0,CR=0.474736). (65.00%) NSlot=25, HARQ Proc 9: CW0: Initial transmission passed (RV=0,CR=0.474736). (67.50%) NSlot=26, HARQ Proc 10: CW0: Initial transmission passed (RV=0,CR=0.474736). (70.00%) NSlot=27, HARQ Proc 11: CW0: Initial transmission passed (RV=0,CR=0.474736). (72.50%) NSlot=28, HARQ Proc 12: CW0: Initial transmission passed (RV=0,CR=0.474736). (75.00%) NSlot=29, HARQ Proc 13: CW0: Initial transmission passed (RV=0,CR=0.474736). (77.50%) NSlot=30, HARQ Proc 14: CW0: Initial transmission passed (RV=0,CR=0.474736). (80.00%) NSlot=31, HARQ Proc 15: CW0: Initial transmission passed (RV=0,CR=0.474736). (82.50%) NSlot=32, HARQ Proc 0: CW0: Initial transmission passed (RV=0,CR=0.474736). (85.00%) NSlot=33, HARQ Proc 1: CW0: Initial transmission passed (RV=0,CR=0.474736). (87.50%) NSlot=34, HARQ Proc 2: CW0: Initial transmission passed (RV=0,CR=0.474736). (90.00%) NSlot=35, HARQ Proc 3: CW0: Initial transmission passed (RV=0,CR=0.474736). (92.50%) NSlot=36, HARQ Proc 4: CW0: Initial transmission passed (RV=0,CR=0.474736). (95.00%) NSlot=37, HARQ Proc 5: CW0: Initial transmission passed (RV=0,CR=0.474736). (97.50%) NSlot=38, HARQ Proc 6: CW0: Initial transmission passed (RV=0,CR=0.474736). (100.00%) NSlot=39, HARQ Proc 7: CW0: Initial transmission passed (RV=0,CR=0.474736). Throughput(Mbps) for 2 frame(s) = 60.4320 Throughput(%) for 2 frame(s) = 100.0000 Simulating transmission scheme 1 (8x2) and SCS=30kHz with CDL-C channel at 5dB SNR for 2 10ms frame(s) (2.50%) NSlot=0, HARQ Proc 0: CW0: Initial transmission passed (RV=0,CR=0.537116). (5.00%) NSlot=1, HARQ Proc 1: CW0: Initial transmission passed (RV=0,CR=0.537116). (7.50%) NSlot=2, HARQ Proc 2: CW0: Initial transmission passed (RV=0,CR=0.474736). (10.00%) NSlot=3, HARQ Proc 3: CW0: Initial transmission passed (RV=0,CR=0.474736). (12.50%) NSlot=4, HARQ Proc 4: CW0: Initial transmission passed (RV=0,CR=0.474736). (15.00%) NSlot=5, HARQ Proc 5: CW0: Initial transmission passed (RV=0,CR=0.474736). (17.50%) NSlot=6, HARQ Proc 6: CW0: Initial transmission passed (RV=0,CR=0.474736). (20.00%) NSlot=7, HARQ Proc 7: CW0: Initial transmission passed (RV=0,CR=0.474736). (22.50%) NSlot=8, HARQ Proc 8: CW0: Initial transmission passed (RV=0,CR=0.474736). (25.00%) NSlot=9, HARQ Proc 9: CW0: Initial transmission passed (RV=0,CR=0.474736). (27.50%) NSlot=10, HARQ Proc 10: CW0: Initial transmission passed (RV=0,CR=0.474736). (30.00%) NSlot=11, HARQ Proc 11: CW0: Initial transmission passed (RV=0,CR=0.474736). (32.50%) NSlot=12, HARQ Proc 12: CW0: Initial transmission passed (RV=0,CR=0.474736). (35.00%) NSlot=13, HARQ Proc 13: CW0: Initial transmission passed (RV=0,CR=0.474736). (37.50%) NSlot=14, HARQ Proc 14: CW0: Initial transmission passed (RV=0,CR=0.474736). (40.00%) NSlot=15, HARQ Proc 15: CW0: Initial transmission passed (RV=0,CR=0.474736). (42.50%) NSlot=16, HARQ Proc 0: CW0: Initial transmission passed (RV=0,CR=0.474736). (45.00%) NSlot=17, HARQ Proc 1: CW0: Initial transmission passed (RV=0,CR=0.474736). (47.50%) NSlot=18, HARQ Proc 2: CW0: Initial transmission passed (RV=0,CR=0.474736). (50.00%) NSlot=19, HARQ Proc 3: CW0: Initial transmission passed (RV=0,CR=0.474736). (52.50%) NSlot=20, HARQ Proc 4: CW0: Initial transmission passed (RV=0,CR=0.474736). (55.00%) NSlot=21, HARQ Proc 5: CW0: Initial transmission passed (RV=0,CR=0.474736). (57.50%) NSlot=22, HARQ Proc 6: CW0: Initial transmission passed (RV=0,CR=0.474736). (60.00%) NSlot=23, HARQ Proc 7: CW0: Initial transmission passed (RV=0,CR=0.474736). (62.50%) NSlot=24, HARQ Proc 8: CW0: Initial transmission passed (RV=0,CR=0.474736). (65.00%) NSlot=25, HARQ Proc 9: CW0: Initial transmission passed (RV=0,CR=0.474736). (67.50%) NSlot=26, HARQ Proc 10: CW0: Initial transmission passed (RV=0,CR=0.474736). (70.00%) NSlot=27, HARQ Proc 11: CW0: Initial transmission passed (RV=0,CR=0.474736). (72.50%) NSlot=28, HARQ Proc 12: CW0: Initial transmission passed (RV=0,CR=0.474736). (75.00%) NSlot=29, HARQ Proc 13: CW0: Initial transmission passed (RV=0,CR=0.474736). (77.50%) NSlot=30, HARQ Proc 14: CW0: Initial transmission passed (RV=0,CR=0.474736). (80.00%) NSlot=31, HARQ Proc 15: CW0: Initial transmission passed (RV=0,CR=0.474736). (82.50%) NSlot=32, HARQ Proc 0: CW0: Initial transmission passed (RV=0,CR=0.474736). (85.00%) NSlot=33, HARQ Proc 1: CW0: Initial transmission passed (RV=0,CR=0.474736). (87.50%) NSlot=34, HARQ Proc 2: CW0: Initial transmission passed (RV=0,CR=0.474736). (90.00%) NSlot=35, HARQ Proc 3: CW0: Initial transmission passed (RV=0,CR=0.474736). (92.50%) NSlot=36, HARQ Proc 4: CW0: Initial transmission passed (RV=0,CR=0.474736). (95.00%) NSlot=37, HARQ Proc 5: CW0: Initial transmission passed (RV=0,CR=0.474736). (97.50%) NSlot=38, HARQ Proc 6: CW0: Initial transmission passed (RV=0,CR=0.474736). (100.00%) NSlot=39, HARQ Proc 7: CW0: Initial transmission passed (RV=0,CR=0.474736). Throughput(Mbps) for 2 frame(s) = 60.4320 Throughput(%) for 2 frame(s) = 100.0000

结果

显示测量的吞吐量。这是根据给定数据传输可用资源的链路最大可能吞吐量的百分比计算的。

图;情节(simParameters.SNRIn simThroughput * 100. / maxThroughput,“啊——”。)包含(“信噪比(dB)”);ylabel('吞吐量(%)');网格;标题(sprintf的('%s (%dx%d) / NRB=%d / SCS=%dkHz'...simParameters.DelayProfile、simParameters.NTxAnts、simParameters.NRxAnts、,...simParameters.Carrier.NSizeGrid simParameters.Carrier.SubcarrierSpacing));将关键参数和结果打包到一个组合结构中进行记录simResults.simParameters=simParameters;simResults.SimThroughts=SimThroughts;simResults.maxThroughput=最大吞吐量;

下面示出了可以通过结果图中获得的模拟10000子帧(NFrames = 1000SNRIn = 18:2:16).

精选书目

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

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

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

  4. 3GPP TS 38.214。“数据物理层程序”,第三代合作项目;技术规范组无线电接入网。

  5. 3 gpp TR 38.901。“研究频率为0.5 - 100ghz的信道模型。”第三代合作伙伴项目;技术规范无线电接入网。

本地函数

函数validateNumLayers (simParameters)验证层数,相对于天线几何numlayers = simParameters.PDSCH.NumLayers;ntxants = simParameters.NTxAnts;nrxants = simParameters.NRxAnts;antennaDescription = sprintf ('min(NTxAnts,NRxAnts) = min(%d,%d) = %d',ntxants,nrxants,min(ntxants,nrxants));如果Numlayers > min(ntxants,nrxants) error('层的数量(%d)必须满足NumLayers <= %s'...numlayers,antennaDescription);终止如果通道的最大可能等级等于,则显示警告%层数如果(numlayers>2)和&(numlayers==min(ntxants,nrxants))警告([“通道的最大可能等级,由%s给出,等于NumLayers (%d)。”...“在某些信道条件下,这可能导致解码失败。”...“尝试减少层数或增加频道等级”...“(使用更多的发射或接收天线)。”, antennaDescription numlayers);%#正常终止终止函数estChannelGrid = getInitialChannelEstimate(载体,nTxAnts propchannel)%在第一次传输之前获得信道估计。这可用于%获得第一槽的预编码矩阵。ofdmInfo=nrodminfo(承运人);chInfo=信息(propchannel);maxChDelay=ceil(最大值(chInfo.PathDelays*propchannel.SampleRate))+chInfo.ChannelFilterDelay;%临时波形(仅对大小需要)tmpWaveform = 0 ((ofdmInfo.SampleRate / 1000 / carrier.SlotsPerSubframe) + maxChDelay nTxAnts);过滤通道[~, pathGains sampleTimes] = propchannel (tmpWaveform);%完美的时间同步pathFilters=getPathFilters(propchannel);offset=nrPerfectTimingEstimate(pathGains,pathFilters);完美信道估计百分比estChannelGrid = nrPerfectChannelEstimate(载体,pathGains pathFilters,抵消,sampleTimes);终止函数wtx=getPrecodingMatrix(载波、pdsch、hestGrid、prgbundlesize)%计算载波中重叠的所有PRG的预编码矩阵%与PDSCH分配%由载波网格寻址的最大CRBmaxCRB =载体。NStartGrid +载波。NSizeGrid - 1;% PRG大小如果nargin==4 && ~isempty(prgbundlesize) Pd_BWP = prgbundlesize;其他的Pd_BWP = maxCRB + 1;终止载波网格中每个RB的% PRG编号(基于1)NPRG = cell ((maxCRB + 1) / Pd_BWP);prgset = repmat ((1: NPRG)、Pd_BWP 1);prgset = prgset(母舰。NStartGrid + (1: carrier.NSizeGrid)。');(~, ~, R, P) = (hestGrid)大小;wtx = 0 ([pdsch。NumLayers P NPRG]);我= 1:NPRG%在当前PRG和PDSCH范围内的子载波指数%分配prg = find(prgset==i) - 1; / /查找prgsetthisPRG =相交(thisPRG pdsch.PRBSet(:) +载波。NStartGrid,“行”)prgSc=(1:12)“+12*thisPRG';prgSc=prgSc(:);如果(~ isempty (prgSc))PRG中的平均信道估计estAllocGrid = hestGrid(prgSc,:,:,:);HEST =置换(平均值(重塑(estAllocGrid,[],R,P)),[2 3 1]);%计算分解[~ ~ V] =圣言(命令);wtx(:,:我)= V (:, 1: pdsch.NumLayers)。”;终止终止WTX = WTX / SQRT(pdsch.NumLayers);% Normalize通过NumLayers终止函数estChannelGrid = precodeChannelEstimate(载体、estChannelGrid W)%对信道估计的最后维数应用预编码矩阵W(K, L R P) = (estChannelGrid)大小;estChannelGrid =重塑(estChannelGrid,[K*L R P]);estChannelGrid = hPRGPrecode ([K L R P], carrier.NStartGrid estChannelGrid,重塑(1:元素个数(estChannelGrid), [K * L R P]), W);estChannelGrid =重塑(estChannelGrid K, L, R, []);终止函数[mappedPRB, mappedSymbols] = mapNumerology(副载波、符号、nrbs nrbt, fs,英尺)%将SSBurst命理学映射到PDSCH命理学。输出是:% - mappedPRB:载波资源网格的基于0的PRB索引(按列排列)% - mappedSymbols:载波资源网格槽中基于0的OFDM符号索引(按行排列)%输入参数为:% -子载波:SSB资源网格基于1的行下标(列中排列)% -符号:SSB资源网格的基于1的列下标(以N × 4矩阵排列,每行4个符号表示每个发送突发,N个发送突发)使用ssbInfo设置SSB资源网格的大小。NRB,普通CP,跨越5个子帧% - nrbs:源(SSB) NRB% - nrbt:目标(载波)NRB% - fs:源(SSB)% - ft:目标(载体)SCSmappedPRB = unique(fix((subcarriers-(nrbs*6) - 1)*fs/(ft*12) + nrbt/2),“稳定”);符号=符号。';符号=符号(:)。”——1;如果(英国《金融时报》< fs)%如果ft/fs < 1,减少mappedSymbols =独特(FIX(符号*英尺/ FS),“稳定”);其他的% Else, repeat by ft/fsmappedSymbols =重塑((0:(ft / fs-1))的+符号(:)*英尺/ fs, 1, []);终止终止函数plotLayerEVM(NSLOTS,nslot,PDSCH,SIZ,pdschIndices,pdschSymbols,pdschEq)情节%EVM信息持续的slotEVM;持续的rbEVM持续的evmPerSlot;如果(nslot==0)slotEVM=comm.EVM;rbEVM=comm.EVM;evmPerSlot=NaN(NSlots,pdsch.NumLayers);图;终止evmPerSlot(nslot+1,:)=slotEVM(pdschSymbols,pdschEq);子地块(2,1,1);绘图(0:(NSlots-1),evmPerSlot,“o-”);包含(“槽数”);ylabel('维生素(%)');传奇(“层”+ (1: pdsch.NumLayers),“位置”“EastOutside”);标题(“每层每槽的EVM”)子地块(2,1,2);[k,~,p]=ind2sub(siz,pdschIndices);rbsubs=floor((k-1)/12);NRB=siz(1)/12;evmPerRB=NaN(NRB,pdsch.NumLayers);nu=1:pdsch.NumLayersrb =独特(rbsubs)。' this = (rbsubs==rb & p==nu);evmPerRB (rb + 1,ν)= rbEVM (pdschSymbols(这),pdschEq(这));终止终止情节(0:(NRB-1)、evmPerRB“x -”);包含(“资源块”);ylabel('维生素(%)');传奇(“层”+ (1: pdsch.NumLayers),“位置”“EastOutside”);标题(['EVM每层每个资源块,slot #'num2str (nslot)]);drawnow;终止

另见

对象

功能

相关的话题