exponenta event banner

lteNPDSCHDecode

Декодирование символов NPDSCH

Описание

[cw,stateout,symbols] = lteNPDSCHDecode(enb,chs,sym) расшифровывает sym, символы NB-IoT физического общего канала нисходящей линии связи (NPDSCH), для настроек на уровне соты enb и специфичная для канала структура конфигурации chs. Канальное декодирование включает в себя устаревшее кодирование, преобразование уровня, мягкую демодуляцию, дескремблирование и восстановление кодового слова. Декодирование инвертирует процесс кодирования канала NPDSCH, описанный в разделе 10.2.3 из [1]. Функция возвращает кодовое слово cw мягких битов, состояние декодера stateout для приема передачи пучка и принятых символов созвездия symbols.

пример

[cw,stateout,symbols] = lteNPDSCHDecode(enb,chs,sym,statein) декодирует символы NPDSCH для начального состояния декодера statein.

[cw,stateout,symbols] = lteNPDSCHDecode(enb,chs,sym,hest,noiseest) декодирует символы NPDSCH для оценки канала hest и оценка шума noiseest.

[cw,stateout,symbols] = lteNPDSCHDecode(enb,chs,sym,hest,noiseest,statein) декодирует символы NPDSCH для оценки канала, оценки шума и начального состояния декодера.

Примеры

свернуть все

Формирование и прием подкадра символов NPDSCH по подкадрам для пучка из 12 подкадров.

Определение настроек для всей соты и конфигурации передачи канала в структурах параметров enb и chs.

enb.NNCellID = 0;
enb.NBRefP = 1;
enb.NFrame = 1;
chs.NSF = 3;
chs.NRep = 4;
chs.RNTI = 0;
chs.NPDSCHDataType = 'NotBCCH';

Установите длину выходного кодового слова в 960 и создайте биты кодового слова. Не указывайте состояния кодера или декодера в начале пучка.

cwLen = 960;
eState = [];
statein = [];
txcw = ones(cwLen,1);

Создайте символы NPDSCH для каждого из 12 подкадров и затем декодируйте их.

for subframeIdx = 0:(chs.NSF*chs.NRep-1)
    enb.NSubframe = subframeIdx;
    [sym,eState] = lteNPDSCH(enb,chs,txcw,eState);
    [cw,stateout] = lteNPDSCHDecode(enb,chs,sym,statein);
    statein = stateout;
end

Значение поля CWSFCount в структуре dstate указывает, что все три подкадра в кодовом слове были приняты четыре раза.

disp(stateout.EndOfTx)
   1
disp(stateout.CWSFCount)
     4
     4
     4

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

свернуть все

Параметры для всей ячейки, указанные как структура, содержащая следующие поля:

ИмяОбязательно или необязательноЦенностиОписаниеТипы данных
NNCellIDНеобходимыйНеотрицательное целое числоИдентификация ячеек узкополосного физического уровня (PCI)double
NSubframeНеобходимыйНеотрицательное целое числоНомер подкадраdouble
NFrameДополнительный0 (по умолчанию), неотрицательное целое числоНомер кадраdouble
NBRefPНеобходимый1, 2Количество антенных портов узкополосного опорного сигнала (NRS). Чтобы указать передачу на одном антенном порте (порт 0) и использовать выравнивание минимальной среднеквадратичной ошибки (MMSE) для приема, укажите это поле как 1. Чтобы указать разнесение передачи и использовать декодер ортогонального пространственно-частотного блочного кода (OSFBC) для устаревшего кодирования, укажите это поле как 2.double

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

Конфигурация передачи канала, заданная как структура, содержащая следующие поля:

ИмяОбязательно или необязательноЦенностиОписаниеЗависимостиТипы данных
NPDSCHDataTypeДополнительный'NotBCCH', 'SIB1NB', 'BCCHNotSIB1NB'

Тип данных, переносимых NPDSCH, указанный как одно из следующих значений:

  • 'NotBCCH' - NPDSCH не переносит широковещательный канал управления (BCCH).

  • 'SIB1NB' - NPDSCH переносит узкополосный блок 1 системной информации (SIB1-NB).

  • 'BCCHNotSIB1NB' - NPDSCH переносит BCCH, но не SIB1-NB.

char, string
NSFСм. столбец ЗависимостиНеотрицательное целое числоКоличество подкадров, которым сопоставлено кодовое слово, не включая повторы

  • Это поле необходимо при указании NPDSCHDataType поле как значение, отличное от 'SIB1NB' и вернуть info выход.

  • lteNPDSCHDecode функция устанавливает для этого поля значение 8 при указании NPDSCHDataType поле как 'SIB1NB' и вернуть info выход.

  • Если вы не вернете info выход, lteNPDSCHDecode функция игнорирует это поле.

