主要内容

NR PUSCH吞吐量

该示例显示了如何测量5G新无线电(NR)链路的物理上行链路共享信道(PUSCH)吞吐量,如3GPP NR标准所定义的。该示例实现PUSCH和上行链路传输通道(UL-SCH)。发送器模型包括PUSCH解调参考符号(DM-RS)。该示例支持聚类延迟线(C金宝appDL)和触发延迟线(TDL)传播信道。您可以执行完美或实际的同步和信道估计。要减少总模拟时间,可以使用并行计算工具箱™并行执行SNR环路中的SNR点。

介绍

此示例测量5G链路的PUSCH吞吐量,如3GPP NR标准所定义的[1],[2],[3.],[4.]。

建模以下5G NR功能:

  • UL-SCH运输信道编码

  • PUSCH和PUSCH DM-RS生成

  • 可变子载波间距和帧数(2 ^ N * 15kHz)

  • 正常和延长的循环前缀

  • TDL和CDL传播信道模型

模拟的其他功能是:

  • 基于码本和非码本的PUSCH传输方案

  • 可选的PUSCH变换预编码

  • 插槽明智和非插槽明智的PUSCH和DM-RS映射

  • 完美或实际同步​​和信道估计

  • HARQ操作16流程

下图显示了实现的处理链。为清楚起见,已省略DM-RS生成。

注意,此示例不包括根据信道条件的MIMO预编码的闭环调整。该示例中使用的PUSCH MIMO预编码如下:

  • 对于基于码本的传输,可以使用TPMI参数选择PUSCH调制内部使用的MIMO预编码矩阵。

  • 特定于实现的MIMO预编码矩阵(对于基于非码本的基于码本的传输,或用于基于码本传输的发送天线端口和天线之间的MIMO预编码)是标识矩阵。

要减少总模拟时间,可以使用并行计算工具箱并行执行SNR循环的SNR点。

模拟长度和SNR点

在10ms帧的数量方面设置模拟的长度。应该使用大量nFrames来产生有意义的吞吐量结果。设置SNR点以模拟。SNR定义为每重复并适用于每个接收天线。

simparameters = [];%清除SimParameters变量simparameters.nframes = 2;%10ms帧的数量simparameters.snrin = [-5 0 5];%SNR范围(DB)

变量DisplaySimulationInformation.控制仿真信息的显示,例如用于每个子帧的HARQ进程ID。在CRC误差的情况下,还会显示对RV序列的索引的值。

displaysimulationInformation = true;

信道估计器配置

逻辑变量PerfectChannElestimator.控制信道估计和同步行为。设置到真的,使用完美的通道估计和同步。否则,基于所接收的PUSCH DM-RS的值,使用实际信道估计和同步。

PerfectChannElestimator = True;

载体和佩斯配置

设置模拟的关键参数。这些包括:

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

  • 子载波间距:15,30,60,120,240(kHz)

  • 循环前缀长度:正常或延长

  • 细胞ID.

  • 发射和接收天线的数量

还指定了包含UL-SCH和PUSCH参数的子结构。这包括:

  • 目标代码率

  • 已分配资源块(PRBSet)

  • 调制方案:'PI / 2-BPSK','QPSK','16QAM','64QAM','256QAM'

  • 层数

  • 转换预编码(启用/禁用)

  • PUSCH传输方案和MIMO预编码矩阵指示(TPMI)

  • 天线端口数量

  • PUSCH映射类型

  • DM-RS配置参数

其他模拟广播参数是:

  • 传播频道模型:'TDL'或'CDL'

请注意,如果启用了变换预编码,则图层的数量应设置为1。

