主要内容

使用CSI-RS进行NR信道估计

这个示例演示了如何为给定的载波和CSI-RS资源配置生成信道状态信息参考信号(CSI-RS)符号和索引,如TS 38.211章节7.4.1.5中定义的那样。该示例演示了如何将生成的符号映射到载波资源网格,在接收端执行信道估计,并将估计的信道与实际信道进行比较。

介绍

CSI-RS是下行链路专用(DL)参考信号。NR标准定义了零功率(ZP)和非零功率(NZP) CSI-RSs。

用户设备(UE)流程利用NZP-CSI-RSs:

  • 用于移动性和波束管理的l1参考信号接收功率(RSRP)测量

  • DL CSI收购

  • 干涉测量

  • 时间频率跟踪

ZP-CSI-RS用于DL CSI采集和干扰测量。它还掩盖了某些资源元素(REs),使它们无法用于PDSCH传输。正如名称ZP所表明的,在这些REs中没有传输任何内容。

这个例子展示了如何使用CSI- rs进行信道估计,信道估计是CSI采集的基础。

初始化配置对象

创建一个载波配置对象,表示一个5mhz载波,子载波间距为15khz。

载体= nrCarrierConfig;母舰。NSizeGrid = 25;母舰。SubcarrierSpacing = 15;母舰。NSlot = 1;母舰。NFrame = 0
carrier = nrCarrierConfig with properties: NCellID: 1 SubcarrierSpacing: 15 CyclicPrefix: 'normal' NSizeGrid: 25 NStartGrid: 0 NSlot: 1 NFrame: 0 Read-only properties: SymbolsPerSlot: 14 SlotsPerSubframe: 1 SlotsPerFrame: 10

创建一个CSI-RS配置对象,表示两个CSI-RS资源,行号为3的NZP和行号为5的ZP。