double
NRepНеобходимыйНеотрицательное целое числоКоличество повторенийdouble
RNTIСм. столбец ЗависимостиНеотрицательное целое число16-битный временный идентификатор радиосети (RNTI)

  • Это поле необходимо при указании NPDSCHDataType поле как значение, отличное от 'SIB1NB'.

  • lteNPDSCHDecode устанавливает это поле в значение системной информации RNTI (SI-RNTI) 65535 при указании NPDSCHDataType поле как 'SIB1NB'.

double
CSIДополнительный'On' (по умолчанию), 'Off'Информация о состоянии канала (CSI). Чтобы масштабировать мягкие биты по CSI во время процесса выравнивания, укажите это поле как 'On'. В противном случае укажите это поле как 'Off'.char, string

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

Модулированные символы NPDSCH, указанные как матрица комплексных значений NRE-by-NRxAnts, где:

  • NRE - количество символов квадратурной фазовой манипуляции (QPSK) на антенну и на подкадр, назначенный NPDSCH;

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

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

Состояние входного кодера для передачи пучка, определенного как структура, содержащая поля, перечисленные в stateout выход. Этот аргумент может быть пустым только в том случае, если информация отсутствует, например, в первом подкадре пакета.

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

Оценка канала для уровня передачи, заданного как массив комплексных значений NRE-by-NRxAnts-by-NNBRefP, где:

  • NRE - количество кодированных символов NPDSCH на антенну и подкадр;

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

  • NNBRefP - количество антенных портов NRS, указанное в NBRefP области enb вход.

lteNPDSCHDecode функция предполагает, что эта оценка использует NRS.

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

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

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

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

свернуть все

Кодовое слово мягких битов, возвращаемое в виде NSF-by-1 двоичного вектора, где NSF - количество подкадров.

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

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

ИмяЦенностиОписаниеТипы данных
SubframeIdxцелое число в интервале [0, NSF x NRep – 1]Индекс подкадра в пучке в форме на основе нуля. lteNPDSCHDecode функция возвращает это поле как SubframeIdx области statein ввод увеличен на единицу. Когда входное значение SubframeIdx в statein достигает максимального значения, функция возвращает это поле как 0. Если не указано входное значение в statein вход, lteNPDSCHDecode функция возвращает это поле как 0. Значение 0 указывает, что передача достигла конца пучка, который также указывается функцией путем установки EndOfTx поле в 1 (true).double
InitNFrameНеотрицательное целое число

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

  • Значение InitNFrame области statein аргумент

  • 0 когда вы не указываете InitNFrame области statein вход

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

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

  • Значение InitNSubframe области statein аргумент

  • NSubframe области enb если не указан параметр InitNSubframe области statein вход

double
CWBufferNSF-by-1 двоичный векторБуфер для хранения битов с мягким объединением логарифмического отношения правдоподобия (LLR) после дескремблирования кодового слова. Длина этого поля равна длине кодового слова, cw. В начале пучка lteNPDSCHDecode функция сбрасывает это поле.double
CWSFCountNSF-by-1 целочисленный векторСчетчик повторений. Длина этого поля равна длине кодового слова, cw. Каждый элемент этого поля указывает, сколько повторений соответствующего элемента cw CWBuffer поле восстановлено. В начале пучка lteNPDSCHDecode функция сбрасывает это поле.double
EndOfCWЛогичный 1 (true) или 0 (false)Индикатор поступления кодового слова. lteNPDSCHDecode функция возвращает это поле как 1 (true) когда принято все кодовое слово, то есть когда каждый элемент CWSFCount поле не менее 1. В начале пучка lteNPDSCHDecode функция сбрасывает это поле.logical
EndOfTxЛогичный 1 (true) или 0 (false)Конец индикатора пучка. lteNPDSCHDecode функция возвращает это поле как 1 (true), когда передача достигает конца пучка. В противном случае lteNPDSCHDecode функция возвращает это поле как 0 (false). В начале пучка lteNPDSCHDecode функция сбрасывает это поле.logical

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

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

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

Подробнее

свернуть все

Связка

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

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

Совет

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

  1. Позвоните в lteNPDSCHDecode , опционально указывая начальное состояние кодера с помощью statein ввод; stateout выходной сигнал представляет первый транспортный блок в пучке.

  2. Позвоните в lteNPDSCHDecode снова, указав statein ввод в качестве stateout вывод, возвращенный предыдущим вызовом функции.

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

Ссылки

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

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