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, и местозаполнитель UCI Y бита местоположения, 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, которое инициализируется местозаполнителем UCI X и расположениями битов Y.

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 более высокий слой параметра dataScramblingIdentityPUSCH, в диапазоне от 0 до 1023, если сконфигурирован параметр более высокого слоя. В противном случае nid - идентификационный номер камеры физического слоя NCellID в диапазоне от 0 до 1007. Для получения дополнительной информации см. раздел 6.3.1.1 ТУ 38.211.

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

RNTI UE, заданный в виде целого числа от 0 до 65 535.

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

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

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

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

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

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

свернуть все

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

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

Ссылки

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

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

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

.

См. также

Функции

Введенный в R2019a