exponenta event banner

resetSoftBuffer

Сброс мягкого буфера для процесса HARQ в декодере UL-SCH или DL-SCH

Описание

resetSoftBuffer(decUL) сбрасывает мягкий буфер для гибридного процесса автоматического запроса на повторение (HARQ) с номером 0 в указанном декодере UL-SCH decUL.

пример

resetSoftBuffer(decDL,cwid) сбрасывает мягкий буфер для индекса кодового слова cwid и номер процесса HARQ 0 в указанном декодере DL-SCH decDL. Индекс кодового слова cwid определяет одно из двух возможных кодовых слов для декодирования DL-SCH.

пример

resetSoftBuffer(___,harqID) сбрасывает мягкий буфер для указанного номера процесса HARQ harqID. Определить harqID в дополнение к входным аргументам в любом из предыдущих синтаксисов.

Чтобы обеспечить возможность мягкого объединения повторных передач перед декодированием с низкой плотностью проверки на четность (LDPC), каждый объект декодера поддерживает мягкий буфер для каждого процесса HARQ. После успешного декодирования входного сигнала объект автоматически сбрасывает мягкий буфер для процесса HARQ. Вызов resetSoftBuffer функция выполняет сброс буфера мягких файлов вручную. Вызовите эту функцию при последующем декодировании различных транспортных блоков для одного и того же процесса HARQ или при завершении всех версий избыточности для процесса HARQ.

Примеры

свернуть все

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

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

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

encUL = nrULSCH('MultipleHARQProcesses',true);

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

harqID = 1;
setTransportBlock(encUL,trBlk1,harqID);

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

rv = 0;
codedTrBlock1 = encUL('QPSK',1,10240,rv,harqID);

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

decUL = nrULSCHDecoder('MultipleHARQProcesses',true);

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

decUL.TransportBlockLength = trBlkLen1;

Добавьте шум к мягким битам, представляющим кодированный транспортный блок. Вызовите декодер UL-SCH на модифицированных программных битах для процесса HARQ номер 1.

rxSoftBits1 = awgn(1-2*double(codedTrBlock1),5);
[decBits1,blkErr1] = decUL(rxSoftBits1,'QPSK',1,rv,harqID);

Добавленный шум приводит к ошибке во время декодирования.

blkErr1
blkErr1 = logical
   1

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

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

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

decUL.TransportBlockLength = trBlkLen2;

Если во время предыдущего декодирования с помощью процесса HARQ номер 1 произошла ошибка, перед декодированием второго транспортного блока необходимо сбросить мягкий буфер процесса HARQ.

if blkErr1   
    resetSoftBuffer(decUL,harqID);
end

Вызовите декодер на мягких битах, представляющих второй кодированный транспортный блок, используя процесс HARQ номер 1.

rxBits2 = 1-2*double(codedTrBlock2);
[decBits2,blkErr2] = decUL(rxBits2,'QPSK',1,rv,harqID);
blkErr2
blkErr2 = logical
   0

Убедитесь, что второй переданный и декодированный биты сообщения идентичны.

isequal(decBits2,trBlk2)
ans = logical
   1

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

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

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

encDL = nrDLSCH('MultipleHARQProcesses',true);

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

harqID = 1;
cwID = 0;
setTransportBlock(encDL,trBlk1,cwID,harqID);

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

rv = 0;
codedTrBlock1 = encDL('QPSK',1,10240,rv,harqID);

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

decDL = nrDLSCHDecoder('MultipleHARQProcesses',true);

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

decDL.TransportBlockLength = trBlkLen1;

Добавьте шум к мягким битам, представляющим кодированный транспортный блок. Вызовите декодер DL-SCH в модифицированных программных битах для процесса HARQ номер 1.

rxSoftBits1 = awgn(1-2*double(codedTrBlock1),5);
[decBits1,blkErr1] = decDL(rxSoftBits1,'QPSK',1,rv,harqID);

Добавленный шум приводит к ошибке во время декодирования.

blkErr1
blkErr1 = logical
   1

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

trBlkLen2 = 4400;
trBlk2 = randi([0 1],trBlkLen2,1,'int8');
setTransportBlock(encDL,trBlk2,cwID,harqID); 
codedTrBlock2 = encDL('QPSK',1,8800,rv,harqID);

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

decDL.TransportBlockLength = trBlkLen2;

Если во время предыдущего декодирования с помощью процесса HARQ номер 1 произошла ошибка, перед декодированием второго транспортного блока необходимо сбросить мягкий буфер процесса HARQ.

if blkErr1   
    resetSoftBuffer(decDL,harqID);
end

Вызовите декодер на мягких битах, представляющих второй кодированный транспортный блок, используя процесс HARQ номер 1.

rxBits2 = 1-2*double(codedTrBlock2);
[decBits2,blkErr2] = decDL(rxBits2,'QPSK',1,rv,harqID);
blkErr2
blkErr2 = logical
   0

Убедитесь, что второй переданный и декодированный биты сообщения идентичны.

isequal(decBits2,trBlk2)
ans = logical
   1

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

свернуть все

Декодер UL-SCH, указанный как nrULSCHDecoder Системный объект. Объект реализует цепочку обработки декодера UL-SCH, соответствующую обратной операции кодирования UL-SCH, указанной в TR 38.212 Раздел 6.2.

Декодер DL-SCH, указанный как nrDLSCHDecoder Системный объект. Объект реализует цепочку обработки декодера DL-SCH, соответствующую обратной операции кодирования DL-SCH, указанной в TR 38.212 Раздел 7.2.

Индекс кодового слова DL-SCH, указанный как 0 или 1.

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

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

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

Ссылки

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

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

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

.

См. также

Объекты

Представлен в R2019a