Этот пример показывает, как смоделировать область управления, используемую в подкадре нисходящего канала LTE, и его структуру канала. Он демонстрирует, как вы создаете сообщение DCI, кодируете его, создаете PDCCH и сопоставляете его с ресурсной сеткой.
Задайте параметры всей ячейки как поля в структуре enb
. Многие функции, используемые в этом примере, требуют подмножества этих настроек.
enb.NDLRB = 9; enb.CyclicPrefix = 'Normal'; enb.PHICHDuration = 'Normal'; enb.CFI = 3; enb.Ng = 'Sixth'; enb.CellRefP = 1; enb.NCellID = 1; enb.NSubframe = 0; enb.DuplexMode = 'FDD';
Настройка структуры сообщений DCI.
dci.NDLRB = enb.NDLRB; dci.DCIFormat = 'Format1A'; dci.Allocation.RIV = 26; dci.DuplexMode = 'FDD'; dci.NTxAnts = 1;
Сообщение DCI содержит следующие параметры:
NDLRB
- количество нисходящих ресурсных блоков (RB)
DCIFormat
- формат DCI, выбранный из обсуждаемых в форматах сообщений DCI
Allocation.RIV
- значение индикации ресурса (RIV)
DuplexMode
- тип структуры системы координат передачи, 'FDD'
для структуры системы координат тип 1 или 'TDD'
для структуры системы координат тип 2
NTxAnts
- количество передающих антенн
RIV указывает смежные распределения RB для UE. UE использует RIV, чтобы определить первый виртуальный RB и длину непрерывного распределения RB. В этом примере установка RIV 26 соответствует назначению полной полосы пропускания.
Сгенерируйте сообщение DCI путем вызова lteDCI
функция. Это сгенерированное сообщение можно сопоставить с PDCCH.
[dciMessage,dciMessageBits] = lteDCI(enb,dci);
The lteDCI
функция возвращает структуру, dciMessage
и вектор, содержащий биты сообщений DCI, dciMessageBits
. Оба выходов содержат одинаковую информацию, но лучше всего подходят для различных целей. Структура output является более читаемым, в то время как сериализованное сообщение DCI находится в более подходящем формате для отправки на этап кодирования канала.
Настройка структуры строения PDCCH. Этапы кодирования канала требуют следующих параметров:
количество нисходящих ресурсных блоков (RB)
Маска UE (16-битное значение C-RNTI)
Формат PDCCH
pdcch.RNTI = 100; pdcch.PDCCHFormat = 0;
Канал кодирует биты сообщений DCI. Этот процесс состоит из сложения приложения CRC, сверточного кодирования и согласования скорости в соответствии с емкостью формата PDCCH.
codedDciBits = lteDCIEncode(pdcch,dciMessageBits);
Получившийся вектор, codedDciBits
, имеет 72 элемента.
Сгенерируйте биты PDCCH. Закодированные сообщения DCI затем назначаются CCE, как описано в Matching PDCCHs to CCE Positions. Пропускная способность области управления зависит от полосы пропускания, CFI, количества портов антенны и групп HICH. Общее количество ресурсов, доступных для PDCCH, можно вычислить с помощью ltePDCCHInfo
функция.
pdcchInfo = ltePDCCHInfo(enb);
Эта функция возвращает структуру, pdcchInfo
, который содержит ресурсы, доступные PDCCH в различных модулях (по одному на поле): битах, CCE, RE и REG.
Общее количество бит, доступных в области PDCCH, можно найти в поле pdcchInfo.MTot
. Это позволяет создавать вектор с соответствующим количеством элементов.
pdcchBits = -1*ones(1,pdcchInfo.MTot);
Не все доступные биты в области PDCCH обязательно используются. Поэтому, следуя соглашению в продукте Toolbox™ LTE, установите неиспользованные биты в − 1. Поскольку все элементы были инициализированы в pdcchBits
для − 1 это указывает, что первоначально все биты не используются. Теперь элементы codedDciBits
могут быть сопоставлены с соответствующими местоположениями в pdcchBits
.
Вычислим индексы битов-кандидатов по вызову ltePDCCHSpace
функция. Только подмножество всех бит в pdcchBits
могут использоваться, которые называются битами.
candidates = ltePDCCHSpace(enb,pdcch,{'bits','1based'});
Эта функция возвращает двухколоночную матрицу. Каждая строка содержит доступное расположение кандидата для общих для ячеек настроек, предоставляемых enb
и структуру строения PDCCH pdcch
. Первый и второй столбцы содержат индексы первого и последнего местоположения каждого кандидата. В этом примере индексы основаны на 1 и относятся к битам. Следовательно, они могут использоваться для доступа к местоположениям в pdcchBits
.
Используйте первого доступного кандидата для отображения закодированных бит DCI.
pdcchBits (candidates(1,1):candidates(1,2)) = codedDciBits;
Векторная pdcchBits
имеет 736 элементов. 72 бита codedDciBits
сопоставлены с выбранным кандидатом в pdcchBits
. Поэтому из 736 элементов 72 берут 0 и 1 значения, а остальные остаются установленными на − 1. The ltePDCCH
функция, которая используется для генерации комплексно-модулированных символов, интерпретирует эти местоположения как неиспользованные и будет рассматривать только те, которые содержат 1s и 0s.
Чтобы сгенерировать символы PDCCH, используйте ltePDCCH
функция. Можно сгенерировать комплексные символы PDCCH из набора бит, используемых в pdcchBits
, значения, не установленные на − 1. Функция выполняет необходимые операции скремблирования, QPSK модуляции, отображения слоя и предварительного кодирования. Поскольку на каждый символ QPSK существует два бита, генерируется 368 символов. Занятые биты приводят к 36 ненулевым символам QPSK.
pdcchSymbols = ltePDCCH(enb, pdcchBits); size(pdcchSymbols)
ans = 1×2
368 1
size(find(pdcchSymbols))
ans = 1×2
36 1
Чтобы сгенерировать индексы отображения PDCCH, используйте ltePDCCHIndices
функция. Можно использовать эти индексы для отображения комплексных чисел в pdcchSymbols
в подрамную ресурсную сетку.
pdcchIndices = ltePDCCHIndices(enb,{'1based'});
size(pdcchIndices)
ans = 1×2
368 1
Эта функция возвращает вектор-столбец. Строки содержат индексы на основе 1 в линейной форме для отображения символов PDCCH с ресурсной сеткой подкадра.
Сопоставьте PDCCH с ресурсной сеткой. Можно легко сопоставить сложные символы PDCCH с ресурсной сеткой для каждого порта антенны.
Создайте пустую ресурсную сетку с lteDLResourceGrid
функция.
Сопоставьте pdcchSymbols
на pdcchIndices
индексные местоположения subframe
ресурсная сетка.
subframe = lteDLResourceGrid(enb); subframe(pdcchIndices) = pdcchSymbols;
lteConvolutionalDecode
| lteConvolutionalEncode
| lteCRCDecode
| lteCRCEncode
| lteDCI
| lteDCIEncode
| lteDLDeprecode
| lteDLPrecode
| lteLayerDemap
| lteLayerMap
| ltePDCCH
| ltePDCCHDecode
| ltePDCCHDeinterleave
| ltePDCCHIndices
| ltePDCCHInfo
| ltePDCCHInterleave
| ltePDCCHPRBS
| ltePDCCHSpace
| lteRateMatchConvolutional
| lteRateRecoverConvolutional
| lteSymbolDemodulate
| lteSymbolModulate