Этот пример показывает, как генерировать форму сигнала во временной области, содержащую физический общий канал нисходящей линии связи (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 конфигурируются с использованием структуры 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 в сетку ресурсов подкадра генерируются с использованием 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 и применяем канальное кодирование. Это включает в себя вычисление CRC, сегментацию кодовых блоков и вставку CRC, турбокодирование, согласование скорости и конкатенацию кодовых блоков. Его можно выполнить с помощью lteDLSCH.
Транспортный размер блока DL-SCH выбран согласно правилам в TS36.101, Приложению A.2.1.2 [1] «Определение размера полезного груза» с целевым кодовым уровнем
и числом битов за нижнюю раму, данную 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);
Следующие операции применяются к кодированному транспортному блоку для генерации комплексных символов физического общего канала нисходящей линии связи: скремблирование, модуляция, отображение уровня и предварительное кодирование. Это может быть достигнуто с помощью ltePDSCH. А также некоторые параметры для всей ячейки, указанные в enb эта функция также требует других параметров, связанных с конфигурацией модуляции и передачи канала, pdsch. Результирующая матрица pdschSymbols имеет 4 столбца. Каждый столбец содержит сложные символы для отображения на каждый антенный порт.
pdschSymbols = ltePDSCH(enb, pdsch, codedTrBlock);
Сложные символы PDSCH затем легко отображаются на каждую из сеток ресурсов для каждого антенного порта, используя простую операцию назначения. Местоположения символов PDSCH в сетках ресурсов задаются pdschIndices.
% Map PDSCH symbols on resource grid
subframe(pdschIndices) = pdschSymbols;
Управляющая информация нисходящей линии связи (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 кодируются по каналу. Это включает в себя следующие операции: вставка 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);
Пропускная способность области управления зависит от полосы пропускания, индикатора формата управления (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;
Из набора битов, используемых в pdcchBits (значения не установлены в -1) генерируются комплексные символы PDCCH. Требуются следующие операции: скремблирование, модуляция QPSK, отображение уровня и предварительное кодирование.
ltePDCCH функция принимает набор битов PDCCH и генерирует символы PDCCH с комплексными значениями, выполняющие вышеупомянутые операции. В этом случае pdcchSymbols представляет собой матрицу из 4 столбцов, каждая из которых соответствует каждому антенному порту.
pdcchSymbols = ltePDCCH(enb, pdcchBits);
Индексы 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;
Количество символов OFDM в подкадре связано со значением индикатора формата управления (CFI). Структура настроек для всей ячейки enb задает значение CFI, равное 3, что означает, что 4 символа OFDM используются для области управления в случае 6 блоков ресурсов нисходящей линии связи. CFI кодируется каналом с помощью lteCFI. Результирующий набор кодированных битов является 32-элементным вектором.
cfiBits = lteCFI(enb);
Затем кодированные биты CFI скремблируют, модулируют QPSK, отображают на уровни и предварительно кодируют для формирования комплексных символов PCFICH. pcfichSymbols является матрицей, имеющей 4 столбца, где каждый столбец содержит комплексные символы PCFICH, которые отображаются на каждый из антенных портов.
pcfichSymbols = ltePCFICH(enb, cfiBits);
Комплексные символы 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 для символов нисходящей линии связи. Полученная матрица имеет 4 столбца; каждый столбец содержит выборки для каждого антенного порта.
[timeDomainMapped, timeDomainInfo] = lteOFDMModulate(enb, subframe);
3GPP ТС 36.101 «Радиопередача и прием пользовательского оборудования (UE)»