В этом примере показано, как сконфигурировать и сгенерировать 5G восходящий канал NR векторная форма волны с PUSCH и SRS для основополосного поставщика услуг компонента при помощи nrWaveformGenerator функция.
В этом примере показано, как параметрировать и сгенерировать форму волны восходящего канала Нового радио (NR) 5G при помощи nrWaveformGenerator функция. Сгенерированная форма волны содержит эти каналы и сигналы:
PUSCH и его связанный DM-RS и PT-RS
SRS
Этот пример демонстрирует, как параметрировать и сгенерировать основополосную форму волны поставщика услуг компонента, охарактеризованную несколькими поднесущей, располагающей (SCS) с интервалами поставщики услуг и части пропускной способности (BWP). Можно сгенерировать несколько экземпляров физического восходящего канала совместно использованный канал (PUSCH) и звучание опорным сигналом (SRS) по различному BWPs.
Пример также показывает, как параметрировать и сгенерировать восходящую управляющую информацию (UCI) на PUSCH с CG-UCI и SRS для расположения.
Основополосная генерация сигналов параметрируется nrULCarrierConfig возразите и набор дополнительных объектов, сопоставленных с каналами формы волны и сигналами.
С nrULCarrierConfig объект, можно установить эти восходящие параметры конфигурации поставщика услуг.
Пометьте для этой настройки поставщика услуг UL
Пропускная способность поставщика услуг SCS в блоках ресурса
ID ячейки Carrier
Длина сгенерированной формы волны в подкадрах
Работа с окнами
Частота дискретизации OFDM модулировала форму волны
Несущая частота для компенсации фазы символа
Можно управлять пропускной способностью поставщика услуг SCS и защитными полосами с помощью NStartGrid и NSizeGrid свойства nrSCSCarrierConfig объект.
waveconfig = nrULCarrierConfig(); % Create an instance of the waveform's parameter object waveconfig.Label = 'UL carrier 1'; % Label for this uplink waveform configuration waveconfig.NCellID = 0; % Cell identity waveconfig.ChannelBandwidth = 50; % Channel bandwidth (MHz) waveconfig.FrequencyRange = 'FR1'; % 'FR1' or 'FR2' waveconfig.NumSubframes = 10; % Number of 1ms subframes in generated waveform (1,2,4,8 slots per 1ms subframe, depending on SCS) waveconfig.WindowingPercent = 0; % Percentage of windowing relative to FFT length waveconfig.SampleRate = []; % Sample rate of the OFDM modulated waveform waveconfig.CarrierFrequency = 0; % Carrier frequency in Hz. This property is used for symbol phase % compensation before OFDM modulation, not for upconversion % Define a set of SCS specific carriers, using the maximum sizes for a % 50 MHz NR channel. See TS 38.101-1 for more information on defined % bandwidths and guardband requirements scscarriers = {nrSCSCarrierConfig(),nrSCSCarrierConfig()}; scscarriers{1}.SubcarrierSpacing = 15; scscarriers{1}.NSizeGrid = 270; scscarriers{1}.NStartGrid = 0; scscarriers{2}.SubcarrierSpacing = 30; scscarriers{2}.NSizeGrid = 133; scscarriers{2}.NStartGrid = 1;
BWP формируется набором непрерывных ресурсов, совместно использующих нумерологию на данном поставщике услуг. Можно задать несколько BWPs использование массива ячеек. Каждый элемент в массиве ячеек nrWavegenBWPConfig объекты задают BWP. Для каждого BWP можно задать SCS, длину циклического префикса (CP) и пропускную способность. SubcarrierSpacing свойство сопоставляет BWP с одним из SCS определенные поставщики услуг, заданные ранее. NStartBWP свойство управляет местоположением BWP в поставщике услуг относительно точки A. Это описывается в общих блоках ресурса (CRB) в терминах нумерологии BWP. Различный BWPs может перекрыться друг с другом.