csir = nrCSIRSConfig;csir。CSIRSType = {“nzp”“zp”};csir。csiperperiod = {[5 1],[5 1]};csir。密度= {“一个”“一个”};csirs.rownumber = [3 5];csirs.symbollocations = {1,6};csirs.subcarrierlocations = {6,4};csirs.numrb = 25.
csirs = nrCSIRSConfig with properties: csistype: {'nzp' 'zp'} csiperiod: {[5 1] [5 1]} RowNumber: [3 5] Density: {'one' ' 'one'} SymbolLocations: {[1] [6]} SubcarrierLocations: {[6] [4]} NumRB: 25 RBOffset: 0 NID: 0 Read-only properties: numcsiports: [2 4] CDMType: {'FD-CDM2' 'FD-CDM2'}

考虑CSI-RS在dB中的功率缩放。

powerCSIRS = 0;disp ([“CSI-RS功率缩放:”num2str (powerCSIRS)“数据库”]);
CSI-RS功率缩放:0db

生成CSI-RS符号和索引

为指定的载波和CSI-RS配置参数生成CSI-RS符号。应用电力缩放。

sym = nrcsirs(承运人,csirs);csirssym = sym * db2mag(powercsirs);

的变量csirsSym是包含CSI-RS符号的列向量。

为指定的载波和配置参数生成CSI-RS索引。

csir csirsInd = nrCSIRSIndices(载体);

的变量csirsInd列向量的大小是否相同csirsSym

当配置ZP和NZP资源时,ZP信号的生成优先于NZP信号的生成。

初始化载体网格

为一个插槽初始化载波资源网格。

港口= max (csirs.NumCSIRSPorts);%天线端口数txGrid = nrResourceGrid(承运人、港口);

将CSI-RS符号映射到载波网格上

执行资源元素映射。

txGrid (csirsInd) = csirsSym;

在网格中绘制CSI-RS(包括ZP和NZP)的位置。

plotGrid(大小(txGrid)、csirsInd csirsSym);

图中包含一个坐标轴。标题为Carrier Grid Containing CSI-RS的轴包含3个类型为image, line的对象。这些对象代表NZP CSI-RS, ZP CSI-RS。

执行OFDM调制

进行OFDM调制以产生时域波形。

[txWaveform, ofdmInfo] = nrOFDMModulate(载体,txGrid);

通过通道传递时间域波形并添加AWGN噪声

配置接收天线数。

R = 4;

配置通道。

频道= nrTDLChannel;通道。NumTransmitAntennas =港口;通道。NumReceiveAntennas = R;通道。DelayProfile =“TDL-C”;通道。MaximumDopplerShift = 10;通道。DelaySpread = 1 e-8
numtransmitantenna: 4 numreceiveantenna: 4 NormalizePathGains: true InitialTime: 0 NumSinusoids: 48 RandomStream:“mt19937ar with seed”seed: 73 NormalizeChannelOutputs: true transmitandreceiveswap: false

根据配置的信道,在传输波形上加0,以考虑信道延迟。

chInfo =信息(渠道);maxChDelay = ceil(max(chInfo.PathDelays*channel.SampleRate)) + chInfo.ChannelFilterDelay;txWaveform = [txWaveform;0 (maxChDelay、尺寸(txWaveform 2)));

通过通道传递波形。

[rxWaveform, pathGains] =通道(txWaveform);

以产生实际的传播信道H_actual,进行完美的信道估计。

pathfilters = getpathfilters(频道);h_actual = nrperfectChanneLestimate(承运人,携带,Pathgains,Pathfilters);

在波形中加入AWGN噪声。

SNRdB = 50;在dB %SNR = 10 ^(SNRDB / 20);%线性值N0 = 1 /(√(2.0 * R *双(ofdmInfo.Nfft)) *信噪比);%噪声方差rng (0);噪音= N0 *复杂(randn(大小(rxWaveform)), randn(大小(rxWaveform)));rx波形= rx波形+噪声
rxWaveform =7690×4复杂0.0000  -  0.0001i -0.0001 + 0.0000i -0.0001  -  0.0000i -0.0001 + 0.0000i 0.0001  -  0.0001i -0.0000 + 0.0000i 0.0001  -  0.0000i -0.0000  -  0.0000i -0.0001 + 0.0000i 0.0001 + 0.0000i -0.0001  -  0.0000I-0.0001 + 0.0000i 0.0000  -  0.0000i 0.0000  -  0.0000i -0.0001 + 0.0001i -0.0000  -  0.0000i 0.0000 + 0.0001i 0.0001  -  0.0000i 0.0000  -  0.0000i 0.0001  -  0.0000i -0.0001 + 0.0000i -0.0000 + 0.0000i -0.0000 + 0.0000i -0.0000 + 0.0000i-0.0000 + 0.0000i 0.0001 + 0.0000i -0.0000  -  0.0001i -0.0000  -  0.0001i -0.0001  -  0.0000i -0.0000  -  0.0000i 0.0000 + 0.0001i -0.0001  -  0.0000i -0.0000 + 0.0000i -0.0000  -  0.0000i 0.0002  -0.0001i 0.0001 + 0.0001i 0.0001 + 0.0000i 0.0001 + 0.0000i 0.0001 + 0.0000i 0.0000 + 0.0000i 0.0000  -  0.0001i 0.0000  -  0.0001i⋮

使用NZP-CSI-RS进行定时同步。要估计时间偏移,请使用nrTimingEstimate并将NZP-CSI-RS作为参考。

%禁用ZP-CSI-RS资源,不用于计时和通道%的评估csir。csiperperiod = {[5 1],“关闭”};%生成参考符号并应用功率缩放refSym = db2mag (powerCSIRS) * nrCSIRS(载体,csir);生成参考索引refind = nrcsirsindices(载体,csirs);offset = nrtimingestimate(运营商,rxwaveform,refind,refsym)
抵消= 7
rxWaveform = rxWaveform(1 +抵消:最终,);

OFDM对接收的时域波形进行解调。

rxGrid = nrOFDMDemodulate(载体、rxWaveform);尺寸尺寸k-by-l-r

比较估计的信道和实际信道

使用NZP-CSI-RS进行实际的信道估计。确定CSI-RS符号csirsSym都属于相同的CDM类型。

cdmLen = [2 1];%对应CDMType = 'FD-CDM2'[H_est,据nVar] = nrChannelEstimate (refSym载体,rxGrid,精炼,“CDMLengths”, cdmLen);estSNR = -10 * log10(据nVar);disp (['估计信噪比= 'num2str (estSNR)“数据库”])
估计信噪比= 27.4577 dB

绘制第一发射天线和第一接收天线之间的估计信道和实际信道。

图;绘制估计的通道次要情节(1、2、1)显示亮度图像(abs (H_est (:,:, 1, 1)));colorbar;标题(“估计通道”)轴xy;包含(OFDM符号的);ylabel (副载波的);%绘制实际通道次要情节(1、2、2)显示亮度图像(abs (H_actual (:,:, 1, 1)));colorbar;标题(“实际通道”)轴xy;包含(OFDM符号的);ylabel (副载波的);

图中包含2个轴。标题为“估计通道”的轴1包含一个类型为image的对象。标题为“实际通道”的轴2包含一个类型为image的对象。

计算信道估计误差。

H_err = (H_est H_actual(:,:,:, 1:尺寸(H_est 4)));[minErr, maxErr] =边界(abs (H_err),“所有”);disp (['信道估计误差的绝对值在['num2str (minErr)”、“num2str (maxErr)“]”])
信道估计误差绝对值在[4.9184e-06, 0.035047]范围内

本地函数

函数plotGrid (gridSize csirsInd csirsSym)% plotGrid(GRIDSIZE, csirind, csirsym)绘制大小为GRIDSIZE的载波网格使用CSIRSIND和CSIRSSYM使用CSI-RS符号填充网格来实现%。图()cmap = colormap(gcf);chpval = {20,2};CHPSCALE = 0.25 *长度(CMAP);%的比例因子tempSym = csirsSym;temppsym (temppsym ~= 0) = chpval{1};%替换非零功率符号temppsym (temppsym == 0) = chpval{2};%替换零能量符号tempGrid =复杂(0 (gridSize));tempGrid (csirsInd) = tempSym;图像(chpscale * tempGrid (:,: 1));%与比例因子相乘以获得更好的可视化效果xy;名称= {“NZP CSI-RS”“ZP CSI-RS”};clevels = chpscale * [chpval {}):;N =长度(clevels);L =线((N), (N),“线宽”8);%生成线索引颜色地图,并将选中的颜色与线条关联起来集(L, {“颜色”}, mat2cell(提出(min (1 + clevels长度城市规划机构(cmap)),:), (1, N), 3));%根据CMAP设置颜色%创造传奇传奇(名字{:});标题(“包含CSI-RS的载波网格”)xlabel(OFDM符号的);ylabel (副载波的);结束

参考

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

另请参阅

功能

对象