主要内容

发布12下行载波聚合波形生成,解调和分析

这个例子展示了如何使用LTE工具箱™生成、聚合和进一步解调多个下行载波。

简介

本例使用载波聚合(CA)对LTE Release 12波形建模。子载波数和子载波带宽可以作为参数指定。考虑了带内连续CA的情况。

为了生成聚合的下行波形,为每个组件运营商配置eNodeB。计算组件载波参数并用于为每个eNodeB配置生成调制波形。所有CC调制波形重新采样到一个共同的采样率,以便它们可以组合起来创建一个聚合波形。

组件载波数和带宽

一个向量NDLRB每个CC (component carrier)对应的资源块数量。这个向量的长度对应于cc的个数。的要素NDLRB必须在{6,15,25,50,75,100}RBs中。表5.6A. TS 36.1011 - 1 (1]列出有效的载波聚合带宽组合。

%配置一组NDLRB值来描述将要使用的运营商%聚合NDLRB = [50 75 100];%建立组成载波数numCC =数字(NDLRB);如果numCC < 2错误('请指定多个CC带宽值');结束

部件运营商配置

为使用的每个CC生成配置结构lteRMCDL.所有cc的配置结构都存储在单元数组中。

配置生成的子帧数numSubframes = 10;% CC配置enb = cell(1,numCC);i = 1:numCC开关NDLRB(我)情况下6 enb{i} = lteRMCDL(“R.4”);情况下15 enb{i} = lteRMCDL(“R.5”);情况下25 enb{i} = lteRMCDL(“R.6”);情况下50 enb{i} = lteRMCDL(“R.7”);情况下75 enb{i} = lteRMCDL(“R.8”);情况下100 enb{i} = lteRMCDL(“R.9”);否则流(不是有效的资源块数量:%d\n...NDLRB (i));返回结束enb{}。NDLRB= NDLRB(i); enb{i}.Bandwidth = hNRBToBandwidth(NDLRB(i)); enb{i}.TotSubframes = numSubframes; enb{i}.PDSCH.PRBSet = (0:enb{i}.NDLRB-1).'; enb{i}.PDSCH.RVSeq = 0; enb{i}.NCellID = 10;结束

信道估计器配置

接收端的信道估计器使用该结构进行参数化cec下面的定义。

Cec = struct;通道估计配置结构cec。PilotAverage =“UserDefined”导频符号平均的类型cec。FreqWindow = 15;%频率窗口大小cec。TimeWindow = 15;%时间窗口大小cec。InterpType =“立方”% 2D插值类型cec。InterpWindow =“中心”插补窗口类型cec。InterpWinSize = 1;插值窗口大小%

载波聚合参数计算