% Bandwidth parts configurations bwp = {nrWavegenBWPConfig(),nrWavegenBWPConfig()}; bwp{1}.BandwidthPartID = 1; % Bandwidth part ID bwp{1}.Label = 'BWP @ 15 kHz'; % Label for this BWP bwp{1}.SubcarrierSpacing = 15; % BWP subcarrier spacing bwp{1}.CyclicPrefix = 'Normal'; % BWP cyclic prefix for 15 kHz bwp{1}.NSizeBWP = 25; % Size of BWP in PRBs bwp{1}.NStartBWP = 10; % Position of BWP, relative to point A (i.e. CRB) bwp{2}.BandwidthPartID = 2; % Bandwidth part ID bwp{2}.Label = 'BWP @ 30 kHz'; % Label for this BWP bwp{2}.SubcarrierSpacing = 30; % BWP subcarrier spacing bwp{2}.CyclicPrefix = 'Normal'; % BWP cyclic prefix for 30 kHz bwp{2}.NSizeBWP = 51; % Size of BWP in PRBs bwp{2}.NStartBWP = 40; % Position of BWP, relative to point A (i.e. CRB)
Этот раздел задает набор экземпляров PUSCH в форме волны при помощи массива ячеек. Каждый элемент в массиве ячеек nrWavegenPUSCHConfig объекты задают последовательность экземпляров PUSCH. Этот пример задает две последовательности PUSCH.
Общие параметры
Установите эти параметры для каждой последовательности PUSCH:
Включите или отключите эту последовательность PUSCH
Задайте метку для этой последовательности PUSCH
Задайте BWP перенос PUSCH. PUSCH использует SCS, заданный для этого BWP
Степень, масштабирующаяся в дБ
Включите или отключите транспортное кодирование канала UL-SCH
RNTI
NID для скремблирования битов PUSCH
Преобразуйте предварительное кодирование. То, когда преобразовывают предварительное кодирование, является true, предварительное кодирование преобразования включено, и результирующей формой волны является DFT-s-OFDM. То, когда преобразовывают предварительное кодирование, является false, результирующей формой волны является CP-OFDM
Целевой уровень кода раньше вычислял транспортные размеры блока
Служебный параметр
Схема Transmission. Когда схемой передачи является 'codebook', предварительное кодирование MIMO включено, и матрица перед кодированием выбрана на основе количества слоев, количества портов антенны и переданного предварительно кодирующего матричного индикатора. Когда передача установлена в 'nonCodebook', единичная матрица используется, не ведя ни к какому предварительному кодированию MIMO
Модуляция символа
Количество слоев. Количество слоев ограничивается максимумом 4 в восходящем канале, когда существует только одна передача кодовой комбинации. Номинально, номер слоев определяется к 1, когда преобразовывают предварительное кодирование, включен. Это значение проигнорировано, когда DMRS.PortSet свойство задано
Количество портов антенны. Это используется, когда передача книги шифров включена. Количество портов антенны должно быть больше или быть равно количеству сконфигурированных портов DM-RS
Переданный предварительно кодирующий матричный индикатор
Последовательность версии сокращения (RV)
Скачкообразное движение частоты
Блок ресурса возмещен для второго транзитного участка
Транспортный источник данных блока. Можно использовать массив битов или одну из этих стандартных псевдошумовых последовательностей: 'PN9-ITU', 'PN9', 'PN11', 'PN15', 'PN23'. Seed для генератора может быть задан с помощью массива ячеек в форме {'PN9', seed}. Если никакой seed не задан, генератор инициализируется всеми единицами
pusch = {nrWavegenPUSCHConfig()};
pusch{1}.Enable = 1; % Enable PUSCH sequence
pusch{1}.Label = 'PUSCH @ 15 kHz'; % Label for this PUSCH sequence
pusch{1}.BandwidthPartID = 1; % Bandwidth part of PUSCH transmission
pusch{1}.Power = 0; % Power scaling in dB
pusch{1}.Coding = 1; % Enable the UL-SCH transport channel coding
pusch{1}.NID = 1; % Scrambling for data part
pusch{1}.RNTI = 0; % RNTI
pusch{1}.TransformPrecoding = false; % Transform precoding
pusch{1}.TargetCodeRate = 0.47; % Code rate used to calculate transport block sizes
pusch{1}.XOverhead = 0; % Rate matching overhead
% Transmission settings
pusch{1}.TransmissionScheme = 'codebook'; % 'codebook','nonCodebook'
pusch{1}.Modulation = 'QPSK'; % 'pi/2-BPSK','QPSK','16QAM','64QAM','256QAM'
pusch{1}.NumLayers = 2; % Number of PUSCH layers
pusch{1}.NumAntennaPorts = 4; % Number of antenna ports
pusch{1}.TPMI = 0; % Transmitted precoding matrix indicator (0...27)
pusch{1}.RVSequence = [0,2,3,1]; % RV sequence to be applied cyclically across the PUSCH allocation sequence
pusch{1}.FrequencyHopping = 'interSlot'; % Intra-slot frequency hopping ('enabled','disabled')
pusch{1}.SecondHopStartPRB = 10; % Resource block offset for second hop
% Data source
pusch{1}.DataSource = 'PN9'; % Channel data source
Выделение
Эта схема представляет некоторые параметры, используемые в выделении PUSCH.

