nrPUSCH

Сгенерируйте символы модуляции PUSCH

Описание

пример

sym = nrPUSCH(cw,mod,nLayers,nid,rnti) возвращает физический восходящий канал совместно использованный канал (PUSCH) символы модуляции, как задано в Разделах TS 38.211 6.3.1.1 к 6.3.1.5 [1]. Процесс состоит из скремблирования с борющейся идентичностью nid, выполнение модуляции символа со схемой mod модуляции, и отображение слоя. cw задает восходящий канал совместно использованный канал (UL-SCH) кодовая комбинация, как описано в Разделе TS 38.212 6.2.7 [2]. nLayers задает количество слоев передачи. rnti радиосеть временный идентификатор (RNTI) оборудования пользователя (UE).

sym = nrPUSCH(___,transformPrecode,mrb) задает преобразовывают предварительное кодирование как логическое значение в дополнение к входным параметрам в первом синтаксисе. Когда transformPrecode установлен в true, функция применяет предварительное кодирование преобразования, заданное в Разделе TS 38.211 6.3.1.4. mrb задает выделенное количество блоков ресурса PUSCH.

пример

sym = nrPUSCH(___,txScheme,nPorts,tpmi) задает схему передачи в дополнение к входным параметрам во втором синтаксисе. Когда txScheme установлен в 'codebook', функция выполняет предварительное кодирование мультивхода мультивыводится (MIMO) на основе конкретного количества слоев nLayers, количество портов nPorts антенны, и переданный предварительно кодирующий матричный индикатор (TPMI) tpmi.

пример

sym = nrPUSCH(carrier,pusch,cw) возвращает символы модуляции PUSCH для заданной настройки поставщика услуг carrier и настройка PUSCH pusch. Вход cw задает восходящий канал совместно использованный канал (UL-SCH) кодовая комбинация.

sym = nrPUSCH(___,'OutputDataType',datatype) задает тип данных символа PUSCH в дополнение к входным параметрам в любом из предыдущих синтаксисов.

Примеры

свернуть все

Задайте случайную последовательность двоичных значений, соответствующих кодовой комбинации 8 064 битов.

cw = randi([0 1],8064,1);

Используя 16-QAM модуляцию, сгенерируйте символы модуляции PUSCH для заданного личного номера ячейки физического уровня, RNTI и двух слоев передачи. По умолчанию функция отключает, преобразовывают предварительное кодирование и основанную на некниге шифров передачу.

modulation = '16QAM';
nlayers = 2;
ncellid = 17;
rnti = 111;
sym = nrPUSCH(cw,modulation,nlayers,ncellid,rnti)
sym = 1008×2 complex

  -0.9487 - 0.9487i  -0.3162 + 0.3162i
   0.3162 + 0.3162i  -0.9487 - 0.3162i
   0.3162 + 0.3162i   0.3162 - 0.3162i
   0.9487 - 0.3162i  -0.3162 + 0.9487i
  -0.3162 - 0.9487i   0.3162 - 0.9487i
  -0.3162 + 0.9487i   0.3162 - 0.3162i
   0.3162 + 0.3162i   0.9487 - 0.9487i
  -0.9487 + 0.9487i  -0.3162 + 0.3162i
   0.9487 - 0.9487i  -0.9487 - 0.3162i
  -0.9487 - 0.9487i   0.3162 + 0.9487i
      ⋮

Задайте случайную последовательность двоичных значений, соответствующих кодовой комбинации 8 064 битов.

cw = randi([0 1],8064,1);

Используя 256-QAM модуляцию, сгенерируйте символы модуляции PUSCH для заданного личного номера ячейки физического уровня, RNTI, пропускной способности и одного слоя передачи. Включите преобразовывают предварительное кодирование и основанную на книге шифров передачу на основе заданного TPMI и четырех антенн.

