主要内容

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预编码)是一个标识矩阵。

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

仿真长度和信噪比点

将模拟的长度设置为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;

载体和佩斯配置

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

  • 资源块中的带宽(每个资源块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'

创建运营商配置对象航空公司和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 (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;%在赫兹

使用返回的值设置通道模型的抽样率nrOFDMInfo

waveformInfo = nrOFDMInfo(载体);通道。SampleRate = waveformInfo.SampleRate;

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

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;%临时变量'carrier_init', 'pusch_init'和% 'decodeULSCH_init'用于创建临时变量'carrier',在SNR循环中%'PUSCH'和'DecodeUltch'以创建独立%实例在并行模拟的情况下carrier_init =载体;pusch_init = pusch;decodeULSCH_init =克隆(decodeULSCH);%获取“nFrames”的值以避免并行的开销%的模拟NFrames = simParameters.NFrames;snrIdx = 1:元素个数(snrIn)%注释掉用于并行计算% parfor snrIdx = 1:numel(snrIn) % uncomment用于并行计算为了减少总的模拟时间,你可以执行这个循环% parallel使用并行计算工具箱。注释掉for%语句并取消“parfor”语句的注释。如果并行计算% Toolbox未安装,'parfor'默认为普通的'for'语句。因为parfor-loop迭代是并行执行的%不确定顺序,模拟信息显示为每个信噪比百分点可以交织在一起。要关闭模拟信息显示,%将上面的“DisplaySimulationInmation”变量设置为FALSE重置随机数生成器和信道,使每个信噪比点%将经历相同的噪声和通道实现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);流('\n模拟基于%s的传输方案(%dx%d)和SCS=%dkHz, %s通道在%gdB SNR for %d 10ms frame(s)\n', nTxAnts pusch.TxScheme nRxAnts、carrier.SubcarrierSpacing channelType, SNRdB, NFrames);%模拟周期内槽位总数NFrames * carrier.SlotsPerFrame;创建ue结构问题=结构();问题。NRB = carrier.NSizeGrid;问题。CyclicPrefix = carrier.CyclicPrefix;问题。SubcarrierSpacing = carrier.SubcarrierSpacing;问题。NCellID = carrier.NCellID;%定时偏移,更新在每个插槽完美的同步和%,用于实际的同步抵消= 0;%循环整个波形长度nslot = 0: NSlots-1%更新运营商和PUSCH槽位号以解释一个新的% PUSCH传输母舰。NSlot = NSlot;pusch。NSlot = NSlot;%计算此插槽的传输块大小[puschIndices, dmrsIndices dmrsSymbols puschIndicesInfo] = hPUSCHResources(问题,pusch);MRB =元素个数(pusch.PRBSet);TBS = nrTBS (pusch.Modulation pusch.NLayers, MRB、puschIndicesInfo.NREPerPRB pusch.TargetCodeRate, 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'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预编码步骤是基于任何码本的% 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调制txWaveform = nrOFDMModulate(载体、puschGrid);%通过通道模型传递数据。的末尾加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 dmrsIndices, dmrsSymbols);% #好< UNRCH >抵消= hSkipWeakTimingOffset(抵消t杂志);结束rxWaveform = rxWaveform(1 +抵消:最终,);%对接收到的数据进行OFDM解调,重新创建%资源网格,包括实用的事件中的填充%同步导致一个不完整的槽被解调rxGrid = nrOFDMDemodulate(载体、rxWaveform);[K, L R] =大小(rxGrid);如果(L < carrier.SymbolsPerSlot) rxGrid = cat(2,rxGrid,zeros(K,carrier.SymbolsPerSlot-L,R));结束如果(PerfectChanneLestimator)%完美信道估计,使用路径增益的值%由通道提供estChannelGrid = nrPerfectChannelEstimate(载体,pathGains pathFilters,抵消,sampleTimes);%获得完美的噪音估计(来自噪声实现)noiseGrid = nrOFDMDemodulate(载体、噪音(1 +抵消:最终,));噪音= var (noiseGrid (:));%对estChannelGrid应用MIMO预编码给出估计每传输层%k =大小(Estchannelgrid,1);EstchannelGrid = Rehape(EstchannelGrid,K * Carrier.Symbolsperslot * nrxants,ntxants);Estchannelgrid = Estchannelgrid * F.';如果(strcmpi(pusch.txscheme,“码”)) W = nrPUSCHCodebook(pusch.NLayers,pusch. ntennapports,pusch.TPMI,pusch.TransformPrecoding);estChannelGrid = estChannelGrid * W.';结束EstchannelGrid = Rehape(EstchannelGrid,K,Carrier.Symbolsperslot,nrxants,[]);其他的%实际信道估计之间的接收网格和%每一传输层,使用PUSCH DM-RS为每一层[〜,dmrslayerindices,dmrslayersymbols] = hpuschresources(Ue,setfield(pusch,“TxScheme”“nonCodebook”));% #好< UNRCH >[estChannelGrid,噪音]= nrChannelEstimate(载体、rxGrid dmrsLayerIndices, dmrsLayerSymbols,'cdmlength', puschIndicesInfo.CDMLengths);结束%从收到的网格获取PUSCH资源元素[puschRx, puschHest] = nrExtractResources (puschIndices、rxGrid estChannelGrid);%均衡[puschEq, csi] = nrEqualizeMMSE (puschRx puschHest,噪音);%解码PUSCH物理信道[ulschLLRs, rxSymbols] = nrPUSCHDecode (puschEq、pusch.Modulation carrier.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 * (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));结束流('%s%s。'ts, estrings {1 + harqProcesses (harqProcIdx) .blkerr});结束%更新HARQ进程计数器harqProcCntr = harqProcCntr + 1;结束%在命令窗口中动态显示结果如果(displaySimulationInformation)流(' \ n ');结束流([[' \ nThroughput (Mbps)的num2str (NFrames)“帧(s)”],“= % .4f \ n”), 1 e-6 * simThroughput (snrIdx) / (NFrames * 10 e - 3));流([的吞吐量(% %)num2str (NFrames)'帧(s) = %.4f\n'), simThroughput (snrIdx) * 100 / maxThroughput (snrIdx));结束
模拟非基于codebook的传输方案(1x2)和SCS=15kHz, TDL通道在-5dB信噪比为2 10ms frame(s) (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 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 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、carrier_init.NSizeGrid carrier_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. 3 gpp 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版)。”第三代合作伙伴项目;技术规范无线电接入网。

另请参阅

对象

功能