exponenta event banner

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

Типы данных: 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. "НР; мультиплексирование и канальное кодирование. "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2018b