DL-SCH модели и PDSCH

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

Задайте настройки всей ячейки как поля в структуре enb. Многие функции, используемые в этом примере, требуют подмножества этих настроек.

enb.NDLRB = 9;
enb.CyclicPrefix = 'Normal';
enb.PHICHDuration = 'Normal';
enb.CFI = 3;
enb.Ng = 'Sixth';
enb.CellRefP = 4;
enb.NCellID = 1;
enb.NSubframe = 0;
enb.DuplexMode = 'FDD';

Сконфигурируйте PDSCH. В дополнение к настройкам всей ячейки, заданным в enb, необходимо задать другие параметры, связанные с модуляцией и настройкой передачи канала, pdsch, такой как радиосеть временный идентификатор (RNTI), чтобы сгенерировать PDSCH.

pdsch.NTxAnts = 4;
pdsch.NLayers = 4;
pdsch.TxScheme = 'TxDiversity';
pdsch.Modulation = {'QPSK'};
pdsch.RV = 0;
pdsch.RNTI = 1;

В этом примере вы используете одну кодовую комбинацию, чтобы сформировать символы PDSCH. Однако в LTE, до двух кодовых комбинаций могут быть объединены, чтобы сформировать PDSCH. Каждая кодовая комбинация может модулироваться с различной схемой. Используйте массив ячеек, чтобы указать на схему модуляции каждой кодовой комбинации.

Определите, как PDSCH сопоставлен с элементами ресурса путем выделения физических блоков ресурса (PRBs). Вектор-столбец, содержащий индексы выделенного PRBs PDSCH, требуется. В этом примере примите полное выделение; все блоки ресурса выделяются PDSCH. Задайте это полное распределение ресурсов подкадра с помощью вектор-столбца.

prbs = (0:enb.NDLRB-1).';

Выделение задано в prbs основано на нуле. В этом случае примите, что оба паза в подкадре совместно используют то же распределение ресурсов. Чтобы иметь различные выделения для каждого паза, задайте матрицу 2D столбца, где каждый столбец относится к каждому пазу в подкадре.

Сгенерируйте индексы PDSCH. Для этого вызовите ltePDSCHIndices функция для настроек enb всей ячейки, настройка передачи канала pdsch, и физический ресурс блокирует выделение prbs.

[pdschIndices,pdschIndInfo] = ltePDSCHIndices(enb,pdsch,prbs,{'1based'});

Первый выход, pdschIndices, задает индексы PDSCH. Второй выход, pdschIndInfo, предоставляет дополнительную информацию, связанную со способностью PDSCH.

Определите полезную нагрузку DL-SCH, и закодировал транспортный размер блока. Эти элементы требуются для создания полезной нагрузки PDSCH из-за фрагмента соответствия уровня транспортного блочного кодирования DL-SCH. Существуют следующие два метода определения закодированного транспортного размера блока и размера полезной нагрузки DL-SCH.

  • Используя вывод информации индексов PDSCH, как показано в этом примере

  • Используя ссылочный канал измерения (RMC) транспортируют размеры блока как руководство

Закодированный транспортный размер блока является одним из полей вывода информации индексов PDSCH, pdschIndInfo.

codedTrBlkSize = pdschIndInfo.G;

В этом примере, codedTrBlkSize 480. В качестве альтернативы вы могли считать закодированный транспортный размер блока для данной схемы модуляции, выделения PRB и количества антенн из таблиц RMC в TS 36.101, Приложения A.3.3 и A.3.4. Если вы знаете закодированный транспортный размер блока, вычисляете полезную нагрузку DL-SCH, использующую правила в TS 36.101, Приложение A.2.1.2, названное, "Определение размера полезной нагрузки", с целевым уровнем кода, R, равный 1/3, и количество битов на подкадр, данный codedTrBlkSize. Определите размер полезной нагрузки, A, таким образом, что получившийся уровень кодирования максимально близок к желаемому уровню кодирования, R, для данного закодированного транспортного размера блока, Nch, как показано в следующем уравнении.

min|R-(A+24)/Nch|

В этом примере вычислил размер полезной нагрузки для 6 RBS, использование предыдущего уравнения является A=152. Это - значение, в котором минимизирована ошибка между желаемым уровнем кода и фактическим уровнем кода.

