exponenta event banner

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 по умолчанию. Назначьте PUSCH первые 21 ресурсный блок части полосы пропускания.

    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, а коэффициент бета-смещения для компонента CSI 1 и компонента CSI 2 равным 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, часть 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, 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, CSI части 1 и CSI части 2 для выходных длин, согласованных по скорости, полученных из 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'

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

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

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

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

    Коэффициент масштабирования для ограничения количества элементов ресурсов, выделенных для UCI на PUSCH, указанный как скаляр между 0 и 1. Номинальное значение - 0,5, 0,65, 0,8 или 1.

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

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

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

    Параметры конфигурации PUSCH DM-RS, указанные как nrPUSCHDMRSConfig объект конфигурации.

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

    • 0 (false) - Деактивизация конфигурации СТ-RS.

    • 1 (true) - активизируйте конфигурирование СТ-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 и битов HARQ-ACK, возвращенных в info выходной аргумент nrULSCHInfo функция. Значение [] указывает на отсутствие передачи HARQ-ACK. Номинальные значения битов HAQR-ACK: 0, 1, -1, и -2.

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

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

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

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

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

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

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

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

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

    свернуть все

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

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

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

    • Когда PRBSet имущества pusch аргумент - [].

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

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

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

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

    ОбластьОписание
    ULSCHIndices

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

    ACKIndices

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

    CSI1Indices

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

    CSI2Indices

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

    UCIXIndices

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

    UCIYIndices

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

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

    Ссылки

    [1] 3GPP TS 38.212. "НР; мультиплексирование и канальное кодирование. "Проект партнерства 3-го поколения; Техническая спецификация на сеть радиодоступа группы.

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

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

    Создание кода C/C + +
    Создайте код C и C++ с помощью MATLAB ® Coder™

    .
    Представлен в R2020b