lteNPUSCH

Сгенерируйте символы NPUSCH

Описание

[sym,stateOut] = lteNPUSCH(ue,chs,cw) генерирует sym, вектор-столбец, содержащий узкополосный физический восходящий канал совместно использованный канал (NPUSCH) символы какое-то время паз. Функция генерирует символы путем применения NPUSCH, кодирующего к кодовой комбинации cw для заданных настроек ue оборудования пользователя (UE) и настройка передачи канала chs. Кодирование канала включает скремблирование, модуляцию, отображение слоя на единственный слой, преобразуйте предварительное кодирование и предварительное кодирование в соответствии с разделом 10.1.3 из [1]. Функция также возвращает stateOut, структура, содержащая энкодер, утверждает для передачи пакета.

пример

[sym,stateOut] = lteNPUSCH(ue,chs,cw,stateIn) задает stateIn, начальное состояние энкодера.

Примеры

свернуть все

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

Сконфигурируйте настройки UE-specific.

ue = struct('NNCellID',0,'NBULSubcarrierSpacing','3.75kHz');

Задайте настройку передачи канала.

chs = struct('NPUSCHFormat','Data','NRUsc',1,'NRep',2,'NBULSubcarrierSet',17, ...
    'NRU',1,'NULSlots',16,'Modulation','BPSK','RNTI',0);

Сгенерируйте кодовую комбинацию битов.

[~,info] = lteNPUSCHIndices(ue,chs);
cwLen = info.G;
cw = ones(cwLen,1);

Задайте начальное состояние энкодера как пустую структуру, указав на запуск пакета.

stateIn = struct();

Сгенерируйте символы NPUSCH для передачи пакета.

for SlotIdx = 0:(chs.NRep*chs.NRU*chs.NULSlots-1)
    ue.NSlot = SlotIdx;
    [sym,stateOut] = lteNPUSCH(ue,chs,cw,stateIn);
    stateIn = stateOut;
end

Подтвердите, что передача достигает конца пакета.

disp(stateOut.EndOfTx)
   1

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

свернуть все

Настройки UE-specific в виде структуры, содержащей эти поля.

Поле ЗначенияОписаниеТипы данных
NNCellIDЦелое число в интервале [0, 503]Узкополосная идентичность ячейки физического уровня (PCI)double
NBULSubcarrierSpacing'3.75kHz', '15kHz'

Расстояние между поднесущими восходящего канала NB-IoT

Чтобы установить расстояние между поднесущими 3,75 кГц, задайте это поле как '3.75kHz'. Чтобы установить расстояние между поднесущими 15 кГц, задайте это поле как '15kHz'.

charСтрока
NSlotНеотрицательное целое числоНомер слотаdouble
NFrame0 (значение по умолчанию), неотрицательное целое числоСтруктурируйте номерdouble

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

Настройка передачи канала в виде структуры, содержащей эти поля.

Поле ЗначенияОписаниеТипы данных
NPUSCHFormat'Data', 'Control'

Формат NPUSCH

Чтобы указать, что NPUSCH несет узкополосный восходящий канал совместно использованный канал (UL-SCH) данные, задайте это поле как 'Data'. Чтобы указать, что NPUSCH несет восходящую управляющую информацию, задайте это поле как 'Control'.

charСтрока
NRUsc1, 3, 6, 12

Количество последовательных поднесущих в модуле ресурса (RU)

Если вы задаете NPUSCHFormat поле как 'Control' или NBULSubcarrierSpacing поле ue введите как '3.75kHz', затем необходимо задать это поле как 1 .

double
NRep1, 2, 4, 8, 16, 32, 64, 128Количество повторений для кодовой комбинацииdouble
NRU1, 2, 3, 4, 5, 6, 8, 10Количество RUdouble
NULSlots2, 4, 8, 16

Количество пазов на RU

Если вы задаете NPUSCHFormat поле как 'Control', затем необходимо задать это поле как 4.

Если вы задаете NPUSCHFormat поле как 'Data', затем необходимо задать это поле как:

  • 16 когда вы задаете NRUsc поле как 1

  • 8 когда вы задаете NRUsc поле как 3

  • 4 когда вы задаете NRUsc поле как 6

  • 2 когда вы задаете NRUsc поле как 12

double
Modulation'BPSK', 'QPSK'

Тип модуляции

Чтобы включить бинарное манипулирование сдвига фазы (BPSK), задайте это поле как 'BPSK'. Чтобы включить квадратурное манипулирование сдвига фазы (QPSK), задайте это поле как 'QPSK'.

Если вы задаете NPUSCHFormat поле как 'Control', затем необходимо задать это поле как 'BPSK'.

