Этот пример показывает, как настроить и произвести 5G НОМЕР векторной формы волны канала восходящей связи с PUSCH и SRS для перевозчика компонента основной полосы частот при помощи nrWaveformGenerator функция.
Этот пример показывает, как параметризовать и произвести 5G форма волны канала восходящей связи New Radio (NR) при помощи nrWaveformGenerator функция. Сформированный сигнал содержит следующие каналы и сигналы:
PUSCH и связанные с ним DM-RS и PT-RS
SRS
Этот пример демонстрирует, как параметризовать и генерировать форму сигнала несущей компонента основной полосы частот, характеризующуюся множеством несущих с интервалом между поднесущими (SCS) и частей полосы пропускания (BWP). Можно создать несколько экземпляров физического общего канала восходящей линии связи (PUSCH) и зондирующего опорного сигнала (SRS) через различные BWP.
Пример также показывает, как параметризовать и генерировать управляющую информацию восходящей линии связи (UCI) на PUSCH с CG-UCI и SRS для позиционирования.
Генерация сигнала основной полосы частот параметризуется посредством nrULCarrierConfig и набор дополнительных объектов, связанных с каналами и сигналами формы сигнала.
С помощью nrULCarrierConfig , можно задать эти параметры конфигурации несущей восходящей линии связи.
Метка для этой конфигурации полки UL
Полоса пропускания несущей SCS в блоках ресурсов
Идентификатор ячейки-носителя
Длина генерируемого сигнала в подкадрах
Работа с окнами
Частота дискретизации модулированного сигнала 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 формируется набором смежных ресурсов, совместно использующих нумерологию на данной несущей. С помощью массива ячеек можно определить несколько BWP. Каждый элемент в массиве ячеек nrWavegenBWPConfig объекты определяют BWP. Для каждого BWP можно указать SCS, длину циклического префикса (CP) и полосу пропускания. SubcarrierSpacing свойство отображает BWP на одну из определенных ранее несущих SCS. NStartBWP свойство управляет расположением BWP в несущей относительно точки A. Это выражается в общих блоках ресурсов (CRB) в терминах нумерологии BWP. Различные BWP могут перекрываться друг с другом.

% 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
Целевая кодовая скорость, используемая для вычисления размеров транспортного блока
Параметр накладных расходов
Схема передачи. Когда схема передачи 'codebook', предварительное кодирование MIMO разрешено, и матрица предварительного кодирования выбирается на основе количества уровней, количества антенных портов и индикатора передаваемой матрицы предварительного кодирования. Если для передачи установлено значение 'nonCodebook'используется единичная матрица, что приводит к отсутствию предварительного кодирования MIMO
Модуляция символов
Количество слоев. Количество уровней ограничено максимум 4 в восходящей линии связи, поскольку существует только одна передача кодового слова. Номинально число уровней устанавливается равным 1, когда предварительное кодирование преобразования разрешено. Это значение игнорируется, если DMRS.PortSet указано свойство
Количество антенных портов. Используется, когда передача кодовой книги активизирована. Количество антенных портов должно быть больше или равно количеству сконфигурированных портов DM-RS
Переданный индикатор матрицы предварительного кодирования
Последовательность версий резервирования (RV)
Скачкообразная перестройка частоты
Смещение блока ресурсов для второго перехода
Источник данных транспортного блока. Можно использовать массив битов или одну из следующих стандартных последовательностей PN: 'PN9-ITU', 'PN9', 'PN11', 'PN15', 'PN23'. Начальное значение для генератора можно задать с помощью массива ячеек в форме {'PN9', 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
Период распределения в слотах. Пустой период указывает на отсутствие повторения
Назначенные PRB относительно 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 DM-RS
Установите параметры 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' для обозначения отсутствия как групповой скачкообразной перестройки, так и скачкообразной перестройки последовательности
Количество групп CDM DM-RS без данных зависит от типа конфигурации. Максимальное количество групп CDM DM-RS может составлять 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 для конфигурации DM-RS типа 1 и в диапазоне от 0 до 5 для конфигурации DM-RS типа 2. Когда PT-RS активизирован для DFT-s-OFDM и количество групп PT-RS установлено равным 8, количество выборок PT-RS должно быть установлено равным 4.
UCI на PUSCH
Для конфигурирования передачи UCI по PUSCH можно установить следующие параметры:
Активизация или деактивизация передачи HARQ-ACK, части 1 CSI, части 2 CSI и CG-UCI
Количество битов HARQ-ACK, CSI, часть 1, CSI, часть 2, и CG-UCI
BetaOffsetACK, BetaOffsetCSI1, BetaOffsetCSI2, и BetaOffsetCGUCI можно установить из таблиц 9.3-1 и 9.3-2 TS 38.213
Источник данных для HARQ-ACK, CSI, часть 1, CSI, часть 2, и CG-UCI. Можно использовать массив битов или одну из следующих стандартных последовательностей PN: 'PN9-ITU', 'PN9', 'PN11', 'PN15', 'PN23'. Начальное значение для генератора можно задать с помощью массива ячеек в форме {'PN9', seed}. Если начальное значение не указано, генератор инициализируется всеми
Активизация передачи UL-SCH с UCI
UCIScaling обеспечивается параметром более высокого уровня scaling, согласно ТУ 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 в RB
Дополнительное смещение частоты от исходного положения в блоках 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');

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