%带宽,数字(SCS和CP类型)和其他一般参数simparameters.nrb = 52;资源块数量的%带宽(10MHz BW为15kHz SCS的52RB)simparameters.subcarrierspacing = 15;%15,30,60,120,240(kHz)Simparameters.CyclicPrefix =.'普通的';%'普通'或'延长'simparameters.ncellid = 0;%细胞身份simparameters.ntxants = 1;百分比的发射天线数量simparameters.nrxants = 2;%接收天线数量%UL-SCH / PUSCH参数simparameters.pusch.targetCoderate = 193/1024;用于计算传输块大小的百分比代码率simparameters.pusch.prbset =(0:SimParameters.nrb-1);%PUSCH PRB分配simparameters.pusch.symbolset = 0:13;每个插槽中的%PUSCH符号分配simparameters.pusch.nohprb = 0;每个PRB额外的额外重新开销simparameters.pusch.enableharq = true;%启用/禁用HARQ,如果禁用,则具有RV = 0的单个传输,即无重传simparameters.pusch.modulation =.'QPSK';%'PI / 2-BPSK','QPSK','16QAM','64QAM','256QAM'simparameters.pusch.nlayers = 1;%数量的PUSCH层simparameters.pusch.rnti = 1;%无线电网络临时标识符simparameters.pusch.transformprecoding = false;%启用/禁用变换预编码simparameters.pusch.txscheme ='nonodebook';%传输方案('非否定书','codebook')simparameters.pusch.nantennaports = 1;基于码本的预编码%的天线端口数simparameters.pusch.tpmi = 0;基于码本的预编码预测矩阵指示%PUSCH DM-RS配置simparameters.pusch.puschmakingtype ='一种';%pusch映射类型('a'(插槽),'b'(非插槽))simparameters.pusch.dmrstypeaposition = 2;%映射类型a。第一个DM-RS符号位置(2,3)simparameters.pusch.dmrslength = 1;%加载的DM-RS符号数(1(单个符号),2(双符号))simparameters.pusch.dmrsadditionalposition = 1;%额外的DM-RS符号位置(最大范围0 ... 3)simparameters.pusch.dmrsconfigurytype = 1;%DM-RS配置类型(1,2)simparameters.pusch.numcdmgroupswithoutdata = 2;%CDM组无数据simparameters.pusch.nidnscid = 0;%加扰标识(0 ... 65535)simparameters.pusch.nscid = 0;%加扰初始化(0,1)simParameters.PUSCH.NRSID = 0;低PAPR序列的%加扰ID(0 ... 1007)simparameters.pusch.grouphopping =.'禁用';%跳跃类型('启用','禁用')%定义传播信道类型simparameters.channeltype =.'tdl';%'cdl'或'tdl'

创建运营商配置对象载体和PUSCH配置结构PUSCH.

carrier = nrcarrierconfig;carrier.subcarrierspacing = simparameters.subcarrierspacing;carrier.CyclicPrefix = SimParameters.CyclicPrefix;carrier.nsizegrid = simparameters.nrb;carrier.ncellid = simparameters.ncellid;pusch = simparameters.pusch;

对于关键仿真参数,为方便起见定义局部变量。

snrin = simparameters.snrin;ntxants = simparameters.ntxants;nrxants = simparameters.nrxants;ChannelType = SimParameters.Channeltype;

传播信道模型配置

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

如果Strcmpi(ChannelType,'cdl')Channel = NRCDLChannel;channel.delayprofile ='cdl-a';[txsize,rxsize] = harraygeometry(ntxants,nrxants,'上行链路');channel.TransmitAntennaArray.Size = txsize;channel.ReceiveAntennaArray.Size = rxsize;别的channel = nrtdlchannel;channel.delayprofile ='tdl-a';channel.numtransmitantennas = ntxants;channel.numreceiveantennas = nrxants;结尾channel.delayspread = 30e-9;% 片刻之间Channel.maximumdopplershift = 10;%在Hz.

使用从返回的值设置通道模型的采样率nrofdminfo.

waveforminfo = nrofdminfo(载体);Channel.Samplerve = WaveformInfo.Sampleate;

通过通道多径组件获取最大延迟样本数。这是从具有最大延迟和信​​道滤波器的实现延迟的信道路径计算的。这是稍后需要刷新信道滤波器以获得接收信号。

Chinfo = Info(频道);maxchdelay = ceil(max(chinfo.pathdelays * channel.samplerate));maxchdelay = maxchdelay + chinfo.channelfilterdelay;

处理循环

