Main Content

PUSCH Throughput Conformance Test

此示例演示了如何在TS36.104中定义的一致性测试条件下使用LTE Toolbox™测量物理上行链路共享通道(PUSCH)吞吐性能。

Introduction

TS 36.104 [1] defines the performance requirements for physical uplink shared channel (PUSCH) as a minimum throughput for a given SNR assuming hybrid automatic repeat request (HARQ) retransmissions. This example demonstrates how the conformance test can be constructed using the LTE Toolbox.

Transmission is simulated using the Extended Pedestrian A (EPA) propagation channel model using 8 HARQ processes. Channel noise is added to the received waveform which is then SC-FDMA demodulated, resulting in a received resource grid for each receive antenna. Channel estimation is performed to determine the channel between each transmit/receive antenna pair. Minimum Mean Square Error (MMSE) equalization is performed on the received resource grid using the estimated channel to recover the resource grid. PUSCH data is then extracted and decoded from this recovered resource grid. Using the result of the block CRC, the throughput performance of the transmit/receive chain is determined.

Simulation Configuration

The example is executed for a simulation length of 1 frame at an SNR of -4.1 dB, -2.0 dB and 0.1 dB as per TS 36.104, Table 8.2.1.1-1 [1]。大批Nframes应用于产生有意义的吞吐量结果。斯林can be an array of values or a scalar.

Nframes= 1;% Number of frames to simulate at each SNR斯林= [-4.1, -2.0, 0.1];% SNR points to simulate

UE Configuration

User Equipment (UE) settings are specified in a structure form.

ue.totsubframes = 1;% Total number of subframes to generate a waveform forue.ncellid = 10;% Cell identityue.RC ='A3-2';% FRC numberue.pusch.nlayers = 1;% Number of layersue.NTxAnts = 1;% Number of transmit antennas

Propagation Channel Model Configuration

Propagation channel model characteristics are set using a structure containing the fields specified below. These are set according to TS 36.104, Table 8.2.1.1-1 [1]。

chcfg.nrxant = 2;% Number of receive antennaschcfg.DelayProfile ='EPA';% Delay profilechcfg.dopplerfreq = 5.0;% Doppler frequencychcfg.mimocrolation ='低的';% MIMO correlationchcfg.Seed = 100;% Channel seedchcfg.nterms = 16;% Oscillators used in fading modelchcfg.ModelType ='GMEDS';% Rayleigh fading model typechcfg.initphase ='Random';% Random initial phaseschcfg.normalizepathgains ='上';%归一化延迟轮廓功率chcfg.normalizetxants ='上';% Normalize for transmit antennas

Channel Estimator Configuration

Channel estimation settings are defined using a structureCEC。An EPA delay profile causes the channel response to change slowly over frequency. Therefore, a large frequency averaging window of 13 Resource Elements (REs) is used. The Demodulation Reference Signal (DRS) is contained in only one symbol per slot, therefore a time averaging window of 1 RE is used. This will not include any pilots from an adjacent slot when averaging.

ifue.PUSCH.NLayers == 1 freqWindow = 13;elsefreqWindow = 12;平均%利用多层的正交DMRendCEC。FreqWindow = freqWindow;% Frequency averaging windows in REscec.pilotaverage ='UserDefined';% Type of pilot averagingCEC。TimeWindow = 1;% Time averaging windows in REsCEC。InterpType ='cubic';%插值类型CEC。Reference ='Antennas';频道估计的参考%

上行链路RMC配置

要生成上行链路参考模型通道(RMC)LTE工具箱功能ltermculandltermculToolare used.ltermculcreates a configuration structure for given UE settings; specific to a given Fixed Reference Channel (FRC). This configuration structure is constructed as per TS36.104 Annex A [1],由ltermculToolto generate an SC-FDMA modulated waveform. The sub-structurePUSCH定义与Pusch关联的参数;包含定义每个子帧传输数据容量的向量。解码上行链路共享通道(UL-SCH)时使用这些长度。