Можно установить следующие параметры, чтобы управлять выделением PUSCH. Эти параметры относительно BWP.
PUSCH, сопоставляющий тип
Символы в пазе, выделенном каждому экземпляру PUSCH. Для PUSCH, сопоставляющего тип 'A', начальный символ в пазе должен быть нулем, и длина может быть от 4 до 14 (для нормального CP) и до 12 (для расширенного CP). Для PUSCH, сопоставляющего тип 'B', начальный символ может быть от любого символа в пазе
Пазы в системе координат используются для последовательности PUSCH
Период выделения в пазах. Пустой период не указывает ни на какое повторение
Выделенный PRBs относительно BWP
pusch{1}.MappingType = 'A'; % PUSCH mapping type ('A'(slot-wise),'B'(non slot-wise))
pusch{1}.SymbolAllocation = [0,14]; % First symbol and length
pusch{1}.SlotAllocation = [0 1]; % Allocated slots indices for PUSCH sequence
pusch{1}.Period = 5; % Allocation period in slots
pusch{1}.PRBSet = 0:10; % PRB allocation
Настройка PUSCH RS DM
Установите параметры DM-RS.
% Antenna port and DM-RS configuration (TS 38.211 section 6.4.1.1) pusch{1}.DMRSPower = 0; % Additional power boosting in dB pusch{1}.DMRS.DMRSConfigurationType = 1; % DM-RS configuration type (1,2) pusch{1}.DMRS.NumCDMGroupsWithoutData = 2; % Number of DM-RS CDM groups without data. The value can be one of the set {1,2,3} pusch{1}.DMRS.DMRSPortSet = [0 2]; % DM-RS antenna ports used ([] gives port numbers 0:NumLayers-1) pusch{1}.DMRS.DMRSTypeAPosition = 2; % Mapping type A only. First DM-RS symbol position (2,3) pusch{1}.DMRS.DMRSLength = 1; % Number of front-loaded DM-RS symbols (1(single symbol),2(double symbol)) pusch{1}.DMRS.DMRSAdditionalPosition = 2; % Additional DM-RS symbol positions (max range 0...3) pusch{1}.DMRS.NIDNSCID = 1; % Scrambling identity for CP-OFDM (0...65535). Use empty ([]) to use physical layer cell identity pusch{1}.DMRS.NSCID = 0; % Scrambling initialization for CP-OFDM (0,1) pusch{1}.DMRS.NRSID = 0; % Scrambling identity for DFT-s-OFDM DM-RS (0...1007). Use empty ([]) to use physical layer cell identity pusch{1}.DMRS.GroupHopping = true; % Group hopping configuration. This property is used only when transform precoding is enabled pusch{1}.DMRS.SequenceHopping = false; % Sequence hopping configuration. This property is used only when transform precoding is enabled
GroupHopping свойство используется в генерации последовательности DM-RS, когда преобразовывают предварительное кодирование, включен. Можно установить GroupHopping к:
'enable' указать на присутствие скачкообразного движения группы. Это сконфигурировано параметром более высокого слоя sequenceGroupHopping
'disable' указать на присутствие скачкообразного движения последовательности. Это сконфигурировано параметром более высокого слоя sequenceHopping
'neither' чтобы указать и на скачкообразное движение группы и на скачкообразное движение последовательности не присутствуют
Количество групп DM-RS CDM без данных зависит от типа настройки. Максимальное количество групп DM-RS CDM может быть 2 для типа 1 настройки DM-RS, и это может быть 3 для типа 2 настройки DM-RS.
Настройка PUSCH PT-RS
Установите параметры PT-RS.
% PT-RS configuration (TS 38.211 section 6.4.1.2) pusch{1}.EnablePTRS = 0; % Enable or disable the PT-RS (1 or 0) pusch{1}.PTRSPower = 0; % Additional PT-RS power boosting in dB for CP-OFDM pusch{1}.PTRS.TimeDensity = 1; % Time density (L_PT-RS) of PT-RS (1,2,4) pusch{1}.PTRS.FrequencyDensity = 2; % Frequency density (K_PT-RS) of PT-RS for CP-OFDM (2,4) pusch{1}.PTRS.NumPTRSSamples = 2; % Number of PT-RS samples (NGroupSamp) for DFT-s-OFDM (2,4) pusch{1}.PTRS.NumPTRSGroups = 2; % Number of PT-RS groups (NPTRSGroup) for DFT-s-OFDM (2,4,8) pusch{1}.PTRS.REOffset = '00'; % PT-RS resource element offset for CP-OFDM ('00','01','10','11') pusch{1}.PTRS.PTRSPortSet = 0; % PT-RS antenna ports must be a subset of DM-RS ports for CP-OFDM pusch{1}.PTRS.NID = 0; % PT-RS scrambling identity for DFT-s-OFDM (0...1007)
Когда PT-RS включен для CP-OFDM, порты DM-RS должны быть в диапазоне от 0 до 3 для типа 1 настройки DM-RS, и в диапазоне от 0 до 5 для типа 2 настройки DM-RS. Когда PT-RS включен для DFT-s-OFDM, и номер групп PT-RS определяется к 8, номер выборок PT-RS должен быть определен к 4.
UCI на PUSCH
Можно установить эти параметры, чтобы сконфигурировать передачу UCI на PUSCH:
Включите или отключите передачу HARQ-ACK, части 1 CSI, CSI part2 и CG-UCI
Количество HARQ-ACK, части 1 CSI, части 2 CSI и битов CG-UCI
BetaOffsetACK, BetaOffsetCSI1, BetaOffsetCSI2, и BetaOffsetCGUCI может быть установлен из таблиц 9.3-1 и 9.3-2 TS 38.213
Источник данных для HARQ-ACK, части 1 CSI, части 2 CSI и CG-UCI. Можно использовать массив битов или одну из этих стандартных псевдошумовых последовательностей: 'PN9-ITU', 'PN9', 'PN11', 'PN15', 'PN23'. Seed для генератора может быть задан с помощью массива ячеек в форме {'PN9', seed}. Если никакой seed не задан, генератор инициализируется всеми единицами
Включите передачу UL-SCH с UCI
UCIScaling обеспечивается более высоким параметром слоя scaling, согласно TS 38.212, разделите 6.3.2.4
pusch{1}.EnableACK = true; % Enable or disable HARQ-ACK
pusch{1}.NumACKBits = 5; % Number of HARQ-ACK bits
pusch{1}.BetaOffsetACK = 1; % Power factor of HARQ-ACK
pusch{1}.DataSourceACK = 'PN9'; % HARQ-ACK data source
pusch{1}.EnableCSI1 = true; % Enable or disable CSI part 1
pusch{1}.NumCSI1Bits = 10; % Number of CSI part 1 bits
pusch{1}.BetaOffsetCSI1 = 2; % Power factor of CSI part 1
pusch{1}.DataSourceCSI1 = 'PN9'; % CSI part 1 data source
pusch{1}.EnableCSI2 = true; % Enable or disable CSI part 2
pusch{1}.NumCSI2Bits = 10; % Number of CSI part 2 bits
pusch{1}.BetaOffsetCSI2 = 2; % Power factor of CSI part 2
pusch{1}.DataSourceCSI2 = 'PN9'; % CSI part 2 data source
pusch{1}.EnableCGUCI = false; % Enable or disable CG-UCI
pusch{1}.NumCGUCIBits = 10; % Number of CG-UCI bits
pusch{1}.BetaOffsetCGUCI = 2; % Power factor of CG-UCI
pusch{1}.DataSourceCGUCI = 'PN9'; % CG-UCI data source
pusch{1}.EnableULSCH = true; % Enable or disable UL-SCH when there is UCI transmission on PUSCH
pusch{1}.UCIScaling = 1; % Scaling factor (0.5, 0.65, 0.8, 1)
Когда и HARQ-ACK и CG-UCI включены, Раздел 6.3.2.1.4 из TS 38.212 задает последовательность битов UCI как объединение битов CG-UCI и битов HARQ-ACK. Поэтому обработка UCI на PUSCH рассматривает любой активный источник CG-UCI как расширение HARQ-ACK и только значения BetaOffsetACK используется в этом случае.
Определение нескольких последовательностей PUSCH
Задайте вторую последовательность PUSCH для второго BWP.
pusch{2} = pusch{1};
pusch{2}.Enable = 1;
pusch{2}.Label = 'PUSCH @ 30 kHz';
pusch{2}.BandwidthPartID = 2; % PUSCH mapped to 2nd BWP
pusch{2}.SymbolAllocation = [0,12];
pusch{2}.SlotAllocation = [5 6 7 8];
pusch{2}.PRBSet = 5:10; % PRB allocation, relative to BWP
pusch{2}.Period = 10;
pusch{2}.TransformPrecoding = 1;
pusch{2}.FrequencyHopping = 'interSlot';
pusch{2}.NumLayers = 1;
pusch{2}.RNTI = 0;
pusch{2}.DMRS.GroupHopping = false;
pusch{2}.DMRS.DMRSPortSet = 1;
Этот раздел конфигурирует SRS в форме волны. Каждый элемент в массиве ячеек nrWavegenSRSConfig объекты задают последовательность экземпляров SRS, сопоставленных с BWP. Этот пример задает две последовательности SRS, которые отключены.
Общие параметры
Установите эти параметры для каждой последовательности SRS:
Включите или отключите эту последовательность SRS
Задайте метку для этой последовательности SRS
Задайте BWP, несущий эту последовательность SRS. Настройка последовательности SRS использует SCS, заданный для этого BWP
Задайте степень, масштабирующуюся в дБ
srs = {nrWavegenSRSConfig()};
srs{1}.Enable = 0;
srs{1}.Label = 'SRS @ 15 kHz';
srs{1}.BandwidthPartID = 1;
srs{1}.Power = 3; % Power scaling in dB
Настройка SRS
Можно сконфигурировать эти параметры для каждой последовательности SRS:
Количество портов антенны SRS
Символы в пазе, выделенном каждой последовательности SRS
Пазы в период используются для передачи SRS
Период выделения в пазах. Пустой период не указывает ни на какое повторение
Стартовая позиция последовательности SRS в BWP в RBS
Дополнительная частота возмещена от стартовой позиции в блоках 4-PRB
Пропускная способность и настройка скачкообразного движения частоты. Занимаемая полоса зависит от свойств CSRS, BSRS, и BHop. Установите BHop < BSRS включить скачкообразное движение частоты
Расческа передачи, чтобы задать плотность частоты SRS в поднесущих
Смещение передачи расчесывает в поднесущих
Циклический сдвиг, вращающий низкую-PAPR последовательность оснований. Максимальное количество циклических сдвигов, 8 или 12, зависит от номера расчески передачи, 2 или 4. Для 4 портов антенны SRS набор поднесущей, выделенный SRS в первых и третьих портах антенны, зависит от циклического сдвига
Количество повторных символов SRS в пазе. Это отключает частоту, скачкообразно двигающуюся в блоках Repetition символы. Установите Repetition = 1 ни для какого повторения
Группа или скачкообразное движение последовательности. Это может быть 'neither', 'groupHopping' или 'sequenceHopping'
Скремблирование идентичности. Это инициализирует псевдослучайную двоичную последовательность, когда группе или скачкообразному движению последовательности включают
srs{1}.NumSRSPorts = 1; % Number of SRS ports (1,2,4)
srs{1}.NumSRSSymbols = 4; % Number of SRS symbols in a slot (1,2,4)
srs{1}.SymbolStart = 10; % Time-domain position of the SRS in the slot. (8...13) for normal CP and (6...11) for extended CP
srs{1}.SlotAllocation = 2; % Allocated slots indices
srs{1}.Period = 5; % Allocation period in slots
srs{1}.FrequencyStart = 0; % Frequency position of the SRS in BWP in RBs
srs{1}.NRRC = 0; % Additional offset from FreqStart specified in blocks of 4 PRBs (0...67)
srs{1}.CSRS = 13; % Bandwidth configuration C_SRS (0...63). It controls the allocated bandwidth to the SRS
srs{1}.BSRS = 2; % Bandwidth configuration B_SRS (0...3). It controls the allocated bandwidth to the SRS
srs{1}.BHop = 1; % Frequency hopping configuration (0...3). Set BHop < BSRS to enable frequency hopping
srs{1}.KTC = 2; % Comb number (2,4). It indicates the allocation of the SRS every KTC subcarriers
srs{1}.KBarTC = 0; % Subcarrier offset of the SRS sequence (0...KTC-1)
srs{1}.CyclicShift = 0; % Cyclic shift number (0...NCSmax-1). NCSmax = 8 for KTC = 2 and NCSmax = 12 for KTC = 4.
srs{1}.Repetition = 1; % Repetition factor (1,2,4). It indicates the number of equal consecutive SRS symbols in a slot
srs{1}.GroupSeqHopping = 'neither'; % Group or sequence hopping ('neither', 'groupHopping', 'sequenceHopping')
srs{1}.NSRSID = 0; % Scrambling identity (0...1023)
srs{1}.SRSPositioning = false; % Enable SRS for user positioning
Определение нескольких последовательностей SRS
Задайте вторую последовательность SRS для второго BWP.
srs{2} = srs{1};
srs{2}.Enable = 0;
srs{2}.Label = 'SRS @ 30 kHz';
srs{2}.BandwidthPartID = 2;
srs{2}.NumSRSSymbols = 2;
srs{2}.SymbolStart = 12;
srs{2}.SlotAllocation = [5 6 7 8];
srs{2}.Period = 10;
srs{2}.BSRS = 0;
srs{2}.BHop = 0;
Этот раздел присваивает весь канал и параметры сигнала к основному объекту nrULCarrierConfig настройки поставщика услуг, затем генерирует и строит форму волны.
waveconfig.SCSCarriers = scscarriers;
waveconfig.BandwidthParts = bwp;
waveconfig.PUSCH = pusch;
waveconfig.SRS = srs;
% Generate complex baseband waveform
[waveform,info] = nrWaveformGenerator(waveconfig);
Постройте величину основополосной формы волны для набора заданных портов антенны.
figure; plot(abs(waveform)); title('Magnitude of 5G Uplink Baseband Waveform'); xlabel('Sample Index'); ylabel('Magnitude');

