主要内容

小区间干扰对MMSE-IRC接收机PDSCH吞吐量的影响

本例用最小均方误差(MMSE)和最小均方误差-干扰抑制组合(MMSE- irc)接收机演示了小区间干扰对PDSCH吞吐量的影响。考虑了一个服务细胞和两个干扰endeb。TS 36.101第8.2.1.4.1B节规定的条件[1]。

简介

这个例子测量了服务小区中用户设备(UE)在两个主要干扰小区的小区间干扰下实现的吞吐量。服务单元在FDD模式下使用RMC R.47。服务单元和干扰单元的参数,包括功率级和噪声级,见TS 36.101,第8.2.1.4.1B节[1]。

仿真设置

默认的模拟长度设置为4帧以保持模拟时间较低。增加NFrames增加模拟时间并产生统计上显著的吞吐量结果。使用变量eqMethod设置接收均衡,可以取'MMSE'和'MMSE_IRC'值。

NFrames = 4;帧数%eqMethod =“MMSE_IRC”% mmse, mmse_irc

信号、干扰和噪声功率级在试验中规定(TS 36.101,第8.2.1.4.1B节[1]),使用以下参数:信干扰加噪声比(SINR)、优势干扰比(DIP)和噪声功率谱密度。

Sinr = 0.8;% SINR (dB)Dip2 = -1.73;单元格2的dB中% DIPDip3 = -8.66;单元格3的dB中% DIPNoc = -98;% dBm/15kHz平均功率谱密度

DIP描述了每个干扰细胞的特征,定义为:

$DIP2 = Ior2/(Ior2 + Ior3 + Noc)$

$DIP3 = Ior3/(Ior2 + Ior3 + Noc)$

在哪里Ior2美元而且Io3美元分别是单元格2和单元格3接收到的平均功率谱密度。Noc美元白噪声源的平均功率谱密度(每个资源元素的平均功率相对于子载波间距的归一化)。

eNodeB配置服务

所考虑的测试在FDD模式下使用参考通道R.47。与此参考通道相关的参数在(TS 36.101,表A.3.3.2.1-2 [1])。结构enb1描述服务单元的特征。

设置随机数生成器种子rng (“默认”);根据R.47设置单元格1 eNodeB配置simulationParameters = struct;simulationParameters。NDLRB = 50;simulationParameters。CellRefP = 2;simulationParameters。NCellID = 0;simulationParameters。Cfi = 2;simulationParameters。DuplexMode =“FDD”;simulationParameters。TotSubframes = 1;这不是总数%的子帧在模拟中使用,只是我们的子帧的数量% generate每次调用波形生成器。指定PDSCH配置子结构simulationParameters.PDSCH.TxScheme =“SpatialMux”;simulationparameters . pdsch .调制= {16 qam的};simulationParameters.PDSCH.NLayers = 1;simulationParameters.PDSCH.Rho = -3;simulationParameters.PDSCH.PRBSet = (0:49)';表A.3.3.2.1-2, TS 36.101simulationParameters.PDSCH.TrBlkSizes = [8760 8760 8760 8760 8760 0 8760 8760 8760 8760 8760 8760 8760 8760 8760 8760 8760;表A.3.3.2.1-2, TS 36.101simulationParameters.PDSCH.CodedTrBlkSizes = [24768 26400 26400 26400 26400 26400 0 26400 26400 26400 26400 26400 26400 26400 26400];simulationParameters.PDSCH.CSIMode =“PUCCH 1 - 1”;simulationParameters.PDSCH.PMIMode =“宽带”;simulationParameters.PDSCH.CSI =“上”;simulationParameters.PDSCH.W = [];simulationParameters.PDSCH.CodebookSubset =“1111”指定PDSCH OCNG配置simulationParameters。OCNGPDSCHEnable =“上”启用OCNG填充simulationParameters。OCNGPDSCHPower = -3;% OCNG功率与PDSCH Rho相同simulationParameters.OCNGPDSCH.RNTI = 0;虚拟终端RNTIsimulationParameters.OCNGPDSCH.Modulation =“正交相移编码”% OCNG符号调制simulationParameters.OCNGPDSCH.TxScheme =“TxDiversity”% OCNG传输模式

调用lteRMCDLTool中未指定的默认eNodeB参数simulationParameters

enb1 = lteRMCDL(simulationParameters);

干扰enodeb配置

这两种干扰细胞具有不同的结构特征enb2而且enb3.它们具有与服务单元格相同的字段值(enb1),但下列情况除外:

  • 单元格Id的值为1和2enb2而且enb3,分别。

  • PDSCH调制方案由传输模式4 (TM4)干扰模型(TS 36.101, B.5.3 [1])。这个值在每一个子帧的基础上变化,并在主处理循环中修改。