要确定每个SNR点处的吞吐量,每个传输实例使用以下步骤分析PUSCH数据:

  • 更新当前HARQ进程。检查给定HARQ过程的先前传输的CRC。确定是否需要重传。如果不是这种情况会生成新数据。

  • 生成资源网格。通道编码由nrulsch。它在提供的输入传输块上运行。在内部,在需要重传时,它会保持传输块的副本。编码位被调制NRPUSCH.。特定于实现的MIMO预编码应用于所得信号。请注意,如果txscheme ='codebook',基于码本的MIMO预编码将已在内部应用NRPUSCH.并且特定于实现的MIMO预编码是MIMO预编码的另一个阶段。

  • 生成波形。然后,生成的网格调制。

  • 模型嘈杂的频道。波形通过CDL或TDL衰落通道传递。添加了AWGN。每层的SNR定义每层和每个接收天线。

  • 执行同步和OFDM解调。为了完美同步,重建通道脉冲响应并用于同步接收的波形。为了实际同步,接收的波形与PUSCH DM-RS相关。同步信号然后OFDM解调。

  • 执行信道估计。如果采用完美信道估计,则重构信道脉冲响应并进行OFDM解调,得到信道估计。在实际信道估计中,采用了PUSCH DM-RS算法。

  • 提取PUSCH并执行均衡。与PUSCH分配对应的资源元素从接收的OFDM资源网格和频道估计使用nrextractresources.。然后,接收的PUSCH资源元素使用均衡nrequalizemse.

  • 解码PUSCH。均衡的PUSCH符号以及噪声估计,由解调和解扰nrpuschdecode.获得接收的码字的估计。

  • 解码上行共享通道(UL-SCH),并为HARQ进程存储块CRC错误。解码的软比特的向量通过nrulschdecoder.哪个解码码字并返回用于确定系统吞吐量的块CRC错误。

