主要内容

发布12下行载波聚合波形的产生、解调和分析

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

介绍

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

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

组件运营商数量和带宽

一个向量NDLRB指定每个组件载体(CC)的资源块(RBs)的数量。这个向量的长度相当于CCs的数量。的元素NDLRB必须在集合{6,15,25,50,75,100}RBs中。表5.6A。1 - 1 (1]列出用于载波聚合的有效带宽组合。

%配置NDLRB值的集合来描述运营商%聚合NDLRB = [50 75 100];%建立组件运营商数量numCC =元素个数(NDLRB);如果numCC < 2错误(“请指定多个CC带宽值。”);结束

组件载波配置

使用lteRMCDL.所有CCs的配置结构存储在一个cell array中。

%配置要生成的子帧数numSubframes = 10;% CC配置enb =细胞(1、numCC);我= 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 =结构;%信道估计配置结构cec。PilotAverage =“UserDefined”导频符号平均值的类型cec。FreqWindow = 15;频率窗口大小cec。TimeWindow = 15;%时间窗口大小cec。InterpType =“立方”二维插值型cec。InterpWindow =“中心”插值窗口类型cec。InterpWinSize = 1;插值窗口大小

载波聚合参数计算

要执行载波聚合,请使用TS 36.101第5.6节和5.7节中描述的频率参数[1)计算。这些参数总结如下图所示。

这就产生了三个变量:

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

  • ccSpacing包含CC之间的间隔(以MHz为单位)

  • BW_channel_CA是所有CCs的聚合通道带宽

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

%为额定保护频带和频率定义MHz中的Delta_f1参数%偏移量的计算。在下行链路中,Delta_f1是子载波间距% (TS 36.101,表5.6A-1)Delta_f1 = 0.015;% (MHz), LTE子载波间隔(MHz)maxBW = hNRBToBandwidth (max (NDLRB));numCC F_c = 0 (1);numCC-1 ccSpacing = 0 (1);% CC间距计算公称保护带,TS 36.101 5.6A-1nominalGuardBand = 0.05 * maxbw - 0.5 * Delta_f1;%最初假设基带的载波频率较低F_c (1) = 0;%计算CC间距和载波值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 + nomalguardband;F_offset_high = (0.18*NDLRB(end)+Delta_f1)/2 + nomalguardband;%计算低频和高频边缘,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: f % 0.4 MHz \ n”, BW_channel_CA);计算移动到中心基带shiftToCenter = -1*(BW_channel_CA/2 + F_edge_low);以基带为中心的聚合带宽F_c = F_c + shift;F_edge_low = F_c(1) - F_offset_low;F_edge_high = F_c(end) + F_offset_high;%显示频带边缘流(“F_edge_low: f % 0.4 MHz \ n”, F_edge_low);流(“F_edge_high: f % 0.4 MHz \ n”, F_edge_high);流(“F_offset_low: f % 0.4 MHz \ n”, F_offset_low);流(“F_offset_high: f % 0.4 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;%计算元件携带者的抽样率numCC CCSR = 0 (1);i = 1:numCC info = lteOFDMInfo(enb{i});CCSR (i) = info.SamplingRate;结束%计算聚合信号的总体采样率计算过采样比率(最大BW CC),以确保%信号占用总带宽的85% (bwfraction)OSR = (BW_channel_CA / bwfraction) / (max (CCSR) / 1 e6);为了简化重采样操作,选择一个过采样比%是2的幂:计算OSR以上2的下一个幂OSR = 2 ^装天花板(log2 (OSR));SR = OSR *马克斯(CCSR);流('\nOutput采样率:%0.4f Ms/s\n\n'1、SR / e6);%计算组件载体的单个过采样因子老osr = / CCSR;
输出采样率:61.4400 Ms/s

波形产生和载波聚合

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

生成组件载波tx =细胞(1、numCC);i = 1:numCC tx{i} = lteRMCDLTool(enb{i},randi([0 1],1000,1));tx{我}=重新取样(tx {}, osr(我),1)/ osr(我);结束%聚合所有cc.com . com . multibandcombiner应用频率偏移%并将得到的信号相加。sigAggregator = comm.MultibandCombiner(InputSampleRate = SR,...e6 FrequencyOffsets = F_c * 1,...OutputSampleRateSource =“属性”...OutputSampleRate = SR);波形= sigAggregator ((tx {:}));

绘制载波聚合波形谱

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

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

感兴趣的CC的解调与滤波

本节对其中一个CCs进行解调、滤波和下采样。步骤如下:

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

  • 过滤掉相邻的CCs和下采样。设计了一种合适的滤光器来去除下采样过程中不需要的相邻碳源。滤波器的设计将对恢复信号的质量和EVM产生影响。滤波器可能需要调整不同的带宽和CC值来解调。

我们首先选择CC来解调,并设计合适的下采样滤波器。计算通频带和阻频带频率。

%选择CC解调CCofInterest = 1;如果CCofInterest > numCC ||“无法解调CC号%d,有%d CC \n”...CCofInterest numCC);结束定义下采样滤波顺序filterOrder = 201;预计算所有CC的通频带和阻频带值firPassbandVec = (0.18*NDLRB+Delta_f1)/2 / (SR/1e6/2);firStopbandVec = hCarrierAggregationStopband (ccSpacing NDLRB, SR);定义感兴趣载波的通频带和阻频带firPassband = firPassbandVec (CCofInterest);firStopband = firStopbandVec (CCofInterest);%提取并解码感兴趣的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 =重新取样(demodulatedCC 1 SRC);%更新通带和阻带以考虑第一次降采样firPassband = firPassband * SRC;firStopband = firStopband * SRC;其他的%不预滤器SRC = 1;结束%设计低通滤波器滤出感兴趣的CCfrEdges = [0 firPassband firStopband 1];firFilter = dsp.FIRFilter;firFilter。分子= firpm(filterOrder,frEdges,[1 1 0 0]);
提取CC号1:

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

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

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

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

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

rxWaveform = downsample (rxWaveform osr (CCofInterest) / SRC);

同步

同步作用于产生的信号。

%利息CC参数eNodeB = enb {CCofInterest};PDSCH = eNodeB.PDSCH;同步接收波形offset = lteDLFrameOffset(eNodeB, rx波形);rx波形= rx波形(1+偏移:结束,:);

EVM测量和PDSCH解码

下面的代码提供了每个子帧和平均EVM测量值。图与EVM与时间,资源块和子载波也显示。

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

用于EVM测量的%信道估计结构cecEVM = cec;cecEVM。PilotAverage =“TestEVM”;[evmmeas, plot] = hPDSCHEVM(enb{CCofInterest},cecEVM, rx波形);% OFDM解调rxGrid = lteOFDMDemodulate (eNodeB rxWaveform);%获取每一帧接收的子帧数和OFDM符号数= lteOFDMInfo dim (eNodeB);samplesPerSubframe = dims.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(...eNodeB、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%高维生素,子帧8:0.647%低维生素,子帧9:0.694%高维生素,子帧9:0.685%平均低维生素,帧0:0.674%平均高维生素,帧0:0.652%平均EVM帧0:0.674%平均总体EVM: 0.674%解码传输子帧并检查CRC。子帧0:CRC通过子帧1:CRC通过子帧2:CRC通过子帧3:CRC通过。子帧4:CRC通过。子帧5:CRC通过

参考书目

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