主要内容

使用SRS的NR上行信道状态信息估计

这个示例演示了如何使用探测参考信号(SRS)进行同步、信道估计和上行信道状态信息(CSI)估计。

介绍

探测参考信号是终端上行信道探测时使用的上行物理信号,包括同步和CSI估计。CSI包括信道质量指标(CQI)、等级指标(RI)和预编码器矩阵指标(PMI)。这个示例演示了如何在频率选择性时变噪声信道下使用SRS选择适当的PMI。上行基于码本的传输使用PMIs,如TS 38.211章节6.3.1.5所定义[1]。

此示例执行模拟,包括:

  • SRS配置和传输

  • 完善和实用的同步和信道估计

  • 信噪比(SNR)估计

  • 采购经理人指数的选择

  • PMI选择绩效评估

模拟长度和SNR

根据10 ms帧的数量设置模拟的长度。设置SNR点以模拟。SNR定义为每重复并适用于每个接收天线。

numframes = 1;% 10毫秒帧信噪比= 20;%snr在db中

终端和SRS配置

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

  • 资源块中的带宽(每个资源块12个子载波)

  • 副载波间距:15,30,60,120,240 (kHz)

  • 循环前缀长度:正常或扩展

  • 发送和接收天线数:1、2或4。

  • 层数。它必须低于或等于发送和接收天线的数量。

指定的SRS参数包括:

  • SRS天线接口个数:1,2,4

  • 为每个插槽分配的OFDM符号数:1,2,4

  • 在插槽中启动SRS传输的OFDM符号。正常CP必须是(8…13),扩展CP必须是(6…11)。

  • 在RBs中指定的频率中SRS的起始位置

  • 带宽和跳频配置csrBSR.,BHop.集BHop > =建筑禁用跳频。

  • 传输梳以指定子载波中的SRS频率密度:2,4

  • 槽内重复SRS符号的个数。它会在区块中禁用频率跳跃重复符号。集重复= 1没有重复。

  • 插槽中SRS的周期性和偏移量。

  • 资源类型可以是“周期性”、“半持久性”和“非周期性”。为每个插槽中的非周期SRS资源类型重置跳频模式。

%创建终端/运营商配置UE = nrcarrierconfig;UE.NSIZEGRID = 52;资源块数量的%带宽(10MHz BW为15kHz SCS的52RB)UE.subcarrierspacing = 15;%15,30,60,120,240(kHz)问题。CyclicPrefix =“正常”%'普通'或'延长'ntxants = 2;%发射天线数(1,2,4)nRxAnts = 2;%接收天线数量nlayers = min(Ntxants,nrxants);%配置周期性多端口SRS并使能跳频功能srs = nrSRSConfig;srs。NumSRSSymbols = 4;每个插槽分配的OFDM符号数量(1,2,4)srs.symbolstart = 8;%在一个插槽中开始OFDM符号srs。NumSRSPorts = nTxAnts;%数量的SR天线端口(1,2,4)。srs.frequencystart = 0;在RBS中BWP中SRS的频率位置srs。NRRC = 0;%从4个prb块指定的FreqStart的额外偏移量(0…67)srs。csr= 14;%带宽配置C_SRS(0…63)它控制分配给SRS的带宽srs。BSR.= 0;%带宽配置B_SRS(0…3)。它控制分配给SRS的带宽srs。BHop= 0;%跳频配置(0 ... 3)。设置BHOP srs。KTC = 2;%梳数(2,4)。子载波的频率密度srs。重复= 2;%重复(1,2,4)。它禁用跳频|重复块|符号srs.srsperiod = [2 0];插槽中的数量周期性和偏移量。srsperiod(2)必须是srs。ResourceType =“周期”%资源类型('周期性','半持久性','非周期性')。使用“非周期”禁用槽间频率跳变

同步,信道估计和CSI测量配置

这个例子在SRS候选槽中执行同步和信道估计。定时和信道估计仅在包含SRS传输的槽中更新。在跳频SRS设置中,信道估计仅在那些包含SRS符号的资源块中更新。当没有SRS传输时,从以前的槽获取时间和信道估计并用于CSI采集。类似地,噪声功率估计仅在SRS候选槽中更新。