Размер полезной нагрузки, A, должен быть один из определенного набора для определенного количества блоков ресурса, данных в TS 36.213, Таблица 7.1.7.2.1 1 или 7.1.7.2.2 1 (в Разделе 7.1.7.2). Эти таблицы представлены lteTBS функция. В этом примере размер полезной нагрузки для 6 RBS, которые минимизируют ошибку между желаемым уровнем кода и фактическим уровнем кода, A=152. Это значение было выбрано из таблицы 7.1.7.2.2 1. Поэтому размер полезной нагрузки, transportBlkSize, 152.

Альтернативный метод: используйте RMCs, чтобы определить транспортные размеры блока

В качестве альтернативы вы могли определить подходящий размер полезной нагрузки и закодировали транспортный размер блока из таблиц в TS 36.101, Приложения A.3.3 и A.3.4, названного "Ссылочные Каналы Измерения для требований к производительности PDSCH". Несмотря на преимущество просто способности считать значения из таблиц, пропускная способность канала и выделения PDSCH ограничиваются доступным RMCs. Например, можно использовать Таблицу A.3.3.2.2-1, названную "Зафиксированный Ссылочный Канал четыре порта антенны".

Чтобы сгенерировать PDSCH для пропускной способности канала на 1.4 МГц, передача с четырьмя антеннами с модуляцией QPSK и уровень кодирования, используют подсвеченные строки, названные "информационная Полезная нагрузка Бита", чтобы найти размер полезной нагрузки DL-SCH для каждого подкадра, и "Бинарные Биты Канала", найти закодированный транспортный размер блока для каждого подкадра.

ParameterUnitValueReferenceChannelR.12FDDR.13FDDR.14FDDR.14-1FDDR.14-2FDDR.36FDDChannelbandwidthMHz1.41010101010Allocatedresourceblocks650506350AllocatedsubframesperRadioFrame999889ModulationQPSKQPSK16QAM16QAM16QAM64QAMTargetCodingRate1/31/31/21/21/21/2InformationBitPayloadForSub-Frames1,2,3,4,6,7,8,and9Bits408439212960154474418336ForSub-Frame5Bitsn/an/an/an/an/an/aForSub-Frame0Bits152326411448n/an/a18336NumberofCodeBlocksForSub-Frames1,2,3,4,6,7,8,and9113113ForSub-Frame5n/an/an/an/an/an/aForSub-Frame0112n/an/a3BinaryChannelBitsperSub-FrameForSub-Frames1,2,3,4,6,7,8,and9Bits124812800256003072153638400ForSub-Frame5Bitsn/an/an/an/an/an/aForSub-Frame0Bits4801203224064n/an/a36096Max.Throughputaveragedover1frameMbps0.3423.87611.5131.2350.59516.502UECategory112112

Задайте транспортный блок информационных битов, с помощью размера полезной нагрузки, transportBlkSize, вычисленный на последнем шаге.

dlschTransportBlk = round(rand(1,152));

Создайте полезную нагрузку PDSCH. Чтобы закодировать транспортные биты блока в одну кодовую комбинацию, вызовите lteDLSCH функция для настроек всей ячейки и настройки передачи канала. Этот процесс включает вычисление CRC, сегментацию блока кода и вставку CRC, турбокодирование, соответствие уровня и конкатенацию блока кода.

codeword = lteDLSCH(enb,pdsch,codedTrBlkSize,dlschTransportBlk);

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

pdschSymbols = ltePDSCH(enb,pdsch,codeword);

Получившаяся матрица, pdschSymbols, имеет четыре столбца. Каждый столбец содержит комплексные символы, чтобы сопоставить с каждым портом антенны.

Сгенерируйте сетку ресурса подкадра путем вызова lteDLResourceGrid функция. Эта функция создает пустую сетку ресурса для одного подкадра.

subframe = lteDLResourceGrid(enb);

Сопоставьте символы PDSCH с сеткой ресурса с помощью сгенерированных индексов.

subframe(pdschIndices) = pdschSymbols;

Смотрите также

| | | | | | | | | | | | | | | | | |

Похожие темы