%数组存储所有SNR点的最大吞吐量maxthrougpul = zeros(长度(snrin),1);%数组存储所有SNR点的模拟吞吐量simthrougupput = zeros(长度(snrin),1);%设置冗余版本(RV)序列,HARQ进程数和%使用HARQ进程的序列如果pusch.enableharq.来自普通的PUSCH解调要求的%在RAN WG4会议上#88BIS%(R4-1814062)rvseq = [02 3 1];别的%HARQ禁用 - 具有RV = 0的单个传输,无重传rvseq = 0;结尾%创建UL-SCH编码器系统对象Checoctulsch = nrulsch;encoctulsch.multipleharqprocesses = true;comoctulsch.targetCoderate = pusch.targetCodate;%创建UL-SCH解码器系统对象%使用分层信仰传播为LDPC解码,有一半的数量与信仰传播解码的默认值相比,%迭代Decodeulsch = Nrulschdecoder;decodeulsch.multipleharqprocesses = true;Decodeulsch.targetCoderate = PUSCH.TargetCodate;decodeulsch.ldpcdecodingalgorithm =“分层信念传播”;decodeulsch.maximumldpciterationcount = 6;%临时变量'criper_init','pusch_init'和% 'decodeULSCH_init'用于创建临时变量'carrier',在SNR循环中%'PUSCH'和'DecodeUltch'以创建独立平行模拟的%实例carrier_init =载体;pusch_init = pusch;Decodeulsch_init =克隆(Decodeulsch);%获取“nFrames”的值以避免并行的开销% 模拟nframes = simparameters.nframes;为了snridx = 1:numel(snrin)%评论并行计算对于并行计算的%parcor = 1:numel(snrin)%取消注释%要减少总模拟时间,可以执行此循环通过使用并行计算工具箱并行的%并行。注释出'for'%陈述和取消注释“Parcon”声明。如果是并行计算未安装%工具箱,“默认为”for“语句'默认为”默认值“。%,因为循环迭代的循环迭代是并行执行的%不确定的顺序,为每个SNR显示的模拟信息%点可以交织在一起。要关闭仿真信息显示,%将上面的“DisplaySimulationInmation”变量设置为FALSE%重置随机数发生器和通道,使每个SNR点%将遇到相同的噪音和渠道实现RNG(“默认”);重置(频道);初始化所需的SNR点的%初始化变量使用并行计算工具箱时变量的百分比carrier = carrier_init;pusch = pusch_init;pathfilters = [];%指定我们通过HARQ进程循环的顺序nharqprocesses = 16;harqsequence = 1:nharqprocesses;%初始化所有HARQ进程的状态并重置UL-SCH%解码器HarqProcesses = Hnewharqprocesses(NharqProcesses,Rvseq,1);harqproccntr = 0;%HARQ过程计数器Decodeulsch =克隆(Decodeulsch_init);snrdb = snrin(snridx);fprintf('\ nsimulation基于I基的传输方案(%dx%d)和scs =%dkhz,%gb snr%gdb snr为%d 10ms帧(s)\ n',pusch.txscheme,ntxants,nrxants,carrier.subcarrierspacing,channeltype,snrdb,nframes);仿真期间中的斜槽总数nslots = nframes * carrier.slotsperframe;创建ue结构UE = struct();UE.nrb = carrier.nsizegrid;UE.CYCLICPREFIX = CARRATR.CYCLICPREFIX;UE.SubCarriersPacing = Carress.SubCarrierspacing;UE.ncellid = carrier.ncellid;%定时偏移,在每个插槽中更新,以完美同步和当相关性强直时%是实际同步时的%offset = 0;%波形长度的%循环为了nslot = 0:nslots-1%更新运营商和PUSCH插槽号以解释新的%PUSCH传输carrier.nslot = nslot;pusch.nslot = nslot;%计算此插槽的传输块大小[PUSCHINDICES,DMRSINDICES,DMRSSYMBOLS,PUSCHINDISSINFO] = HPUSCHRESOUSE(UE,PUSCH);MRB = NUM​​EL(PUSCH.PRBSET);TBS = NRTB(PUSCH.MODULATION,PUSCH.NLAYERS,MRB,PUSCHINDICESINFO.NREPERPRB,PUSCH.TargetCodate,PUSCH.NOHPRB);从HARQ索引获取当前PUSCH的HARQ进程索引% 桌子harqprocidx = harqsequence(mod(harqproccntr,长度(harqsequence))+ 1);%更新当前HARQ进程信息(此更新RV%取决于CRC通过或在以前的传输中失败这个HARQ过程的%)HarqProcesses(HarqProcidx)= hupdateharqprocess(HarqProcesses(HarqProciddx),1);%HARQ:检查先前传输的CRC,即是一个需要重传?需要重传?ndi = false;如果HarqProcesses(HarqProcidx).blkerr%错误如果(HarqProcesses(HarqProcidx).rvidx == 1)rvseq的%结束ResetsoftBuffer(DecodeSultch,HarqProcidx-1);ndi = true;结尾别的%没有错误ndi = true;结尾如果ndi trblk = randi([0 1],TBS,1);setTransportBlock(Compoctulsch,Trblk,HarqProcidx-1);结尾%UL-SCH编码CodedTrblock = encoctulsch(PUSCH.MODULACE,PUSCH.NLAYERS,PUSCHINDICESINFO.g,HARQPROCESSES(HARQPROCIDX).RV,HARQPROCIDX-1);%PUSCH调制,包括基于码本的MIMO预编码IF%txscheme ='codebook'puschsymbols = nrpusch(Codedtrblock,pusch.modulation,pusch.nlayers,carrier.ncellid,pusch.rnti,pusch.transformprecoding,mrb,pusch.txscheme,pusch.nantennaports,pusch.tpmi);%创建与PUSCH传输时段相关的资源网格puschgrid = nrresourcegrid(载体,ntxants);%实现特定于PUSCH MIMO预编码和映射。这个%MIMO预编码步骤是基于任何码本的在上面的PUSCH调制过程中完成MIMO预编码如果(strcmpi(pusch.txscheme,'码本')))%码本的MIMO预编码,F预编码之间的PUSCH%发射天线端口和传输天线F =眼睛(pusch.NAntennaPorts nTxAnts);别的基于非码本的MIMO预编码,PUSCH之间的F比%图层和传输天线f =眼睛(pusch.nlayers,ntxants);结尾[〜,puschantindices] = nrextractresources(puschindices,puschgrid);puschgrid(puschantindices)= puschsymbols * f;%实现特定于特定于PUSCH DM-RS MIMO预编码和映射。高于上面的HPUSChresources中的DM-RS创建包含码本如果适用,%基于MIMO预编码为了p = 1:大小(dmrssymbols,2)[〜,dmrsantindices] = nrextractresources(dmrsindices(:,p),puschgrid);puschgrid(dmrsantindices)= puschgrid(dmrsantindices)+ dmrssymbols(:,p)* f(p,:);结尾%OFDM调制txwaveform = nrofdmodulate(载体,puschgrid);%通过频道模型传递数据。在末尾附加零%发送波形到刷新信道内容。这些零点取百分比频道引入的任何延迟。这是一个混合多径延迟和实施延迟的百分比。这个值可能取决于采样率,延迟配置文件和延迟的百分比变化% 传播txwaveform = [txwaveform;零(maxchdelay,尺寸(txwaveform,2))];%#OK [rxwaveform,pathgains,sampletimes] =通道(txwaveform);%将AWGN添加到接收的时域波形通过OFDM调制中使用的IFFT尺寸的%归一化噪声功率,随着OFDM调制器应用此归一化的%%传输波形。也通过接收数量标准化%天线,因为频道模型的默认行为是%将该归一化应用于接收的波形SNR = 10 ^(SNRDB / 20);n0 = 1 /(SQRT(2.0 * nrxants * double(waveforminfo.nfft))* snr);噪声= N0 *复合物(Randn(randn(rxwaveform)),randn(size(rxwaveform)));rxwaveform = rxwaveform +噪声;如果(PerfectChanneLestimator)%完美同步。使用提供的信息%通道找到最强的多径组件pathfilters = getpathfilters(频道);[offset,mag] = nrperfecttimingestimate(pathgains,pathfilters);别的%实际同步。将接收的波形相关联百分比用PUSCH DM-RS提供定时偏移估计值“T”和%相关幅度'mag'。功能%hskipweaktimingoffset用于更新接收器时序% 抵消。如果“mag”中的相关峰值弱,则当前%时序估计值“t”是忽略和之前的估计使用%'offset'[t,mag] = nrtimingestimate(运营商,rxwaveform,dmrsindices,dmrssymbols);%#OK Offset = HskipWeakTimingOffsoffs(偏移,T,MAG);结尾rxwaveform = rxwaveform(1 + offset:结束,:);%在接收数据上执行OFDM解调以重新创建%资源网格,包括实用的事件中的填充%同步导致不完整的插槽被解调rxgrid = nrofdmdemodulate(载体,rxwaveform);[k,l,r] =尺寸(rxgrid);如果(l 结尾如果(PerfectChanneLestimator)%完美的通道估计,使用路径增益的值%由频道提供estChannelGrid = nrPerfectChannelEstimate(载体,pathGains pathFilters,抵消,sampleTimes);%获得完美的噪音估计(来自噪声实现)kotidgrid = nrofdmdemodulate(载波,噪声(1 +偏移:结束,:));destemest = var(诊断(:));%将MIMO Depecoding应用于EstchannelGrid以估算每个传输层%k =大小(Estchannelgrid,1);EstchannelGrid = Rehape(EstchannelGrid,K * Carrier.Symbolsperslot * nrxants,ntxants);Estchannelgrid = Estchannelgrid * F.';如果(strcmpi(pusch.txscheme,'码本'))w = nrpuschcodebook(pusch.nlayers,pusch.nantennaports,pusch.tpmi,pusch.transformprecoding);estchannelgrid = estchannelgrid * w.';结尾EstchannelGrid = Rehape(EstchannelGrid,K,Carrier.Symbolsperslot,nrxants,[]);别的所接收网格与百分比实际信道估计%每个传输层,使用PUSCH DM-RS为每层[〜,dmrslayerindices,dmrslayersymbols] = hpuschresources(Ue,setfield(pusch,'txscheme''nonodebook'));%#OK [EstchannElgrid,Desement] = nrchannelestimate(运营商,rxgrid,dmrslayerindices,dmrslayersymbols,'cdmlength',puschindicsefo.cdmlengths);结尾%从收到的网格获取PUSCH资源元素[puschrx,puschhest] = nrextractresources(puschindices,rxgrid,estchannelgrid);%均衡[puscheq,csi] = nrequalizemse(puschrx,puschhest,噪音);%解码PUSCH物理通道[ulschlls,rxsymbols] = nrpuschdecode(puscheq,pusch.modulation,carrier.ncellid,pusch.rnti,recomest,pusch.transformproding,MRB);%应用均衡器生成的信道状态信息(CSI),%如果启用,则包括转换预编码的效果如果(PUSCH.TransformPrecoding)MSC = MRB * 12;csi = nrtransformdeprecode(CSI,MRB)/ SQRT(MSC);CSI = REPMAT(CSI((1:MSC:END)。'),1,MSC)。';CSI = RESHAPE(CSI,大小(RXSYMBOLS));结尾csi = nrlayerdemap(csi);qm =长度(ulschlls)/ length(rxsymbols);CSI = REPAPE(REPMAT(CSI {1}',QM,1),[],1);ulschllrs = ulschlls。* csi;%解码UL-SCH传输频道decodeulsch.transportblocklength = tbs;[decbits,harqprocesses(harqprocidx).blkerr] = Decodeulsch(Ulschllrs,pusch.modulation,pusch.nlayers,harqprocesses(harqprocidx).rv,harqprocidx-1);%存储值以计算吞吐量SimThrougupput(SNRIDX)= SimThrouguppul(Snridx)+(〜HarqProcesses(HarqProcidx).blkerr * tbs);maxthrougpul(snridx)= maxthrougupput(snridx)+ tbs;%显示传输块错误信息如果(显示仿真信息)FPRINTF('\ n(%3.2f %%)harq proc%d:',100 *(nslot + 1)/ nslots,harqprocidx);estrings = {'通过''失败的'};RVI = HarqProcesses(HarqProcidx).rvidx;如果RVI == 1 ts = sprintf('初始传输(RV =%d)',rvseq(RVI));别的ts = sprintf('重传#%d(RV =%d)',RVI-1,RVSEQ(RVI));结尾fprintf('%s%s。',ts,estrings {1 + harqprocesses(harqprocidx).blkerr});结尾%更新HARQ过程计数器harqproccntr = harqproccntr + 1;结尾%在命令窗口中动态显示结果如果(显示仿真信息)FPRINTF(' \ n ');结尾fprintf([['\ nthrougpulp(mbps)'num2str(nframes)'框架'],'=%.4f \ n'],1E-6 * SimThrouguppul(Snridx)/(Nframes * 10e-3));fprintf(['吞吐量(%%)为'num2str(nframes)'帧(s)=%.4f \ n'],simkrouguppul(snridx)* 100 / maxthrougpul(snridx));结尾
使用TDL通道在-5dB SNR中模拟基于非函数的传输方案(1x2)和SCS = 15kHz,用于2个10ms帧(5.00%)HARQ PROC 1:初始传输(RV = 0)失败。(10.00%)HARQ PROC 2:初始传输(RV = 0)失败。(15.00%)HARQ PROC 3:初始传输(RV = 0)失败。(20.00%)HARQ PROC 4:初始传输(RV = 0)失败。(25.00%)HARQ PROC 5:初始传输(RV = 0)失败。(30.00%)HARQ PROC 6:初始传输(RV = 0)失败。(35.00%)HARQ PROC 7:初始传输(RV = 0)失败。(40.00%)HARQ PROC 8:初始传输(RV = 0)失败。(45.00%)HARQ PROC 9:初始传输(RV = 0)失败。(50.00%)HARQ PROC 10:初始传输(RV = 0)失败。 (55.00%) HARQ Proc 11: Initial transmission (RV=0) failed. (60.00%) HARQ Proc 12: Initial transmission (RV=0) failed. (65.00%) HARQ Proc 13: Initial transmission (RV=0) failed. (70.00%) HARQ Proc 14: Initial transmission (RV=0) failed. (75.00%) HARQ Proc 15: Initial transmission (RV=0) failed. (80.00%) HARQ Proc 16: Initial transmission (RV=0) failed. (85.00%) HARQ Proc 1: Retransmission #1 (RV=2) passed. (90.00%) HARQ Proc 2: Retransmission #1 (RV=2) passed. (95.00%) HARQ Proc 3: Retransmission #1 (RV=2) passed. (100.00%) HARQ Proc 4: Retransmission #1 (RV=2) passed. Throughput(Mbps) for 2 frame(s) = 0.5712 Throughput(%) for 2 frame(s) = 20.0000 Simulating nonCodebook-based transmission scheme (1x2) and SCS=15kHz with TDL channel at 0dB SNR for 2 10ms frame(s) (5.00%) HARQ Proc 1: Initial transmission (RV=0) passed. (10.00%) HARQ Proc 2: Initial transmission (RV=0) passed. (15.00%) HARQ Proc 3: Initial transmission (RV=0) passed. (20.00%) HARQ Proc 4: Initial transmission (RV=0) passed. (25.00%) HARQ Proc 5: Initial transmission (RV=0) passed. (30.00%) HARQ Proc 6: Initial transmission (RV=0) passed. (35.00%) HARQ Proc 7: Initial transmission (RV=0) passed. (40.00%) HARQ Proc 8: Initial transmission (RV=0) passed. (45.00%) HARQ Proc 9: Initial transmission (RV=0) passed. (50.00%) HARQ Proc 10: Initial transmission (RV=0) passed. (55.00%) HARQ Proc 11: Initial transmission (RV=0) passed. (60.00%) HARQ Proc 12: Initial transmission (RV=0) passed. (65.00%) HARQ Proc 13: Initial transmission (RV=0) passed. (70.00%) HARQ Proc 14: Initial transmission (RV=0) passed. (75.00%) HARQ Proc 15: Initial transmission (RV=0) passed. (80.00%) HARQ Proc 16: Initial transmission (RV=0) passed. (85.00%) HARQ Proc 1: Initial transmission (RV=0) passed. (90.00%) HARQ Proc 2: Initial transmission (RV=0) passed. (95.00%) HARQ Proc 3: Initial transmission (RV=0) passed. (100.00%) HARQ Proc 4: Initial transmission (RV=0) passed. Throughput(Mbps) for 2 frame(s) = 2.8560 Throughput(%) for 2 frame(s) = 100.0000 Simulating nonCodebook-based transmission scheme (1x2) and SCS=15kHz with TDL channel at 5dB SNR for 2 10ms frame(s) (5.00%) HARQ Proc 1: Initial transmission (RV=0) passed. (10.00%) HARQ Proc 2: Initial transmission (RV=0) passed. (15.00%) HARQ Proc 3: Initial transmission (RV=0) passed. (20.00%) HARQ Proc 4: Initial transmission (RV=0) passed. (25.00%) HARQ Proc 5: Initial transmission (RV=0) passed. (30.00%) HARQ Proc 6: Initial transmission (RV=0) passed. (35.00%) HARQ Proc 7: Initial transmission (RV=0) passed. (40.00%) HARQ Proc 8: Initial transmission (RV=0) passed. (45.00%) HARQ Proc 9: Initial transmission (RV=0) passed. (50.00%) HARQ Proc 10: Initial transmission (RV=0) passed. (55.00%) HARQ Proc 11: Initial transmission (RV=0) passed. (60.00%) HARQ Proc 12: Initial transmission (RV=0) passed. (65.00%) HARQ Proc 13: Initial transmission (RV=0) passed. (70.00%) HARQ Proc 14: Initial transmission (RV=0) passed. (75.00%) HARQ Proc 15: Initial transmission (RV=0) passed. (80.00%) HARQ Proc 16: Initial transmission (RV=0) passed. (85.00%) HARQ Proc 1: Initial transmission (RV=0) passed. (90.00%) HARQ Proc 2: Initial transmission (RV=0) passed. (95.00%) HARQ Proc 3: Initial transmission (RV=0) passed. (100.00%) HARQ Proc 4: Initial transmission (RV=0) passed. Throughput(Mbps) for 2 frame(s) = 2.8560 Throughput(%) for 2 frame(s) = 100.0000

