nrULSCHMultiplex

Выполните данные UL-SCH и мультиплексирование управления

    Описание

    пример

    [cw,info] = nrULSCHMultiplex(pusch,tcr,tbs,culsch,cack,ccsi1,ccsi2) возвращает кодовую комбинацию cw путем выполнения восходящего канала совместно использованный канал (UL-SCH), мультиплексирующий на закодированных данных UL-SCH и закодированной восходящей управляющей информации (UCI), как задано в Разделе TS 38.212 6.2.7 [1]. pusch физический восходящий канал совместно использованная настройка канала (PUSCH). tcr целевой уровень кода. tbs транспортный размер блока для передачи UL-SCH. culsch закодированные данные UL-SCH. cack, ccsi1, и ccsi2 закодированные типы UCI.

    Функция внутренне вычисляет количество зарезервированных битов для гибридного автоматического повторного подтверждения запроса (HARQ-ACK) передача, GACKRvd и затем выдерживает сравнение с длинами закодированных входных параметров. Это сравнение определяет обработку HARQ-ACK для соответствия уровня или прокалывания.

    Длина cw равняется емкости в битах PUSCH. cw содержит закодированную информацию до емкости в битах PUSCH и игнорирует любую другую дополнительную информацию во входных параметрах. Выход cw содержит нули, если не достаточно закодировал UL-SCH и закодировал UCI (HARQ-ACK, информация о состоянии канала (CSI) 1, или часть 2 CSI), данные присутствуют, чтобы достигнуть емкости в битах. Функция также возвращает структуру info, который содержит информацию о местоположениях на основе 1 каждого типа в кодовой комбинации.

    Примеры

    свернуть все

    Создайте объект настройки PUSCH по умолчанию. Выделите первый 21 блок ресурса части пропускной способности к PUSCH.

    pusch = nrPUSCHConfig;
    pusch.PRBSet = 0:20;

    Установите целевой уровень кода, длины полезной нагрузки данных UL-SCH, HARQ-ACK, части 1 CSI и части 2 CSI.

    tcr = 0.5;  % Target code rate
    tbs = 100;  % Payload length of UL-SCH data (transport block size)
    oack = 3;   % Payload length of HARQ-ACK
    ocsi1 = 10; % Payload length of CSI part 1
    ocsi2 = 10; % Payload length of CSI part 2

    Доберитесь уровень совпадал с длинами данных UL-SCH, HARQ-ACK, части 1 CSI и части 2 CSI.

    rmInfo = nrULSCHInfo(pusch,tcr,tbs,oack,ocsi1,ocsi2);

    Создайте предопределенные закодированные биты UL-SCH, HARQ-ACK, части 1 CSI и части 2 CSI в течение соответствующей уровню продолжительности выхода, полученной из rmInfo структура.

    culsch = ones(rmInfo.GULSCH,1);
    cack = 2*ones(rmInfo.GACK,1);
    ccsi1 = 3*ones(rmInfo.GCSI1,1);
    ccsi2 = 4*ones(rmInfo.GCSI2,1);

    Доберитесь кодовая комбинация от предопределенного закодировала данные UL-SCH и закодировала типы UCI.

    cw = nrULSCHMultiplex(pusch,tcr,tbs,culsch,cack,ccsi1,ccsi2);

    Чтобы видеть операцию мультиплексирования, постройте кодовую комбинацию. Кодовая комбинация запускается с элементов части 1 CSI, сопровождаемой HARQ-ACK, частью 1 CSI, частью 2 CSI и соединением данных UL-SCH и части 2 CSI.

    plot(cw)
    xlabel('Codeword Indices')
    ylabel('Codeword Values')
    title('Multiplexing Operation')

    Создайте объект настройки PUSCH с pi/2-BPSK схема модуляции и никакое скачкообразное движение частоты. Установитесь бета коэффициент смещения для HARQ-ACK к 20 и бета фактор смещения для части 1 CSI и части 2 CSI к 6,25 каждый. Задайте масштабный коэффициент как 0,8, который ограничивает количество элементов ресурса (REs), присвоенный для UCI.

    pusch = nrPUSCHConfig;
    pusch.Modulation = 'pi/2-BPSK';
    pusch.FrequencyHopping = 'neither';
    pusch.BetaOffsetACK = 20;
    pusch.BetaOffsetCSI1 = 6.25;
    pusch.BetaOffsetCSI2 = 6.25;
    pusch.UCIScaling = 0.8;

    Установите целевой уровень кода, длины полезной нагрузки данных UL-SCH, HARQ-ACK, части 1 CSI и части 2 CSI.

    tcr = 0.5;   % Target code rate
    tbs = 1032;  % Payload length of UL-SCH data (transport block size)
    oack = 8;    % Payload length of HARQ-ACK
    ocsi1 = 88;  % Payload length of CSI part 1
    ocsi2 = 720; % Payload length of CSI part 2

    Доберитесь уровень совпадал с длинами данных, HARQ-ACK, части 1 CSI и части 2 CSI.

    rmInfo = nrULSCHInfo(pusch,tcr,tbs,oack,ocsi1,ocsi2);

    Создайте случайные биты полезной нагрузки для данных UL-SCH, HARQ-ACK, части 1 CSI и части 2 CSI.

    data = randi([0 1],tbs,1);
    ack  = randi([0 1],oack,1);
    csi1 = randi([0 1],ocsi1,1);
    csi2 = randi([0 1],ocsi2,1);

    Создайте Системный объект энкодера UL-SCH.

    encUL = nrULSCH;

    Загрузите транспортный блок в энкодер UL-SCH.

    setTransportBlock(encUL,data);

    Получите закодированные биты длины rmInfo.GULSCH путем вызова энкодера.

    rv = 0; % Redundancy version is 0
    culsch = encUL(pusch.Modulation,pusch.NumLayers,rmInfo.GULSCH,rv);

    Закодируйте случайную полезную нагрузку HARQ-ACK, части 1 CSI и части 2 CSI в течение соответствующих уровню продолжительностей выхода, полученных из rmInfo структура.

    cack  = nrUCIEncode(ack,rmInfo.GACK,pusch.Modulation);
    ccsi1 = nrUCIEncode(csi1,rmInfo.GCSI1,pusch.Modulation);
    ccsi2 = nrUCIEncode(csi2,rmInfo.GCSI2,pusch.Modulation);

    Получите кодовую комбинацию от закодированных битов UL-SCH и закодированных битов типов UCI.

    [cw,info] = nrULSCHMultiplex(pusch,tcr,tbs,culsch,cack,ccsi1,ccsi2)
    cw = 8112x1 int8 column vector
    
       1
       0
       1
       0
       0
       0
       1
       1
       1
       0
          ⋮
    
    
    info = struct with fields:
        ULSCHIndices: [1622x1 uint32]
          ACKIndices: [1159x1 uint32]
         CSI1Indices: [4482x1 uint32]
         CSI2Indices: [849x1 uint32]
         UCIXIndices: [0x1 uint32]
         UCIYIndices: [0x1 uint32]
    
    

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

    свернуть все

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

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

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

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

    Количество слоев передачи в виде 1, 2, 3, или 4.

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

    Отображение типа физического разделяемого канала в виде 'A' или 'B'.

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

    Выделение символа OFDM физического разделяемого канала в виде двухэлементного вектора из неотрицательных целых чисел. Первый элемент этого свойства представляет запуск выделения символа (на основе 0). Второй элемент представляет количество выделенных символов OFDM.

    Когда это свойство установлено в [] или вторым элементом в этом двухэлементном векторе из неотрицательных целых чисел является 0, выделение символа пусто.

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

    Выделение физического блока ресурса (PRB) PUSCH в BWP в виде вектора из неотрицательных целых чисел от 0 до 274.

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

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

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

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

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

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

    • 'neither'

    • 'intraSlot'

    • 'interSlot'

    Если вы указываете, что скачкообразное движение частоты внутрипаза и закодированные биты входа не удовлетворяют уравнениям Раздела TS 38.212 6.2.7, функция возвращает кодовую комбинацию, принимающую, что никакое скачкообразное движение частоты не присутствует.

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

    Бета фактор смещения гибридного автоматического повторного подтверждения запроса (HARQ-ACK) в виде положительного целого числа. Это свойство используется, чтобы определить количество ресурсов для мультиплексирования HARQ-ACK. Номинальная стоимость является одной из записи из Таблицы 9.3-1 TS 38.213.

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

    Масштабный коэффициент, чтобы ограничить количество элементов ресурса, выделенных для восходящей информации о канале (UCI) на PUSCH в виде скаляра в области значений (0, 1). Номинальная стоимость 0.5, 0.65, 0.8, или 1.

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

    Радиосеть временный идентификатор оборудования пользователя (UE) в виде целого числа от 0 до 65 535.

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

    Опорный сигнал демодуляции PUSCH (DM-RS) параметры конфигурации в виде nrPUSCHDMRSConfig объект настройки. Это свойство относится к настройке опорного сигнала демодуляции и содержит все свойства заданного nrPUSCHDMRSConfig объект.

    Включите PT-RS в виде одного из этих значений.

    • 0 — Отключите настройку PT-RS.

    • 1 — Включите настройку PT-RS.

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

    Опорный сигнал отслеживания фазы PUSCH (PT-RS) настройка в виде nrPUSCHPTRSConfig объект настройки. Это свойство относится к фазе, отслеживающей настройку опорного сигнала, и содержит все свойства заданного nrPUSCHPTRSConfig объект.

    Целевой уровень кода для кодовой комбинации в передаче UL-SCH в виде скаляра в области значений (0, 1).

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

    Транспортный размер блока сопоставлен с кодовой комбинацией в передаче UL-SCH в виде неотрицательного целого числа. Значение 0 не указывает ни на какой транспортный блок или никакую передачу UL-SCH на PUSCH.

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

    Закодированные биты данных UL-SCH в виде вектор-столбца с бинарным знаком длины gulsch. gulsch количество закодированных и уровня соответствующие биты данных UL-SCH, возвращенные в info выходной аргумент nrULSCHInfo функция. Закодированные биты UL-SCH, culsch, закодированные и соответствующие уровню биты, полученные путем обработки транспортного блока. Значение [] указывает на отсутствие передачи данных UL-SCH. Если вы задаете tbs входной параметр как 0, culsch входной параметр должен быть пустым.

    gulsch должно быть равно емкости в битах данных.

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

    Закодированные биты HARQ-ACK в виде вектор-столбца с действительным знаком длины gack. gack количество закодированных, и уровень совпадал с битами HARQ-ACK, возвращенными в info выходной аргумент nrULSCHInfo функция. Значение [] указывает на отсутствие передачи HARQ-ACK. Номинальной стоимостью битов HAQR-ACK является 0, 1, -1, и -2.

    gack должен быть кратным продукту количества слоев передачи и порядка модуляции.

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

    Закодированная часть CSI 1 бит в виде вектор-столбца с действительным знаком длины gcsi1. gcsi1 количество закодированных, и уровень совпадал с частью CSI 1 бит, возвращенный в info выходной аргумент nrULSCHInfo функция. Значение [] указывает на отсутствие передачи части 1 CSI. Номинальной стоимостью части CSI 1 бит является 0, 1, -1, и -2.

    gcsi1 должен быть кратным продукту количества слоев передачи и порядка модуляции.

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

    Закодированная часть CSI 2 бита в виде вектор-столбца с действительным знаком длины gcsi2. gcsi2 количество закодированных, и уровень совпадал с частью CSI 2 бита, возвращенные в info выходной аргумент nrULSCHInfo функция. Значение [] указывает на отсутствие передачи части 2 CSI. Номинальной стоимостью части CSI 2 бита является 0, 1, -1, и -2. Номинально, часть 2 CSI присутствует только, когда часть 1 CSI присутствует.

    gcsi2 должен быть кратным продукту количества слоев передачи и порядка модуляции.

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

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

    свернуть все

    Кодовая комбинация для передачи на PUSCH, возвращенном как вектор-столбец с действительным знаком. Если вы обеспечиваете какой-либо из входных параметров как тип данных int8, типом выходных данных кодовой комбинации является int8. Номинальной стоимостью битов в кодовых комбинациях является 0, 1, -1, и -2.

    Длина cw равняется емкости в битах PUSCH.

    cw выход является пустым значением размера 0- 1 для всех этих случаев.

    • Когда PRBSet свойство pusch аргументом является [].

    • Когда SymbolAllocation свойство pusch аргументом является [] или когда количество непрерывных символов OFDM, выделенных для PUSCH, является нулем

    • Когда все входные параметры culsch, cack, ccsi1, и ccsi2 пусты

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

    Информация о местоположении о местоположениях на основе 1 каждого типа в выходной кодовой комбинации cw, возвращенный как структура, содержащая эти поля. Тип выходных данных каждого поля является uint32.

    Поле Описание
    ULSCHIndices

    Местоположения закодированных битов UL-SCH в кодовой комбинации

    ACKIndices

    Местоположения закодированных битов HARQ-ACK в кодовой комбинации

    CSI1Indices

    Местоположения закодированной части CSI 1 бит в кодовой комбинации

    CSI2Indices

    Местоположения закодированной части CSI 2 бита в кодовой комбинации

    UCIXIndices

    Местоположения X заполнителей UCI в кодовой комбинации

    UCIYIndices

    Местоположения Y UCI заполнители в кодовой комбинации

    Если возвращенная кодовая комбинация, cw, пустой массив, каждое поле в этой структуре является также пустым массивом.

    Ссылки

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

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

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

    Генерация кода C/C++
    Генерация кода C и C++ с помощью MATLAB® Coder™.

    Введенный в R2020b