В этом примере показано, как сгенерировать форму волны временного интервала, содержащую физический совместно используемый канал нисходящей линии связи (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
и физические ресурсные блоки (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 и применяем кодирование канала. Это включает в себя вычисление 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 соответствует полному назначению полосы пропускания. 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 закодированы в канале. Это включает следующие операции: вставка 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
будет интерпретировать эти местоположения как неиспользованные и будет рассматривать только те с 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;
Из набора бит, используемых в pdcchBits
(значения, не установленные на -1) генерируются комплексные символы PDCCH. Требуются следующие операции: скремблирование, QPSK модуляция, отображение слоев и предварительное кодирование.
The 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. The pcfichSymbols
является матрицей, имеющей 4 столбца, где каждый столбец содержит комплексные символы PCFICH, которые сопоставлены с каждым из портов антенны.
pcfichSymbols = ltePCFICH(enb, cfiBits);
Комплексные символы 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 модуляции для символов нисходящей линии связи. Получившаяся матрица имеет 4 столбца; каждый столбец содержит выборки для каждого порта антенны.
[timeDomainMapped, timeDomainInfo] = lteOFDMModulate(enb, subframe);
3GPP TS 36.101 «Радиопередача и прием пользовательского оборудования (UE)»