主要内容

使用SRS的基于TDD交互的PDSCH MU-MIMO

本示例通过在时分双工(TDD)场景中利用通道互惠实现下行多用户多输入多输出(MU-MIMO)。该示例演示了如何使用基于每个用户传输的上行探测参考信号(SRS)的信道估计来确定物理下行共享信道(PDSCH)传输的波束形成权重,以及如何在同一时间和频率资源中为多个用户调度PDSCHs。

简介

TDD系统使用相同的频带进行上行(UL)和下行(DL)传输。无线电信道是倒数的,因为它在UL和DL方向上具有相同的特性。利用这种互易性,您可以使用UL传输获得信道估计,然后使用该信道估计计算DL传输的参数,包括波束形成。这种方法被称为基于交互的波束形成。

此示例通过基于多个用户的SRS传输计算通道估计实现下行MU-MIMO。假设互易性,该示例然后使用这些信道估计来选择一组计划进行PDSCH传输的用户,并计算PDSCH传输到这些用户的DL波束形成权重。当基站有足够数量的天线时,可以在相同的时间和频率资源下对一组用户进行波束式PDSCH传输,使用户之间的相互干扰很小。

本例为特殊槽的UL部分的所有终端调度SRS传输,为DL槽和特殊槽的DL部分的用户选择算法选择的终端调度PDSCH传输。

TDDReciprocityBasedBeamforming.png

该示例提供了一种MU-MIMO预编码算法的选择,并允许配置在同一时间和频率资源中调度的层数。最后,该示例度量相对于单层用户的整体单元的容量,表明该容量高于调度单个用户所能实现的容量。

仿真假设

该示例使用了这些假设。

  • SRS配置允许最多16个终端进行调度。

  • 分配给给定UE的层数是随机的(1、2或4),并且在模拟的持续时间内是固定的。

  • SRS天线端口的数量等于分配的层数。

  • SRS天线端口的数量等于物理天线的数量,即SRS端口对更大的物理天线集没有空间过滤。

  • UE发射天线数等于SRS天线端口数,即采用全通道探测。

  • 预编码资源块组(PRG)束大小对于所有终端都是相同的。

  • PDSCH不被安排在第一个特殊槽位之前的第一帧的下行链路槽位中,因为还没有可用的通道估计。

  • 解调参考信号(DM-RS)配置类型为类型1,DM-RS长度为2,即可调度8个正交DM-RS端口。为了调度更多用户,该示例通过改变置乱标识来使用非正交DM-RSs。

  • 不支持HARQ。

  • 根据TS 38.213第8节和第4.2节所述的初始采集和传输定时调整程序,将所有终端同步到循环前缀长度内[1].周期前缀长度内的定时偏移表现为频域的相移,并由信道估计和均衡补偿。

  • 由于衰落,所有终端都以相等的功率接收到平均跨信道变化。

仿真参数

在所有用户的信噪比相同的情况下,指定终端的数量、要模拟的帧数以及下行和上行链路的信噪比。有关本示例使用的信噪比定义的解释,请参见链路模拟中使用的信噪比定义

numUEs = 12;%由基站服务的终端总数numFrames = 1;要模拟的总帧数SNRdBDL = 25;% dB中的下行信噪比SNRdBUL = 20;% dB中上行信噪比

基站配置

载波配置

设置载波参数,在30 kHz子载波间距下指定51个资源块,对应20 MHz的信道带宽。

载体= nrCarrierConfig;母舰。N大小Grid = 51; carrier.SubcarrierSpacing = 30;

TDD的配置

本例考虑了一个TDD配置,它由若干下行槽位(D)、一个特殊槽位(S)和若干上行槽位(U)组成。特殊槽位表示下行传输到上行传输的交换点,因此包含下行符号、空保护符号和上行符号。特殊槽位中下行或上行符号的数量可以为零。本例将SRS传输安排在特殊槽位的上行部分,将PDSCH传输安排在下行槽位和特殊槽位的下行部分。

