getTransportBlock

Получите транспортный блок из UL-SCH или DL-SCH энкодера

Описание

trblk = getTransportBlock(encUL) возвращает транспортный блок из указанного общего канала восходящей линии связи (UL-SCH) энкодера системного object™. Функция принимает, что транспортный блок был ранее загружен в указанный энкодер UL-SCH при помощи setTransportBlock функция.

пример

trblk = getTransportBlock(encDL,trblkID) возвращает транспортный блок из указанного нисходящего общего канала (DL-SCH) энкодера Системного объекта encDL для заданного номера транспортного блока trblkID. Функция принимает, что транспортный блок был ранее загружен в указанный энкодер DL-SCH при помощи setTransportBlock функция.

пример

trblk = getTransportBlock(___,harqID) возвращает транспортный блок, загруженный для заданного номера процесса гибридного автоматического запроса повторения (HARQ) harqID. Задайте harqID в дополнение к входным параметрам в любом из предыдущих синтаксисов.

Примеры

свернуть все

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

trBlkLen1 = 5120;
trBlk1 = randi([0 1],trBlkLen1,1,'int8');

Создайте и сконфигурируйте Системный объект кодера UL-SCH с несколькими процессами HARQ и заданной целевой скоростью кода.

targetCodeRate = 567/1024;
encUL = nrULSCH('MultipleHARQProcesses',true);
encUL.TargetCodeRate = targetCodeRate;

Загрузите транспортный блок в энкодер UL-SCH для процесса HARQ № 1.

setTransportBlock(encUL,trBlk1,1);

Вызовите энкодер со схемой модуляции QPSK, уровнем передачи 1, выходной длиной 10 240 бит, версией избыточности 0 и номером процесса HARQ 1. Энкодер применяет цепь обработки UL-SCH к транспортному блоку, загруженному в объект, используя процесс HARQ № 1.

encUL('QPSK',1,10240,0,1); 

Извлеките транспортный блок из энкодера для процесса HARQ под номером 1. Проверьте, что извлеченный блок идентичен блоку, первоначально загруженному в энкодер для этого процесса HARQ.

tmp = getTransportBlock(encUL,1);
isequal(tmp,trBlk1) 
ans = logical
   1

Повторите операцию кодирования для нового транспортного блока длины 4400 и процесса HARQ номер 2.

trBlkLen2 = 4400;
trBlk2 = randi([0 1],trBlkLen2,1,'int8');
setTransportBlock(encUL,trBlk2,2); 
encUL('QPSK',1,8800,0,2);

Еще раз найдите первый транспортный блок. Проверьте, что первый транспортный блок все еще не изменен.

tmp = getTransportBlock(encUL,1);
isequal(tmp,trBlk1)
ans = logical
   1

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

trBlkLen = 5120;
trBlk = randi([0 1],trBlkLen,1,'int8');

Создайте и сконфигурируйте Системный объект кодера DL-SCH с несколькими процессами HARQ и заданной целевой скоростью кода.

targetCodeRate = 567/1024;
encDL = nrDLSCH('MultipleHARQProcesses',true);
encDL.TargetCodeRate = targetCodeRate;

Загрузите trBlk транспортного блока для транспортного блока с номером 0 в энкодер DL-SCH, задающий процесс HARQ с номером 2.

harqID = 2;
trBlkID = 0;
setTransportBlock(encDL,trBlk,trBlkID,harqID);

Вызовите энкодер со схемой модуляции QPSK, 3 слоями передачи, выходной длиной 10 002 бита и версией резервирования 3. Энкодер применяет цепь обработки DL-SCH к транспортному блоку, загруженному в объект для процесса HARQ № 2.

mod = 'QPSK';
nLayers = 3;
outlen = 10002;
rv = 3;
codedTrBlock = encDL(mod,nLayers,outlen,rv,harqID);

Извлеките транспортный блок для транспортного блока номер 0 из энкодера, задавая процесс HARQ номер 2. Проверьте, что извлеченный блок идентичен блоку, первоначально загруженному в энкодер для этого процесса HARQ.

tmp = getTransportBlock(encDL,trBlkID,harqID);
isequal(tmp,trBlk)
ans = logical
   1

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

свернуть все

UL-SCH энкодера, заданный как nrULSCH Системный объект. Объекты реализуют цепь обработки UL-SCH, указанную в TS 38.212 Раздел 6.2.

DL-SCH энкодера, заданный как nrDLSCH Системный объект. Объект реализует цепь обработки DL-SCH, указанную в TS 38.212 Раздел 7.2.

Номер транспортного блока в обработке DL-SCH, заданный как 0 или 1.

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

Номер процесса HARQ, заданный как целое число от 0 до 15.

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

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

свернуть все

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

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

Ссылки

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

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

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

.

См. также

Функции

Объекты

Введенный в R2019a