逻辑变量practicalSynchronization控制通道同步行为。当设置为真正的,示例根据接收到的SRS值执行实际的同步。当设置为,示例执行完美的同步。同步仅在SRS传输的槽中执行,以保持完美和实用的信道估计同步。

practicalSynchronization = true;

该示例通过将载波带宽拆分为多个子带来估计CSI。指定RB中频率子带的大小

csisubbandsize = 4;%每个子带的RBs数量

传播信道模型配置

创建TDL通道模型对象并指定其传播特性。选择频道延迟扩展和最大多普勒频移,以在模拟持续时间和载波带宽内创建时变频率选择的通道。

频道= nrTDLChannel;通道。DelayProfile =“TDL-C”;通道。DelaySpread = 40 e-9;通道。MaximumDopplerShift = 30;通道。NumTransmitAntennas = nTxAnts;通道。NumReceiveAntennas = nRxAnts;通道。Seed = 5;%设置通道采样率ofdmInfo = nrOFDMInfo(问题);通道。SampleRate = ofdmInfo.SampleRate;

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

chInfo =信息(渠道);maxChDelay =装天花板(max (chInfo.PathDelays * channel.SampleRate));maxChDelay = maxChDelay + chInfo.ChannelFilterDelay;%复位随机发生器以进行再现性RNG('默认');

处理循环

测量每个槽位的CSI。CSI的获取步骤如下:

  • 生成网格资源。使用SRS符号和索引创建资源元素(RE)网格。

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

  • 噪声信道模型。波形通过TDL衰落通道。添加了AWGN。每层的SNR定义每层和每个接收天线。

  • 执行同步和OFDM解调。为了完美同步,重建通道脉冲响应并用于同步接收的波形。为了实际同步,接收的波形与SRS相关联。同步信号然后OFDM解调。

  • 执行信道估计。对于完美的信道估计,重建信道脉冲响应,并且OFDM解调以提供信道估计。对于实际信道估计,使用发送的SRS。

  • 采购经理人指数的选择。在每个CSI估计子带中使用基于sr的信道估计来选择最佳PMI。PMI选择准则使预编码后的平均信噪比(SINR)最大化。

  • PMI选择SINR损失。将预编码后的信噪比与估计的和理想的PMIs进行比较,计算信噪比损耗。理想的PMIs是使用完美的信道估计来选择的。

