主要内容

NR PUSCH吞吐量

本示例展示了如何测量3GPP NR标准定义的5G新无线电(NR)链路的物理上行共享信道(PUSCH)吞吐量。本例实现了PUSCH和上行链路传输通道(UL-SCH)。发射机模型包含PUSCH解调参考符号(DM-RS)。该示例同时支持集群延迟线金宝app(CDL)和抽动延迟线(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预编码如下:

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

  • 实现特定的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;

Carrier和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;资源块数量的%带宽(在15kHz SCS下为10MHz BW提供52RBs)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 . psh . 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 =“正交相移编码”'pi/2-BPSK', 'QPSK', '16QAM', '64QAM', '256QAM'simParameters.PUSCH.NLayers = 1;% PUSCH层数simParameters.PUSCH.RNTI = 1;无线网络临时标识符simParameters.PUSCH.TransformPrecoding = false;启用/禁用转换预编码simParameters.PUSCH.TxScheme =“nonCodebook”%传输方案('非码本','码本')simparameters . pusch . nantennapports = 1;%基于码本预编码的天线端口数simParameters.PUSCH.TPMI = 0;用于基于码本的预编码的预编码矩阵指示器PUSCH DM-RS配置simParameters.PUSCH.PUSCHMappingType =“一个”% PUSCH映射类型('A'(插槽),'B'(非插槽))simparameters . pusch . dmrstypeposition = 2;仅支持映射类型A。第一个DM-RS符号位置(2,3)simParameters.PUSCH.DMRSLength = 1;前装DM-RS符号的百分比(1(单符号),2(双符号))simParameters.PUSCH.DMRSAdditionalPosition = 1;%额外的DM-RS符号位置(最大范围0…3)simParameters.PUSCH.DMRSConfigurationType = 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;母舰。SubcarrierSpacing = simParameters.SubcarrierSpacing;母舰。CyclicPrefix = simParameters.CyclicPrefix;母舰。NSizeGrid = simParameters.NRB;母舰。NCellID = simParameters.NCellID;pusch = simParameters.PUSCH;

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

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

传播信道模型配置

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

如果strcmpi (channelTypeCDL的)通道= nrCDLChannel;通道。DelayProfile =“CDL-A”;[txsize,rxsize] = hArrayGeometry(nTxAnts,nRxAnts,“上行”);channel.TransmitAntennaArray.Size = txsize;channel.ReceiveAntennaArray.Size = rxsize;其他的channel = nrTDLChannel;通道。DelayProfile =“TDL-A”;通道。numtransmitantenna = nTxAnts;通道。numreceiveantenna = nRxAnts;结束通道。DelaySpread = 30e-9;%(秒)通道。MaximumDopplerShift = 10;% (Hz)

从返回的值设置通道模型的采样率nrOFDMInfo

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

通过通道多路径组件获取延迟采样的最大数量。这是根据具有最大延迟的信道路径和信道滤波器的实现延迟计算得出的。这是稍后刷新通道滤波器以获得接收信号所必需的。

chInfo =信息(通道);maxChDelay = ceil(max(chinfo . pathdelayed *channel.SampleRate));maxChDelay = maxChDelay + chInfo.ChannelFilterDelay;

处理循环

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

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

  • 生成资源网格。信道编码由nrULSCH.它对所提供的输入传输块进行操作。在内部,它保留了传输块的副本,以防需要重新传输。编码位由nrPUSCH.特定于实现的MIMO预编码应用于产生的信号。注意,如果TxScheme =“码”,基于码本的MIMO预编码将在内部得到应用nrPUSCH具体实现的MIMO预编码是MIMO预编码的一个附加阶段。

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

  • 建立噪声信道模型。波形通过CDL或TDL衰落信道传递。完成AWGN的添加。每一层的信噪比是根据每个RE和每个接收天线定义的。

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

  • 执行信道估计。在采用完全信道估计的情况下,通过信道脉冲响应重构和OFDM解调得到信道估计。在实际的信道估计中,采用了PUSCH DM-RS。

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

  • 解码PUSCH。均衡的PUSCH符号,连同噪声估计,解调和解扰nrPUSCHDecode获取所接收码字的估计值。

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

数组来存储所有信噪比点的最大吞吐量maxThroughput = 0(长度(snrIn),1);数组来存储所有信噪比点的模拟吞吐量simThroughput = 0(长度(snrIn),1);设置RV (Redundancy Version)序列,HARQ进程数和使用HARQ进程的顺序如果pusch。EnableHARQ%来自PUSCH解调要求在RAN WG4满足#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','pusch'和'decodeULSCH'在信噪比循环内创建独立%实例的情况下并行模拟Carrier_init = carrier;Pusch_init = pusch;decodeULSCH_init =克隆(decodeULSCH);获取'NFrames'的值以避免并行时的开销%的模拟NFrames = simParameters.NFrames;snrIdx = 1:数字(snrIn)%注释用于并行计算% parfor snrIdx = 1:数值(snrIn) % uncomment用于并行计算要减少总的模拟时间,您可以执行此循环%并行,使用并行计算工具箱。注释掉for并取消'parfor'语句的注释。如果并行计算%工具箱未安装,“parfor”默认为普通的“for”语句。%,因为并行循环迭代在%的不确定顺序,模拟信息显示为每个信噪比% point可以相互交织。关闭模拟信息显示%将上面的'displaySimulationInformation'变量设置为false%重置随机数发生器和信道,使每个信噪比点%将经历相同的噪声和信道实现rng (“默认”);重置(渠道);初始化此信噪比点的变量,初始化所需%的变量时,使用并行计算工具箱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- s传输方案(%dx%d)和SCS=%dkHz, %s信道以%gdB信噪比传输%d 10ms帧(s)\n', nTxAnts pusch.TxScheme nRxAnts、carrier.SubcarrierSpacing channelType, SNRdB, NFrames);%模拟周期内槽位总数NSlots = NFrames * carrier.SlotsPerFrame;创建“ue”结构Ue = struct();问题。NRB = carrier.NSizeGrid;问题。CyclicPrefix = carrier.CyclicPrefix;问题。SubcarrierSpacing = carrier.SubcarrierSpacing;问题。NCellID = carrier.NCellID;%定时偏移,更新在每个插槽的完美同步和%时,对于实际的同步相关性很强偏移量= 0;%循环整个波形长度nslot = 0:NSlots-1更新运营商和PUSCH槽号,以占一个新的%普希传播率母舰。NSlot = NSlot;pusch。NSlot = NSlot;计算此插槽的传输块大小[puschIndices,dmrsIndices,dmrsSymbols,puschIndicesInfo] = hPUSCHResources(ue,pusch);MRB =数字(pusch.PRBSet);TBS = nrTBS(pusch.Modulation,pusch.NLayers,MRB, puschindicesinfo . nrepprb,pusch.TargetCodeRate,pusch.NohPRB);从HARQ索引中获取当前PUSCH的HARQ进程索引%的表harqProcIdx = harqSequence(mod(harqProcCntr,length(harqSequence))+1);更新当前HARQ进程信息(此操作将更新RV%,这取决于上一次传输中的CRC通过或失败%此HARQ过程)harqProcesses(harqProcIdx) = hUpdateHARQProcess(harqProcesses(harqProcIdx),1);HARQ:检查以前传输的CRC,即是a%需要重传?NDI = false;如果harqProcesses .blkerr (harqProcIdx)%的错误如果(harqProcesses (harqProcIdx) .RVIdx = = 1)% rvSeq结束resetSoftBuffer (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预编码% TxScheme = 'codebook'puschSymbols = nrPUSCH(codedTrBlock, pushch . modulation, pushch . nlayers,carrier.NCellID, pushch . rnti, pushch . transformprecoding,MRB, pushch . txscheme, pushch . nantennapportts, pushch . tpmi);创建与PUSCH传输周期相关的资源网格puschGrid = nrResourceGrid(carrier,nTxAnts);实现专用的PUSCH MIMO预编码和映射。这% MIMO预编码步骤是除任何码本之外的% MIMO预编码在上述PUSCH调制期间完成如果(strcmpi (pusch。TxScheme,“码”))%码本的MIMO预编码,F之间的PUSCH预编码%发射天线端口和发射天线F = eye(pusch. nantennapports,nTxAnts);其他的%非码本的MIMO预编码,F之间的PUSCH预编码%层和发射天线F = eye(push . 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调制tx波形= nrofdm调制(载波,puschGrid);通过通道模型传递数据。属性的末尾附加0%传输波形以刷新通道内容。这些0%,考虑通道中引入的任何延迟。这是一种混合多路径时延和实现时延的百分比。这个值可能%的变化取决于采样率,延迟配置文件和延迟%的传播tx波形= [tx波形;0 (maxChDelay、尺寸(txWaveform 2)));% #好< AGROW >[rx波形,pathgain,sampleTimes] =通道(tx波形);将AWGN添加到接收的时域波形中通过OFDM调制中使用的IFFT大小归一化噪声功率,%作为OFDM调制器应用此归一化到%传输波形。还通过接收的数量进行规范化%天线,因为信道模型的默认行为是to%将此归一化应用于接收的波形信噪比= 10^(SNRdB/20);N0 = 1/(√(2.0*nRxAnts*double(waveforinfo . nfft))*信噪比);噪声= N0*complex(randn(size(rx波形)),randn(size(rx波形)));rx波形= rx波形+噪声;如果(perfectChannelEstimator)%完美同步。方法提供的信息%通道来查找最强的多路径组件pathFilters = getPathFilters(channel);[offset,mag] = nrPerfectTimingEstimate(pathgain,pathFilters);其他的%实际同步。关联接收到的波形%与PUSCH DM-RS给出定时偏移估计't'和%相关幅度'mag'。这个函数% hSkipWeakTimingOffset用于更新接收端定时%抵消。如果'mag'中的相关峰值较弱,则电流%时间估计't'被忽略,之前的估计使用% 'offset'[t,mag] = nrTimingEstimate(carrier, rx波形,dmrsIndices,dmrsSymbols);% #好< UNRCH >offset = hSkipWeakTimingOffset(offset,t,mag);结束rx波形= rx波形(1+offset:end,:);对接收到的数据进行OFDM解调以重建数据%资源网格,包括填充事件,即实用%同步将导致不完整的插槽被解调rxGrid = nrOFDMDemodulate(载波,rx波形);[K,L,R] = size(rxGrid);如果(L < carrier.SymbolsPerSlot) rxGrid = cat(2,rxGrid, 0 (K,carrier.SymbolsPerSlot-L,R));结束如果(perfectChannelEstimator)%完美信道估计,使用路径增益的值%由频道提供estChannelGrid = nrPerfectChannelEstimate(载波,pathgain,pathFilters,offset,sampleTimes);%得到完美的噪声估计(从噪声实现)noiseGrid = nrOFDMDemodulate(载波,噪声(1+偏移量:结束,:));noiseEst = var(noiseGrid(:));对estChannelGrid应用MIMO预编码给出估计每传输层百分比K = size(estChannelGrid,1);estChannelGrid =重塑(estChannelGrid,K*carrier.SymbolsPerSlot*nRxAnts,nTxAnts);estChannelGrid = estChannelGrid * F.';如果(strcmpi (pusch。TxScheme,“码”)) W = nrPUSCHCodebook(pushch . nlayers, pushch . nantennapportts, pushch . tpmi, pushch . transformprecoding);estChannelGrid = estChannelGrid * W.';结束estChannelGrid =重塑(estChannelGrid,K,carrier.SymbolsPerSlot,nRxAnts,[]);其他的实际信道估计之间的接收网格%每个传输层,使用PUSCH DM-RS为每层[~,dmrsLayerIndices,dmrsLayerSymbols] = hPUSCHResources(ue,setfield(pusch,“TxScheme”“nonCodebook”));% #好< UNRCH >[estChannelGrid,noiseEst] = nrChannelEstimate(carrier,rxGrid,dmrsLayerIndices,dmrsLayerSymbols,“CDMLengths”, puschIndicesInfo.CDMLengths);结束从接收的网格中获取PUSCH资源元素[puschRx,puschHest] = nrExtractResources(puschIndices,rxGrid,estChannelGrid);%均衡[puschEq,csi] = nrEqualizeMMSE(puschRx, puschheest,noiseEst);解码PUSCH物理通道[ulschLLRs,rxSymbols] = nrPUSCHDecode(puschEq, pushch . modulation,carrier.NCellID, pushch . rnti,noiseEst, pushch . transformprecoding,MRB);应用均衡器产生的信道状态信息(CSI),%,包括转换预编码(如果启用)的效果如果(push . transformprecoding) MSC = MRB * 12;csi = nrTransformDeprecode(csi,MRB) / sqrt(MSC);csi = repmat(csi((1:MSC:end).'),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)。bkerr * 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 ');结束流([[\ n吞吐量(Mbps)num2str (NFrames)“帧”),“= % .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帧(s) (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 simThroughput * 100. / maxThroughput,“啊——”。)包含(“信噪比(dB)”);ylabel (的吞吐量(%));网格如果(pusch_init.TransformPrecoding) ofdmType =“DFT-s-OFDM”其他的ofdmType =“CP-OFDM”结束标题(sprintf ('%s / NRB=%d / SCS=%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).

附录

本例使用了以下helper函数:

选定的参考书目

  1. 3gpp ts 38.211。“NR;物理通道和调制(第15版)。”第三代伙伴计划;技术规范集团无线接入网。

  2. 3gpp ts 38.212。“NR;多路复用和信道编码(发行版15)。”第三代伙伴计划;技术规范集团无线接入网。

  3. 3gpp ts 38.213。“NR;用于控制的物理层程序(Release 15)。”第三代伙伴计划;技术规范集团无线接入网。

  4. 3gpp ts 38.214。“NR;数据的物理层程序(Release 15)。”第三代伙伴计划;技术规范集团无线接入网。

  5. 3gpp tr 38.901。0.5 - 100ghz频率信道模型研究(第15版)第三代伙伴计划;技术规范集团无线接入网。

另请参阅

对象

功能