%单元格2Enb2 = enb1;enb2。NCellID = 1;enb2。OCNGPDSCHEnable =“关闭”%单元格3Enb3 = enb1;enb3。NCellID = 2;enb3。OCNGPDSCHEnable =“关闭”

传播信道和信道估计器配置

本节设置三个传播通道的参数

  • 为UE提供小区服务

  • 第一个干扰细胞到UE

  • 对UE的第二个干扰细胞

如(TS 36.101,表8.2.1.4.1B-2所规定[1])使用EVA5通道条件。

% eNodeB1到UE传播通道Channel1 = struct;通道配置结构。种子= 20;%沟道种子。NRxAnts = 2;% 2接收天线。DelayProfile =“爱娃”%延迟配置文件。DopplerFreq = 5;%多普勒频率。MIMOCorrelation =“低”%多天线相关性。NTerms = 16;衰落模型中使用的振荡器。ModelType =“GMEDS”瑞利衰落模型类型。InitPhase =“随机”%随机初始相。没有rmalizePathGains =“上”正常化延迟配置文件功率。没有rmalizeTxAnts =“上”用于发射天线归一化

信道采样率取决于OFDM调制器中使用的FFT大小。这可以使用函数获得lteOFDMInfo

ofdmInfo = lteOFDMInfo(enb1);。SamplingRate = ofdmInfo.SamplingRate;eNodeB2(干扰)对UE传播信道Channel2 = channel1;channel2。种子= 122;%沟道种子eNodeB3(干扰)对UE传播信道Channel3 = channel1;channel3。种子= 36;%沟道种子

的变量perfectChanEstimator控制信道估计器的行为。有效值为真正的.当设置为真正的基于接收到的导频信号的值,使用完美信道估计或者使用不完美估计。

%通道估计器行为perfectChanEstimator = true;信道估计器配置结构定义如下。的%频率和时间平均窗口大小被选择来跨越一个相对%大量的资源元素。选择大的窗口尺寸是为了%平均尽可能多的噪音和干扰的资源%的元素。注意,时间和/或频率的平均窗口太大%将由于平均信道变化而导致信息丢失。这会产生一个越来越不完美的通道估计,这可能会影响均衡器的性能。Cec = struct;通道估计配置结构cec。PilotAverage =“UserDefined”导频符号平均的类型cec。FreqWindow = 31;%频率窗口大小cec。TimeWindow = 23;%时间窗口大小cec。InterpType =“立方”% 2D插值类型cec。InterpWindow =“中心”插补窗口类型cec。InterpWinSize = 1;插值窗口大小%

信号、干扰和噪声功率电平

从SINR, DIP和Noc我们可以计算适用于服务单元和干扰单元信号的比例因子值,以及噪声水平。

这个函数hENBscalingFactors.m计算比例因子K1K2而且K3应用于考虑的三个单元的信道滤波波形。比例因子没有对高斯白噪声也进行了计算。这些值确保信号功率、干扰功率和噪声功率符合指定的SINR和DIP值。

%信道噪声设置nocLin = 10.^(Noc/10)*(1e-3);线性百分比(瓦)考虑FFT (OFDM)缩放No =√(nocLin/(2*double(ofdmInfo.Nfft)));%信号和干扰幅度比例因子计算[K1, K2, K3] = hENBscalingFactors(DIP2, DIP3, Noc, SINR, enb1, enb2, enb3);

主循环初始化

在主处理循环之前,我们需要设置混合自动重复请求(HARQ)流程并初始化中间变量。命令输出与配置相对应的HARQ进程ID序列lteRMCDLTool函数。HARQ进程(id为1到8)与每个调度数据的子帧相关联。序列中值为0表示数据不在相应的子帧中传输。这可能是因为它是上行链路子帧,也可能是因为下行链路子帧中没有调度数据(类似于本例中的子帧5)。