%要模拟的插槽数numslots = numframes * ue.slotsperframe;%每个槽位的子载波和符号总数K =问题。NSizeGrid * 12;L = ue.SymbolsPerSlot;初始化存储通道估计的数组ALLTXGRID = ZEROS([k l * numslots ntxants]);slotgridsize = [k l nrxants ntxants];hest = zeros(slotgridsize);hestinterp = zeros(slotgridsize);hestupdate = zeros(slotgridsize);TotalGridSize = [k L * numslots nrxants ntxants];allhest = zeros(totalGridsize);allhestperfect = zeros(totalgridsize);allhestinterp = zeros(totalgridsize);%初始化噪声功率估计nvar = 0;%计算运营商的CSI子带的数量numcsisubbands = ceil(ue.nsizegrid / csisubbandsize);%初始化每个子带、槽位和PMI的SINRmaxpmi = hmaxpuschprecodingmatrixindicator(nlayers,ntxants);sinrsubband = zeros([numcsisubbands numslots maxpmi + 1]);%初始化PMI矩阵和SINR损失采购经理人指数=南(numCSISubbands numSlots);pmiPerfect =采购经理人指数;损失= 0(大小(pmi));初始化时间估计偏移量offset = chinfo.channelfilterdelay;计算SRS CDM长度cdmLengths = hSRSCDMLengths (srs);%用于CSI采集的OFDM符号csiSelectSymbols = srs。SymbolStart + (1: srs.NumSRSSymbols);nSlot = 0: numSlots-1%更新插槽计数器问题。NSlot = NSlot;%生成SRS并映射到插槽网格[srsIndices, srsIndInfo] = nrSRSIndices(问题,srs);srsSymbols = nrSRS(问题,srs);%创建一个插槽的资源网格,空网格和映射SRS符号nTxAnts txGrid = nrResourceGrid(问题);txGrid (srsIndices) = srsSymbols;%确定插槽是否包含SRSissrsslot =〜isempty(srssymbols);%OFDM调制[txwaveform,waveforminfo] = nrofdmodulate(Ue,txgrid);txwaveform = [txwaveform;零(maxchdelay,尺寸(txwaveform,2))];%以后刷新通道滤波器以获得接收的信号通道传输[rxWaveform, pathGains] =通道(txWaveform);%将AWGN添加到接收的时域波形%正常化噪声功率考虑采样率,即%是OFDM调制中使用的IFFT大小的函数。的信噪比%为每个接收天线的RE定义(TS 38.101-4)。SNR = 10 ^(SNR / 20);%计算线性噪声增益N0 = 1 /(√(2.0 * nRxAnts *双(waveformInfo.Nfft)) *信噪比);噪音= N0 *复杂(randn(大小(rxWaveform)), randn(大小(rxWaveform)));rx波形= rx波形+噪声;%执行定时偏差估计pathFilters = getPathFilters(渠道);%时间估计只在SRS所在的槽中执行%传输,保持完善和实用的信道估计%同步。如果isSRSSlot如果practicalSynchronization%实际同步。关联接收波形百分比与SRS提供定时偏移估计抵消= nrTimingEstimate(问题、rxWaveform srsIndices, srsSymbols);其他的抵消= nrPerfectTimingEstimate (pathGains pathFilters);结束结束%执行OFDM解调rxgrid = nrofdmdemodulate(ue,rxwaveform(1 + offset:结束,:));%执行实用信道估计%只在包含SRS的符号和RBs中更新信道估计此插槽中的%并将估计保存在其他插槽中%的位置。没有SRS传输时nvar不更新。使用%一个覆盖所有传输的SRS符号的时间平均窗口。如果isSRSSlot%此槽位包含一个SRS传输[hest,nvar] = nrchannelestimate(UE,RxGrid,Srsindices,SRSsymbols,“AveragingWindow”[0 7],'cdmlength', cdmLengths);在第一个SRS符号之前,%使用先前插槽的频道估计为OFDM符号hestinterp = repmat(hestinterp(:,结束,:,:),1,ue.symbolsperslot);在OFDM符号和RB中的%更新频道估计%存在并保持所有通道估计,直到插槽结束firstsymbol = srs.symbolstart + 1;lastsymbol = srs.symbolstart + srs.numsrsssymbols;hestupdate(:,firstsymbol:lastsymbol,:,:) = hest(:,firstsymbol:lastsymbol,::);hestupdate(:,lastsymbol:l,:,:) = repmat(hest(:,lastsymbol,:,:),1,ue.symbolsperslot-lastsymbol + 1);idxhestupdate = hestupdate〜= 0;%更新的信道估计指数hestinterp(idxhestupdate)= hestupdate(idxhestupdate);其他的%如果此槽位不包含SRS,则保持先前的信道估计hestinterp = repmat(hestinterp(:,结束,:,:),1,ue.symbolsperslot);结束%PMI选择%使用多个图层选择预编码器矩阵指示器所指定的OFDM符号中插值信道估计%csiselectsymbols。PMI每CSI子带估计[pmi(:,nSlot+1),sinrSubband(:,nSlot+1,:),subbandIndices] = hPMISelect(nLayers, hestInterp(:, ciselectsymbols,:,:), nvar, cisubbandsize);PMI选择SINR损失百分比%计算预编码后SINR的比例的性能损失%,使用实际信道估计和信噪比选择PMIs使用完美的频道估计选择PMI后预编码后%。为完美PMI选择计算完美渠道估计hEstPerfect = nrPerfectChannelEstimate (pathFilters pathGains退居其次,抵消);从噪声实现的完美噪声估计noiseGrid = nrOFDMDemodulate(问题、噪声(1 +抵消:最终,));nvarPerfect = var (noiseGrid (:));[loss(:,nSlot+1),pmiPerfect(:,nSlot+1)] = hPMISelectionSINRLoss(pmi(:,nSlot+1), nLayers, hEstPerfect(:, ciselectsymbols,:,:), nvarPerfect);%保存所有传输的OFDM网格和信道估计的副本%显示目的this = nSlot*L + (1:L); / /输出%当前槽位符号thisSlot, allTxGrid (::) = txGrid;allHest (thisSlot,::,:) =命令;allHestInterp (thisSlot,::,:) = hestInterp;allHestPerfect (thisSlot,::,:) = hEstPerfect;结束

