exponenta event banner

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

Этот пример показывает, как генерировать форму сигнала во временной области, содержащую физический общий канал нисходящей линии связи (PDSCH), соответствующую передачу физического канала управления нисходящей линии связи (PDCCH) и канал индикатора физического формата управления (PCFICH), для одного подкадра.

Введение

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

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

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

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

В этом примере генерируется временная область (после модуляции OFDM) для всех 4 антенных портов. В этом примере рассматривается один подкадр (число 0).

Примечание.Рекомендуемый способ генерации сигналов RMC - использование lteRMCDLTool, этот пример показывает, как может быть создана форма сигнала путем создания и объединения отдельных физических каналов, как это происходит в системе LTE.

Параметры для всей ячейки

Настройки eNaseB конфигурируются со структурой.

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. Это определяется вектором столбца, как показано ниже.

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

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

Сгенерированные индексы представлены в формате 1-base, как используется 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). Эти параметры включают в себя количество блоков ресурсов нисходящей линии связи (RB), формат 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 в различных единицах: битах, 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). Структура настроек для всей ячейки 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 в подкадре. Рассматриваются все антенные порты и исключаются элементы ресурсов, используемые опорными сигналами (RS). Обратите внимание, что результирующая матрица имеет 4 столбца; каждый столбец содержит индексы в линейной форме для каждого антенного порта. Эти индексы основаны на 1, однако они также могут быть сгенерированы с использованием 0-based. Используемый стиль линейного индексирования делает процесс отображения сетки ресурсов прямым. Результирующая матрица содержит комплексные символы в 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 ТС 36.101 «Радиопередача и прием пользовательского оборудования (UE)»