为了执行载波聚合,TS 36.101,第5.6和5.7节中描述的频率参数[1都是经过计算的。这些参数总结如下图。

这就产生了三个变量:

  • F_c是一个包含每个CC的中心频率的矢量吗

  • ccSpacing包含CC之间的间距,单位为MHz

  • BW_channel_CA所有cc的信道带宽之和是多少

在下面的代码中,我们首先计算所有cc的值,假设较低的cc位于基带(0 Hz)的中心。一旦BW_channel_CA计算时,所有的值都被移位,因此聚合带宽的中心位于基带(0 Hz)。

定义Delta_f1参数,单位为MHz,用于标称保护频带和频率%偏移计算。在下行链路中,Delta_f1是子载波间距% (TS 36.101,表5.6A-1)Delta_f1 = 0.015;% (MHz), LTE子载波间距(MHz)maxBW = hNRBToBandwidth(max(NDLRB));F_c = 0 (1,numCC);ccSpacing = 0 (1,numCC-1);% CC间距计算标称保护带,TS 36.101 5.6A-1nominalGuardBand = 0.05*maxBW-0.5*Delta_f1;最初假设基带的载频较低F_c(1) = 0;计算CC间距和载波值k = 2:numCC ccSpacing(k-1) = hCarrierAggregationChannelSpacing(...enb {k - 1}。带宽,enb {k} .Bandwidth);F_c(k) = F_c(k-1) + ccSpacing(k-1);结束计算低频和高频偏移,TS 36.101 5.6AF_offset_low = (0.18*NDLRB(1)+Delta_f1)/2 + nominalGuardBand;F_offset_high = (0.18*NDLRB(end)+Delta_f1)/2 + nominalGuardBand;计算低频边和高频边,TS 36.101 5.6AF_edge_low = F_c(1) - F_offset_low;F_edge_high = F_c(end) + F_offset_high;计算聚合信道带宽,TS 36.101 5.6ABW_channel_CA = F_edge_high - F_edge_low;流('BW_channel_CA: %0.4f MHz\n', BW_channel_CA);%计算到基带中心的偏移shiftToCenter = 1*(BW_channel_CA/2 + F_edge_low);以基带为中心的聚合带宽F_c = F_c + shiftToCenter;F_edge_low = F_c(1) - F_offset_low;F_edge_high = F_c(end) + F_offset_high;显示频带边缘流('F_edge_low: %0.4f MHz\n', F_edge_low);流('F_edge_high: %0.4f MHz\n', F_edge_high);流('F_offset_low: %0.4f MHz\n', F_offset_low);流('F_offset_high: %0.4f MHz\n', F_offset_high);显示载波频率流(' \ n ');i = 1:numCC fprintf('组件运营商%d:\n',我);流(' Fc: %0.4f MHz\n'F_c(我));结束
BW_channel_CA: 44.6000 MHz F_edge_low: -22.3000 MHz F_edge_high: 22.3000 MHz F_offset_low: 5.5000 MHz F_offset_high: 10.0000 MHz组件载波1:Fc: -16.8000 MHz组件载波2:Fc: -4.8000 MHz组件载波3:Fc: 12.3000 MHz

所需过采样率计算

每个分量载波所需的过采样因子osr为聚合信号的公共采样率计算。

带宽利用率85%Bwfraction = 0.85;计算各组成载波的采样率CCSR = 0 (1,numCC);i = 1:numCC info = lteOFDMInfo(enb{i});CCSR(i) = info.SamplingRate;结束计算聚合信号的总体采样率计算过采样比(对于最大的BW CC),以确保信号占总带宽的85% (bwfraction)OSR = (BW_channel_CA/bwfraction)/(max(CCSR)/1e6);为简化重采样操作,选择一个过采样比%是2的幂:计算OSR以上2的下一个幂OSR = 2^ceil(log2(OSR));SR = OSR*max(CCSR);流(\nOutput采样率:%0.4f Ms/s\n\n'1、SR / e6);%计算各组成载波的个别过采样因子OSRs = SR./CCSR;
输出采样率:61.4400 Ms/s

波形生成和载波聚合

lteRMCDLTool用于生成每个CC的波形。每个CC都被重新采样到一个共同的采样率。最后,多波段组合器用于频率调制每个CC到适当的中心频率,并将它们加在一起形成聚合信号。

%生成组件载波tx = cell(1,numCC);i = 1:numCC tx{i} = lteRMCDLTool(enb{i},randi([0 1],1000,1));tx{i} = resample(tx{i},OSRs(i),1)/OSRs(i);结束聚合所有CC. com . multibandcombiner应用频率偏移%并将结果信号相加。sigAggregator = com . multibandcombiner (InputSampleRate = SR,...frequencyoffset = F_c*1e6,...OutputSampleRateSource =“属性”...OutputSampleRate = SR);波形= sigAggregator([tx{:}]);

图载波聚合波形频谱

表示载波聚合信号的功率谱hPlotSpectrum.m.在频谱中,单个载波带宽是可见的。请注意,聚合带宽的中心位于基带(0 Hz),即在本例中,信号没有调制到RF。

specPlot = hPlotSpectrum(波形,SR,...“载波聚合功率谱”, {信号频谱的});

感兴趣CC的解调与滤波

本节解调、滤波和下采样一个cc。以下步骤是:

  • 解调感兴趣的CC并将其带到基带(0 Hz)。

  • 过滤掉邻近的cc并进行下采样。设计一个合适的滤波器来去除下采样过程中不需要的相邻cc。滤波器的设计直接影响信号的质量和EVM。为了解调,滤波器可能需要针对不同的带宽和CC值进行调整。

我们从选择CC解调和设计适当的下采样滤波器开始。计算通带和阻带频率。

选择CC解调ccoffinterest = 1;如果CCofInterest > numCC || CCofInterest <= 0 error(无法解调CC数%d,有%d个CC \n...ccoffinterest, numCC);结束定义下采样滤波器顺序filterOrder = 201;预先计算所有CC的通带和阻带值firPassbandVec = (0.18*NDLRB+Delta_f1)/2 / (SR/1e6/2);firStopbandVec = hCarrierAggregationStopband(ccSpacing,NDLRB,SR);为感兴趣的载波定义通带和阻带firPassband = firPassbandVec(ccoffinterest);firStopband = firStopbandVec(ccoffinterest);提取并解码感兴趣的CC流(1,提取CC数%d: \n, CCofInterest);%垫信号与零,以考虑滤波器的瞬态响应%的长度波形=[波形;0 (filterOrder + 1、大小(波形,2)));解调感兴趣的载波demodulatedCC =...hCarrierAggregationModulate(波形、SR、-F_c (CCofInterest) * 1 e6);如果过滤器太窄,则下采样分为两个阶段。这%降低了过滤器的设计要求。如果是这样,首字母采用% 4的降采样因子。你可以考虑换一种滤光片的设计在这一初始阶段如果产生质量问题。%信号不可接受。如果(firStopband < 0.1)%下样4SRC = 4;demodulatedCC = resample(demodulatedCC,1,SRC);%更新通度和阻带,将第一次下采样考虑在内firPassband * SRC;first stopband = first stopband * SRC;其他的%无预过滤SRC = 1;结束设计低通滤波器过滤掉感兴趣的CCfrEdges = [0 firPassband firStopband 1];firFilter = dsp.FIRFilter;firFilter。分子= firpm(filterOrder,frEdges,[1 1 0 0]);
提取CC编号1:

显示了所设计滤波器的响应。

fvtool (firFilter“分析”“频率”);

然后对解调波形进行滤波以提取感兴趣的CC。绘制了滤波前后解调波形的频谱图。

过滤信号以提取感兴趣的成分rx波形= firFilter(demodulatedCC);绘制解调和滤波后的信号频谱filteredSpecPlot =...hPlotSpectrum ([demodulatedCC rxWaveform],老...“解调滤波波形功率谱”...“载波聚合信号”“过滤信号”});

此时,滤波后的波形可以向下采样到基带速率。

rx波形= downsample(rx波形,OSRs(CCofInterest)/SRC);

同步

同步应用于产生的信号。

感兴趣的CC的参数eNodeB = enb{CCofInterest};PDSCH = eNodeB.PDSCH;同步接收波形offset = lteDLFrameOffset(eNodeB, rx波形);rx波形= rx波形(1+offset:end,:);

EVM测量和PDSCH解码

下面的代码提供了每个子帧和平均EVM测量值。还显示了EVM随时间、资源块和子载波的变化图。

对恢复信号的PDSCH进行解码,并检查产生的CRC是否有错误。

用于EVM测量的%信道估计结构cecEVM = cec;cecEVM。PilotAverage =“TestEVM”;[evmmeas, plots] = hPDSCHEVM(enb{CCofInterest},cecEVM, rx波形);% OFDM解调rxGrid = lteOFDMDemodulate(eNodeB, rx波形);获取接收到的子帧数和每个子帧的OFDM符号dims = lteOFDMInfo(eNodeB);samplesPerSubframe = dim . samplingrate /1000;nRxSubframes = floor(size(rx波形,1)/samplesPerSubframe);eNodeB。TotSubframes = 1;resGridSize = lteResourceGridSize(eNodeB);L = resGridSize(2);disp (解码传输的子帧并检查CRC);n = 0: nRxSubframes-1%提取子帧rxSubframe = rxGrid(:,(1:L)+(n*L),:);%当前子帧的传输块大小eNodeB。NSubframe = n;trBlkSize = PDSCH.TrBlkSizes(n+1);%信道估计[estChannelGrid, noiseEst] = lteDLChannelEstimate(...endeb, cec, rxSubframe);%执行解编码,层反映射,解调和解扰%的接收数据使用通道估计[rxEncodedBits, pdschsymbols] = ltePDSCHDecode(eNodeB,PDSCH,...rxSubframe * (10 ^ (-PDSCH.Rho / 20)), estChannelGrid,噪音);解码下行链路共享信道(DL-SCH)(decbits, crc) =...lteDLSCHDecode (eNodeB PDSCH、trBlkSize rxEncodedBits {1});如果crc disp ([“子帧”num2str (n)': CRC失败']);其他的disp ([“子帧”num2str (n)': CRC通过']);结束结束
低维生素,子帧0:0.647%高维生素,子帧0:0.629%低维生素,子帧1:0.682%高维生素,子帧1:0.650%低维生素,子帧2:0.680%高维生素,子帧2:0.676%低维生素,子帧3:0.676%高维生素,子帧3:0.641%低维生素,子帧4:0.640%高维生素,子帧4:0.648%低维生素,子帧6:0.698%高维生素,子帧6:0.642%低维生素,子帧7:0.645%高维生素,子帧7:0.649%低维生素,子帧8:0.700%高边缘EVM,子帧8:0.647%低边缘EVM,子帧9:0.694%高边缘EVM,子帧9:0.685%平均低边缘EVM,帧0:0.674%平均高边缘EVM,帧0:0.652%平均EVM帧0:0.674%平均总体EVM: 0.674%解码传输子帧和检查CRC。子帧0:CRC通过子帧1:CRC通过子帧2:CRC通过子帧3:CRC通过子帧4:CRC通过子帧5:CRC通过子帧6:CRC通过子帧7:CRC通过子帧8:CRC通过子帧9:CRC通过

参考书目

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

Baidu
map