主要内容

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

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

简介

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

仿真设置

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

NFrames = 4;帧数%eqMethod =“MMSE_IRC”%的患者,MMSE_IRC

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

SINR = 0.8;% SINR in dBDIP2 = -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服务配置

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

设置随机数生成器种子rng (“默认”);根据R.47设置单元1 eNodeB配置simulationParameters =结构;simulationParameters。NDLRB = 50;simulationParameters。CellRefP = 2;simulationParameters。NCellID = 0;simulationParameters。CFI = 2;simulationParameters。DuplexMode =“FDD”;simulationParameters。TotSubframes = 1;这不是总数%子帧在模拟中使用,只是我们的子帧的数量对波形发生器的每次调用生成%。指定PDSCH配置子结构simulationParameters.PDSCH.TxScheme =“SpatialMux”;simulationParameters.PDSCH.Modulation = {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 8760 0 8760 8760 8760 8760 8760];表A.3.3.2.1-2, TS 36.101simulationparameters . pdch . codedtrblksizes = [24768 26400 26400 26400 26400 26400 0 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;虚拟终端simulationParameters.OCNGPDSCH.Modulation =“正交相移编码”OCNG符号调制simulationParameters.OCNGPDSCH.TxScheme =“TxDiversity”% OCNG传输模式

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

enb1 = lteRMCDL (simulationParameters);

干扰eNodeBs配置

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

  • Cell 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

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

eNodeB1到UE传播通道channel1 =结构;通道配置结构。种子= 20;%通道种子。NRxAnts = 2;% 2接收天线。DelayProfile =“爱娃”%延迟概要。DopplerFreq = 5;%多普勒频率。MIMOCorrelation =“低”% Multi-antenna相关性。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 =结构;通道估计配置结构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) * (1 e - 3);瓦茨线性百分比%考虑FFT (OFDM)缩放没有=√nocLin /(2 *双(ofdmInfo.Nfft)));%信号和干扰幅值的比例因子计算[K1, K2, K3] = hENBscalingFactors(DIP2, DIP3, Noc, SINR, enb1, enb2, enb3);

主循环初始化

在主处理循环之前,我们需要设置混合自动重复请求(HARQ)过程并初始化中间变量。与配置相对应的HARQ进程号序列由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 = [];%获取发射天线数。= lteDLResourceGridSize dim (enb1);P = dim (3);为每个码字和传输指定冗余版本序列。每个子帧的%块大小rvSequence = enb1.PDSCH.RVSeq;trBlkSizes = enb1.PDSCH.TrBlkSizes;设置闭环空间复用的PMI延迟时间pmiDelay = 8;如表8.2.1.4.1B-1中TS 36.101所示初始化第一个'pmiDelay'子帧的pmipmiDims = ltePMIInfo (enb1 enb1.PDSCH);(pmiDims txPMIs = 0。NSubbands pmiDelay);%标志,指示是否有有效的PMI反馈从UE可用pmiReady = false;

主循环

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

  • 检查HARQ进程,确定是否发送一个新包,或者是否需要重传

  • 从服务小区和干扰小区生成下行波形

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

  • 同步和OFDM解调服务小区的信号

  • 估计服务细胞的传播通道

  • 均衡化和解码PDSCH

  • 解码DL-SCH

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

流(“\ nSimulating % d帧(s) \ n”, NFrames);% Main 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(subframe, length(harqProcessSequence))+1);%如果在当前子帧中有一个调度的传输块%(由非零'harqID'表示),执行传输和%接待。否则,继续到下一个子帧。如果harqID = = 0继续结束更新当前HARQ进程harqProcesses (harqID) = hHARQScheduling (...harqProcesses (harqID)、subframeNo rvSequence);提取当前子帧传输块大小(s)trBlk = trBlkSizes(:, mod(subframino, 10)+1).';使用HARQ进程状态更新PDSCH传输配置enb1.PDSCH。RVSeq = harqProcesses (harqID) .txConfig.RVSeq;enb1.PDSCH。房车= harqProcesses (harqID) .txConfig.RV;dlschTransportBlk = harqProcesses (harqID) . data;%将PMI设置为延迟队列中的适当值如果strcmpi (enb1.PDSCH.TxScheme“SpatialMux”) pmiIdx = mod(subframeNo, pmiDelay);延迟队列中的PMI索引enb1.PDSCH。PMISet = txPMIs(:, pmiIdx+1);%设置采购经理人指数结束%创建发送波形[tx,~,enbOut] = lteRMCDLTool(enb1, dlschTransportBlk);Pad 25个样品,以覆盖来自通道的预期延迟范围。%建模(实现延迟和通道延迟的组合%传播)txWaveform1 = [tx;0(25日P)];从' enabout '获取HARQ ID序列用于HARQ处理harqProcessSequence = enbOut.PDSCH.HARQProcessSequence;根据TS 36.101, B.5.3生成干扰模型。的htm4intermodel生成干扰发射信号。txWaveform2 = [hTM4InterfModel (enb2);0(25日P)];txWaveform3 = [hTM4InterfModel (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);%产生噪音噪音=没有*复杂(randn(大小(rxWaveform1)),...randn(大小(rxWaveform1)));在接收的时域波形中添加AWGNrx波形= K1*rxWaveform1 + K2*rxWaveform2 + K3*rxWaveform3 + noise;%接收每一帧,在子帧0上计算一个新的同步%抵消如果(mod(subframeamo,10) == 0) frameOffset = lteDLFrameOffset(enb1, rx波形);如果(frameOffset = lastOffset;结束lastOffset = frameOffset;结束同步接收到的波形rx波形= rx波形(1+frameOffset:end,:);%缩放rx波形1/K1,以避免数值问题%信道解码级rxWaveform = rxWaveform / 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,:));噪音= var (noiseGrid (:));其他的[estChannelGrid, noiseEst] = lteDLChannelEstimate(...enb1 enb1。PDSCH,cec, rxSubframe);结束%获取PDSCH索引pdschIndices = ltePDSCHIndices (enb1 enb1.PDSCH enb1.PDSCH.PRBSet);获取PDSCH资源元素。缩放接收到的子帧PDSCH功率因数。[pdschRx, pdschest] = lteExtractResources(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,噪音);结束执行层解映射,解调和解乱水煤浆= ltePDSCHDecode (enb1 setfield (enb1。PDSCH,“TxScheme”...“Port7-14”), rxDeprecoded);PDSCH传输方案为%修改为端口7-14,以便跳过解压缩操作%根据CSI缩放llr水煤浆= hCSIscaling (enb1.PDSCH,水煤浆,csi);%解码DL-SCH[decbits harqProcesses (harqID) .blkerr harqProcesses (harqID) .decState] =...lteDLSCHDecode (enb1 enb1。PDSCH trBlk,水煤浆,...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>=pmiDelay pmiReady = true;结束结束结束结束
模拟4帧(s)

结果

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

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

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

附录

这个例子使用了以下helper函数:

选定的参考书目

  1. 3GPP TS 36.101“用户设备(UE)无线电传输和接收”

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

Baidu
map