结果

本节显示所有配置的帧的结果:

  • 包含SRS的DDM网格

  • 完美实用的信道估计,以及信道估计误差。错误计算为完美和实用信道估计之间的差异的绝对值。

  • 选择PMI使用完美和实用的信道估计,以及PMI绝对误差。

  • 用最优估计PMI预编码后每个子带的平均SINR

  • SINR性能损失

%创建x轴和y轴矢量符号= 0:(ue.NSlot + 1) * ue.SymbolsPerSlot-1;槽= 0:ue.NSlot;副载波= 1:ue.NSizeGrid * 12;resourceBlocks = 1: ue.NSizeGrid;

显示包含SRS的发射OFDM网格

图显示亮度图像(符号、副载波、abs (allTxGrid (:,:, 1, 1)));包含(OFDM符号的);ylabel(副载波的);轴xy;标题('传输的SRS(端口1)');

显示完美和实用的信道估计,信道估计误差每个插槽和RB。信道估计误差定义为完美信道估计与实际信道估计之差的绝对值。

%删除第一个不包含SRS的OFDM符号,以提高可视化%信道估计错误hEstInterp = allHestInterp;idx = 1:(srs.SRSPeriod(2) *问题。SymbolsPerSlot + srs.SymbolStart);hEstInterp (idx,::,:) =南;hEstInterp ((srs.NRB * 12 + 1):结束 ,:,:,:) = 南;hChannelEstimationPlot(符号、副载波allHestPerfect hEstInterp);

使用完美和实用的信道估计显示选定的PMI,以及每个槽和RB的PMI选择SINR损失。信噪比损耗定义为经预编码后的信噪比。估计的PMIs使用一个实际的信道估计和完美的PMIs选择使用一个完美的信道估计。

%首先将子带的丢失延伸到RBS以供显示目的PMIRB = HEXPANDSUBBANDTORB(PMI,CSISUBBANDSIZE,UE.NSIZEGRID);pmiperfectrb = hexpandsubbandtorb(pmiperfect,csisubbandsize,ue.nsizegrid);loceRB = hexpandsubbandtorb(丢失,csisubbandsize,ue.nsizegrid);HPMiplot(插槽,ResourceBlocks,PMIRB,PMIPERFectrB,LOSTRB);

接下来,比较使用完美信道估计和实际信道估计得到的PMIs。这表明正确的PMIs与总PMIs的比例以及发生错误的资源网格中的位置。

numlayers = min(大小(allhestinterp,[3 4]));如果numlayers〜= 1 pmierr = sum(abs(pmi  -  pmiperfect)> 0,[1 2])./ sum(〜isnan(pmi),[1 2]);totpmiest = sum(〜iSnan(PMI),[1 2]);流('估计PMI数量:%d \n',totpmiest);流('错误的PMI:%d \ n'装天花板(pmiErr * TotPMIEst));流('相对错误:%.1f(%%)\ n', pmiErr * 100);其他的流('对于单层,PMI总是0. \ n');结束
估计PMI数:130错误PMI数:3相对误差:2.3 (%)

在使用PMI预编码后获得的每个插槽和RB显示SINR,可使每个子带最大化SINR。

hbestsinroplot(插槽,ResourceBlocks,Sinrsubband,PMI,CSISubbandsize);

摘要和进一步的探索

这个示例展示了如何使用SRS进行同步、信道估计和PMI选择,这些通常用于基于码本的上行传输模式。该示例还利用预编码后的SINR评估信道估计和PMI选择性能损失。

您可以在更复杂的设置中研究信道估计和PMI选择的性能。增加SRS的周期性,观察预编码后信道估计的老化是如何引入延迟和恶化SINR的。此外,您可以通过设置SRS参数BHop < BSRS来研究跳频条件下的性能。在这种情况下,信道估计老化在频率上是不均匀的。

附录

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

参考资料

  1. 3 gpp TS 38.211。“NR;物理通道和调制(第15版)。”第三代合作伙伴项目;技术规范无线电接入网。

  2. 3GPP TS 38.101-4。“NR;用户设备(UE)无线电传输和接收。第4部分:性能要求(第15版)。”第三代合作伙伴项目;技术规范无线电接入网。

本地函数

