NR PUSCH吞吐量

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

介绍

本示例测量3GPP NR标准定义的5G链路PUSCH吞吐量[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预编码如下:

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

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

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

模拟长度和SNR点

将模拟的长度设置为10ms帧的数量。应该使用大量的nframe来产生有意义的吞吐量结果。设置模拟的信噪比点。信噪比是按RE定义的,适用于每个接收天线。

simParameters = [];%清除SimParameters变量simParameters。NFrames = 2;% 10ms帧数simParameters。SNRIn = [-5 0 5];%信噪比范围(dB)

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

displaysimulationInformation = true;

信道估计配置

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

PerfectChannElestimator = True;

UE和PUSCH配置

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

  • 资源块中的带宽(每个资源块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额外的RE开销simParameters.PUSCH.EnableHARQ = true;%启用/禁用HARQ,如果禁用,则具有RV = 0的单个传输,即无重传simParameters.PUSCH.Modulation ='QPSK'% 'pi/2-BPSK', 'QPSK', '16QAM', '64QAM', '256QAM'simParameters.PUSCH.NLayers = 1;% push层数simParameters.PUSCH.RNTI = 1;%无线网络临时标识符simParameters.PUSCH.TransformPrecoding = false;%启用/禁用变换预编码simParameters.PUSCH.TxScheme =“nonCodebook”%传输方案('nonCodebook','codebook')simParameters.PUSCH.NAntennaPorts = 1;%用于码本预编码的天线端口数simParameters.PUSCH.TPMI = 0;基于码本的预编码预测矩阵指示% push DM-RS配置simParameters.PUSCH.PUSCHMappingType =“一个”% PUSCH映射类型('A'(slot-wise),'B'(non - slot-wise))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'

创建UE配置结构问题和PUSCH配置结构普什

问题= simParameters;pusch = simParameters.PUSCH;

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

snrIn = simParameters.SNRIn;nTxAnts = simParameters.NTxAnts;nRxAnts = simParameters.NRxAnts;channelType = simParameters.ChannelType;

传播信道模型配置

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

如果strcmpi (channelTypeCDL的) channel = nrCDLChannel;通道。DelayProfile =“CDL-A”;[txsize, rxsize] = hArrayGeometry (nTxAnts nRxAnts,'上行链路');channel.TransmitAntennaArray.Size = txsize;channel.ReceiveAntennaArray.Size = rxsize;其他的频道= nrTDLChannel;通道。DelayProfile =“TDL-A”;channel.numtransmitantennas = ntxants;channel.numreceiveantennas = nrxants;结束channel.delayspread = 30e-9;%在几秒钟内通道。MaximumDopplerShift = 10;%在赫兹

信道模型的采样率使用从hOFDMInfo返回的值进行设置。

waveformInfo = hOFDMInfo(问题);通道。SampleRate = waveformInfo.SamplingRate;

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

chInfo =信息(渠道);maxChDelay =装天花板(max (chInfo.PathDelays * channel.SampleRate));maxChDelay = maxChDelay + chInfo.ChannelFilterDelay;

处理循环

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

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

  • 生成网格资源。通道编码由nrULSCH.它在提供的输入传输块上运行。在内部,在需要重传时,它会保持传输块的副本。编码位被调制nrPUSCH.对得到的信号应用特定于实现的MIMO预编码。注意,如果TxScheme =“码”,基于码本的MIMO预编码将已经在其中应用nrPUSCH特定于实现的MIMO预编码是MIMO预编码的另一个阶段。

  • 产生波形。然后对生成的网格进行OFDM调制。

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

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

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

  • 提取PUSCH并执行均衡。从接收的OFDM资源网格中提取与PUSCH分配相对应的资源元素,并使用信道估计nrExtractResources.接收到的PUSCH资源元素然后使用MMSE均衡nrEqualizeMMSE

  • PUSCH解码。均衡的PUSCH符号,连同一个噪声估计,被解调和解编nrPUSCHDecode获得接收的码字的估计。

  • 解码上行共享通道(UL-SCH),并为HARQ进程存储块CRC错误。解码后的软位的向量被传递到nrULSCHDecoder它解码码字并返回用于确定系统吞吐量的块CRC错误。

%数组存储所有SNR点的最大吞吐量maxthrougpul = zeros(长度(snrin),1);%阵列存储所有信噪比点的模拟吞吐量simThroughput = 0(长度(snrIn), 1);%设置冗余版本(RV)序列,HARQ进程数和%表示使用HARQ进程的顺序如果pusch。EnableHARQ%在RAN WG4中PUSCH解调要求满足#88bis% (r4 - 1814062)rvSeq = [0 2 3 1];其他的% HARQ禁用-单次传输,RV=0,没有重传rvseq = 0;结束%创建UL-SCH编码器系统对象encodeULSCH = nrULSCH;encodeULSCH。MultipleHARQProcesses = true;encodeULSCH。TargetCodeRate = pusch.TargetCodeRate;创建UL-SCH解码器系统对象% LDPC译码采用分层信念传播,次数减半与信念传播解码的默认值相比,%迭代decodeULSCH = nrULSCHDecoder;decodeULSCH。MultipleHARQProcesses = true;decodeULSCH。TargetCodeRate = pusch.TargetCodeRate;decodeULSCH。LDPCDecodingAlgorithm =“分层信念传播”;decodeULSCH。MaximumLDPCIterationCount = 6;%临时变量'ue_init','pusch_init'和'decodeulsch_init'%用于创建临时变量ue、push和% 'decodeULSCH'在信噪比循环中创建独立实例并行模拟%ue_init =问题;pusch_init = pusch;decodeULSCH_init =克隆(decodeULSCH);snridx = 1:numel(snrin)%注释掉用于并行计算% parfor snrIdx = 1:numel(snrIn) % uncomment用于并行计算为了减少总的模拟时间,你可以执行这个循环% parallel使用并行计算工具箱。注释掉for%语句并取消“parfor”语句的注释。如果并行计算% Toolbox未安装,'parfor'默认为普通的'for'语句。因为parfor-loop迭代是并行执行的%不确定顺序,模拟信息显示为每个信噪比百分点可以交织在一起。要关闭模拟信息显示,%将上面的“DisplaySimulationInmation”变量设置为FALSE重置随机数生成器和信道,使每个信噪比点%将经历相同的噪声和通道实现rng (“默认”);重置(渠道);%初始化这个SNR点的变量,需要初始化使用并行计算工具箱时变量的百分比问题= ue_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);流('\n模拟基于%s的传输方案(%dx%d)和SCS=%dkHz, %s通道在%gdB SNR for %d 10ms frame(s)\n', nTxAnts pusch.TxScheme nRxAnts、ue.SubcarrierSpacing channelType, SNRdB, ue.NFrames);%仿真周期内OFDM符号总数waveformInfo = hOFDMInfo(问题);NSymbols =问题。NFrames * 10 * waveformminfo . symbolspersubframe;与每次PUSCH传输开始相关的% OFDM符号号UE.NSYMBOL = 0;PUSCH传输实例数量的%运行计数器%模拟将使用此计数器作为每个槽位号% PUSCHpusch。NSlot = 0;%定时偏移,更新在每个插槽完美的同步和%,用于实际的同步抵消= 0;虽然问题。NSymbol < NSymbols%计算此插槽的传输块大小[PUSCHINDICES,DMRSINDICES,DMRSSYMBOLS,PUSCHINDISSINFO] = HPUSCHRESOUSE(UE,PUSCH);TBS = HPUSCHTBS(PUSCH,PUSCHINDICESFO.NREPERPRB  -  PUSCH.NOHPRB);从HARQ索引获取当前PUSCH的HARQ进程索引% 桌子harqProcIdx = harqSequence (mod (harqProcCntr长度(harqSequence)) + 1);%更新当前HARQ进程信息(这将更新RV%取决于CRC通过或失败在以前的传输%此HARQ进程)HarqProcesses(HarqProcidx)= hupdateharqprocess(HarqProcesses(HarqProciddx),1);% HARQ:检查以前传输的CRC,即是a%需要重传?NDI = false;如果harqProcesses .blkerr (harqProcIdx)%错误如果(harqProcesses (harqProcIdx) .RVIdx = = 1)rvSeq的% endresetSoftBuffer (decodeULSCH harqProcIdx-1);NDI = true;结束其他的%没有错误NDI = true;结束如果NDI trBlk = randi([0 1],TBS,1); / /输出setTransportBlock (encodeULSCH trBlk harqProcIdx-1);结束% UL-SCH编码codedTrBlock = encodeULSCH (pusch.Modulation pusch.NLayers、puschIndicesInfo.G harqProcesses (harqProcIdx) .RV harqProcIdx-1);% PUSCH调制,包括基于码本的MIMO预编码if% TxScheme = 'codebook'MRB =元素个数(pusch.PRBSet);puschSymbols = nrPUSCH (codedTrBlock pusch.Modulation、pusch.NLayers ue.NCellID, pusch.RNTI, pusch.TransformPrecoding, MRB, pusch.TxScheme, pusch.NAntennaPorts, pusch.TPMI);创建与PUSCH传输周期相关的资源网格puschGrid = 0 (waveformInfo.NSubcarriers waveformInfo.SymbolsPerSlot nTxAnts);%实现特定于PUSCH MIMO预编码和映射。这个%MIMO预编码步骤是基于任何码本的% MIMO预编码做PUSCH调制以上如果(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:size(dmrsSymbols,2) [~,dmrsAntIndices] = nrExtractResources(dmrsIndices(:,p),puschGrid);puschGrid(dmrsAntIndices) = puschGrid(dmrsAntIndices) + dmrsSymbols(:,p) * F(p,:);结束% OFDM调制puschGrid txWaveform = hOFDMModulate(问题);%通过通道模型传递数据。的末尾加0%发送波形以刷新通道内容。这些零%考虑信道中引入的任何延迟。这是一种混合%多径时延与实现时延的关系。该值可能会%的变化取决于采样率,延迟轮廓和延迟%的传播txWaveform = [txWaveform;0 (maxChDelay、尺寸(txWaveform 2)));% #好< AGROW >[rxWaveform, pathGains sampleTimes] =通道(txWaveform);%将AWGN添加到接收的时域波形中根据OFDM调制中使用的IFFT尺寸对噪声功率进行归一化,%时,OFDM调制器将这种归一化应用到%传播波形。也要按照接收的数量进行规范%天线,因为信道模型的默认行为是%将此归一化应用于接收的波形信噪比= 10 ^ (SNRdB / 20);N0 = 1 /(√(2.0 * nRxAnts *双(waveformInfo.Nfft)) *信噪比);噪音= N0 *复杂(randn(大小(rxWaveform)), randn(大小(rxWaveform)));rx波形= rx波形+噪声;如果(PerfectChanneLestimator)%完美同步。使用提供的信息%通道以找到最强的多路径组件pathFilters = getPathFilters(渠道);(抵消,mag) = nrPerfectTimingEstimate (pathGains pathFilters);其他的%实际同步。关联接收波形%与PUSCH DM-RS给出时间偏移估计't'和%相关幅度'mag'。这个函数% hskipweaktiminggoffset用于更新接收机定时% 抵消。如果“mag”中的相关峰值弱,则当前%计时估计't'被忽略,之前的估计使用%'offset'(t, mag) = nrTimingEstimate (rxWaveform、ue.NRB ue.SubcarrierSpacing, pusch.NSlot, dmrsIndices, dmrsSymbols,“CyclicPrefix”, ue.CyclicPrefix);% #好< UNRCH >抵消= hSkipWeakTimingOffset(抵消t杂志);结束rxWaveform = rxWaveform(1 +抵消:最终,);%对接收到的数据执行OFDM解调以重新创建%资源网格,包括实用的事件中的填充%同步导致一个不完整的槽被解调rxgrid = hofdmdemodulate(ue,rxwaveform);[k,l,r] =尺寸(rxgrid);如果(l 结束如果(PerfectChanneLestimator)%完美信道估计,使用路径增益的值%由通道提供estChannelGrid = nrPerfectChannelEstimate (pathGains pathFilters、ue.NRB ue.SubcarrierSpacing, pusch.NSlot,抵消,sampleTimes, ue.CyclicPrefix);%获得完美的噪音估计(来自噪声实现)noiseGrid = hOFDMDemodulate(问题、噪声(1 +抵消:最终,));噪音= var (noiseGrid (:));%对estChannelGrid应用MIMO预编码给出估计每传输层%K =大小(estChannelGrid, 1);estChannelGrid =重塑(estChannelGrid K * waveformInfo.SymbolsPerSlot * nRxAnts nTxAnts);estChannelGrid = estChannelGrid * F.';如果(strcmpi(pusch.txscheme,“码”)) W = nrPUSCHCodebook(pusch.NLayers,pusch. ntennapports,pusch.TPMI,pusch.TransformPrecoding);estChannelGrid = estChannelGrid * W.';结束estChannelGrid =重塑(estChannelGrid K waveformInfo.SymbolsPerSlot nRxAnts, []);其他的%实际信道估计之间的接收网格和%每一传输层,使用PUSCH DM-RS为每一层[〜,dmrslayerindices,dmrslayersymbols] = hpuschresources(Ue,setfield(pusch,“TxScheme”“nonCodebook”));% #好< UNRCH >[estChannelGrid,噪音]= nrChannelEstimate (rxGrid、dmrsLayerIndices dmrsLayerSymbols,“CyclicPrefix”,问题。CyclicPrefix,'cdmlength', puschIndicesInfo.CDMLengths);结束%从收到的网格获取PUSCH资源元素[puschRx, puschHest] = nrExtractResources (puschIndices、rxGrid estChannelGrid);%均衡[puschEq,csi]=nrEqualizeMMSE(puschRx,puschHest,noiseEst);%解码PUSCH物理通道[ulschLLRs, rxSymbols] = nrPUSCHDecode (puschEq、pusch.Modulation ue.NCellID, pusch.RNTI,噪音,pusch.TransformPrecoding, MRB);%应用均衡器产生的信道状态信息(CSI),%如果启用,包括转换预编码的效果如果(pusch.TransformPrecoding) MSC = MRB * 12;csi = nrTransformDeprecode(csi,MRB) / sqrt(MSC);csi = repmat (csi ((1: MSC:结束)。”),1,MSC)。“;csi =重塑(csi,大小(rxSymbols));结束csi = nrLayerDemap (csi);Qm = length(ulschLLRs) / length(rxSymbols);csi =重塑(repmat (csi{1}”。Qm, 1), [], 1);ulschLLRs = ulschLLRs .* csi;%译码UL-SCH传输信道decodeULSCH。TransportBlockLength = TBS;[decbits harqProcesses (harqProcIdx)。blkerr] = decodeULSCH (ulschLLRs、pusch.Modulation pusch.NLayers, harqProcesses (harqProcIdx) .RV harqProcIdx-1);%存储计算吞吐量的值simThroughput(snrIdx) = simThroughput(snrIdx) + (~harqProcesses(harqProcIdx))。blkerr * TBS);maxThroughput(snrIdx) = maxThroughput(snrIdx) + TBS;显示传输块错误信息如果(displaySimulationInformation)流('\ n(%3.2f %%)harq proc%d:',100 *(UE.NSYMBOL +大小(PUSCHGRID,2))/ nsymbols,HarqProcidx);estrings = {“通过”“失败”};rvi = harqProcesses (harqProcIdx) .RVIdx;如果Rvi == 1 ts = sprintf('初始传输(RV=%d)',rvseq(RVI));其他的ts = sprintf (“重传# % d (RV = % d) '、rvi-1 rvSeq (rvi));结束流('%s%s。'ts, estrings {1 + harqProcesses (harqProcIdx) .blkerr});结束%更新下一个PUSCH传输的开始符号号UE.NSYMBOL = UE.NSYMBOL +大小(PUSCHGRID,2);% PUSCH传输总数的更新计数pusch。NSlot = pusch。NSlot + 1;%更新HARQ进程计数器harqProcCntr = harqProcCntr + 1;结束%在命令窗口中动态显示结果如果(displaySimulationInformation)流(' \ n ');结束流([[“\n的总吞吐量(Mbps)”num2str(UE.nframes)“帧(s)”],“= % .4f \ n”],1E-6 * SimThrougupul(SNRIDX)/(UE.NFRAMES * 10E-3));fprintf([的吞吐量(% %)num2str(UE.nframes)'帧(s) = %.4f\n'), simThroughput (snrIdx) * 100 / maxThroughput (snrIdx));结束
模拟基于非码本的传输方案(1x2)和SCS=15kHz,TDL信道的信噪比为-5dB,用于2 10ms帧(5.00%)的HARQ过程1:初始传输(RV=0)失败。(10.00%)HARQ程序2:初始传输(RV=0)失败。(15.00%)HARQ程序3:初始传输(RV=0)失败。(20.00%)HARQ程序4:初始传输(RV=0)失败。(25.00%)HARQ程序5:初始传输(RV=0)失败。(30.00%)HARQ程序6:初始传输(RV=0)失败。(35.00%)HARQ程序7:初始传输(RV=0)失败。(40.00%)HARQ程序8:初始传输(RV=0)失败。(45.00%)HARQ程序9:初始传输(RV=0)失败。(50.00%)HARQ程序10:初始传输(RV=0)失败。(55.00%)HARQ程序11:初始传输(RV=0)失败。(60.00%)HARQ程序12:初始传输(RV=0)失败。(65.00%)HARQ程序13:初始传输(RV=0)失败。(70.00%)HARQ程序14:初始传输(RV=0)失败。(75.00%)HARQ程序15:初始传输(RV=0)失败。(80.00%)HARQ程序16:初始传输(RV=0)失败。(85.00%)HARQ程序1:重传1(RV=2)通过。(90.00%)HARQ程序2:重传1(RV=2)通过。(95.00%)HARQ程序3:重传1(RV=2)通过。(100.00%)HARQ程序4:重传1(RV=2)通过。2帧的吞吐量(Mbps)=0.5712 2帧的吞吐量(%)=20.0000模拟基于非码本的传输方案(1x2)和SCS=15kHz,TDL信道在0 dB SNR下2 10ms帧(5.00%)的HARQ过程1:通过初始传输(RV=0)。(10.00%)HARQ程序2:通过初始传输(RV=0)。(15.00%)HARQ程序3:通过初始传输(RV=0)。(20.00%)HARQ程序4:通过初始传输(RV=0)。(25.00%)HARQ程序5:通过初始传输(RV=0)。(30.00%)HARQ程序6:通过初始传输(RV=0)。(35.00%)HARQ程序7:通过初始传输(RV=0)。(40.00%)HARQ程序8:通过初始传输(RV=0)。(45.00%)HARQ程序9:通过初始传输(RV=0)。(50.00%)HARQ程序10:通过初始传输(RV=0)。(55.00%)HARQ程序11:通过初始传输(RV=0)。(60.00%)HARQ程序12:通过初始传输(RV=0)。(65.00%)HARQ程序13:通过初始传输(RV=0)。(70.00%)HARQ程序14:通过初始传输(RV=0)。(75.00%)HARQ程序15:通过初始传输(RV=0)。(80.00%)HARQ程序16:通过初始传输(RV=0)。(85.00%)HARQ程序1:通过初始传输(RV=0)。(90.00%)HARQ程序2:通过初始传输(RV=0)。(95.00%)HARQ程序3:通过初始传输(RV=0)。(100.00%)HARQ程序4:通过初始传输(RV=0)。2帧的吞吐量(Mbps)=2帧的2.8560吞吐量(%)=100.0000模拟基于非码本的传输方案(1x2)和SCS=15kHz,TDL信道在5dB SNR下2 10ms帧(5.00%)的HARQ过程1:通过初始传输(RV=0)。(10.00%)HARQ程序2:通过初始传输(RV=0)。(15.00%)HARQ程序3:通过初始传输(RV=0)。(20.00%)HARQ程序4:通过初始传输(RV=0)。(25.00%)HARQ程序5:通过初始传输(RV=0)。(30.00%)HARQ程序6:通过初始传输(RV=0)。(35.00%)HARQ程序7:通过初始传输(RV=0)。(40.00%)HARQ程序8:通过初始传输(RV=0)。(45.00%)HARQ程序9:通过初始传输(RV=0)。(50.00%)HARQ程序10:通过初始传输(RV=0)。(55.00%)HARQ程序11:通过初始传输(RV=0)。(60.00%)HARQ程序12:通过初始传输(RV=0)。(65.00%)HARQ程序13:通过初始传输(RV=0)。(70.00%)HARQ程序14:通过初始传输(RV=0)。(75.00%)HARQ程序15:通过初始传输(RV=0)。(80.00%)HARQ程序16:通过初始传输(RV=0)。(85.00%)HARQ程序1:通过初始传输(RV=0)。(90.00%)HARQ程序2:通过初始传输(RV=0)。(95.00%)HARQ程序3:通过初始传输(RV=0)。(100.00%)HARQ程序4:通过初始传输(RV=0)。2帧的吞吐量(Mbps)=2.8560 2帧的吞吐量(%)=100.0000

结果

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

图;情节(snrIn simThroughput * 100. / maxThroughput,'o-。')Xlabel(“信噪比(dB)”);ylabel(的吞吐量(%));网格如果(pusch_init.TransformPrecoding) ofdmType =“DFT-s-OFDM”其他的ofdmType =“CP-OFDM”结束标题(sprintf ('%s / NRB=%d / sc =%dkHz / %s %d/1024 / %dx%d'...ofdmType、ue_init.NRB ue_init.SubcarrierSpacing,...pusch_init。调制,...轮(pusch_init.TargetCodeRate * 1024)、nTxAnts nRxAnts));simResults。simParameters = simParameters;simResults。simThroughput = simThroughput;simResults。maxThroughput = maxThroughput;

下图显示了模拟10000个子帧(NFrames = 1000SNRIn = 16:2:6).

附录

此示例使用以下帮助器函数:

选定的参考书目

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

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

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

  4. 3 gpp TS 38.214。“NR;数据的物理层程序(发布15)。”第三代合作伙伴项目;技术规范无线电接入网。

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

另请参阅

对象

功能