charСтрока
RNTIНеотрицательное целое числоЗначение радиосети временного идентификатора (RNTI)double

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

Кодовая комбинация битных значений в виде вектор-столбца с бинарным знаком. Длина этого входа должна быть целочисленным кратным:

  • chs.NRU x chs.NULSlots x chs.NRUsc когда вы задаете Modulation поле chs введите как 'BPSK'

  • 2 x chs.NRU x chs.NULSlots x chs.NRUsc когда вы задаете Modulation поле chs введите как 'QPSK'

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

Начальное состояние энкодера для передачи пакета в виде структуры, содержащей эти поля.

Поле ЗначенияОписаниеТипы данных
SlotIdxЦелое число в интервале [0, (chs.NRU x chs.NULSlots x chs.NRep) – 1]Индекс паза в пакете, в основанной на нуле формеdouble
InitNSlotНеотрицательное целое числоНомер слота для скремблирования инициализации последовательностиdouble
InitNFrameНеотрицательное целое числоСтруктурируйте номер для скремблирования инициализации последовательностиdouble
EndOfBlk1 или true, 0 или falseКонец транспортного указателя блок-участкаlogical
EndOfTx1 или true, 0 или falseКонец индикатора пакетаlogical
GhpNSlotНеотрицательное целое числоНомер слота для первого паза в RUdouble

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

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

свернуть все

Символы NPUSCH какое-то время паз, возвращенный как вектор-столбец с комплексным знаком.

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

Выведите состояние энкодера, возвращенное как структура. Этот выход содержит внутреннее состояние каждого транспортного блока в этих полях.

Поле ЗначенияОписаниеТипы данных
SlotIdxЦелое число в интервале [0, (chs.NRU x chs.NULSlots x chs.NRep) – 1]

Индекс паза в пакете, в основанной на нуле форме

Функция возвращает это поле как SlotIdx поле stateIn введите увеличенный на одного. Когда SlotIdx поле stateIn введите достигает ее максимального значения, функция возвращает это поле как 0. Если вы не задаете SlotIdx поле stateIn введите, функция возвращает это поле как 0. Значение 0 указывает, что передача достигла конца пакета, на который функция также указывает путем установки EndOfTx поле к 1.

double
InitNSlotНеотрицательное целое число

Номер слота для скремблирования инициализации последовательности

Когда обрабатываемый паз в точке инициализации, это поле равно NSlot поле ue входной параметр. В противном случае функция возвращает это поле как одно из этих значений.

  • Значение InitNSlot поле stateIn входной параметр

  • Значение NSlot поле ue введите, когда вы не зададите InitNSlot поле stateIn входной параметр

double
InitNFrameНеотрицательное целое число

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

Когда обработанный кадр в точке инициализации, это поле равно NFrame поле ue входной параметр. В противном случае функция возвращает это поле как одно из этих значений.

  • Значение InitNFrame поле stateIn входной параметр

  • 0 когда вы не задаете InitNFrame поле stateIn входной параметр

double
EndOfBlk1, 0

Конец транспортного указателя блок-участка

Когда передача достигает конца транспортного блока, функция возвращает это поле как 1.

В начале пакета функция сбрасывает это поле.

logical
EndOfTx1, 0

Конец индикатора пакета

Когда передача достигает конца пакета, функция возвращает это поле как 1. В противном случае функция возвращает это поле как 0.

В начале пакета функция сбрасывает это поле.

logical
GhpNSLotНеотрицательное целое число

Номер слота для первого паза в RU

Функция использует это поле только, когда вы задаете NPUSCHFormat поле как 'Data' и NRUsc поле как 1 в chs входной параметр.

double

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

Больше о

свернуть все

Пакет

Пакет в слое среднего управления доступом (MAC) относится к повторным передачам транспортного блока.

Для получения дополнительной информации смотрите Раздел 5.3.2.1 из [2].

Советы

Чтобы использовать эту функцию для передачи пакета, выполните эти шаги.

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

  2. Вызовите функцию снова, задав stateIn введите как stateOut выведите возвращенный предыдущим вызовом функции.

  3. Повторите шаг 2, пока функция не возвратит EndOfTx поле stateOut выведите как 1 TRUE), указывая на конец пакета.

Ссылки

[1] 3GPP TS 36.211. “Физические каналы и модуляция”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group; Развитый Универсальный Наземный Радио-доступ (к E-UTRA). https://www.3gpp.org.

[2] 3GPP TS 36.321. “Спецификация протокола Среднего управления доступом (MAC)”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group; Развитый Универсальный Наземный Радио-доступ (к E-UTRA). https://www.3gpp.org.

Введенный в R2020a