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')

    Figure contains an axes. The axes with title Multiplexing Operation contains an object of type line.

    Создайте объект настройки 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 TRUE) — Включают, преобразовывают предварительное кодирование. Тип формы волны является ортогональным делением частоты распространения дискретного преобразования Фурье, мультиплексирующим (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 объект настройки.

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

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

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

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

    Опорный сигнал отслеживания фазы PUSCH (PT-RS) настройка в виде 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