MATLABLTE⼯具箱详解(1)
波形⽣成(Wave Generation)
MATLAB⼯具箱可以⽣成符合标准的 LTE、LTE-Advanced 和 LTE-Advanced Pro 波形。 配置和创建各种下⾏链路、上⾏链路以及信道和信号。
tool工具箱⾸先我们使⽤下⾏链路传输和物理信道的 LTE 波形建模
此⽰例说明如何为⼀个⼦帧⽣成包含物理下⾏链路共享信道 (PDSCH)、相应的物理下⾏链路控制信道 (PDCCH) 传输和物理控制格式指⽰符信道 (PCFICH) 的时域波形。
此⽰例演⽰如何使⽤ LTE Toolbox™ 中的功能为 6 个资源块、4 个天线发射分集⽣成完整的下⾏链路共享信道 (DL-SCH) 传输。 对以下物理通道进⾏建模:
物理下⾏共享信道 (PDSCH)
物理下⾏链路控制信道 (PDCCH)
物理下⾏链路控制格式指⽰符信道 (PCFICH)
此⽰例为所有 4 个天线端⼝⽣成时域(后 OFDM 调制)。 在此⽰例中考虑单个⼦帧(编号 0)。
注意:⽣成 RMC 波形的推荐⽅法是使⽤ lteRMCDLTool,此⽰例展⽰了如何通过创建和组合单个物理通道来构建波形,就像在 LTE 系统中发⽣的那样。
⼩区范围设置
eNodeB() 设置配置结构。
enb.NDLRB = 6;                % No of Downlink Resource Blocks(DL-RB)
enb.CyclicPrefix = 'Normal';  % CP length
enb.PHICHDuration = 'Normal'; % Normal PHICH duration
enb.DuplexMode = 'FDD';      % FDD duplex mode
enb.CFI = 3;                  % 4 PDCCH symbols
enb.Ng = 'Sixth';            % HICH groups
enb.CellRefP = 4;            % 4-antenna ports
enb.NCellID = 10;            % Cell id
enb.NSubframe = 0;            % Subframe number 0
⼦帧资源⽹格⽣成
使⽤ lteDLResourceGrid 可以轻松创建资源⽹格。 这为⼀个⼦帧创建了⼀个空的资源⽹格。 ⼦帧是⼀个 3 维矩阵。 ⾏数表⽰可⽤⼦载波的数量,这等于 12*enb.NDLRB,因为每个资源块有 12 个⼦载波。 列数等于⼦帧中 OFDM 符号的数量,即 7*2,因为对于普通循环前缀,每个时隙有 7 个 OFDM 符号,并且⼦帧中有 2 个时隙。 ⼦帧中的平⾯(第 3 维)数为 4,对应于 enb.CellRefP 中指定的 4 个天线端⼝。
subframe = lteDLResourceGrid(enb);
DL-SCH 和 PDSCH 设置
DL-SCH 和 PDSCH 使⽤结构 pdsch 配置。 此处的设置使⽤ QPSK 调制配置 4 天线发射分集。
pdsch.NLayers = 4;                      % No of layers
pdsch.TxScheme = 'TxDiversity';          % Transmission scheme
pdsch.Modulation = 'QPSK';              % Modulation scheme
pdsch.RNTI = 1;                          % 16-bit UE-specific mask
pdsch.RV = 0;                            % Redundancy Version
PDSCH映射索引⽣成
使⽤ ltePDSCHIndices ⽣成将 PDSCH 复符号映射到⼦帧资源⽹格的索引。此功能所需的参数包括 enb 中的⼀些⼩区范围设置、信道传输配置 pdsch 和物理资源块 (PRB)。后者指⽰⽤于传输PDSCH的资源分配。在本⽰例中,我们假设所有资源块都分配给 PDSCH。这是使⽤列向量指定的,如下所⽰。
由于 MATLAB® 使⽤基于 1 的索引,因此这些索引被设为“基于 1”以直接映射到资源⽹格上。在这种情况下,我们假设⼦帧中的两个时隙共享相同的资源分配。通过指定⼀个两列矩阵作为分配,可以为每个时隙分配不同的分配,其中每⼀列将指代⼦帧中的每个时隙。
结果矩阵 pdschIndices 有 4 列,每列包含⼀组线性样式的索引,指向每个天线端⼝中要⽤于 PDSCH 的资源元素。请注意,该函数返回避免分配给参考信号、控制区域、⼴播信道和同步信号的资源元素的索引。
⽣成的索引以 MATLAB 使⽤的 1-base 格式表⽰,但可以使⽤选项 '0based' ⽽不是 '1based' 将其设为标准特定的 0-based。如果未指定此选项,则默认为基于 1 的索引⽣成。
DL-SCH 传输的编码块⼤⼩可以通过 ltePDSCHIndices 函数计算。 ltePDSCHIndices 返回⼀个信息结构作为其第⼆个输出(pdschInfo),其中包含参数 G,该参数指定编码和速率匹配的 DL-SCH 数据⽐特数以满⾜物理 PDSCH 容量。该值随后将⽤于参数化
DL-SCH 信道编码。
pdsch.PRBSet = (0:enb.NDLRB-1).';  % Subframe resource allocation
[pdschIndices,pdschInfo] = ...
ltePDSCHIndices(enb, pdsch, pdsch.PRBSet, {'1based'});
DL-SCH 信道编码
我们现在⽣成 DL-SCH ⽐特并应⽤信道编码。 这包括 CRC 计算、码块分段和 CRC 插⼊、turbo 编码、速率匹配和码块级联。 它可以使⽤ lteDLSCH 来执⾏。
根据 TS36.101 附件 A.2.1.2 [1]“有效载荷⼤⼩的确定”中的规则选择 DL-SCH 传输块⼤⼩,⽬标码率  和每个⼦帧的⽐特数给定 通过 codedTrBlkSize。
codedTrBlkSize = pdschInfo.G;  % Available PDSCH bits
transportBlkSize = 152;                % Transport block size
dlschTransportBlk = randi([0 1], transportBlkSize, 1);
% Perform Channel Coding
codedTrBlock = lteDLSCH(enb, pdsch, codedTrBlkSize, ...
dlschTransportBlk);
PDSCH 复数符号⽣成
以下操作应⽤于编码传输块以⽣成物理下⾏链路共享信道复合符号:加扰、调制、层映射和预编码。 这可以使⽤ ltePDSCH 来实现。 除了在 enb 中指定的⼀些⼩区范围设置之外,此功能还需要与调制和信道传输配置 pdsch 相关的其他参数。 ⽣成的矩阵 pdschSymbols 有 4列。 每列包含映射到每个天线端⼝的复杂符号。
pdschSymbols = ltePDSCH(enb, pdsch, codedTrBlock);
PDSCH映射
然后使⽤简单的分配操作将复杂的 PDSCH 符号轻松映射到每个天线端⼝的每个资源⽹格。资源⽹格中 PDSCH 符号的位置由pdschIndices 给出。
% Map PDSCH symbols on resource grid
subframe(pdschIndices) = pdschSymbols;
DCI 消息配置
下⾏链路控制信息 (DCI),传达有关 DL-SCH 资源分配、传输格式的信息以及与 DL-SCH 混合 ARQ 相关的信息。 lteDCI 可⽤于⽣成要映射到物理下⾏链路控制信道 (PDCCH) 的 DCI 消息。这些参数包括下⾏资源块 (RB) 的数量、DCI 格式和资源指⽰值 (RIV)。 26 的 RIV 对应于全带宽分配。 lteDCI 返回⼀个结构 dciMessage 和⼀个包含 DCI 消息位 dciMessageBits 的向量。两者都包含相同的信息;该结构更具可读性,⽽串⾏化的 DCI 消息是⼀种更适合发送到信道编码阶段的格式。
dci.DCIFormat = 'Format1A';  % DCI message format
dci.Allocation.RIV = 26;    % Resource indication value
[dciMessage, dciMessageBits] = lteDCI(enb, dci); % DCI message
DCI 信道编码
DCI 消息位是通道编码的。这包括以下操作:CRC 插⼊、咬尾卷积编码和速率匹配。 PDCCHFormat字段指⽰⼀个控制信道元素(CCE)⽤于传输PDCCH,其中⼀个CCE由36个有⽤的资源元素组成。
pdcch.NDLRB = enb.NDLRB;  % Number of DL-RB in total BW
pdcch.RNTI = pdsch.RNTI;  % 16-bit value number
pdcch.PDCCHFormat = 0;    % 1-CCE of aggregation level 1
% Performing DCI message bits coding to form coded DCI bits
codedDciBits = lteDCIEncode(pdcch, dciMessageBits);
PDCCH 位⽣成
控制区域的容量取决于带宽、控制格式指⽰符 (CFI)、天线端⼝数和 PHICH 组。可以使⽤ ltePDCCHInfo 计算可⽤于 PDCCH 的资源总数。这将返回⼀个结构 pdcchInfo,其中不同的字段以不同的单位表⽰ PDCCH 可⽤的资源:⽐特、CCE、资源元素 (RE) 和资源元素组(REG)。 PDCCH 区域中可⽤的⽐特总数可以在字段 pdcchInfo.MTot 中到。这使我们能够构建具有适当数量元素的向量。并⾮必须使⽤ PDCCH 区域中的所有可⽤⽐特。因此采⽤的约定是将未使⽤的位设置为 -1,⽽使⽤值为 0 或 1 的位位置。
请注意,我们已将 pdcchBits 中的所有元素初始化为 -1,表明最初所有位均未使⽤。 codedDciBits 的元素被映射到 pdcchBits 中的适当位置。
只能使⽤ pdcchBits 中所有位的⼦集,这些被称为候选位。可以使⽤ ltePDCCHSpace 计算这些指标。这将返回⼀个两列矩阵。每⾏指⽰提供的⼩区范围设置 enb 和 PDCCH 配置结构 pdcch 的可⽤候选位置。第⼀列和第⼆列分别包含每组候选的第⼀个和最后⼀个位置的索引。在这种情况下,这些索引是从 1 开始的并引⽤位,因此它们可⽤于访问 pdcchBits 中的位置。向量 pdcchBits 有 664 个元素。 72位的 codedDciBits 被映射到 pdcchBits 中选择的候选者。因此,在 664 个元素中,72 个将采⽤ 0 和 1 值,⽽其余元素保持设置为 -1。 ltePDCCH 会将这些位置解释为未使⽤,并且只会考虑那些有 1 和 0 的位置。
pdcchInfo = ltePDCCHInfo(enb);    % Get the total resources for PDCCH
pdcchBits = -1*ones(pdcchInfo.MTot, 1); % Initialized with -1
% Performing search space for UE-specific control channel candidates
candidates = ltePDCCHSpace(enb, pdcch, {'bits','1based'});
% Mapping PDCCH payload on available UE-specific candidate. In this example
% the first available candidate is used to map the coded DCI bits.
pdcchBits( candidates(1, 1) : candidates(1, 2) ) = codedDciBits;
PDCCH 复数符号⽣成
从 pdcchBits 中使⽤的⽐特集(值未设置为 -1)⽣成 PDCCH 复数符号。 需要以下操作:加扰、QPSK调制、层映射和预编码。
ltePDCCH 采⽤⼀组 PDCCH ⽐特并⽣成复值 PDCCH 符号,执⾏上述操作。 在这种情况下,pdcchSymbols 是⼀个 4 列矩阵,每个矩阵对应于每个天线端⼝。
pdcchSymbols = ltePDCCH(enb, pdcchBits);
PDCCH映射索引⽣成和资源⽹格映射
为资源⽹格上的符号映射⽣成 PDCCH 索引。 pdcchIndices 是⼀个有 4 列的矩阵,每个天线端⼝⼀列。这些⾏包含线性形式的索引,⽤于将 PDCCH 符号映射到⼦帧资源⽹格。
pdcchIndices = ltePDCCHIndices(enb, {'1based'});
% The complex PDCCH symbols are easily mapped to each of the resource grids
% for each antenna port
subframe(pdcchIndices) = pdcchSymbols;
CFI 信道编码
⼦帧中的 OFDM 符号数与控制格式指⽰符 (CFI) 值相关联。 Cell-wide settings structure enb指定CFI值为3,这意味着在6个下⾏链路资源块的情况下,4个OFDM符号⽤于控制区域。 CFI 使⽤ lteCFI 进⾏信道编码。得到的编码位集是⼀个 32 元素的向量。
cfiBits = lteCFI(enb);
PCFICH 复数符号⽣成
CFI 编码⽐特随后被加扰、QPSK 调制、映射到层并预编码以形成 PCFICH 复数符号。 pcfichSymbols 是⼀个有 4 列的矩阵,其中每⼀列包含映射到每个天线端⼝的 PCFICH 复数符号。
pcfichSymbols = ltePCFICH(enb, cfiBits);
PCFICH 指数⽣成和资源⽹格映射
使⽤适当的映射索引将 PCFICH 复符号映射到⼦帧资源⽹格。这些是使⽤ ltePCFICHIndices ⽣成的,将⽤于将 PCFICH 符号四元组映射到⼦帧中第⼀个 OFDM 符号中的资源元素组。考虑所有天线端⼝,避免参考信号 (RS) 使⽤的资源元素。请注意,⽣成的矩阵有 4 列;每列包含每个天线端⼝的线性形式的索引。这些索引是基于 1 的,但是它们也可以使⽤基于 0 的⽅法⽣成。使⽤的线性索引样式使资源⽹格映射过程直接进⾏。⽣成的矩阵包含 pcfichSymbols 中由 pcfichIndices 指定的位置的复数符号。
pcfichIndices = ltePCFICHIndices(enb);
% Map PCFICH symbols to resource grid
subframe(pcfichIndices) = pcfichSymbols;
绘制⽹格
绘制第⼀个天线的资源⽹格。这包括(黄⾊)⽰例中添加的物理信道:PDSCH、PDCCH 和 PCFICH。
surf(abs(subframe(:,:,1)));
view(2);
axis tight;
xlabel('OFDM Symbol');
ylabel('Subcarrier');
title('Resource grid');