结果

显示测量的吞吐量。考虑到数据传输的可用资源,这将计算为链路的最大可能吞吐量的百分比。

数字;绘图(Snrin,Simkrouguput * 100. / maxthrougpul,'o-。')Xlabel('snr(db)');ylabel('吞吐量(%)');网格;如果(pusch_init.transformprecoding)OFDMTYPE ='dft-s-ofdm';别的OFDMTYPE ='cp-ofdm';结尾标题(Sprintf('%s / nrb =%d / scs =%dkhz /%s%d / 1024 /%dx%d'......OFDMTYPE,CRATER_INIT.NSIZEGRID,CRATER_INIT.SUBCARRIERPACING,......pusch_init.modulation,......圆形(pusch_init.targetcodate * 1024),ntxants,nrxants));simresults.simparameters = simparameters;simresults.simthrougupul = simthrougpul;simresults.maxthrougupul = maxthrougput;

下图显示了模拟10000子帧的吞吐量结果(nframes = 1000Snrin = -16:2:6)。

附录

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

选定的书目

  1. 3GPP TS 38.211。“NR;物理渠道和调制(版本15)。”第三代合作伙伴计划;技术规范集团无线电接入网络。

  2. 3GPP TS 38.212。“NR;多路复用和信道编码(版本15)。”第三代合作伙伴计划;技术规范集团无线电接入网络。

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

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

  5. 3GPP TR 38.901。“从0.5到100 GHz的频率的频道模型研究(第15版)。”第三代合作伙伴计划;技术规范集团无线电接入网络。

也可以看看

对象

职能