В этом примере показано, как использовать 5G, NR передает в нисходящем направлении генератор формы волны поставщика услуг, чтобы создать основополосную форму волны поставщика услуг компонента.
В этом примере показано, как параметрировать и сгенерировать форму волны нисходящего канала Нового радио (NR) 5G с помощью nrWaveformGenerator
. Следующие каналы и сигналы могут быть сгенерированы:
PDSCH и его связанный DM-RS и PT-RS
PDCCH и его связанный DM-RS
PBCH и его связанный DM-RS
PSS и SSS
RS CSI
Этот пример поддерживает параметризацию и генерацию нескольких SCS определенные поставщики услуг и несколько частей пропускной способности (BWP). Несколько экземпляров PDSCH и каналов PDCCH могут быть сгенерированы по различному BWPs. Наборы CORESETs и контрольных возможностей пространства поиска могут быть сконфигурированы для отображения PDCCHs. Обратите внимание на то, что никакое предварительное кодирование не применяется к физическим каналам и сигналам в этом примере.
Основополосная форма волны параметрируется nrDLCarrierConfig
возразите и набор дополнительных объектов, сопоставленных с его каналами и сигналами. Этот раздел устанавливает SCS определенная пропускная способность поставщика услуг в блоках ресурса, ячейке ID и длине сгенерированной формы волны в подкадрах. Можно управлять пропускной способностью поставщика услуг SCS и защитными полосами с помощью NStartGrid
и NSizeGrid
параметры.
waveconfig = nrDLCarrierConfig(); % Create an instance of the waveform's parameter object 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) % 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 формируется набором непрерывных ресурсов, совместно использующих нумерологию на данном поставщике услуг. Этот пример поддерживает использование нескольких BWPs использование массива ячеек. Каждая запись в массиве представляет BWP. Для каждого BWP можно задать разрядку поднесущей (SCS), длина циклического префикса (CP) и пропускная способность. SubcarrierSpacing
параметр сопоставляет BWP с одним из SCS определенные поставщики услуг, заданные ранее. NStartBWP
параметр управляет местоположением BWP в поставщике услуг относительно точки A. Это описывается в терминах нумерологии BWP. Различный BWPs может перекрыться друг с другом.
% Bandwidth parts configurations bwp = {nrWavegenBWPConfig(),nrWavegenBWPConfig()}; bwp{1}.BandwidthPartID = 1; % Bandwidth part ID bwp{1}.SubcarrierSpacing = 15; % BWP subcarrier spacing bwp{1}.CyclicPrefix = 'Normal'; % BWP cyclic prefix for 15 kHz bwp{1}.NSizeBWP = 25; % Size of BWP bwp{1}.NStartBWP = 12; % Position of BWP, relative to point A (i.e. CRB) bwp{2}.BandwidthPartID = 2; % Bandwidth part ID bwp{2}.SubcarrierSpacing = 30; % BWP subcarrier spacing bwp{2}.CyclicPrefix = 'Normal'; % BWP cyclic prefix for 30 kHz bwp{2}.NSizeBWP = 50; % Size of BWP bwp{2}.NStartBWP = 51; % Position of BWP, relative to point A (i.e. CRB)
Параметры в этом разделе задают набор ресурсов управления (CORESET) и настройку пространства поиска PDCCH. CORESET и пространства поиска задают возможные местоположения (вовремя и частота) передач канала управления для данной нумерологии. Генератор поддерживает несколько CORESETs и пространства поиска. Следующие параметры могут быть заданы:
Символы OFDM, которые задают первый символ каждого CORESET контролирующая возможность в пазе
Длительность блока выделенных пазов в период
Периодичность шаблона выделения
Длительность CORESET в символах, или 1, 2 или 3
Битовый массив, задающий выделенные физические блоки ресурса (PRB) CORESET. Обратите внимание на то, что выделение частоты CORESET задано в блоках 6 PRBs, выровненных в нумерации общего блока ресурса (CRB), i.e. относительно точки A. Каждый бит в битовом массиве выбирает все 6 PRBs в CRB выровненный блок, который содержит его.
Отображение CCE-to-REG, которое может быть 'чередовано' или 'нечередующееся'
Размер пакета группы элемента ресурса (REG) (L), или (2,6) или (3,6), на основе длительности CORESET
Размер Interleaver, или 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 в форме волны. Каждый элемент в массиве структур задает экземпляр последовательности PDCCH. Следующие параметры могут быть установлены:
Позвольте/запретите последовательность PDCCH
Задайте BWP перенос PDCCH
Степень экземпляра PDCCH в дБ
Позвольте/запретите кодирование канала DCI
Выделенные места поиска в CORESET контролирующая последовательность случая
Пространство поиска (и CORESET), который несет экземпляры PDCCH
Периодичность выделения. Если это собирается опустеть, это не указывает ни на какое повторение
Уровень агрегации (AL) PDCCH (количество элементов канала управления (CCEs))
Выделенный кандидат, который задает 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}.Power = 1.1; % Power scaling in dB pdcch{1}.Coding = 1; % Enable DCI coding pdcch{1}.BandwidthPartID = 1; % Bandwidth part pdcch{1}.SearchSpaceID = 1; % Search space pdcch{1}.SlotAllocation = 0; % Slots used with period pdcch{1}.Period = 5; % Period of transmission pattern 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 power boosting in dB pdcch{1}.DataBlockSize = 20; % DCI payload size pdcch{1}.DataSource = 'PN9'; % DCI data source
Этот раздел задает набор экземпляров PDSCH в форме волны. Каждый элемент в массиве ячеек nrWavegenPDSCHConfig
задает экземпляр последовательности 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. Если этот параметр не задан, размер пакета установлен в 2
pdsch = {nrWavegenPDSCHConfig()}; pdsch{1}.Enable = 1; % Enable PDSCH sequence pdsch{1}.BandwidthPartID = 1; % Bandwidth part of PDSCH transmission pdsch{1}.Power = 0; % Power scaling in dB pdsch{1}.Coding = 1; % Enable 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
Период выделения в пазах. Если это пусто, это не указывает ни на какое повторение
Выделенные PRBs относительно BWP
RNTI. Это значение используется, чтобы соединить 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
CORESETs и наборы PRB могут быть заданы для уровня, соответствующего вокруг при необходимости
PDSCH может быть уровнем, соответствующим вокруг одного или нескольких CORESETs
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 RS DM
Установите параметры 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.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.DMRSConfigurationType = 2; % DM-RS configuration type (1,2) pdsch{1}.DMRS.NumCDMGroupsWithoutData = 1; % CDM groups without data (max range 1...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 % When PT-RS is enabled, the DM-RS ports must be in range 0 to 3 for DM-RS % configuration type 1 and in range 0 to 5 for DM-RS configuration type 2. % Nominally the antenna port of PT-RS is the lowest DM-RS port number.
Определение нескольких экземпляров PDSCH
Второй экземпляр последовательности PDSCH задан затем с помощью второго BWP.
pdsch{2} = pdsch{1}; pdsch{2}.Enable = 1; 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) в форме волны. Каждый элемент в массиве ячеек представляет набор ресурсов CSI-RS, сопоставленных с BWP.
Общие параметры
Установите эти параметры для набора ресурсов 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}.BandwidthPartID = 1;
csirs{1}.Power = 3; % in dB
Настройка CSI-RS
Можно сконфигурировать следующие параметры для одного или нескольких нулевая степень (ZP) или "не обнуляют степень" (NZP) настройки ресурса CSI-RS.
Тип ресурса (ресурсов) CSI-RS ('nzp', 'zp')
Номер строки соответствует ресурсу (ресурсам) CSI-RS, как задано в таблице 7.4.1.5.3-1 TS 38.211 (1... 18)
Плотность частоты ресурса (ресурсов) CSI-RS ('один', 'три', 'dot5even', 'dot5odd')
Местоположения поднесущей ресурса (ресурсов) CSI-RS в блоке ресурса (RB)
Количество RBS выделило ресурсу (ресурсам) 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}.BandwidthPartID = 2; csirs{2}.Power = 3; % 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; [waveform,info] = nrWaveformGenerator(waveconfig); % Plot the magnitude of the baseband waveform for the set of antenna ports defined figure; plot(abs(waveform)); title('Magnitude of 5G Downlink Baseband Waveform'); xlabel('Sample Index'); ylabel('Magnitude'); % Plot spectogram of waveform for first antenna port 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 в форме волны.
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 матрицей, где различные плоскости представляют порты антенны. Для различных физических каналов и сигналов самый низкий порт сопоставлен с первой плоскостью сетки.