nrCodeBlockSegmentLDPC

Сегментация блоков кода LDPC и присоединение CRC

Описание

пример

cbs = nrCodeBlockSegmentLDPC(blk,bgn) разделяет блок входных данных blk в сегменты кодового блока на основе базового числа график bgn, как указано в ТУ 38.212 раздел 5.2.2 [1]. Функция добавляет циклическую проверку избыточности (CRC) и заполняющие биты к каждому сегменту кодового блока в cbs Если применимо. nrCodeBlockSegmentLDPC предоставляет входы кодерам с низкой плотностью проверки четности (LDPC) в транспортных каналах, включая нисходящие и восходящие общие каналы, и пейджинговые каналы.

Примеры

свернуть все

Создайте случайную последовательность двоичных входных данных.

in = randi([0,1],4000,1);

Выполните сегментацию блока кода LDPC.

cbs1 = nrCodeBlockSegmentLDPC(in,1); 
cbs2 = nrCodeBlockSegmentLDPC(in,2);

Когда базовое число графика равняется 1, сегментация приводит к получению одного сегмента кодового блока. Когда базовое число графика равно 2, сегментация приводит к получению двух сегментов кодового блока. Сегментация происходит только, если входная длина больше максимального размера блока кода. Максимальный размер блока кода составляет 8448, когда базовый номер графика равен 1 и 3840, когда базовый номер графика равен 2.

size(cbs1)
ans = 1×2

        4224           1

size(cbs2)
ans = 1×2

        2080           2

Создайте вход данных разветвления и выполните сегментацию кодового блока.

cbs = nrCodeBlockSegmentLDPC([1:4000]',2);

Вход длины 4000 разделяется на два сегмента кодового блока равного размера с 24B битами CRC и наполнителем. Чтобы увидеть, как вход преобразуется в выход, постройте график индексов входных данных относительно соответствующих индексов сегмента блока кода.

plot(cbs)
legend('CBS1','CBS2')
xlabel('Code Block Bit Indices');
ylabel('Input Data Bit Indices + CRC/Filler');
title('Code Block Segmentation Operation')

Figure contains an axes. The axes with title Code Block Segmentation Operation contains 2 objects of type line. These objects represent CBS1, CBS2.

Входные параметры

свернуть все

Входные данные, заданный как вектор-столбец вещественных чисел.

Типы данных: double | int8 | logical

Базовый номер графика, заданный как 1 или 2.

Типы данных: double

Выходные аргументы

свернуть все

Код блока сегменты, возвращенные в виде целого числа или вещественной матрицы. Каждый столбец соответствует отдельному сегменту блока кода. Количество сегментов кодового блока зависит от максимального размера кодового блока кодера LDPC, Kcb, и длину входа blk, B. Если bgn установлено в 1, Kcb = 8448. Если bgn установлено в 2, Kcb = 3840. Если BKcb, тогда функция не выполняет сегментацию и не добавляет CRC к полученному блоку кода. Если B > Kcbсегментация приводит к появлению нескольких меньших кодовых блоков с type-24B добавленными битами CRC.

При необходимости функция добавляет биты наполнителя к каждому кодовому блоку (с CRC или без). Биты наполнителя гарантируют, что сегменты кодового блока, входящие в кодер LDPC, имеют допустимую длину и являются кратными размеру подъема LDPC. Чтобы вместить биты наполнителя, представленные -1, тип данных cbs приведен к int8 когда вход blk является логическим. В противном случае cbs наследует тип данных входов blk.

Типы данных: double | int8

Ссылки

[1] 3GPP TS 38.212. "NR; Мультиплексирование и канальное кодирование. "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2018b