TDDSlotStructure.png

通过指定槽类型的字符串数组表示TDD槽模式。

tddPattern = [“D”“D”“D”“D”“D”“D”“D”“S”“U”“U”];disp (“循环槽模式:“
循环槽模式:
disp (“槽”+字符串((0:长度(tddPattern) 1)”)+”:“+ tddPattern (:))
"槽位0:D" "槽位1:D" "槽位2:D" "槽位3:D" "槽位4:D" "槽位5:D" "槽位6:D" "槽位7:S" "槽位8:U" "槽位9:U"

用一个三元素向量表示特殊槽位配置,该向量指定特殊槽位中的下行符号、保护符号和上行符号的数量。

specialSlot = [6 4 4];

特殊槽配置中的符号总数必须与给定槽中的符号数相匹配母舰。SymbolsPerSlot

如果(和(specialSlot) ~ = carrier.SymbolsPerSlot)错误(['specialSlot必须包含'num2str (carrier.SymbolsPerSlot)“符号”。]);结束

天线阵列的大小

指定基站的天线阵尺寸(BS)。假设一个矩形数组。天线阵列的大小是一个矢量[M N P],在那里是行数,N列数是和吗P是天线阵列中的极化数。

bsAntSize = [2 8 2];

问题的配置

层数和天线阵列尺寸

随机选择每个UE的层数(1、2或4)。

重置随机生成器的再现性rng (“默认”);每个终端的层数numLayers = pow2(randi([0 2],[1 numUEs]))
numLayers =1×124 4 1 4 2 1 1 2 4 4 1 4

根据该表,层数决定了每个终端的天线阵列大小。

数量 问题 天线 数组 大小 1 1 1 1 2 1 1 2 4 1 2 2 各终端天线阵列尺寸与层数关系表。

每个终端在矩形阵列中的行、列和极化的百分比ueAntSizes = 1 + (numLayers。' > [4 2 1])
ueAntSizes =12×31 2 2 1 2 2 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 2 2 1 2

SRS配置

为每个终端配置SRS参数。所有终端的SRSs被配置为在一个特殊槽位中传输,如果没有特殊槽位(或者它不包含上行符号)则在上行槽位中传输。该示例通过使用不同的OFDM符号号实现SRSs的时分复用(TDM),并通过使用不同的梳偏量实现频分复用(FDM)。对于每个终端,SRS端口的数量配置为与该终端的层数相等。

srs = hMultiUserSRS (tddPattern specialSlot,载体,numLayers);

有关SRS参数化的更多信息,请参见NR SRS配置的例子。

PDSCH和DL-SCH配置

为每个终端配置PDSCH和DL-SCH参数。

  • 速率3/4编码和64点正交调幅(64-QAM)

  • DM-RS配置类型1和DM-RS长度2,提供8个正交DM-RS端口,见TS 38.211表7.4.1.1.2-1 [5

  • PRG束尺寸为2,见TS 38.214章节5.1.2.3 [6

为每个终端配置合适的层数,并将RNTI设置为终端号(1……numUEs).

PDSCHs = hMultiUserPDSCH (numLayers);

方法可以在用户选择过程中为每次传输配置进一步的PDSCH参数hMultiUserSelection函数。

有关PDSCH参数化的更多信息,请参见NR PDSCH资源分配和DM-RS和PT-RS参考信号的例子。

算法参数

MU-MIMO预编码方法

该示例支持这些预编码方法。

  • “BD”:块对角化,如Spencer, Q.H.等人在[2].注意,该实现使用blkdiagbfweights函数。

  • “ZF”:零强迫,如皮尔,c.b.,等人在[3.].

  • “RZF”:正则化零强迫,如皮尔,c.b.等人在[3.].

配置预编码方法,用于在用户选择期间确定每个PDSCH的波束形成权重。

algParameters =结构;algParameters。PrecodingMethod =“RZF”

配置用户选择算法在每个槽位的每个PRG中调度的层数。该值是该槽位中任何给定PRG中所有用户调度的层总数。用户选择算法基于比例公平(PF)调度,分别考虑各个PRG。

algParameters。ScheduledLayers = 8;

信道估计配置

逻辑变量PerfectChannelEstimator控制信道估计行为。当你将这个变量设置为真正的,该示例对SRS和PDSCH接收使用了完美的信道估计。另外,该示例使用基于接收到的SRS和PDSCH DM-RS值的实际信道估计。

algParameters。PerfectChannelEstimator = false;

CDL信道模型

为每个终端配置传播通道模型。的hMultiUserChannels函数使用nrCDLChannel对象配置集群延迟线(CDL)通道。使用此函数创建一个具有CDL-A延迟轮廓、100 ns延迟扩展和5 Hz多普勒频移的初始信道对象。然后,该函数通过修改初始对象为每个UE配置不同的通道:

  • 为了模拟基站周围环境中不同位置的不同ue的影响,随机选择一个方位角和天顶角,然后用这些角对每个簇的出发角进行偏移。

  • 根据界面中选择的阵列尺寸配置终端阵列层数和天线阵列尺寸

  • 设置不同的值种子财产。这保证了每个终端的通道都具有独立的快速衰落。

delayProfile =“CDL-A”;delaySpread = 100 e-9;maximumDopplerShift = 5;渠道= hMultiUserChannels (delayProfile delaySpread、maximumDopplerShift bsAntSize, ueAntSizes);

要可视化CDL通道的配置,请参阅可视化CDL通道模型特征的例子。若要使用射线跟踪分析的输出来创建CDL通道模型参数,请参见带有光线追踪的CDL通道模型定制的例子。

基于交互波束形成的MU-MIMO吞吐量模拟

此图表显示了吞吐量模拟的结构。

TDDReciprocityExampleStructure.png

为SRS安排的名额:

  • UL传输:为每个UE生成SRS波形。

  • CDL渠道情况下:对于每个UE,通过信道发送波形,结合基站的信道输出,并添加噪声。

  • UL接收:对于每个终端,执行基于srs的信道和噪声估计。有关更多信息,请参见基于SRS的NR上行通道状态信息估计的例子。

  • 更新CSI:记录信道和噪声估计,以便在后续插槽中使用。

PDSCH的档期:

  • 用户选择:考虑到所有终端的最新CSI,确定哪些终端要调度PDSCH,并配置PDSCH参数(分配的RBs、波束形成、DM-RS端口、置乱标识)。

  • DL传输:对于每个UE,执行DL-SCH数据编码并生成PDSCH并向其发送波束。将波束形成的pdsch相加,形成发射信号。

  • CDL渠道情况下:通过每个终端的通道发送传输信号,并添加噪声以创建每个终端的接收波形。

  • DL接收:对于每个UE,解调接收波形,解调PDSCH和解码DL-SCH。

  • 更新数据传输:记录每个UE的传输块大小(TBS)和循环冗余校验(CRC),示例使用它们计算最终吞吐量结果。

diagnosticsOn标志控制在模拟过程中诊断信息的显示。当设置为真正的,示例显示以下信息:

  • 当前槽位号以及槽位类型(D、S、U)

  • 对于包含SRS的槽位,发送和接收SRS的终端列表

  • 对于包含PDSCH的槽位,PDSCH被调度的ue列表,分配的资源块(NPRB)的数量,每层的EVM,以及DL-SCH解码结果的CRC

建立数据传输和CSI记录dataState = setupDataTransfer(载体,numFrames numLayers);csi = setupCSI(载体,bsAntSize ueAntSizes);diagnosticsOn = true;%对于每个槽位nSlot = 0 (carrier.SlotsPerFrame * numFrames): 1%更新槽位号母舰。NSlot = nSlot;%显示槽位编号和类型(如果启用了诊断)如果(diagnosticsOn) disp (“槽”字符串(carrier.NSlot) + +”:“+ tddPattern (mod (carrier.NSlot元素个数(tddPattern)) + 1));结束为数据传输安排终端(时间表,PDSCHs) = hMultiUserSelection (csi, tddPattern specialSlot,载体,PDSCHs, bsAntSize, algParameters);% PDSCH传输为所有终端计划的数据[txDL, txSymbols singleLayerTBS] = hMultiDLTransmit(载体,PDSCHs (schedule.PDSCH) bsAntSize);% SRS传输的所有终端计划为SRS[txUL时间表。SRS] = hMultiULTransmit(载体,SRS);%应用衰落通道(通道、rxDL rxUL) = hApplyMultiUserChannels (tddPattern specialSlot,载体,时间表,渠道,txDL, txUL);%应用情况rxDL = hApplyMultiUserAWGN(载体,rxDL、SNRdBDL CombineWaveforms = false);rxUL = hApplyMultiUserAWGN(载体,rxUL、SNRdBUL CombineWaveforms = true);对于所有计划用于SRS的ue,估计CSI并记录[H,据nVar] = hMultiULReceive(载体,srs (schedule.SRS) rxUL, algParameters);csi = updateCSI (csi,载体,schedule.SRS, H,据nVar);对所有预定的终端进行PDSCH接收并记录结果[TBS, CRC, eqSymbols] = hMultiDLReceive(载体,PDSCHs (schedule.PDSCH) rxDL, algParameters);dataState = updateDataTransfer (dataState载体、singleLayerTBS schedule.PDSCH, TBS, CRC);%显示预定的SRSs和PDSCH、PDSCH EVM和DL-SCH CRC(如果启用了诊断)如果(diagnosticsOn) displayDiagnostics(时间表,PDSCHs, txSymbols eqSymbols, CRC);结束结束
Slot 0: D Slot 1: D Slot 2: D Slot 3: D Slot 4: D Slot 5: D Slot 6: D Slot 7: S
SRS传输
槽位8:U槽位9:U槽位10:D
Pdsch: 12 3 4 5 6 7 8 9 10 11 12 nprb: 7 8 43 6 43 41 24 10 8 6 30 6 evm: 19 5 5 4 2 6 6 14 11 8 7 11 14 5 5 3 8 8 6 9 12 5 13 7 6 6 15 5 8 6 6 8 crc: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
槽11:D
Pdsch: 12 3 4 5 6 7 8 9 10 11 12 nprb: 7 8 43 6 43 41 24 10 8 6 30 6 evm: 19 5 5 4 2 6 6 15 11 8 7 11 15 5 5 3 8 7 8 13 7 6 7 15 6 8 6 6 8 crc: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
槽12:D
Pdsch: 12 3 4 5 6 7 8 9 10 11 12 nprb: 7 8 43 6 43 41 24 10 8 6 30 6 evm: 19 5 5 4 2 6 6 14 10 8 7 11 15 5 5 3 8 7 6 9 11 5 13 7 6 7 15 5 8 6 6 6 8 crc: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
插槽13:D
Pdsch: 12 3 4 5 6 7 8 9 10 11 12 nprb: 7 8 43 6 43 41 24 10 8 6 30 6 evm: 18 5 5 4 2 6 6 13 10 7 7 11 15 5 5 3 9 7 5 9 11 5 13 7 6 6 14 5 8 6 6 7 crc: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
槽14:D
Pdsch: 12 3 4 5 6 7 8 9 10 11 12 nprb: 7 8 43 6 43 41 24 10 8 6 30 6 evm: 17 5 5 4 2 6 6 14 11 8 8 12 13 5 5 3 9 7 5 5 9 11 5 13 7 6 7 14 5 8 6 6 8 crc: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
槽15:D
Pdsch: 12 3 4 5 6 7 8 9 10 11 12 nprb: 7 8 43 6 43 41 24 10 8 6 30 6 evm: 16 6 5 4 2 6 6 14 11 7 8 12 13 5 5 3 9 7 5 8 11 5 13 7 6 7 14 5 7 6 6 6 8 crc: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
槽16:D
Pdsch: 12 3 4 5 6 7 8 9 10 11 12 nprb: 7 8 43 6 43 41 24 10 8 6 30 6 evm: 18 5 6 6 4 2 6 6 13 10 8 9 12 14 5 5 3 3 7 7 5 8 8 11 5 13 7 6 7 15 5 8 6 6 8 crc: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
槽17:年代
PDSCH: 12 3 4 5 6 7 8 9 10 11 12 NPRB: 7 8 43 6 43 41 24 10 8 6 30 6 EVM: 17 6 6 6 4 2 6 6 13 11 7 9 13 14 5 5 3 10 7 5 9 11 5 13 7 6 8 14 6 8 6 6 9 CRC: 0 0 0 0 0 0 0 0 0 0 0 SRS传输
槽位18:U槽位19:U

吞吐量结果

显示吞吐量结果的汇总表,其中显示每个用户的块错误率(BLER)和总比特吞吐量。

结果= summarizeResults (dataState);disp(结果);
用户BLER吞吐量(bits) _________ _________________ 1 0.625 42880 2 0 1.5391e+05 30 2.064e+05 4 0 1.1462e+05 5 0 4.1301e+05 6 0 1.9539e+05 7 0 1.1462e+05 80 95800 9 0 1.5391e+05 10 0 1.1462e+05 11 0 1.4278e+05 12 0 1.1462e+05

显示所有用户的总吞吐量。

totalThroughput =总和(结果。(“吞吐量(比特)”));dataRate = totalThroughput / (numFrames * 0.01) / 1e6;disp ([“所有用户的总吞吐量:”num2str (dataRate' % 0.3 f '“Mbps”]);
所有用户的总吞吐量:186.254 Mbps

显示所有用户的平均BLER。

disp ([“所有用户的平均BLER:”num2str(意思是结果。提单,“omitnan”),' % 0.3 f ')));
所有用户的平均BLER: 0.052

显示单个用户在整个运营商带宽中分配的相对容量。最大可能的容量等于计划的层数,由algParameters。ScheduledLayers

singleLayerThroughput =总和(dataState(1)。SingleLayerTBS,“omitnan”);capacity = totalThroughput / singleLayerThroughput;disp ([“相对于单层用户的容量:”num2str(能力,' % 0.2 f '“x”]);
相对于单层用户的容量:7.75x

容量超过了为终端配置的层数(最大4层,平均2.6层),表明与单用户传输相比,MU-MIMO调度和预编码可以成功地增加单元容量。

参考文献

1.3 gpp TS 38.213。“NR;物理层程序控制。”第三代伙伴关系项目;技术规范组无线电接入网。

2.斯宾塞,q。h。等人。多用户MIMO信道中下行空间复用的零强迫方法。IEEE信号处理汇刊2004年2月,第52卷第2期,第461-471页。

3.皮尔,c.b.,等人。近容量多天线多用户通信的矢量摄动技术——第一部分:信道反演和正则化。IEEE信号处理汇刊2005年2月,第53卷第1期,195-202页。

4.3 gpp TS 38.101 - 4。“NR;用户设备(UE)无线电传输和接收;第四部分:性能要求。”第三代伙伴关系项目;技术规范组无线电接入网

5.3 gpp TS 38.211。“NR;物理通道和调制。”第三代伙伴关系项目;技术规范组无线电接入网。

6.3 gpp TS 38.214。“NR;数据的物理层程序。”第三代伙伴关系项目;技术规范组无线电接入网。

本地函数

函数csi = setupCSI(载体,bsAntSize ueAntSizes)建立通过SRS获取的CSI记录NCRB =载体。N大小Grid + carrier.NStartGrid; numUEs = size(ueAntSizes,1); csi = repmat(struct(“H”[],据nVar”[],“NSlot”[]) 1、numUEs);P = prod (bsAntSize);ue = 1:numUEs R = prod(ue,:));csi(ue).H = NaN([NCRB 1 P R]);csi(问题)。nVar = NaN([NCRB 1 R]);csi(问题)。NSlot = NaN([NCRB 1]);结束结束函数dataState = setupDataTransfer(载体,numFrames numLayers)建立PDSCH数据传输记录nSlots =载体。SlotsPerFrame * numFrames;TBS =南(1、nSlots);CRC =南(1、nSlots);tput = 0(1、nSlots);numUEs =元素个数(numLayers);dataState = repmat(结构体(TBS的TBS,“SingleLayerTBS”TBS,“儿童权利公约”CRC,的吞吐量tput) 1、numUEs);结束函数csi = updateCSI (csi,载体,SRS, H,据nVar)%通过SRS获得的CSI更新记录ue= SRS H_ue = H{ue==SRS};nVar_ue =据nVar{问题= = SRS};idx =找到(所有(~ isnan (nVar_ue), 3));csi(问题). h (idx ,:,:,:) = H_ue (idx、::,:);csi(问题).nVar (idx,:,) = nVar_ue (idx,:,);csi(问题).NSlot (idx) = carrier.NSlot;结束结束函数dataState = updateDataTransfer (dataState载体、singleLayerTBS PDSCH, TBS, CRC)更新PDSCH数据传输记录nSlot = carrier.NSlot;ue= PDSCH TBS_ue = TBS{ue==PDSCH};CRC_ue = CRC{问题= = PDSCH};dataState(问题)。SingleLayerTBS(nSlot + 1) = SingleLayerTBS;dataState(问题)。TBS(nSlot + 1) = TBS_ue;dataState(问题)。CRC(nSlot + 1) = CRC_ue;dataState(问题)。吞吐量(nSlot + 1) = TBS_ue .* (1 - CRC_ue);结束结束函数结果= summarizeResults (dataState)模拟结果总结numUEs =元素个数(dataState);提单= 0 (numUEs, 1);吞吐量= 0 (numUEs, 1);ue = 1:numUEs CRC = dataState(ue).CRC;CRC = CRC (~ isnan (CRC));BLER(ue) = sum(CRC) / numel(CRC);吞吐量(问题)=总和(dataState(问题).Throughput);结束用户= (1:numUEs)。';结果=表(用户、提单吞吐量);results.Properties。VariableNames {3} =吞吐量(位)的结束函数displayDiagnostics(时间表,PDSCHs txSymbols eqSymbols, CRC)%显示诊断信息dispfn = @ (x, y) disp ([sprintf (% 5年代:, x) sprintf (' % 2 d ', y)]);如果(~isempty(schedule.PDSCH)) numUEs = numel(schedule.PDSCH);maxLayers = 4;维生素与=南(maxLayers numUEs);numUEs NPRB = 0 (1);i = 1:numUEs ue = schedule.PDSCH(i);pdsch = PDSCHs config(问题);NPRB (i) =元素个数(pdsch.PRBSet);维生素与= comm.EVM;维生素与挣值管理(1:pdsch.NumLayers, i) =都(txSymbols {}, eqSymbols{我});结束dispfn (“PDSCH”, schedule.PDSCH);dispfn (“NPRB”, NPRB);evmlabel =的维生素:我= 1:maxLayers如果(> 1) evmlabel: =' '结束如果(~ (isnan(维生素(我,:))))disp ([evmlabel strrep (sprintf (' % 2 d '轮(维生素(我,:))),“南”' ')));结束结束dispfn (“儿童权利公约”, (CRC {:}));结束如果(~ isempty (schedule.SRS) disp (“SRS传播”);结束结束

另请参阅

功能

对象

相关的话题

Baidu
map