В этом примере показано, как сконфигурировать и сгенерировать 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 матрицей, где различные плоскости представляют порты антенны. Для различных физических каналов и сигналов самый низкий порт сопоставлен с первой плоскостью сетки.