exponenta event banner

nrPUSCHDescramble

Выполнить дескремблирование PUSCH

Описание

пример

cw = nrPUSCHDescramble(in,nid,rnti) возвращает вектор столбца мягких битов, полученный в результате обратной операции скремблирования физического общего канала восходящей линии связи (PUSCH) из TS 38.211, раздел 6.3.1.1 [1]. in - вектор скремблированных мягких битов, nid - идентификатор скремблирования, и rnti - временный идентификатор радиосети (RNTI) пользовательского оборудования (UE). При использовании этого синтаксиса функция дескремблирует только биты данных, так как местоположения битов-заполнителей для любой управляющей информации восходящей линии связи (UCI), если она присутствует, в данном случае неизвестны.

пример

cw = nrPUSCHDescramble(in,nid,rnti,xInd,yInd) возвращает вектор столбца мягких битов с учетом местоположения X битов заполнителя UCI, xIndи местоположения Y-битов заполнителя UCI, yInd. Исходные данные xInd и yInd являются векторами столбцов на основе 1 в кодовом слове и указывают соответствующие местоположения местозаполнителей.

Примеры

свернуть все

Создайте случайную последовательность двоичных значений, соответствующих кодовому слову, содержащему 3000 битов. Выполните скремблирование PUSCH, инициализированное указанным номером ячейки физического уровня и RNTI.

cw = randi([0 1],3000,1);
ncellid = 42;
rnti = 101;
scrambled = nrPUSCHScramble(cw,ncellid,rnti);

Модулировать скремблированные данные с использованием 16-QAM модуляции. Демодулируйте результат.

modulation = '16QAM';
sym = nrSymbolModulate(scrambled,modulation);
demod = nrSymbolDemodulate(sym,modulation);

Выполните дескремблирование PUSCH демодулированных символов.

descrambled = nrPUSCHDescramble(demod,ncellid,rnti)
descrambled = 3000×1
1010 ×

   -1.6000
   -1.6000
    0.4000
   -0.4000
   -1.6000
    0.4000
    0.4000
   -0.4000
   -0.4000
   -0.4000
      ⋮

Принятие жесткого решения по мягкой метрике.

rxcw = double(descrambled<0)
rxcw = 3000×1

     1
     1
     0
     1
     1
     0
     0
     1
     1
     1
      ⋮

Сравните результат с исходным кодовым словом.

isequal(cw,rxcw)
ans = logical
   1

Создайте кодовое слово для 1 бита.

cw = [1 -2 -1 -1]';

Укажите идентификатор скремблирования как 100 и временный идентификатор радиосети как 65 350.

nid = 100;
rnti = 65350;

Выполните скремблирование PUSCH, инициализированное позициями X и Y заполнителей UCI.

xind = find(cw == -1);
yind = find(cw == -2);
scrambled = nrPUSCHScramble(cw,nid,rnti);

Модулировать скремблированные данные с помощью 16-QAM схемы. Демодулируйте результат.

modulation = '16QAM';
sym = nrSymbolModulate(scrambled,modulation);
demod = nrSymbolDemodulate(sym,modulation);

Выполните дескремблирование PUSCH демодулированных символов.

descrambled = nrPUSCHDescramble(demod,nid,rnti,xind,yind)
descrambled = 4×1
1010 ×

   -1.6000
   -1.6000
   -0.4000
   -0.4000

Сравните результат с исходным кодовым словом.

isequal(descrambled(1)<0,cw(1))
ans = logical
   1

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

свернуть все

Мягкие биты приближенного логарифмического отношения правдоподобия (LLR), заданные как вектор вещественного столбца. Знак представляет скремблированный жесткий бит.

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

Идентификатор скремблирования, заданный как целое число от 0 до 1023. nid является параметром более высокого уровня dataScramedIdentityPUSCH в диапазоне от 0 до 1023, если настроен параметр более высокого уровня. В противном случае nid - идентификационный номер ячейки физического уровня NCellID в диапазоне от 0 до 1007. Для получения дополнительной информации см. TS 38.211 раздел 6.3.1.1.

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

RNTI UE, указанный как целое число от 0 до 65535.

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

X заполнителей индекса UCI, заданного как вектор столбца с положительными значениями. При указании этого ввода функция дескремблирует входное кодовое слово, in, во всех расположениях, кроме X местозаполнителей. Значение [] указывает на отсутствие указателей-заполнителей X.

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

Индексы-местозаполнители Y UCI, заданные как вектор столбца с положительными значениями. Входное кодовое слово, in, в местах местозаполнителей, yIndдескремблируется с предыдущими значениями скремблирующей последовательности. Значение [] указывает на отсутствие индексов-заполнителей Y.

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

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

свернуть все

Дескремблированные аппроксимированные динамические биты LLR, возвращаемые в виде вектора числового столбца. Знак представляет дескремблированный жесткий бит.

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

Ссылки

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

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

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

.

См. также

Функции

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