В этом примере показано, как сгенерировать форму волны области времени, содержащую Физический Нисходящий Разделяемый Канал (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 сконфигурированы с помощью структуры 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
и физические блоки ресурса (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 и применяем кодирование канала. Это включает вычисление 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). Эти параметры включают количество нисходящих Блоков Ресурса (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 являются закодированным каналом. Это включает следующие операции: вставка 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 в различных модулях: биты, 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;
От набора битов, используемых в 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 в подкадре. Все порты антенны рассматриваются, и избегают элементов ресурса, используемых Опорными сигналами (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 для нисходящих символов. Получившаяся матрица имеет 4 столбца; каждый столбец содержит выборки для каждого порта антенны.
[timeDomainMapped, timeDomainInfo] = lteOFDMModulate(enb, subframe);
3GPP TS 36.101 "Передача радио оборудования пользователя (UE) и прием"