Постройте spectogram формы волны для первого порта антенны.
samplerate = info.ResourceGrids(1).Info.SampleRate; nfft = info.ResourceGrids(1).Info.Nfft; figure; spectrogram(waveform(:,1),ones(nfft,1),0,nfft,'centered',samplerate,'yaxis','MinThreshold',-130); title('Spectrogram of 5G Uplink Baseband Waveform');

Функция генератора формы волны возвращает форму волны временного интервала и структуру info, который содержит базовую сетку элемента ресурса и отказ ресурсов, используемых всем PUSCH и экземплярами SRS в форме волны.
ResourceGrids поле является массивом структур, который содержит эти поля:
Сетка ресурса, соответствующая каждому BWP
Сетка ресурса полной пропускной способности, содержащей каналы и сигналы в каждом BWP
Информационная структура с информацией, соответствующей каждому BWP. Содержимое этой информационной структуры для первого BWP показывают ниже.
disp('Modulation information associated with BWP 1:')
disp(info.ResourceGrids(1).Info)
Modulation information associated with BWP 1:
Nfft: 4096
SampleRate: 61440000
CyclicPrefixLengths: [1x14 double]
SymbolLengths: [1x14 double]
Windowing: 0
SymbolPhases: [0 0 0 0 0 0 0 0 0 0 0 0 0 0]
SymbolsPerSlot: 14
SlotsPerSubframe: 1
SlotsPerFrame: 10
k0: 0
Обратите внимание на то, что сгенерированная сетка ресурса является 3D матрицей, где различные плоскости представляют порты антенны. Для различных физических каналов и сигналов самый низкий порт сопоставлен с первой плоскостью сетки.