nrPUCCH

Сгенерируйте символы модуляции PUCCH

    Описание

    пример

    sym = nrPUCCH(carrier,pucch,uciBits) генерирует физический восходящий канал управления (PUCCH) символы модуляции sym, как задано в Разделах TS 38.211 6.3.2.3 к 6.3.2.6 [1] для всех форматов PUCCH. carrier задает настройку несущей. pucch задает специфичную для формата настройку PUCCH. uciBits задает биты восходящей управляющей информации (UCI).

    пример

    sym = nrPUCCH(carrier,pucch,uciBits,'OutputDataType',datatype) задает тип данных символов PUCCH.

    Примеры

    свернуть все

    Создайте объект настройки несущей по умолчанию.

    carrier = nrCarrierConfig;

    Задайте идентичность ячейки физического уровня как 490, циклический префикс столь же нормальный, и номер слота как 57.

    carrier.NCellID = 490;
    carrier.CyclicPrefix = 'normal';
    carrier.NSlot = 57;

    Создайте объект настройки формата 0 PUCCH по умолчанию.

    pucch0 = nrPUCCH0Config;

    Задайте первый индекс символа в пазе передачи PUCCH как 11 и количество выделенных символов PUCCH как 2. Включите скачкообразное движение частоты внутрипаза и скачкообразное движение группы. Установите начальный циклический сдвиг на 7.

    pucch0.SymbolAllocation = [11 2];
    pucch0.FrequencyHopping = 'intraSlot';
    pucch0.GroupHopping = 'enable';
    pucch0.HoppingID = [];      % Set HoppingID equal to the NCellID property of carrier
    pucch0.InitialCyclicShift = 7;
     

    Задайте передачу без HARQ-ACK и с положительным SR.

    sr = 1;                    % Positive SR transmission
    ack = [];
    uciBits = {ack, sr}; 

    Сгенерируйте символы модуляции формата 0 PUCCH.

    sym = nrPUCCH(carrier,pucch0,uciBits)
    sym = 24×1 complex
    
      -0.7071 - 0.7071i
      -0.9659 + 0.2588i
      -0.9659 - 0.2588i
       0.7071 - 0.7071i
      -0.2588 - 0.9659i
      -0.9659 - 0.2588i
      -0.7071 - 0.7071i
       0.2588 + 0.9659i
      -0.2588 + 0.9659i
      -0.7071 - 0.7071i
          ⋮
    
    

    Создайте объект настройки несущей по умолчанию.

    carrier = nrCarrierConfig;

    Задайте несущую на 60 кГц с расширенным циклическим префиксом. Определите номер (блоки ресурса) RBS в сетке ресурса несущей к 80 и номере слота к 3.

    carrier.SubcarrierSpacing = 60;
    carrier.CyclicPrefix = 'extended';
    carrier.NSizeGrid = 80;
    carrier.NSlot = 3;

    Создайте объект настройки формата 1 PUCCH по умолчанию.

    pucch1 = nrPUCCH1Config;

    Задайте первый индекс символа в пазе передачи PUCCH как 2 и количество выделенных символов PUCCH как 10. Включите скачкообразное движение частоты внутрипаза и скачкообразное движение группы. Установите скачкообразно двигающуюся идентичность на 512, начальный циклический сдвиг к 7 и ортогональный индекс кода покрытия (OCCI) к 1.

    pucch1.SymbolAllocation = [2 10];
    pucch1.FrequencyHopping = 'intraSlot';
    pucch1.GroupHopping = 'enable';
    pucch1.HoppingID = 512;
    pucch1.InitialCyclicShift = 7;
    pucch1.OCCI = 1;

    Задайте передачу с двухбитовым HARQ-ACK.

    uciBits = [1;0];

    Сгенерируйте символы модуляции формата 1 PUCCH.

    sym = nrPUCCH(carrier,pucch1,uciBits)
    sym = 60×1 complex
    
       1.0000 + 0.0000i
       0.5000 + 0.8660i
      -0.8660 - 0.5000i
       0.0000 + 1.0000i
      -0.8660 + 0.5000i
       0.8660 + 0.5000i
       1.0000 - 0.0000i
       0.8660 - 0.5000i
      -0.8660 - 0.5000i
       1.0000 - 0.0000i
          ⋮
    
    

    Создайте объект настройки несущей по умолчанию.

    carrier = nrCarrierConfig;

    Создайте объект настройки формата 2 PUCCH по умолчанию.

    pucch2 = nrPUCCH2Config;

    Задайте идентичность шифрования данных как 1 000 и радиосеть временный идентификатор как 160.

    pucch2.NID = 1000;
    pucch2.RNTI = 160;

    Создайте случайную последовательность двоичных значений, соответствующих кодовой комбинации UCI 100 битов.

    uciCW = randi([0 1],100,1);

    Сгенерируйте символы модуляции формата 2 PUCCH типа данных single.

    sym = nrPUCCH(carrier,pucch2,uciCW,'OutputDataType','single')
    sym = 50x1 single column vector
    
       0.7071 + 0.7071i
      -0.7071 + 0.7071i
      -0.7071 - 0.7071i
      -0.7071 - 0.7071i
       0.7071 + 0.7071i
      -0.7071 + 0.7071i
       0.7071 - 0.7071i
       0.7071 + 0.7071i
       0.7071 - 0.7071i
       0.7071 - 0.7071i
          ⋮
    
    

    Создайте объект настройки несущей по умолчанию, и затем установите с идентичностью ячейки как 135.

    carrier = nrCarrierConfig;
    carrier.NCellID = 135;

    Создайте объект настройки формата 3 PUCCH по умолчанию.

    pucch3 = nrPUCCH3Config;

    Задайте схему модуляции как pi/2-BPSK, выделение PRB PUCCH, чтобы лежать в диапазоне от 70 до 74 (занятие 5 блоков ресурса), и радиосеть временный идентификатор как 2 560.

    pucch3.Modulation = 'pi/2-BPSK';
    pucch3.PRBSet = 70:74;
    pucch3.RNTI = 2560;

    Создайте случайную последовательность двоичных значений, соответствующих кодовой комбинации UCI 120 битов.

    uciCW = randi([0 1],120,1);

    Сгенерируйте символы модуляции формата 3 PUCCH типа данных single.

    sym = nrPUCCH(carrier,pucch3,uciCW,'OutputDataType','single')
    sym = 120x1 single column vector
    
       0.1826 - 0.5477i
      -1.0861 - 0.3479i
       0.6300 + 0.8742i
      -0.5093 + 0.6652i
       0.1911 - 0.7721i
       0.1157 + 0.4320i
       0.3199 - 1.0054i
       1.4349 - 1.7045i
       0.4180 - 0.4832i
       0.0044 - 0.3429i
          ⋮
    
    

    Создайте объект настройки несущей по умолчанию, и затем установите идентичность ячейки как 140.

    carrier = nrCarrierConfig;
    carrier.NCellID = 140;

    Создайте объект настройки формата 4 PUCCH по умолчанию.

    pucch4 = nrPUCCH4Config;

    Задайте схему модуляции как QPSK, распространяющийся фактор как 4, OCCI как 3, и радиосеть временный идентификатор как 750.

    pucch4.Modulation = 'QPSK';
    pucch4.SpreadingFactor = 4;
    pucch4.OCCI = 3;
    pucch4.RNTI = 750;

    Создайте случайную последовательность двоичных значений, соответствующих кодовой комбинации UCI 120 битов.

    uciCW = randi([0 1],120,1);

    Сгенерируйте символы модуляции формата 4 PUCCH.

    sym = nrPUCCH(carrier,pucch4,uciCW)
    sym = 240×1 complex
    
       0.0000 + 0.0000i
       0.5977 + 0.5977i
       0.0000 + 0.0000i
       0.0000 + 0.0000i
       0.0000 + 0.0000i
      -2.2307 - 2.2307i
       0.0000 + 0.0000i
       0.0000 + 0.0000i
       0.0000 + 0.0000i
      -0.8165 - 0.8165i
          ⋮
    
    

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

    свернуть все

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

    Параметры конфигурации PUCCH в виде одной из этих опций.

    Биты UCI в виде вектор-столбца с бинарным знаком, массива ячеек с одним элементом или двухэлементного массива ячеек в зависимости от типа формата. Когда вы задаете этот аргумент как массив ячеек, каждым элементом в массиве должен быть вектор-столбец.

    • Для формата 0 необходимо задать вектор-столбец с бинарным знаком, массив ячеек с одним элементом или двухэлементный массив ячеек.

      • Когда вы задаете это значение как вектор-столбец с бинарным знаком или массив ячеек с одним элементом, биты UCI приняты, чтобы быть гибридным автоматическим повторным подтверждением запроса (HARQ-ACK) биты.

      • Когда вы задаете это значение как двухэлементный массив ячеек, первый элемент принят, чтобы иметь биты HARQ-ACK, и второй элемент принят, чтобы иметь бит планирования запроса (SR).

    • Для формата 1 необходимо задать вектор-столбец с бинарным знаком или массив ячеек с одним элементом. Этот аргумент должен содержать биты HARQ-ACK или биты SR. Чтобы передать только положительный бит SR, задайте этот аргумент как [0] или {0}.

    • Для форматов 2, 3, и 4, необходимо задать вектор-столбец с бинарным знаком или массив ячеек с одним элементом. Этот аргумент должен содержать кодовую комбинацию закодированных битов UCI.

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

    Тип данных выходных символов в виде 'double' или 'single'.

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

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

    свернуть все

    Символы модуляции PUCCH для заданного формата, возвращенного как комплексный вектор-столбец.

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

    Ссылки

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

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

    Введенный в R2021a