exponenta event banner

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 или без CRC). Заполняющие биты гарантируют, что сегменты кодовых блоков, входящие в кодер LDPC, имеют допустимую длину и кратны размеру подъема LDPC. Для размещения битов заполнителя, представленных символом -1, тип данных cbs приводится к int8 при вводе blk является логическим. В противном случае cbs наследует тип данных ввода blk.

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

Ссылки

[1] 3GPP TS 38.212. "НР; мультиплексирование и канальное кодирование. "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

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

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

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