В этом примере показано, как сконфигурировать и сгенерировать 5G сигнал вектора нисходящей линии связи для несущей компонента полосы модулирующих частот при помощи nrWaveformGenerator
функция.
В этом примере показано, как параметризовать и сгенерировать 5G сигнал Нового Радио (NR) нисходящего канала при помощи nrWaveformGenerator
функция. Сгенерированная форма волны содержит эти каналы и сигналы:
PDSCH и связанные с ним DM-RS и PT-RS
PDCCH и связанный с ним DM-RS
PBCH и связанный с ним DM-RS
PSS и SSS
CSI-RS
Этот пример демонстрирует, как параметризовать и сгенерировать сигнал несущей компонента основной полосы частот, характеризующийся множеством несущих с интервалами поднесущих (SCS) и частей полосы пропускания (BWP). Можно сгенерировать несколько образцов физического совместно используемого нисходящего канала (PDSCH), физического нисходящего канала управления (PDCCH) и опорного сигнала информации о состоянии канала (CSI-RS) по различным BWP. Можно сконфигурировать наборы наборов ресурсов управления (CORESETs) и найти возможности мониторинга пространства для отображения PDCCHs. Этот пример не применяет предварительное кодирование к физическим каналам и сигналам.
Форма волны основной полосы частот параметризована nrDLCarrierConfig
объект и набор дополнительных объектов, сопоставленных с каналами формы волны и сигналами.
С nrDLCarrierConfig
объект, можно задать эти нисходящие параметры конфигурации поставщика услуг.
Метка для этого строения несущей DL
Пропускная способность несущей SCS в ресурсных блоках
Идентификатор камеры оператора связи
Длина сгенерированной формы волны в подкадрах
Работа с окнами
Частота дискретизации модулированной формы волны OFDM
Несущая частота для компенсации фазы символа
Вы можете управлять полосами пропускания и полосами защиты SCS, используя NStartGrid
и NSizeGrid
свойства nrSCSCarrierConfig
объект.
waveconfig = nrDLCarrierConfig(); % Create an instance of the waveform's parameter object waveconfig.Label = 'DL carrier 1'; % Label for this downlink waveform configuration waveconfig.NCellID = 0; % Cell identity waveconfig.ChannelBandwidth = 40; % 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 % 40 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 = 216; scscarriers{1}.NStartGrid = 0; scscarriers{2}.SubcarrierSpacing = 30; scscarriers{2}.NSizeGrid = 106; scscarriers{2}.NStartGrid = 1;
В этом разделе можно задать параметры для пакета синхронизации сигнала (SS). Нумерология пакета SS может отличаться от других частей формы волны. Это определяется параметром шаблона блока, как указано в TS 38.213 Раздел 4.1. Растровое изображение задает блоки, которые будут переданы в полукадровом пакете 5 мс. Можно также задать периодичность в миллисекундах и степень пакета. Полный список конфигурируемых свойств пакета SS см. в разделе nrWavegenSSBurstConfig
.
% SS burst configuration ssburst = nrWavegenSSBurstConfig(); ssburst.Enable = 1; % Enable SS Burst ssburst.Power = 0; % Power scaling in dB ssburst.BlockPattern = 'Case B'; % Case B (30kHz) subcarrier spacing ssburst.TransmittedBlocks = [1 1 1 1]; % Bitmap indicating blocks transmitted in a 5ms half-frame burst ssburst.Period = 20; % SS burst set periodicity in ms (5, 10, 20, 40, 80, 160) ssburst.NCRBSSB = []; % Frequency offset of SS burst (CRB), use [] for the waveform center
BWP формируется набором смежных ресурсов, разделяющих нумерологию на данной несущей. Можно задать несколько BWP с помощью массива ячеек. Каждый элемент в массиве ячеек nrWavegenBWPConfig
объекты определяют BWP. Для каждого BWP можно задать SCS, длину циклического префикса (CP) и пропускную способность. The SubcarrierSpacing
свойство сопоставляет BWP с одной из определенных ранее несущих SCS. The 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 = 12; % 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 = 50; % Size of BWP in PRBs bwp{2}.NStartBWP = 51; % Position of BWP, relative to point A (i.e. CRB)
В этом разделе указываются символы CORESET и строение пространства поиска PDCCH. CORESET и поисковые пространства определяют возможные местоположения (по времени и частоте) передач канала управления для заданной нумерологии. Каждый элемент в массиве ячеек nrCORESETConfig
объекты задают CORESET и каждый элемент в массиве ячеек nrSearchSpaceConfig
объекты определяют пространство поиска.
Установите эти параметры для каждого CORESET и пространства поиска:
Символы OFDM, которые задают первый символ каждой возможности мониторинга CORESET в пазе
Длительность блока выделенных пазов в течение периода
Периодичность шаблона распределения
Длительность CORESET в символах, 1, 2 или 3
Растровое изображение, определяющее выделенные физические ресурсные блоки (PRB) CORESET. Распределение частот CORESET определяется в блоках 6 PRB, выровненных в нумерации CRB, относительно точки A. Каждый бит растрового изображения выбирает все 6 PRB в выровненном блоке CRB, который содержит его
CCE-to-REG отображения который может быть 'перемежен' или 'не перемежен'
Размер пакета группы ресурсных элементов (REG) (L), либо (2,6), либо (3,6), на основе длительности CORESET
Размер перемежителя, 2, 3 или 6
Индекс сдвига, скалярное значение в область значений 0... 274
Рисунок ниже показывает значение некоторых параметров CORESET.
% CORESET and search space configurations coresets = {nrCORESETConfig()}; coresets{1}.CORESETID = 1; % CORESET ID coresets{1}.Duration = 3; % CORESET symbol duration (1,2,3) coresets{1}.FrequencyResources = [1 1 0 1]; % Bitmap indicating blocks of 6 PRB for CORESET (RRC - frequencyDomainResources) coresets{1}.CCEREGMapping = 'noninterleaved'; % Mapping: 'interleaved' or 'noninterleaved' coresets{1}.REGBundleSize = 3; % L (2,6) or (3,6) coresets{1}.InterleaverSize = 2; % R (2,3,6) coresets{1}.ShiftIndex = waveconfig.NCellID; % Set to NCellID searchspaces = {nrSearchSpaceConfig()}; searchspaces{1}.SearchSpaceID = 1; % Search space ID searchspaces{1}.CORESETID = 1; % CORESET associated with this search space searchspaces{1}.SearchSpaceType = 'ue'; % Search space type, 'ue' or 'common' searchspaces{1}.SlotPeriodAndOffset = [5,0]; % Allocated slot period and slot offset of search space pattern searchspaces{1}.Duration = 2; % Number of slots in the block of slots in pattern period searchspaces{1}.StartSymbolWithinSlot = 0; % First symbol of each CORESET monitoring opportunity in a slot searchspaces{1}.NumCandidates = [8 8 4 2 0]; % Number of candidates at each AL (set to 0 if the AL doesn't fit in CORESET)
В этом разделе указывается набор образцов PDCCH в форме волны при помощи массива ячеек. Каждый элемент в массиве ячеек nrWavegenPDCCHConfig
объекты определяют последовательность образцов PDCCH.
Установите эти параметры для каждой последовательности PDCCH:
Включите или отключите эту последовательность PDCCH
Задайте метку для этой последовательности PDCCH
Укажите BWP, несущий PDCCH. PDCCH использует SCS, заданный для этого BWP
Масштабирование степени в дБ
Включите или отключите кодирование канала нисходящей управляющей информации (DCI)
Выделенные пространства в последовательности событий мониторинга CORESET
Пространство поиска (и CORESET), которое содержит образцы PDCCH
Период выделения в пазах. Пустой период указывает на отсутствие повторения
Уровень агрегации (AL) PDCCH (количество элементов канала управления (CCE))
Назначенный кандидат, который задает CCE, используемый для передачи PDCCH
RNTI
Скремблирование NID для этого PDCCH и связанного с ним DM-RS
Степень DM-RS в дБ
Размер полезной нагрузки сообщения DCI
Источник данных сообщений DCI. Можно использовать массив бит или один из следующих стандартных псевдошумовых последовательностей: 'PN9-ITU'
, 'PN9'
, 'PN11'
, 'PN15'
, 'PN23'
. Seed для генератора может быть задано с помощью массива ячеек в форме {'PN9', seed}
. Если seed не задан, генератор инициализируется всеми таковыми
pdcch = {nrWavegenPDCCHConfig()}; pdcch{1}.Enable = 1 ; % Enable PDCCH sequence pdcch{1}.Label = 'PDCCH @ 15 kHz'; % Label for this PDCCH sequence pdcch{1}.BandwidthPartID = 1; % Bandwidth part of PDCCH transmission pdcch{1}.Power = 1.1; % Power scaling in dB pdcch{1}.Coding = 1; % Enable DCI coding pdcch{1}.SearchSpaceID = 1; % Search space pdcch{1}.SlotAllocation = 0; % Allocated slots indices for PDCCH sequence pdcch{1}.Period = 5; % Allocation period in slots pdcch{1}.AggregationLevel = 8; % Aggregation level (1,2,4,8,16 CCEs) pdcch{1}.AllocatedCandidate = 1; % PDCCH candidate in search space (1 based) pdcch{1}.RNTI = 0; % RNTI pdcch{1}.DMRSScramblingID = 1; % PDCCH and DM-RS scrambling NID pdcch{1}.DMRSPower = 0; % Additional DM-RS power boosting in dB pdcch{1}.DataBlockSize = 20; % DCI payload size pdcch{1}.DataSource = 'PN9'; % DCI data source
В этом разделе указывается набор образцов PDSCH в форме волны при помощи массива ячеек. Каждый элемент в массиве ячеек nrWavegenPDSCHConfig
объекты определяют последовательность образцов PDSCH. Этот пример задает две последовательности PDSCH.
Общие параметры
Установите эти параметры для каждой последовательности PDSCH:
Включите или отключите эту последовательность PDSCH
Задайте метку для этой последовательности PDSCH
Укажите BWP, несущий PDSCH. PDSCH использует SCS, заданный для этого BWP
Масштабирование степени в дБ
Включите или отключите кодирование транспортного канала DL-SCH
Транспортный источник данных блока. Можно использовать массив бит или один из следующих стандартных псевдошумовых последовательностей: 'PN9-ITU'
, 'PN9'
, 'PN11'
, 'PN15'
, 'PN23'
. Seed для генератора может быть задано с помощью массива ячеек в форме {'PN9', seed}
. Если seed не задан, генератор инициализируется всеми таковыми
Целевая скорость кода, используемая для вычисления размеров транспортных блоков
Служебный параметр
Символьная модуляция
Количество слоев
Последовательность версии избыточности (RV)
Включите или отключите перемежение блока виртуальных ресурсов к физическим отображениям
Размер пакета для перемеженной карты, заданный параметром более высокого слоя vrb-ToPRB-Interleaver
pdsch = {nrWavegenPDSCHConfig()}; pdsch{1}.Enable = 1; % Enable PDSCH sequence pdsch{1}.Label = 'PDSCH @ 15 kHz'; % Label for this PDSCH sequence pdsch{1}.BandwidthPartID = 1; % Bandwidth part of PDSCH transmission pdsch{1}.Power = 0; % Power scaling in dB pdsch{1}.Coding = 1; % Enable the DL-SCH transport channel coding pdsch{1}.DataSource = 'PN9'; % Channel data source pdsch{1}.TargetCodeRate = 0.4785; % Code rate used to calculate transport block sizes pdsch{1}.XOverhead = 0; % Rate matching overhead pdsch{1}.Modulation = 'QPSK'; % 'QPSK', '16QAM', '64QAM', '256QAM' pdsch{1}.NumLayers = 2; % Number of PDSCH layers pdsch{1}.RVSequence = [0,2,3,1]; % RV sequence to be applied cyclically across the PDSCH allocation sequence pdsch{1}.VRBToPRBInterleaving = 0; % Disable interleaved resource mapping pdsch{1}.VRBBundleSize = 2; % vrb-ToPRB-Interleaver parameter
Распределение
Эта схема представляет некоторые параметры, используемые в выделении PDSCH.
Для управления выделением PDSCH можно задать следующие параметры. Эти параметры относятся к BWP. Указанное выделение PDSCH позволит избежать местоположений, используемых для пакета SS.
Символы в пазе, выделенные каждому образцу PDSCH
Пазы в системе координат, используемом для последовательности PDSCH
Период выделения в пазах. Пустой период указывает на отсутствие повторения
Выделенные PRB относительно BWP
РНТИ. Это значение используется для соединения PDSCH с образцом PDCCH
NID для скремблирования бит PDSCH
pdsch{1}.SymbolAllocation = [2,9]; % First symbol and length pdsch{1}.SlotAllocation = 0:9; % Allocated slot indices for PDSCH sequence pdsch{1}.Period = 15; % Allocation period in slots pdsch{1}.PRBSet = [0:5, 10:20]; % PRB allocation pdsch{1}.RNTI = 0; % RNTI pdsch{1}.NID = 1; % Scrambling for data part
CORESET и наборы PRB могут быть заданы для соответствия скорости вокруг, если требуется
PDSCH может совпадать со скоростью вокруг одного или нескольких CORESET
PDSCH может совпадать по скорости с другими выделениями ресурсов
pdsch{1}.ReservedCORESET = 1; % Rate matching pattern, defined by CORESET IDs pdsch{1}.ReservedPRB{1}.PRBSet = []; % Rate matching pattern, defined by set of PRB (RRC 'bitmaps') pdsch{1}.ReservedPRB{1}.SymbolSet = []; pdsch{1}.ReservedPRB{1}.Period = [];
PDSCH DM-RS Строения
Установите параметры DM-RS.
% Antenna port and DM-RS configuration (TS 38.211 section 7.4.1.1) pdsch{1}.MappingType = 'A'; % PDSCH mapping type ('A'(slot-wise),'B'(non slot-wise)) pdsch{1}.DMRSPower = 0; % Additional power boosting in dB pdsch{1}.DMRS.DMRSConfigurationType = 2; % DM-RS configuration type (1,2) pdsch{1}.DMRS.NumCDMGroupsWithoutData = 1; % Number of DM-RS CDM groups without data. The value can be one of the set {1,2,3} pdsch{1}.DMRS.DMRSPortSet = []; % DM-RS antenna ports used ([] gives port numbers 0:NumLayers-1) pdsch{1}.DMRS.DMRSTypeAPosition = 2; % Mapping type A only. First DM-RS symbol position (2,3) pdsch{1}.DMRS.DMRSLength = 1; % Number of front-loaded DM-RS symbols (1(single symbol),2(double symbol)) pdsch{1}.DMRS.DMRSAdditionalPosition = 0; % Additional DM-RS symbol positions (max range 0...3) pdsch{1}.DMRS.NIDNSCID = 1; % Scrambling identity (0...65535) pdsch{1}.DMRS.NSCID = 0; % Scrambling initialization (0,1)
PDSCH PT-RS Строения
Установите параметры PT-RS.
% PT-RS configuration (TS 38.211 section 7.4.1.2) pdsch{1}.EnablePTRS = 0; % Enable or disable the PT-RS (1 or 0) pdsch{1}.PTRSPower = 0; % Additional PT-RS power boosting in dB pdsch{1}.PTRS.TimeDensity = 1; % Time density (L_PT-RS) of PT-RS (1,2,4) pdsch{1}.PTRS.FrequencyDensity = 2; % Frequency density (K_PT-RS) of PT-RS (2,4) pdsch{1}.PTRS.REOffset = '00'; % PT-RS resource element offset ('00','01','10','11') pdsch{1}.PTRS.PTRSPortSet = 0; % PT-RS antenna ports must be a subset of DM-RS ports
При включении PT-RS порты DM-RS должны находиться в области значений от 0 до 3 для типа 1 строения DM-RS и в области значений от 0 до 5 для типа 2 строения DM-RS. Номинально порт антенны PT-RS является самым низким номером порта DM-RS.
Определение нескольких образцов PDSCH
Задайте вторую последовательность PDSCH для второго BWP.
pdsch{2} = pdsch{1}; pdsch{2}.Enable = 1; pdsch{2}.Label = 'PDSCH @ 30 kHz'; pdsch{2}.BandwidthPartID = 2; % PDSCH mapped to 2nd BWP pdsch{2}.SymbolAllocation = [0,12]; pdsch{2}.SlotAllocation = [2:4,6:20]; pdsch{2}.PRBSet = [25:30, 35:38]; % PRB allocation, relative to BWP
Этот раздел настраивает CSI-RS в форме волны. Каждый элемент в массиве ячеек nrWavegenCSIRSConfig
объекты определяют набор ресурсов CSI-RS, сопоставленных с BWP. Этот пример задает два набора ресурсов CSI-RS, которые отключены.
Общие параметры
Установите эти параметры для набора ресурсов CSI-RS:
Включите или отключите этот набор ресурсов CSI-RS
Укажите метку для этого набора ресурсов CSI-RS
Укажите BWP, несущий этот набор ресурсов CSI-RS. Ресурсное строение CSI-RS использует SCS, заданный для этого BWP
Задайте масштабирование степени в дБ. Предоставление скаляра определяет масштабирование степени для одного ресурса CSI-RS или всех сконфигурированных ресурсов CSI-RS. Предоставление вектора задает отдельный уровень степени для каждого из ресурсов CSI-RS.
csirs = {nrWavegenCSIRSConfig()}; csirs{1}.Enable = 0; csirs{1}.Label = 'CSI-RS @ 15 kHz'; csirs{1}.BandwidthPartID = 1; csirs{1}.Power = 3; % Power scaling in dB
CSI-RS Строения
Можно сконфигурировать эти параметры для одних или нескольких строений ресурсов CSI-RS с нулевым энергопотреблением (ZP) или степенью (NZP).
Тип ресурса (ресурсов) CSI-RS ('nzp', 'zp')
Номер строки соответствует ресурсу (ресурсам) CSI-RS, определенному в TS 38,211 таблице 7,4,1,5,3-1 (1... 18)
Частотная плотность ресурса (ресурсов) CSI-RS. Это может быть 'one'
, 'three'
, 'dot5even'
, или 'dot5odd'
Местоположения поднесущих ресурса (ресурсов) CSI-RS в ресурсном блоке (RB)
Количество RB, выделенных ресурсам CSI-RS (1... 275)
Запуск индекса RB распределения ресурсов CSI-RS относительно сетки ресурсов поставщика услуг связи (0... 274)
Местоположение символа OFDM ресурса (ресурсов) CSI-RS в пазе
Период и смещение пазов (на основе 0) ресурса (ов) CSI-RS. Этот параметр может быть вектором или массивом ячеек из векторов. В последнем случае каждая камера соответствует отдельному ресурсу CSI-RS. В случае вектора тот же набор пазов используется для всех ресурсов CSI-RS
Скремблирующие тождества соответствуют ресурсу (ресурсам) CSI-RS для псевдослучайной генерации последовательности (0... 1023)
csirs{1}.CSIRSType = {'nzp','zp'}; csirs{1}.RowNumber = [3 5]; csirs{1}.Density = {'one','one'}; csirs{1}.SubcarrierLocations = {6,4}; csirs{1}.NumRB = 25; csirs{1}.RBOffset = 12; csirs{1}.SymbolLocations = {13,9}; csirs{1}.CSIRSPeriod = {[5 0],[5 0]}; csirs{1}.NID = 5;
Определение нескольких образцов CSI-RS
Задайте второй набор ресурсов CSI-RS для второго BWP.
csirs{2} = nrWavegenCSIRSConfig(); csirs{2}.Enable = 0; csirs{2}.Label = 'CSI-RS @ 30 kHz'; csirs{2}.BandwidthPartID = 2; csirs{2}.Power = 3; % Power scaling in dB csirs{2}.CSIRSType = {'nzp','nzp'}; csirs{2}.RowNumber = [1 1]; csirs{2}.Density = {'three','three'}; csirs{2}.SubcarrierLocations = {0,0}; csirs{2}.NumRB = 50; csirs{2}.RBOffset = 50; csirs{2}.SymbolLocations = {6,10}; csirs{2}.CSIRSPeriod = {[10,1],[10,1]}; csirs{2}.NID = 0;
В этом разделе все параметры канала и сигнала присваиваются основному объекту строения поставщика услуг nrDLCarrierConfig
, затем генерирует и строит график формы волны.
waveconfig.SSBurst = ssburst;
waveconfig.SCSCarriers = scscarriers;
waveconfig.BandwidthParts = bwp;
waveconfig.CORESET = coresets;
waveconfig.SearchSpaces = searchspaces;
waveconfig.PDCCH = pdcch;
waveconfig.PDSCH = pdsch;
waveconfig.CSIRS = csirs;
% Generate complex baseband waveform
[waveform,info] = nrWaveformGenerator(waveconfig);
Постройте график величины формы волны основной полосы для набора заданных портов антенны.
figure; plot(abs(waveform)); title('Magnitude of 5G Downlink 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 Downlink Baseband Waveform');
Функция генератора формы волны возвращает форму волны во временной области и структуру info
, который содержит базовую сетку ресурсного элемента и разбивку ресурсов, используемых всеми образцами PDSCH и PDCCH в форме волны.
The 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, где различные плоскости представляют порты антенны. Для различных физических каналов и сигналов самый нижний порт сопоставлен с первой плоскостью сетки.
nrCORESETConfig
| nrSCSCarrierConfig
| nrSearchSpaceConfig
| nrULCarrierConfig
| nrWavegenBWPConfig
| nrWavegenCSIRSConfig
| nrWavegenPDCCHConfig
| nrWavegenPDSCHConfig
| nrWavegenSSBurstConfig