nrULSCHMultiplex

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

    Описание

    пример

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

    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, который ограничивает количество ресурсных элементов (RE), назначенных для 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, CSI часть 1 и CSI часть 2.

    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, CSI часть 1 и CSI часть 2.

    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 свойства объекта.

    Схема модуляции, заданная как '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 (false) - Отключить предварительное кодирование преобразования. Тип формы волны является циклически-префиксным ортогональным частотным делением мультиплексированием (CP-OFDM).

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

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

    Скачок частоты для физического восходящего общего канала, заданный как один из следующих опций.

    • 'neither'

    • 'intraSlot'

    • 'interSlot'

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

    Типы данных: 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 (false) - Отключите строение 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. The gulsch количество закодированных и согласованных по скорости бит данных UL-SCH, возвращенных в info выходной аргумент nrULSCHInfo функция. Закодированные биты UL-SCH, culsch, - закодированные и согласованные по скорости биты, полученные обработкой транспортного блока. Значение [] указывает на отсутствие передачи данных UL-SCH. Если вы задаете tbs входной параметр как 0, а culsch входной параметр должен быть пустым.

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

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

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

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

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

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

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

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

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

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

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

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

    свернуть все

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

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

    The cw выходы являются пустым значением размера 0-by- 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; Мультиплексирование и канальное кодирование. "3rd Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.

    [2] 3GPP TS 38.213. "NR; Процедуры физического слоя для контроля ". 3-ья Генерация Partnership Project; Группа технических спецификаций Радиосеть доступ.

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

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

    .
    Введенный в R2020b