Моделирование формы волны LTE Используя нисходящий транспорт и физические каналы

В этом примере показано, как сгенерировать форму волны области времени, содержащую Физический Нисходящий Разделяемый Канал (PDSCH), соответствующий Физический Нисходящий Канал Управления (PDCCH) передача и Физический Канал Индикатора Формата Управления (PCFICH), для одного подкадра.

Введение

Этот пример демонстрирует, как сгенерировать полный Нисходящий Разделяемый Канал (DL-SCH) передача для 6 блоков ресурса, 4 разнообразия передачи антенны с помощью функций от LTE Toolbox™. Следующие физические каналы моделируются:

  • Физический нисходящий разделяемый канал (PDSCH)

  • Физический нисходящий канал управления (PDCCH)

  • Физический нисходящий канал индикатора формата управления (PCFICH)

Этот пример генерирует временной интервал (отправьте модуляцию OFDM) для всех 4 портов антенны. Один подкадр (номер 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 соответствиями 4 портам антенны, как задано в enb.CellRefP.

subframe = lteDLResourceGrid(enb);

DL-SCH и настройки PDSCH

DL-SCH и PDSCH сконфигурированы с помощью структуры pdsch. Настройки здесь конфигурируют 4 разнообразия передачи антенны с модуляцией QPSK.

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 отображение генерации индексов

Индексы, чтобы сопоставить символы комплекса PDSCH с сеткой ресурса подкадра сгенерированы с помощью ltePDSCHIndices. Параметры, требуемые этой функцией, включают некоторые настройки всей ячейки в enb, настройка передачи канала pdsch и физические блоки ресурса (PRBs). Последний указывает на распределение ресурсов для передачи PDSCH. В этом примере мы приняли, что все блоки ресурса выделяются PDSCH. Это задано с помощью вектор-столбца как показано ниже.

Эти индексы сделаны '1based' для прямого отображения на сетке ресурса, когда MATLAB® использует 1 основанную индексацию. В этом случае мы приняли, что оба паза в подкадре совместно используют то же распределение ресурсов. Возможно иметь различные выделения для каждого паза путем определения двух матриц столбца как выделения, где каждый столбец будет относиться к каждому пазу в подкадре.

Получившийся матричный pdschIndices имеет 4 столбца, каждый столбец содержит набор индексов в линейном стиле, указывающем на элементы ресурса, которые будут использоваться для PDSCH в каждом порте антенны. Обратите внимание на то, что эта функция возвращает индексы, избегающие элементов ресурса, выделенных опорным сигналам, области управления, каналам телевизионного вещания и сигналам синхронизации.

Сгенерированные индексы представлены в формате с 1 основой, как используется MATLAB, но могут быть сделаны стандартным определенным использованием на основе 0 опции '0based' вместо '1based'. Если эта опция не задана, значением по умолчанию является генерация индекса на основе 1.

Закодированный размер блока для передачи DL-SCH может быть вычислен ltePDSCHIndices функция. ltePDSCHIndices функция возвращает информационную структуру как свой второй выход, который содержит параметр 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, турбокодирование, соответствие уровня и конкатенацию блока кода. Это может быть выполнено с помощью lteDLSCH.

Транспортный размер блока DL-SCH выбран согласно правилам в TS36.101, Приложению A.2.1.2 [1] "Определение размера полезной нагрузки" с целевой скоростью кода$R=1/3$ и количеством битов на подкадр, данный 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, транспортном формате и информации, связанной с гибридным ARQ DL-SCH. lteDCI может использоваться, чтобы сгенерировать сообщение DCI, которое будет сопоставлено с Физическим Нисходящим Каналом Управления (PDCCH). Эти параметры включают количество нисходящих Блоков Ресурса (RBS), формат DCI и Значение индикации ресурса (RIV). RIV 26 соответствуют полному присвоению полосы пропускания. lteDCI функция возвращает структуру и вектор, содержащий биты сообщения DCI. Оба содержат ту же информацию. Структура более читаема, в то время как сериализированное сообщение 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. Общее количество ресурсов, доступных для PDCCH, может быть вычислено с помощью ltePDCCHInfo. Это возвращает структуру pdcchInfo где различные поля описывают ресурсы, доступные для PDCCH в различных модулях: биты, CCEs, Resource Elements (REs) и Resource Elements Groups (REGs). Общее количество битов, доступных в области 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 с и 0s.

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). Структура настроек всей ячейки enb задает значение CFI 3, что означает, что 4 символа OFDM используются для области управления в случае 6 нисходящих блоков ресурса. CFI является каналом, закодированным с помощью lteCFI. Получившийся набор закодированных битов является 32 векторами элемента.

cfiBits = lteCFI(enb);

Генерация символа комплекса PCFICH

CFI закодировал биты, затем скремблированы, модулируемый QPSK, сопоставил со слоями и предварительно закодировал, чтобы сформировать символы комплекса PCFICH. pcfichSymbols матрица, имеющая 4 столбца, где каждый столбец содержит символы комплекса PCFICH, которые сопоставляют с каждым из портов антенны.

pcfichSymbols = ltePCFICH(enb, cfiBits);

Генерация индексов PCFICH и отображение сетки ресурса

Символы комплекса PCFICH сопоставлены с сеткой ресурса подкадра с помощью соответствующих индексов отображения. Они сгенерированы с помощью ltePCFICHIndices и будет использоваться, чтобы сопоставить квадруплетные символа PCFICH, чтобы снабдить группы элемента в первом символе OFDM в подкадре. Все порты антенны рассматриваются, и избегают элементов ресурса, используемых Опорными сигналами (RSS). Обратите внимание на то, что получившаяся матрица имеет 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');

Модуляция OFDM

Отображение области времени путем выполнения модуляции OFDM для нисходящих символов. Получившаяся матрица имеет 4 столбца; каждый столбец содержит выборки для каждого порта антенны.

[timeDomainMapped, timeDomainInfo] = lteOFDMModulate(enb, subframe);

Выбранная библиография

  1. 3GPP TS 36.101 "Передача радио оборудования пользователя (UE) и прием"