% Generate FRC configuration structure for A3-2frc = lteRMCUL(ue);框架内每个子框架的传输块尺寸%trBlkSizes = frc.PUSCH.TrBlkSizes; codedTrBlkSizes = frc.PUSCH.CodedTrBlkSizes;%冗余版本序列rv序列= frc.pusch.rvseq;

Set Propagation Channel Model Sampling Rate

The sampling rate for the channel model is set using the value returned fromlteSCFDMAInfo

info = lteSCFDMAInfo(frc); chcfg.SamplingRate = info.SamplingRate;

处理循环

吞吐量测试是在许多SNR点上进行的。为了确定SNR点处的吞吐量,使用以下步骤通过子帧分析PUSCH数据:

  • 更新当前的HARQ进程。After every 8 subframes, the given HARQ process either carries new transport data or a retransmission of previously sent transport data depending upon the Acknowledgment (ACK) or Negative Acknowledgment (NACK) based on CRC results. All this is handled by the HARQ scheduler,hharqscheduling.m

  • 创建传输波形。Using the input data generated by the HARQ scheduler and thefrc结构体,ltermculTool产生SC-FDMA调制波形和包含物理通道和信号的填充资源网格。

  • 嘈杂的通道建模。The waveform is passed through a fading channel and Additive White Gaussian Noise (AWGN) added.

  • Perform Synchronization and SC-FDMA Demodulation.The received symbols are synchronized to account for a combination of implementation delay and channel delay spread. The symbols are then SC-FDMA demodulated.

  • Perform Channel and Noise Power Spectral Density Estimation.The channel and noise power spectral density are estimated to aid in equalization and decoding.

  • 执行MMSE均衡。通道和噪声估计用于均衡接收到的Pusch符号。

  • 解码Pusch。The recovered PUSCH symbols for all transmit and receive antenna pairs, along with a noise estimate, are demodulated and descrambled byltePUSCHDecode获得对收到的代码字的估计。

  • UL-SCH Channel Decoding._ The vector of decoded soft bits is passed tolteULSCHDecode;这将解码代码字并返回块CRC错误,这用于确定系统的吞吐量。新软缓冲区的内容,harqproc(harqid)。,,,,is available at the output of this function to be used for the next subframe. The transport block size is obtained from a lookup table of sizes for each subframe.