初始化所有HARQ进程的状态harqProcesses = hNewHARQProcess(enb1);初始化HARQ进程id为1作为第一个非零传输%块将始终使用第一个HARQ进程传输。这之后lteRMCDLTool会用完整的序列输出更新%%对函数的第一次调用harqProcessSequence = 1;为主循环设置变量lastOffset = 0;初始化前一帧的帧定时偏移量frameOffset = 0;初始化帧定时偏移量nPMI = 0;初始化预编码器矩阵指示的数量% (PMI)已计算集blkCRC = [];所有考虑的子帧的块CRCbitTput = [];每个子帧成功接收的比特数txedTrBlkSizes = [];每子帧传输的比特数%传输的总比特数的向量,为每个子帧计算。runningMaxThPut = [];存储成功接收比特数的向量,为%每个子帧。runningSimThPut = [];%获取发射天线个数。dims = lteDLResourceGridSize(enb1);P = dims(3);为每个码字和传输分配冗余版本序列每个子帧的块大小%rvSequence = enb1.PDSCH.RVSeq;trBlkSizes = enb1.PDSCH.TrBlkSizes;设置闭环空间复用的巡检延迟时间pmiddelay = 8;如TS 36.101,表8.2.1.4.1B-1所示初始化第一个' pmiddelay '子帧的pmipmidim = ltePMIInfo(enb1,enb1. pdsch);txPMIs = 0 (pmidim。NSubbands pmiDelay);%标志,表示是否有来自UE的有效PMI反馈pmiReady = false;

主循环

主循环遍历指定数目的子帧。对于每个有数据的下行子帧执行以下操作:

  • 检查HARQ进程并确定是否发送新数据包或是否需要重传

  • 从服务细胞和干扰细胞产生下行波形

  • 用传播通道滤波波形,并添加高斯白噪声

  • 同步和OFDM解调来自服务单元的信号

  • 估计服务单元的传播通道

  • 平衡和解码PDSCH

  • 解码DL-SCH

  • 使用获得的块CRC确定吞吐量性能