%显示完美和实用的信道估计和频道第一个发送和接收端口的估计误差%。英吉利海峡%估计误差被定义为差异的绝对值%之间的完美和实际的渠道估计。函数HChannElestimationPlot(符号,子载波,allhestperfect,allhestinterp)图形子图(311)ImageC(符号,子载波,ABS(allhestperfect(::,:1,1));轴xy;包含(OFDM符号的);ylabel(副载波的);colorbar;标题('完美的频道估计(Txant = 1,Rxant = 1)');subplot(312) imagesc(symbols, subcarriers, abs(allHestInterp(:,:,1,1)),......“AlphaData”、~ isnan (allHestInterp(:,:, 1, 1)))轴xy;包含(OFDM符号的);ylabel(副载波的);colorbar;标题('基于srs的实际信道估计(TxAnt=1, RxAnt=1) ');%显示信道估计错误,定义为差异%基于SRS和完美的信道估计subplot(313) hestErr = abs(allHestInterp - allHestPerfect);显示亮度图像(符号、副载波hestErr (:,:, 1, 1),......“AlphaData”、~ isnan (hestErr (:,:, 1, 1)));轴xy;包含(OFDM符号的);ylabel(副载波的);colorbar;标题('信道估计错误(txant = 1,rxant = 1)');结束显示PMI的演变和PMI估计SINR的损失%的频率。SINR损耗定义为前后SINR的比值%预编码与估计和完美的PMIs。预计采购经理人指数用实际的信道估计和完美的PMIs得到的%选择使用一个完美的信道估计。函数hPMIPlot(slots,resourceBlocks,pmiRB,pmiPerfectRB,lossRB) figure subplot(311) imagesc(slots,resourceBlocks,pmiPerfectRB,“AlphaData”,〜isnan(pmiperfectrb));轴xy;c = caxis;厘米= colormap;colormap(厘米(1:地板(尺寸(厘米,1)/ (c (2) - c (1)) 1):,:));%调整颜色图到PMI离散值colorbar包含(“槽”);ylabel(“资源块”)、标题(“使用完美渠道估计选择PMI”)子图(312)ImageC(插槽,ResourceBlocks,PMIRB,“AlphaData”~ isnan (pmiRB));轴xy;colorbar,包含(“槽”);ylabel(“资源块”)、标题(“使用SRS选择PMI”)次要情节(313)显示亮度图像(插槽,resourceBlocks lossRB,“AlphaData”~ isnan (lossRB));甘氨胆酸colormap(厘米)包含(“槽”);ylabel(“资源块”);轴xy;colorbar;标题(“PMI估计SINR损失(dB)”结束%在预编码后获得的每个资源块的SINR显示% PMI,使每个子带的SINR最大化。函数hBestSINRPlot(槽resourceBlocks sinrSubband pmi, csiBandSize)%用最佳PMI预编码后显示SINRbestSINRPerSubband = nan(size(sinrSubband,[1 2]));%使用最佳PMI的每个子带和插槽获得SINR[SB,NSLOT] =查找(〜ISNAN(PMI));i = 1:长度(SB)BestsInrpersubBand(SB(I),NSLOT(I))= SINRSUBBAND(SB(I),NSLOT(I),PMI(SB(I),NSLOT(I))+ 1);结束%为了显示目的,首先将SINR从子带扩展到RBsbestSINRPerRB = hExpandSubbandToRB(bestSINRPerSubband, csiBandSize, length(resourceBlocks));图sinrdb = 10*log10(abs(bestSINRPerRB));显示亮度图像(插槽,resourceBlocks sinrdb,“AlphaData”~ isnan (sinrdb));轴xy;colorbar;包含(“槽”);ylabel(“资源块”)标题(“用最佳PMI (dB)预编码后每个子带和槽的平均SINR”结束%将第一维中每个子带值的2D矩阵展开为每个资源块的值的矩阵。函数RBValues = hexpandsubbandtorb(子带宽,bandsize,nrb)lastbandsize = mod(nrb,bandsize);lastbandsize = lastbandsize + bandsize *(lastbandsize == 0);rbvalues = [kron(子带values(1:end-1,:),(bandsize,1));......子带宽(结束,:)。*那些(lastbandsize,1)];结束

另请参阅

功能

对象

相关主题