lteNPUSCHDecode

Декодируйте символы NPUSCH

Описание

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

[cw,stateOut,symbols] = lteNPUSCHDecode(ue,chs,sym,hEst,noiseEst) декодирует символы NPUSCH для указанной оценки канала hEst и оценка спектральной плотности степени шума noiseEst.

пример

[cw,stateOut,symbols] = lteNPUSCHDecode(___,stateIn) задает stateIn, начальное состояние декодера, в дополнение к любой комбинации входных аргументов из предыдущих синтаксисов.

Примеры

свернуть все

Сгенерировать символы NPUSCH на слоте за слотом базиса для пакета, содержащего восемь пазы для входа кодового слова. Восстановите соответствующее кодовое слово мягких бит путем декодирования символов NPUSCH.

Настройте параметры UE.

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

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

chs = struct('NPUSCHFormat','Data','NRUsc',12,'NRep',4,'NRU',1,...
    'NULSlots',2,'Modulation','QPSK','RNTI',0);

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

cwLen = 2*20*chs.NRUsc*chs.NRU*chs.NULSlots;
cwIn = ones(cwLen,1);

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

encoderStateIn = struct();
stateIn = struct();

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

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

Подтвердите, что передача и прием достигают конца пакета и что принятое кодовое слово соответствует входу кодовому слову.

disp(encoderStateOut.EndOfTx)
   1
disp(stateOut.EndOfTx)
   1
disp(isequal(cwIn,cw>0))
   1

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

свернуть все

Специфичные для UE настройки, заданные как структура, содержащая эти поля.

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

Интервал между поднесущими восходящей линии NB-IoT

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

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

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

Строение передачи по каналу, заданная как структура, содержащая эти поля.

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

Формат NPUSCH

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

char, string
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, string
RNTIНеотрицательное целое числоЗначение временного идентификатора радиосети (RNTI)double
CSI'On' (по умолчанию), 'Off'

Взвешивайте мягкие биты по информации о состоянии канала (CSI)

Чтобы масштабировать cw выход с CSI, задайте это поле следующим 'On'. В противном случае задайте это поле следующим 'Off'.

char, string

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

Символы NPUSCH, заданные как комплексная матрица размера N Sym-by N RxAnts.

  • N Sym - это количество символов на одну приемную антенну, назначенную NPUSCH для паза.

  • N RxAnts - это количество приемных антенн.

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

Оценка канала, заданная как комплексная матрица размера N Sym-by N RxAnts.

  • N Sym - это количество символов на одну приемную антенну, назначенную NPUSCH для паза.

  • N RxAnts - это количество приемных антенн.

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

Оценка спектральной плотности степени шума на ресурсный элемент, заданная в виде действительного скаляра.

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

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

ОбластьЗначенияОписаниеТипы данных
SlotIdxЦелое число в интервале [0, (chs.NRU x chs.NULSlots x chs.NRep) – 1]Индекс паза в пучке, в нулевой формеdouble
BlkFlushEnabled1 или true, 0 или falseЧтобы очистить буферы в каждом блоке, задайте это поле следующим 1 (true). В противном случае задайте это поле следующим 0 (false).logical
InitNSlotНеотрицательное целое числоНомер паза для инициализации последовательности скремблированияdouble
InitNFrameНеотрицательное целое числоНомер системы координат для инициализации скремблирующей последовательностиdouble
EndOfBlk1 или true, 0 или falseИндикатор поступления транспортных блоковlogical
EndOfCW1 или true, 0 или falseИндикатор приема кодового словаlogical
EndOfTx1 или true, 0 или falseКонец индикатора пучкаlogical
CWBufferРеальный вектор-столбец той же длины, что и cw выход.Буфер для хранения восстановленного кодового словаdouble
CWSLCount(chs.NRU x chs.NULSlots) -by-1 вектор целых чиселСчетчик повторенияdouble

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

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

свернуть все

Кодовое слово мягких бит, возвращаемое как реальный вектор-столбец.

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

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

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

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

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

double
BlkFlushEnabled1, 0Индикатор того, что функция очищает буферы в каждом блокеlogical
InitNSlotНеотрицательное целое число

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

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

  • Значение InitNSlot поле stateIn вход

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

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

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

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

  • Значение InitNFrame поле stateIn вход

  • 0 если вы не задаете InitNFrame поле stateIn вход

double
EndOfBlk1, 0

Индикатор поступления транспортных блоков

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

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

logical
EndOfCW1, 0

Индикатор приема кодового слова

Когда функция получила все кодовое слово, то есть когда каждый элемент CWSLCount поле как минимум 1функция возвращает это поле следующим 1.

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

logical
EndOfTx1, 0

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

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

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

logical
CWBufferРеальный вектор-столбец той же длины, что и cw выход.

Буфер для хранения восстановленного кодового слова

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

double
CWSLCount(chs.NRU x chs.NULSlots) -by-1 вектор целых чисел

Счетчик повторения

Каждый элемент указывает, сколько повторений соответствующей части кодового слова CWBuffer месторождение восстановлено.

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

double

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

Получены символы созвездия, возвращены как комплексно-ценный вектор-столбец.

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

Подробнее о

свернуть все

Связка

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

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

Совет

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

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

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

  3. Повторяйте шаг 2, пока функция не вернет EndOfTx поле stateOut выход как 1 (true), обозначающий конец пучка.

Ссылки

[1] 3GPP TS 36.211. «Физические каналы и модуляция». 3-ья Генерация проект партнерства; Группа технических спецификаций Radio Доступа Network; Evolved Universal Terrestrial Radio Access (E-UTRA). https://www.3gpp.org.

[2] 3GPP TS 36.321. «Протокол управления средним доступом (MAC) спецификации». 3rd Генерация Partnership Project; Группа технических спецификаций Radio Доступа Network; Evolved Universal Terrestrial Radio Access (E-UTRA). https://www.3gpp.org.

Введенный в R2020a