exponenta event banner

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, заданные как матрица с комплексными значениями размера NSym-by-NRxAnts.

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

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

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

Оценка канала, заданная как матрица комплексных значений размера NSym-by-NRxAnts.

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

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

Типы данных: 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 input, функция возвращает это поле как 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 вход. stateOut выходной сигнал представляет первую передачу транспортного блока.

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

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

Ссылки

[1] 3GPP TS 36.211. «Физические каналы и модуляция». Проект партнерства 3-го поколения; техническая спецификация на сеть радиодоступа группы; Усовершенствованный универсальный наземный радиодоступа (E-UTRA). https://www.3gpp.org.

[2] 3GPP TS 36.321. «Спецификация протокола управления доступом к среде (MAC)». Проект партнерства 3-го поколения; техническая спецификация на сеть радиодоступа группы; Усовершенствованный универсальный наземный радиодоступа (E-UTRA). https://www.3gpp.org.

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