Моделирование формы волны 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 и физические ресурсные блоки (PRB). Последний указывает выделение ресурсов для передачи PDSCH. В этом примере мы предположили, что все ресурсные блоки выделены PDSCH. Это задается с помощью вектора-столбца, как показано ниже.

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

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

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

Размер кодированного блока для передачи DL-SCH может быть вычислен ltePDSCHIndices функция. The 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). Эти параметры включают количество нисходящих ресурсных блоков (RB), формат DCI и значение индикации ресурса (RIV). RIV из 26 соответствует полному назначению полосы пропускания. The 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 в различных модулях: битах, 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 будет интерпретировать эти местоположения как неиспользованные и будет рассматривать только те с 1s и 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 модуляция, отображение слоев и предварительное кодирование.

The ltePDCCH функция принимает набор бит PDCCH и генерирует комплексные символы PDCCH, выполняющие упомянутые выше операции. В этом случае pdcchSymbols является матрицей с 4 столбцами, каждая из которых соответствует каждому порту антенны.

pdcchSymbols = ltePDCCH(enb, pdcchBits);

PDCCH Mapping Indices Генерации и Resource Grid Mapping

Индексы 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. The 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');

OFDM-модуляция

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

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

Избранная библиография

  1. 3GPP TS 36.101 «Радиопередача и прием пользовательского оборудования (UE)»