%初始化模拟和分析中使用的变量totalblkcrc = zeros(numel(snrin),nframes*10);% Total block CRC vectorbitThroughput = zeros(numel(SNRIn), NFrames*10);% Total throughput vectorResultIndex = 1;% Initialize frame counter index为了SNRdB = SNRIn fprintf('\nSimulating at %g dB SNR for a total %d Frame(s)',,,,...SNRdB, NFrames);% Calculate required AWGN channel noiseSNR = 10^(SNRdB/20); N = 1/(SNR*sqrt(double(info.Nfft)))/sqrt(2.0); rng('default');百分比存储在SNR点的每个子帧的结果bittp =零(1,nframes*10);%中间位吞吐量矢量blkCRC = zeros(1, NFrames*10);%中间块CRC矢量%初始化所有HARQ流程的状态harqProcesses = hNewHARQProcess(frc);% Initialize HARQ process IDs to 1 as the first non-zero transport%块将始终使用第一个HARQ进程传输。这个%将通过Ltermultool的完整序列输出更新%% the first call to the functionharqProcessSequence = 1; offsetused = 0;为了subframeNo = 0:(NFrames*10-1)%更新子帧号码frc.NSubframe = subframeNo;% Get HARQ process ID for the subframe from HARQ process sequenceharqID = harqProcessSequence(mod(subframeNo, length(harqProcessSequence))+1);% If there is a transport block scheduled in the current subframe% (indicated by non-zero 'harqID'), perform transmission and%接待。否则继续下一个subframeifharqid == 0继续;end%更新当前HARQ进程harqprocesses(harqid)= hharqscheduling(...harqProcesses(harqID), subframeNo, rvSequence);%使用HARQ进程状态更新Pusch传输配置frc.PUSCH = harqProcesses(harqID).txConfig; data = harqProcesses(harqID).data;%创建传输波形并获取HARQ调度ID序列% from 'frcOut' structure output which also contains the waveform%配置和OFDM调制参数[txWaveform,~,frcOut] = lteRMCULTool(frc, data);% 25样品添加填充。这是的响了e of delays渠道建模的预期百分比(组合% implementation delay and channel delay spread)txWaveform = [txWaveform; zeros(25, frc.NTxAnts)];%#ok% Get the HARQ ID sequence from 'frcOut' for HARQ processingharqProcessSequence = frcOut.PUSCH.HARQProcessSequence;% The initialization time for channel modeling is set each subframe%模拟连续变化的通道chcfg.InitTime = subframeNo/1000;%通过通道模型传递数据rxWaveform = lteFadingChannel(chcfg, txWaveform);%在接收器上添加噪音v = n*复杂(randn(size(rxwaveform))),randn(size(rxwaveform)));rxwaveform = rxwaveform+v;%计算同步偏移offset = lteulframeOffset(frc,frc.pusch,rxwaveform);if(offset < 25) offsetused = offset;end%SC-FDMA解调rxSubframe = lteSCFDMADemodulate(frc,...rxWaveform(1+offsetused:end, :));% Channel and noise power spectral density estimation[estChannelGrid, noiseEst] = lteULChannelEstimate(frc,...frc.PUSCH, cec, rxSubframe);% Extract REs corresponding to the PUSCH from the given subframe% across all receive antennas and channel estimatespuschindices = ltepuschindices(frc,frc.pusch);[puschrx,puschestch] = lteextractresources(...puschIndices, rxSubframe, estChannelGrid);% MMSE equalizationrxSymbols = lteequalizemmse(Puschrx,Puschestch,noiseest);%更新frc.pusch以携带UL-SCH的完整信息% coding configurationtrBlkSize = trBlkSizes(mod(subframeNo, 10)+1); frc.PUSCH = lteULSCHInfo(frc, frc.PUSCH, trBlkSize,'chsconcat');% Decode the PUSCHrxencodedBits = ltepuschdecode(frc,frc.pusch,rxsymbols);% Decode the UL-SCH channel and store the block CRC error for given% HARQ process[rxdecodedbits,harqprocesses(harqid).blkerr,...harqProcesses(harqID).decState] = lteULSCHDecode(...frc,frc.pusch,trblksize,...rxEncodedBits, harqProcesses(harqID).decState);% Store the CRC calculation and total number of bits per subframe% successfully decodedblkCRC(subframeNo+1) = harqProcesses(harqID).blkerr; bitTp(subframeNo+1) = trBlkSize.*(1-harqProcesses(harqID).blkerr);end% Record the block CRC error and bit throughput for the total number of% frames simulated at a particular SNRtotalblkcrc(rustageIndex,:) = blkcrc;bitthoughput(rustageIndex,:) = bittp;RusticeIndex = ResultIndex + 1;end
Simulating at -4.1 dB SNR for a total 1 Frame(s) Simulating at -2 dB SNR for a total 1 Frame(s) Simulating at 0.1 dB SNR for a total 1 Frame(s)

Display Throughput Results

使用吞吐量结果绘制为使用总容量的百分比和使用SNR值输入范围的实际位吞吐量hpuschresults.m

% Throughput calculation as a percentage吞吐量= 100*(1均(totalblkcrc,2))。';hpuschresults(snrin,nframes,trblksizes,吞吐量,bitthoughput);

附录

此示例使用这些辅助功能。

Selected Bibliography

  1. 3GPP TS 36.104 "Base Station (BS) radio transmission and reception"