nrCodeBlockDesegmentLDPC

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

Описание

пример

[blk,err] = nrCodeBlockDesegmentLDPC(cbs,bgn,blklen) конкатенирует сегменты блока кода входа cbs в один выходной блок данных blk длины blklen. Функция проверяет измерения данных входов cbs на основе заданного базового числа график bgn и выход блока blklen. Функция удаляет любые биты-наполнители и type-24B биты циклического контроля избыточности (CRC), существующие во входном cbs. Область выхода err является результатом type-24B декодирования CRC (если применимо). Этот процесс является обратной сегментации блока кода с низкой плотностью проверки четности (LDPC), указанной в TS 38.212 Раздел 5.2.2 [1] и реализованной в nrCodeBlockSegmentLDPC.

Примеры

свернуть все

Выполните сегментацию кодового блока случайной последовательности двоичных входных данных.

bgn = 1;
blklen = 10000;
cbs = nrCodeBlockSegmentLDPC(randi([0 1],blklen,1),bgn);

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

size(cbs)
ans = 1×2

        5280           2

Сгруппируйте сегменты кодового блока.

[blk,err] = nrCodeBlockDesegmentLDPC(cbs,bgn,blklen);

Результат конкатенирования имеет тот же размер, что и исходный вход с CRC и удаленными битами наполнителя.

blkSize = size(blk)
blkSize = 1×2

       10000           1

Проверьте успешность декодирования CRC путем проверки вектора ошибок.

err
err = 1x2 uint32 row vector

   0   0

Создайте матрицу, представляющую два сегмента кодового блока. Каждый элемент содержит линейный индекс этого элемента в матрице.

cbs = reshape([1:10560]',[],2);

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

bgn = 1;
blklen = 10000;
blk = nrCodeBlockDesegmentLDPC(cbs,bgn,blklen);

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

plot(blk);
xlabel('Code Block Bit Indices');
ylabel('Recovered Data Bit Indices');
title('Code Block Desegmentation Operation');

Figure contains an axes. The axes with title Code Block Desegmentation Operation contains an object of type line.

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

свернуть все

Сегменты блока кода, заданные как действительная матрица. Матрица только с одним столбцом соответствует одному сегменту кодового блока без добавленных бит CRC. Если вы задаете матрицу с более чем одним столбцом, каждый столбец в матрице соответствует отдельному сегменту блока кода с type-24B добавленными битами CRC. В обоих случаях сегменты кодового блока могут содержать биты.

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

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

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

Выход блока, заданная как неотрицательное целое число. Если blklen является 0, затем оба blk и err пусты. Функция использует blklen для проверки размерностей данных входов cbs и вычислить количество наполнителя, битами удалить.

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

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

свернуть все

Конкатенированный блок данных, возвращенный как пустой вектор (когда blklen является 0) или реальный вектор-столбец. Функция удаляет любые биты-наполнители и type-24B биты CRC, присутствующие во входе cbs. Область выхода blk наследует тип данных от входа cbs.

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

Ошибка CRC, возвращенная как одно из следующих значений:

  • Пустой вектор - функция возвращает это значение при blklen является 0 или если cbs имеет только один столбец (декодирование CRC не происходит).

  • Вектор неотрицательных целых чисел - Если cbs имеет более одного столбца, err содержит биты ошибки CRC, полученные при декодировании type-24B битов CRC в каждом сегменте блока кода. Длина err равно количеству сегментов кодового блока (количество столбцов на входе cbs).

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

Ссылки

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

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

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

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