Образцовый DL-SCH и PDSCH

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

Настройте настройки всей ячейки. Создайте структуру и задайте настройки всей ячейки как ее поля.

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. Каждая кодовая комбинация может модулироваться с различной схемой. Вы используете массив ячеек, чтобы указать на схему модуляции каждой кодовой комбинации.

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

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

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

Сгенерируйте индексы 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 [1], Приложения A.3.3 и A.3.4. Если вы знаете закодированный транспортный размер блока, вычисляете полезную нагрузку DL-SCH, использующую правила в TS 36.101 [1], Приложение A.2.1.2, названное, "Определение размера полезной нагрузки", с целевым уровнем кода, R, равный 1/3, и количество битов на подкадр, данный codedTrBlkSize. Определите размер полезной нагрузки, A, таким образом, что получившийся уровень кодирования максимально близок к желаемому уровню кодирования, R, для данного закодированного транспортного размера блока, Nch, как показано в следующем уравнении.

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

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

Размер полезной нагрузки, A, должен быть один из определенного набора для определенного количества блоков ресурса, данных в TS 36.213 [2], Таблица 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 [1], Приложения A.3.3 и A.3.4, названного "Ссылочные Каналы Измерения для требований к производительности PDSCH". Несмотря на преимущество просто способности считать значения из таблиц, пропускная способность канала и выделения PDSCH ограничиваются доступным RMCs. Например, можно использовать Таблицу A.3.3.2.2-1, названную "Зафиксированный Ссылочный Канал четыре порта антенны".

Чтобы сгенерировать PDSCH для пропускной способности канала на 1.4 МГц, передача с 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, турбокодирование, соответствие уровня и конкатенацию блока кода. Используйте настройки всей ячейки, enb, и параметры PDSCH, pdsch, заданный на предыдущих шагах.

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

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

pdschSymbols = ltePDSCH(enb,pdsch,codeword);

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

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

subframe = lteDLResourceGrid(enb);

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

subframe(pdschIndices) = pdschSymbols;

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

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

Похожие темы