modulation = '256QAM';
ncellid = 17;
rnti = 111;
mrb = 6;
nlayers = 1;
transformPrecode = true;
txScheme = 'codebook';
tpmi = 1;
nports = 4;
sym = nrPUSCH(cw,modulation,nlayers,ncellid,rnti,transformPrecode,mrb,txScheme,nports,tpmi)
sym = 1008×4 complex

   0.0000 + 0.0000i   0.2169 + 0.2350i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.2296 + 0.3713i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i  -0.0797 - 0.9008i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i  -0.4767 - 0.0143i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.4124 + 0.2638i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i  -0.1433 - 0.2366i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0885 - 0.1080i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.5507 - 0.1894i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i  -0.3039 - 0.9165i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i  -0.1498 + 0.3356i   0.0000 + 0.0000i   0.0000 + 0.0000i
      ⋮

Создайте объект настройки поставщика услуг со свойствами по умолчанию. Этот объект соответствует 30 кГц интервала поднесущей и пропускной способности передачи на 20 МГц.

carrier = nrCarrierConfig;
carrier.SubcarrierSpacing = 30;
carrier.NSizeGrid = 51;

Создайте объект настройки PUSCH с заданными свойствами. То, когда преобразовывают предварительное кодирование, является 1, тип формы волны является ортогональным делением частоты распространения дискретного преобразования Фурье, мультиплексирующим (DFT-s-OFDM).

pusch = nrPUSCHConfig;
pusch.NStartBWP = 10;
pusch.NSizeBWP = 41;
pusch.Modulation = '16QAM';
pusch.NID = []; % Set NID equal to the NCellID property of carrier.
pusch.PRBSet = 0:5;
pusch.TransformPrecoding = 1;
pusch.FrequencyHopping = 'intraSlot';
pusch.SecondHopStartPRB = 3;

Сгенерируйте индексы PUSCH, установив ориентацию индекса относительно сетки поставщика услуг.

[ind,info] = nrPUSCHIndices(carrier,pusch,'IndexOrientation','carrier')
ind = 864x1 uint32 column vector

   121
   122
   123
   124
   125
   126
   127
   128
   129
   130
      ⋮

info = struct with fields:
                G: 3456
               Gd: 864
        NREPerPRB: 144
    DMRSSymbolSet: [2 7]
    PTRSSymbolSet: [1x0 double]

Сгенерируйте символы PUSCH одного типа данных.

numDataBits = info.G;
cws = randi([0 1],numDataBits,1);
sym = nrPUSCH(carrier,pusch,cws,'OutputDataType','single')
sym = 864x1 single column vector

  -0.7454 + 0.2981i
   0.3406 - 0.2312i
  -0.1153 + 0.2756i
   1.1921 - 0.3658i
  -0.3968 - 0.0277i
  -0.8788 - 0.6493i
  -0.8737 + 0.8318i
  -0.5764 + 0.0269i
  -1.6638 + 0.0482i
  -1.0270 - 0.1347i
      ⋮

Постройте сгенерированные символы и индексы на сетке ресурса поставщика услуг.

grid = complex(zeros([carrier.NSizeGrid*12 carrier.SymbolsPerSlot pusch.NumLayers]));
grid(ind) = sym;
imagesc(abs(grid(:,:,1)));
axis xy;
xlabel('OFDM Symbols');
ylabel('Subcarriers');
title('PUSCH Resource Elements in Carrier Resource Grid');

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

свернуть все

Кодовая комбинация UL-SCH от Раздела TS 38.212 6.2.7 в виде вектор-столбца целых чисел от –2 до 1.

  • 0 и 1 представляют ложные и истинные битные значения, соответственно.

  • – 1 и –2 представляют x и заполнителей y в восходящей управляющей информации (UCI), соответственно. Для получения дополнительной информации смотрите Разделы TS 38.212 5.3.3.1 и 5.3.3.2.

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

Схема Modulation в виде 'pi/2-BPSK', 'QPSK', '16QAM', '64QAM', или '256QAM'. Эта схема модуляции определяет тип модуляции и количество битов, используемых на символ модуляции.

Схема модуляцииКоличество битов на символ
'pi/2-BPSK'1
'QPSK'2
'16QAM'4
'64QAM'6
'256QAM'8

Типы данных: char | string

Количество слоев передачи в виде целого числа от 1 до 4. Для получения дополнительной информации смотрите Раздел TS 38.211 6.3.1.3.

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