流('\n模拟%d帧(s)\n', NFrames);主for循环:用于所有子帧subframeNo = 0 (NFrames*10-1)重新初始化每个子帧的通道种子以增加可变性。种子= 1+subframeNo;channel2。种子= 1+subframeNo+(NFrames*10);channel3。种子= 1+subframeNo+2*(NFrames*10);更新子帧号enb1。NSubframe = subframeNo;enb2。NSubframe = subframeNo;enb3。NSubframe = subframeNo;duplexInfo = lteDuplexingInfo(enb1);如果duplexInfo。NSymbolsDL ~= 0%目标仅下行子帧从HARQ进程序列中获取子帧的HARQ进程IDharqID = harqProcessSequence(mod(subframeNo, length(harqProcessSequence))+1);%如果当前子帧中有调度的传输块%(由非零'harqID'表示),执行传输和%接待。否则,继续到下一个子帧。如果harqID == 0继续结束更新当前HARQ流程harqProcesses(harqID) = hHARQScheduling(...harqProcesses(harqID), subframeNo, rvSequence);提取当前子帧传输块大小(秒)trBlk = trBlkSizes(:, mod(subframeNo, 10)+1).';使用HARQ进程状态更新PDSCH传输配置enb1.PDSCH。RVSeq = harqProcesses(harqID).txConfig.RVSeq;enb1.PDSCH。RV = harqProcesses(harqID).txConfig.RV;dlschTransportBlk = harqProcesses(harqID).data;%在延迟队列中设置合适的PMI值如果strcmpi (enb1.PDSCH.TxScheme“SpatialMux”) pmiIdx = mod(subframeNo, pmiddelay);延迟队列中的PMI索引enb1.PDSCH。PMISet = txPMIs(:, pmiIdx+1);%设置PMI结束%创建发送波形[tx,~,enbOut] = lteRMCDLTool(enb1, dlschTransportBlk);填充25个样本,以覆盖来自通道的预期延迟范围。%建模(实现延迟和通道延迟的组合%传播)txWaveform1 = [tx;0(25日P)];从'enbOut'获取HARQ ID序列用于HARQ处理harqProcessSequence = en布特. pdsch . harqProcessSequence;根据TS 36.101, B.5.3生成干涉模型。的htm4intermodel生成干扰发射信号。txWaveform2 = [htm4intermodel (enb2);0(25日P)];txWaveform3 = [htm4intermodel (enb3);0(25日P)];指定当前子帧的通道时间。InitTime = subframeNo/1000;channel2。InitTime = channel1.InitTime;channel3。InitTime = channel1.InitTime;通过通道传递数据rxWaveform1 = lteFadingChannel(channel1,txWaveform1);rxWaveform2 = lteFadingChannel(channel2,txWaveform2);rxWaveform3 = lteFadingChannel(channel3,txWaveform3);%产生噪音噪声= No*complex(randn(size(rxWaveform1)),...randn(大小(rxWaveform1)));将AWGN添加到接收的时域波形中rxWaveform1 = K1*rxWaveform1 + K2*rxWaveform2 + K3*rxWaveform3 +噪声;%接收每一帧,在子帧0上计算一次新的同步%抵消如果(mod(subframameno,10) == 0) frameOffset = lteDLFrameOffset(enb1, rx波形);如果(frameOffset > 25) frameOffset = lastOffset;结束lastOffset = frameOffset;结束同步接收到的波形rx波形= rx波形(1+frameOffset:end,:);%缩放rx波形1/K1,以避免数值问题%信道解码阶段rx波形= rx波形/K1;对接收到的数据进行OFDM解调,得到%资源网格rxSubframe = lteOFDMDemodulate(enb1, rx波形);执行信道估计如果(perfectChanEstimator) estChannelGrid = lteDLPerfectChannelEstimate(enb1, channel1, frameOffset);noiseInterf = K2*rxWaveform2 + K3*rxWaveform3 + noise;noiseInterf = noiseInterf/K1;noiseGrid = lteOFDMDemodulate(enb1, noiseInterf(1+frameOffset:end,:));noiseEst = var(noiseGrid(:));其他的[estChannelGrid, noiseEst] = lteDLChannelEstimate(...enb1 enb1。PDSCH,cec, rxSubframe);结束%获取PDSCH指数pdschIndices = ltePDSCHIndices(enb1,enb1. pdsch,enb1. pdsch . prbset);获取PDSCH资源元素。缩放接收到的子帧% PDSCH功率因数Rho。[pdschRx, pdschHest] = lteExtractResources(pdschIndices, pdschIndices,...rxSubframe * (10 ^ (-enb1.PDSCH.Rho / 20)), estChannelGrid);%执行均衡和解编码如果比较字符串(eqMethod“患者”% MIMO均衡和解编码(基于MMSE)[rxDeprecoded,csi] = lteEqualizeMIMO(enb1,enb1。PDSCH,...pdschRx pdschHest,噪音);其他的% MIMO均衡和解编码(基于MMSE-IRC)[rxDeprecoded,csi] = hEqualizeMMSEIRC(enb1,enb1。PDSCH,...rxSubframe estChannelGrid,噪音);结束%执行层反映射,解调和解扰cws = ltePDSCHDecode(enb1,setfield(enb1。PDSCH,“TxScheme”...“Port7-14”), rxDeprecoded);% PDSCH传输方案为%修改为port7-14,以便跳过解编码操作通过CSI缩放LLRscws = hcsscaling (enb1.PDSCH,cws,csi);解码DL-SCH[decbits, harqProcesses(harqID).blkerr,harqProcesses(harqID).decState] =...lteDLSCHDecode (enb1 enb1。PDSCH, trBlk, cws,...harqProcesses (harqID) .decState);存储用于计算吞吐量的值仅适用于有数据和有效PMI反馈的子帧如果any(trBlk) && pmiReady blkCRC = [blkCRC harqProcesses(harqID).blkerr];txedTrBlkSizes = [txedTrBlkSizes trBlk];bitTput = [bitTput trBlk.*(1-harqProcesses(harqID).blkerr)];结束runningSimThPut = [runningSimThPut sum(bitTput,2)];runningMaxThPut = [runningMaxThPut sum(txedTrBlkSizes,2)];向eNodeB提供PMI反馈如果strcmpi (enb1.PDSCH.TxScheme“SpatialMux”) PMI = ltePMISelect(enb1, enb1.)PDSCH,estChannelGrid, noiseEst); txPMIs(:, pmiIdx+1) = PMI; nPMI = nPMI+1;如果nPMI>= pmiddelay pmiReady = true;结束结束结束结束
模拟4帧(s)

结果

本节计算实现的吞吐量。还提供了所有模拟子帧的运行测量吞吐量的图。

maxThroughput = sum(txedTrBlkSizes);最大吞吐量simThroughput = sum(bitTput,2);%模拟吞吐量显示实现吞吐量百分比disp ([“达到的吞吐量”num2str (simThroughput * 100 / maxThroughput)“%”])图运行吞吐量%人物,情节(runningSimThPut * 100. / runningMaxThPut) ylabel (的吞吐量(%));包含(模拟的子帧的);标题(的吞吐量);
实现吞吐量78.5714%

为了获得统计上有效的结果,应该对更多的帧运行模拟。下图显示了模拟1000帧时的吞吐量结果。

附录

本例使用了以下helper函数:

选定的参考书目

  1. 3GPP TS 36.101《用户设备(UE)无线电发射和接收》

  2. 3GPP TR 36.829《LTE用户设备(UE)的增强性能要求》