Скремблирование идентичности в виде целого числа от 0 до 1 023. nid более высокий параметр слоя dataScramblingIdentityPUSCH, в пределах от от 0 до 1 023, если более высокий параметр слоя сконфигурирован. В противном случае, nid личный номер ячейки физического уровня NCellID, в пределах от от 0 до 1 007. Для получения дополнительной информации смотрите Раздел TS 38.211 6.3.1.1.

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

RNTI UE в виде целого числа от 0 до 65 535.

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

Преобразуйте предварительное кодирование в виде false или true. Для получения дополнительной информации смотрите Раздел TS 38.211 6.3.1.4.

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

Количество выделенного ресурса PUSCH блокируется в виде целого числа от 1 до 275. Для получения дополнительной информации смотрите Раздел TS 38.214 6.1.2.

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

Схема Transmission в виде одного из этих значений:

  • 'nonCodebook' — Используйте эту опцию, чтобы отключить предварительное кодирование MIMO.

  • 'codebook' — Используйте эту опцию для основанной на книге шифров передачи с помощью предварительного кодирования MIMO.

Для получения дополнительной информации смотрите Раздел TS 38.211 6.3.1.4.

Типы данных: char | string

Переданный предварительно кодирующий матричный индикатор в виде целого числа от 0 до 27. Допустимая область значений tpmi зависит от конкретного количества слоев передачи, nLayers, и количество портов антенны, nPorts. Для получения дополнительной информации см. таблицы 6.3.1.5-1 TS 38.211 к 6.3.1.5-7.

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

Количество портов антенны в виде 1, 2 , или 4. Для получения дополнительной информации смотрите Раздел TS 38.211 6.3.1.5.

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

Тип данных выходных символов в виде 'double' или 'single'.

Типы данных: char | string

Параметры конфигурации поставщика услуг для определенной нумерологии OFDM в виде nrCarrierConfig объект. Эта функция использует только NCellID свойство этого nrCarrierConfig объект.

Поле свойстваЗначенияОписание
NCellID

1 (значение по умолчанию), целое число от 0 до 1 007

Идентичность ячейки физического уровня

Параметры конфигурации PUSCH для определенной нумерологии OFDM в виде nrPUSCHConfig объект. Эта функция только использует их nrPUSCHConfig свойства объектов.

Поле свойстваЗначенияОписание
Modulation

'QPSK', '16QAM', '64QAM', или '256QAM', 'pi/2-BPSK', строковый скаляр или символьный массив

Схема Modulation кодовой комбинации

NumLayers

1 (значение по умолчанию), целое число от 1 до 4

Количество слоев передачи

NID

[] (значение по умолчанию), целое число от 0 до 1 023

Скремблирование идентичности в виде целого числа от 0 до 1 023. Использование значение, чтобы позволить этому свойству быть равным NCellID из carrier входной параметр.

RNTI

1 (значение по умолчанию), целое число от 0 до 65 535

Радиосеть временный идентификатор оборудования пользователя

TransformPrecoding

0 (значение по умолчанию), 1

Преобразуйте флаг перед кодированием в виде одного из этих значений.

  • 0 — Предварительное кодирование преобразования отключено, и типом формы волны является CP-OFDM.

  • 1 — Предварительное кодирование преобразования включено, и типом формы волны является DFT-s-OFDM.

PRBSet

[0:51] (значение по умолчанию), вектор из неотрицательных целых чисел от 0 до 274

Физические блоки ресурса, выделенные для разделяемого канала в BWP (на основе 0)

TransmissionScheme

'nonCodebook' (значение по умолчанию), 'codebook'

Схема передачи PUSCH

NumAntennaPorts

1 (значение по умолчанию), 2, или 4

Количество портов антенны

TPMI

0 (значений по умолчанию), целое число от 0 до 27

Переданный предварительно кодирующий матричный индикатор

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

свернуть все

Символы модуляции PUSCH, возвращенные как комплексная матрица. Если txScheme установлен в 'codebook', количеством столбцов матрицы является nPorts. Если txScheme установлен в 'nonCodebook', количеством столбцов матрицы является nLayers.

Типы данных: single | double
Поддержка комплексного числа: Да

Ссылки

[1] 3GPP TS 38.211. “NR; Физические каналы и модуляция”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

[2] 3GPP TS 38.212. “NR; Мультиплексирование и кодирование канала”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.

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

Смотрите также

Функции

Объекты

Введенный в R2019a