В этом примере показано, как сконфигурировать Новое радио (NR) 5G физический канал произвольного доступа (PRACH), как задано в Разделах TS 38.211 5.3.2 и 6.3.3 [1]. Можно узнать о ресурсах времени PRACH, их отношении к преамбулам PRACH, и изучить, как сгенерировать преамбулы PRACH без потребности искать таблицы настройки. Этот пример также показывает, как сопоставить символы PRACH с сеткой ресурса и как сгенерировать форму волны временного интервала для одной преамбулы PRACH.
Таблица 6.3.3.2-1 в TS 38.211 перечисляет поддерживаемые комбинации интервала поднесущей для PRACH и физического восходящего канала совместно использованный канал (PUSCH) во время начального доступа. Можно получить доступ к этой таблице непосредственно от объекта настройки PRACH.
disp(nrPRACHConfig.Tables.SupportedSCSCombinations)
LRA PRACHSubcarrierSpacing PUSCHSubcarrierSpacing NRBAllocation kbar ___ ______________________ ______________________ _____________ ____ 839 1.25 15 6 7 839 1.25 30 3 1 839 1.25 60 2 133 839 5 15 24 12 839 5 30 12 10 839 5 60 6 7 139 15 15 12 2 139 15 30 6 2 139 15 60 3 2 139 30 15 24 2 139 30 30 12 2 139 30 60 6 2 139 60 60 12 2 139 60 120 6 2 139 120 60 24 2 139 120 120 12 2
Информационный элемент радио-управления ресурсами (RRC) UplinkConfigCommonSIB (Раздел TS 38.331 6.3.2 [2]) получен из системного блока информации 1 (SIB1) и содержит значение интервала поднесущей для PUSCH. Оборудованию пользователя (UE) нужна эта информация, чтобы передать преамбулу PRACH во время процедуры произвольного доступа.
Поскольку PUSCH не задан в передаче преамбулы PRACH, используйте nrCarrierConfig
объект сконфигурировать интервал поднесущей PUSCH и размерности частотного диапазона сетки ресурса.
carrier = nrCarrierConfig;
carrier.SubcarrierSpacing = 15; % Subcarrier spacing in kHz (15, 30, 60, 120)
Поскольку та же преамбула PRACH модулируется относительно поставщика услуг, изменение интервала поднесущей поставщика услуг приводит к различной форме волны PRACH. В разделе Generate Waveform for Single PRACH Preamble проверяйте Information associated with PRACH OFDM modulation
выведите для нескольких поставщиков услуг, чтобы видеть, как различный поставщик услуг влияет на сгенерированную форму волны.
Можно сконфигурировать параметры PRACH при помощи nrPRACHConfig
свойства объектов. Согласно TS 38.211, не все комбинации параметра PRACH допустимы. Для получения дополнительной информации о как свойства nrPRACHConfig
отразите эти ограничения, смотрите nrPRACHConfig
.
prach = nrPRACHConfig; prach.FrequencyRange = 'FR1'; % Frequency range ('FR1', 'FR2') prach.DuplexMode = 'FDD'; % Duplex mode ('FDD', 'TDD', 'SUL') prach.ConfigurationIndex = 27; % Configuration index (0...255). This value is automatically updated in the next section. prach.SubcarrierSpacing = 15; % Subcarrier spacing in kHz (1.25, 5, 15, 30, 60, 120) prach.SequenceIndex = 0; % Logical root sequence index (0...837) prach.PreambleIndex = 0; % Scalar preamble index within the cell (0...63) prach.RestrictedSet = 'UnrestrictedSet'; % Type of restricted set ('UnrestrictedSet','RestrictedSetTypeA','RestrictedSetTypeB') prach.ZeroCorrelationZone = 0; % Cyclic shift configuration index (0...15) prach.RBOffset = 0; % Starting resource block index of the initial uplink bandwidth part (BWP) relative to carrier resource grid (0...274) prach.FrequencyStart = 0; % Frequency offset of lowest PRACH transmission occasion in frequency domain with respect to physical resource block 0 of the initial uplink BWP (0...274) prach.FrequencyIndex = 0; % Index of the PRACH transmission occasions in frequency domain (0...7) prach.TimeIndex = 0; % Index of the PRACH transmission occasions in time domain (0...6) % For formats B2 and B3, this value is automatically updated in the next section. prach.ActivePRACHSlot = 0; % Active PRACH slot number within a subframe or a 60 kHz slot (0,1) prach.NPRACHSlot = 0; % PRACH slot number
ConfigurationIndex
и TimeIndex
свойства зависят от формата PRACH. SubcarrierSpacing
, ActivePRACHSlot
, и NPRACHSlot
свойства определяют, активна ли преамбула PRACH. Следующие два раздела обсуждают, как установить эти свойства.
ConfigurationIndex
На основе предпочтительного форматаТаблицы 6.3.3.2-2 к 6.3.3.2-4 в TS 38.211 задают все возможные настройки PRACH во временном интервале. Комбинация частотного диапазона и дуплексного режима задает который таблица настройки использовать. Допустимые комбинации:
FR1 и FDD (соединенный спектр): Таблица 6.3.3.2-2
FR1 и SUL (дополнительный восходящий канал): Таблица 6.3.3.2-2
FR1 и TDD (непарный спектр): Таблица 6.3.3.2-3
FR2 и TDD (непарный спектр): Таблица 6.3.3.2-4
Для получения дополнительной информации о том, как парные и непарные спектры относятся к дуплексному режиму, видят поле FDD-OrSUL информационный элемента RRC FrequencyInfoUL в Разделе TS 38.331 6.3.2.
Можно получить доступ к этим таблицам настройки через Tables
свойство nrPRACHConfig
объект. Например:
nrPRACHConfig.Tables.ConfigurationsFR1PairedSUL % TS 38.211 Table 6.3.3.2-2 nrPRACHConfig.Tables.ConfigurationsFR1Unpaired % TS 38.211 Table 6.3.3.2-3 nrPRACHConfig.Tables.ConfigurationsFR2 % TS 38.211 Table 6.3.3.2-4
TS 38.211 задает 13 форматов PRACH и категоризирует их как длинные или короткие преамбулы. Длинные преамбулы имеют последовательность длины , тогда как короткие преамбулы имеют последовательность длины . Форматы, сопоставленные с длинными преамбулами: 0, 1, 2, 3. Форматы, сопоставленные с короткими преамбулами: A1, A2, A3, B1, B2, B3, B4, C0, C2, включая смешанные форматы A1/B1, A2/B2 и A3/B3.
Индексы настройки в Таблицах 6.3.3.2-2 к 6.3.3.2-4 задают ресурсы времени, в которых может быть передан каждый формат преамбулы. Каждый формат преамбулы сопоставлен в несколько индексов настройки. Можно выбрать формат PRACH без потребности искать таблицы настройки путем устанавливания значения ConfigurationIndex
на основе предпочтительного формата. Это значение соответствует самой большой области значений ресурсов времени, в которых можно передать предпочтительный формат преамбулы.
format = 'B2'; % PRACH preamble format ('0','1','2','3','A1','A2','A3','B1','B2','B3','B4','C0','C2')
Выберите таблицу настройки на основе FrequencyRange
и DuplexMode
.
if strcmpi(prach.FrequencyRange,'FR1') if strcmpi(prach.DuplexMode,'TDD') % TS 38.211 Table 6.3.3.2-3 configTable = nrPRACHConfig.Tables.ConfigurationsFR1Unpaired; else % TS 38.211 Table 6.3.3.2-2 configTable = nrPRACHConfig.Tables.ConfigurationsFR1PairedSUL; end else % TS 38.211 Table 6.3.3.2-4 configTable = nrPRACHConfig.Tables.ConfigurationsFR2; end
Среди всех настроек, соответствующих тому же короткому формату преамбулы в Таблице 6.3.3.2-2, предпоследняя настройка имеет наибольшее число ресурсов времени для передачи преамбулы PRACH. Во всех других случаях, включая смешанные форматы в Таблице 6.3.3.2-2, последняя настройка имеет наибольшее число ресурсов времени для передачи преамбулы PRACH. Этот пример использует эту информацию, чтобы установить значение ConfigurationIndex
свойство. Если вы выбираете формат B2 или B3, этот пример устанавливает максимальное значение TimeIndex
.
if strcmpi(prach.FrequencyRange,'FR1') && strcmpi(prach.DuplexMode,'FDD') && ... any(strcmpi(format,{'A1','A2','A3','B1','B4','C0','C2'})) prach.ConfigurationIndex = find(strcmpi(configTable.PreambleFormat,format),1,'last') - 2; else if ~any(strcmpi(format,{'B2','B3'})) prach.ConfigurationIndex = find(strcmpi(configTable.PreambleFormat,format),1,'last') - 1; else % Format B2 and B3 only appear in mixed formats, so select an % appropriate mixed format and set the maximum value of TimeIndex prach.ConfigurationIndex = find(endsWith(configTable.PreambleFormat,format),1,'last') - 1; prach.TimeIndex = prach.NumTimeOccasions - 1; end end
SubcarrierSpacing
, ActivePRACHSlot
, и NPRACHSlot
сгенерировать активную преамбулу PRACHТаблицы 6.3.3.2-2 к 6.3.3.2-4 в TS 38.211 описывают, какой паз PRACH соответствует активной преамбуле PRACH. Третьи и четвертые столбцы этих таблиц представляют системные числа системы координат, которые соответствуют активной преамбуле PRACH. В зависимости от выбранного частотного диапазона, FR1 или FR2, пятая колонна представляет номера слота для интервала поднесущей на 60 кГц или на 15 кГц, соответственно, соответствуя активной преамбуле PRACH. Если преамбула PRACH не активна в ресурсах текущего времени, никакая передача времени не может произойти.
Например, выбранная настройка PRACH активна в любой системной системе координат и подкадре, если интервал поднесущей PRACH установлен в 15 кГц, как показано в Таблице 6.3.3.2-2.
disp(configTable(prach.ConfigurationIndex+1,:))
ConfigurationIndex PreambleFormat x y SubframeNumber StartingSymbol PRACHSlotsPerSubframe NumTimeOccasions PRACHDuration __________________ ______________ _ _____ ______________ ______________ _____________________ ________________ _____________ 146 {'A2/B2'} 1 {[0]} {1x10 double} 0 2 3 4
Чтобы проверить, что преамбула PRACH активна в текущем пазе, проверяйте prachSymbols
выход nrPRACH
функция. Этот выход пуст, если преамбула PRACH не активна в текущем пазе. Сгенерировать активную преамбулу PRACH, цикл через значения NPRACHSlot
свойство до prachSymbols
становится непустым.
Следующие варианты использования показывают, как проверять, активна ли текущая короткая преамбула PRACH. Оба случая рассматривают короткий формат B2 преамбулы PRACH. Если вы изменяете формат, преамбула PRACH может быть активной для значений NPRACHSlot
и ActivePRACHSlot
свойства, отличающиеся от показанных в этом примере.
Случай 1: Типичная настройка разрядки поднесущей PRACH
Настройте преамбулу PRACH для выбранного формата с типичной настройкой разрядки поднесущей. Этот пример рассматривает интервал поднесущей на 15 кГц, который является типичным значением для коротких преамбул в FR1. Если вы изменяете значение интервала поднесущей или формата, вы, возможно, должны изменить значения ActivePRACHSlot
и NPRACHSlot
получить активный паз PRACH.
% Store the user-defined configuration subcarrierSpacing = prach.SubcarrierSpacing; activePRACHSlot = prach.ActivePRACHSlot; nPRACHSlot = prach.NPRACHSlot; % Set values of SubcarrierSpacing, ActivePRACHSlot, and NPRACHSlot for this % case if any(strcmpi(format,{'0','1','2'})) prach.SubcarrierSpacing = 1.25; elseif strcmpi(format,'3') prach.SubcarrierSpacing = 5; else % Short preambles if strcmpi(prach.FrequencyRange,'FR1') prach.SubcarrierSpacing = 15; % Valid values are (15, 30) else % FR2 prach.SubcarrierSpacing = 60; % Valid values are (60, 120) end end prach.ActivePRACHSlot = 0; prach.NPRACHSlot = 0;
Согласно Таблице 6.3.3.2-2 в TS 38.211, UE может передать PRACH в любом пазе.
prachSymbols = nrPRACH(carrier,prach);
active = ~isempty(prachSymbols);
disp(['active: ' num2str(active)])
active: 1
Случай 2: Чередуйте настройку разрядки поднесущей PRACH
Интервал поднесущей PRACH установлен в 30 кГц, тогда как интервал поднесущей поставщика услуг установлен в значение по умолчанию 15 кГц. Это означает, что каждый паз поставщика услуг содержит два паза PRACH. Длинные преамбулы PRACH и частотный диапазон, FR2 отфильтрованы в этом случае, потому что они не совместимы с интервалом поднесущей на 30 кГц.
В случае интервала поднесущей PRACH на 30 кГц только один из двух пазов PRACH в рамках интервала поднесущей на 15 кГц может быть активным. Согласно Таблице 6.3.3.2-2 в TS 38.211, или первое или вторые пазы PRACH могут быть активными для формата B2 преамбулы PRACH. Значение prach.ActivePRACHSlot
свойство задает, какой паз PRACH активен в текущем подкадре поставщика услуг. Это свойство параметр, заданный в Разделе TS 38.211 5.3.2.
Этот случай показывает четыре комбинации NPRACHSlot
и ActivePRACHSlot
значения свойств и тесты, активна ли преамбула PRACH. Этот случай отображает график структуры временного интервала преамбулы PRACH для обеих комбинаций. График показывает, что активная преамбула PRACH занимает первую половину паза поставщика услуг когда ActivePRACHSlot
установлен в 0 и занимает вторую половину паза поставщика услуг когда ActivePRACHSlot
установлен в 1. Для получения дополнительной информации об этом графике смотрите Структуру Временного интервала Графика раздела Selected PRACH Preamble.
if ~any(strcmpi(format,{'0','1','2','3'})) && strcmpi(prach.FrequencyRange,'FR1') % Short preamble formats and FR1 only % Set subcarrier spacing to 30 kHz for this case prach.SubcarrierSpacing = 30; % Define all combinations of NPRACHSlot and ActivePRACHSlot to check nPRACHSlotCase2 = [0, 1, 2]; activePRACHSlotCase2 = [0, 1]; [NPRACHSlotCase2, ActivePRACHSlotCase2] = meshgrid(nPRACHSlotCase2,activePRACHSlotCase2); prachActivityTable = table(NPRACHSlotCase2(:),ActivePRACHSlotCase2(:),false*ones(numel(NPRACHSlotCase2),1), ... 'VariableNames',{'NPRACHSlot','ActivePRACHSlot','active'}); % Loop over all combinations for i = 1:numel(NPRACHSlotCase2) prach.NPRACHSlot = NPRACHSlotCase2(i); prach.ActivePRACHSlot = ActivePRACHSlotCase2(i); prachSymbols = nrPRACH(carrier,prach); active = ~isempty(prachSymbols); % Check if the PRACH preamble is active in the current slot prachActivityTable.active(i) = active; if active && prach.NPRACHSlot < 2 % Plot the time-domain structure of the PRACH preamble for % active PRACH preambles in the first two slots hPRACHPreamblePlot(carrier,prach); end end else % Display a message for the filtered cases if any(strcmpi(format,{'0','1','2','3'})) disp(['PRACH long preamble format ' format ' is not compatible with 30 kHz subcarrier spacing.']) else % FR2 disp('Frequency range FR2 is not compatible with 30 kHz subcarrier spacing.') end end
Для коротких форматов преамбулы с интервалом поднесущей на 30 кГц эта таблица показывает, активна ли преамбула PRACH для каждой комбинации выбранных значений NPRACHSlot
и ActivePRACHSlot
свойства.
if ~any(strcmpi(format,{'0','1','2','3'})) && strcmpi(prach.FrequencyRange,'FR1') % Short preamble formats and FR1 only disp(prachActivityTable) end
NPRACHSlot ActivePRACHSlot active __________ _______________ ______ 0 0 1 0 1 0 1 0 0 1 1 1 2 0 1 2 1 0
Задержите объект настройки PRACH к пользовательской настройке
prach.SubcarrierSpacing = subcarrierSpacing; prach.ActivePRACHSlot = activePRACHSlot; prach.NPRACHSlot = nPRACHSlot;
Объект настройки PRACH также имеет свойства только для чтения, которые предоставляют дополнительную информацию о текущей настройке:
Формат преамбулы: Format
Длина последовательности преамбулы Zadoff-Чу: LRA
Максимальное количество позволенных случаев времени PRACH: NumTimeOccasions
Количество символов OFDM в сетке паза PRACH, соответствующей одному случаю передачи: PRACHDuration
Местоположение первого символа OFDM текущего случая PRACH: SymbolLocation
disp(prach)
nrPRACHConfig with properties: FrequencyRange: 'FR1' DuplexMode: 'FDD' ConfigurationIndex: 146 SubcarrierSpacing: 15 SequenceIndex: 0 PreambleIndex: 0 RestrictedSet: 'UnrestrictedSet' ZeroCorrelationZone: 0 RBOffset: 0 FrequencyStart: 0 FrequencyIndex: 0 TimeIndex: 2 ActivePRACHSlot: 0 NPRACHSlot: 0 Read-only properties: Format: 'B2' LRA: 139 NumTimeOccasions: 3 PRACHDuration: 4 SymbolLocation: 8 Constant properties: Tables: [1x1 struct]
Этот график показывает все возможные случаи PRACH (в текущем пазе поставщика услуг) в светлых цветах и текущем случае PRACH (соответствующий выбранному TimeIndex
) в темных цветах. Этот график содержит циклический префикс (CP), активные периоды последовательности PRACH и итоговый защитный период (GP) красного, синего цвета, и зеленый, соответственно. Если преамбула PRACH не активна в текущем пазе, график пуст. График показывает связанные со временем свойства выбранной настройки PRACH и положения PRACH в пазе поставщика услуг. Если интервал поднесущей PRACH меньше, чем интервал поднесущей поставщика услуг, график показывает, что минимальное количество пазов поставщика услуг должно было передать преамбулу PRACH. Последний случай PRACH вовремя не всегда соответствует в конец паза поставщика услуг. График пуст для тех временных стоимостей, в которых никакая передача PRACH не позволена для текущей настройки PRACH.
hPRACHPreamblePlot(carrier,prach);
Сетка ресурса PRACH показывает местоположение преамбулы PRACH и во время и в частотный диапазон. Используя эту сетку ресурса, вы можете:
Смотрите преамбулу PRACH визуально и во время и в частотный диапазон
Сгенерируйте форму волны PRACH, которая получена путем модуляции сетки ресурса
Генерация сетки ресурса PRACH состоит из этих шагов:
Сгенерируйте пустую сетку
Сгенерируйте символы, которые будут переданы в форме волны PRACH
Сгенерируйте индексы частоты и индексы времени, в которых расположены символы PRACH
Сопоставьте символы PRACH с сеткой ресурса PRACH
Сгенерируйте пустую сетку ресурса PRACH.
prachGrid = nrPRACHGrid(carrier,prach); size(prachGrid)
ans = 1×2
624 14
Сгенерируйте символы PRACH. Количество символов зависит от настройки PRACH. prachSymbols
пусто, если преамбула PRACH не активна в текущем пазе.
prachSymbols = nrPRACH(carrier,prach);
Сгенерируйте индексы PRACH. Значение в каждом элементе prachIndices
линейный индекс местоположения в сетке ресурса PRACH к который соответствующие символы в prachSymbols
сопоставлены.
prachIndices = nrPRACHIndices(carrier,prach);
Сопоставьте символы PRACH с сеткой ресурса PRACH с помощью индексов. Представлять в Разделе TS 38.211 6.3.3.2, отображение применяет масштабный коэффициент 1 к символам PRACH.
prachGrid(prachIndices) = 1 * prachSymbols;
hPRACHResourceGridPlot
графики функций помощника сетка ресурса PRACH, чтобы показать местоположение активного PRACH. График показывает все время случаи, в которых может быть передан PRACH. График показывает все возможные случаи PRACH в текущем пазе поставщика услуг голубого цвета и текущий случай PRACH (соответствующий выбранному TimeIndex
) в темно-синем. График пуст для символов OFDM, не используемых любым случаем PRACH в текущей настройке. Если преамбула PRACH не активна в текущем пазе, график пуст.
hPRACHResourceGridPlot(carrier,prach);
Сетка ресурса PRACH содержит 14 символов OFDM за исключением этих случаев:
Для длинного формата 0 преамбулы каждая преамбула имеет 1 активный период последовательности, который охватывает 1 подкадр. Поэтому сетка паза, связанная с форматом 0, имеет 1 символ OFDM.
Для длинного формата 1 преамбулы каждая преамбула имеет 2 активных периода последовательности тот промежуток 2 подкадра. Поэтому сетка паза, связанная с форматом 1, имеет 2 символа OFDM.
Для длинного формата 2 преамбулы каждая преамбула имеет 4 активных периода последовательности тот промежуток 4 подкадра. Поэтому сетка паза, связанная с форматом 2, имеет 4 символа OFDM.
Для длинного формата 3 преамбулы каждая преамбула имеет 4 активных периода последовательности тот промежуток 1 подкадр. Поэтому сетка паза, связанная с форматом 3, имеет 4 символа OFDM.
Для короткого формата C0 преамбулы каждая преамбула имеет 1 активный период последовательности. Однако из-за защиты и циклического префикса, преамбула охватывает два символа OFDM. Поэтому сетка паза, связанная с форматом C0, имеет 7 символов OFDM.
Можно получить количество активных периодов последовательности от значения PRACHDuration
свойство объекта настройки PRACH.
Сгенерируйте форму волны временного интервала для одной преамбулы PRACH путем модуляции сетки ресурса PRACH.
[prachWaveform,prachInfo] = hPRACHOFDMModulate(carrier,prach,prachGrid);
Выход prachWaveform
вектор-столбец, соответствующий форме волны временного интервала. Выход prachInfo
структура, которая предоставляет размерную информацию, связанную с PRACH. Этот пример отображает эту информацию через hPRACHInfoDisplay
функция помощника. Функция отображает информацию, связанную с количеством выборок, соответствующих CP, PRACH активный период последовательности , и GP для каждого символа OFDM в табличном формате. Таблица приводит все символы OFDM, которые помещаются в сетку ресурса. Для коротких форматов преамбулы значения отмечены *
соответствуйте всем возможным случаям PRACH кроме текущего (отметил голубой в графике сетки ресурса). Для коротких форматов преамбулы значения в угловых скобках представляют символы OFDM, не используемые любым случаем PRACH в текущей настройке (соответствующий пустому месту вовремя в графике сетки ресурса).
Проверяйте информацию, связанную с символами OFDM против PRACHDuration
, SymbolLocation
, и NumTimeOccasions
свойства. Эти свойства показывают что:
Каждый случай PRACH длится 4 символа OFDM
Текущий случай PRACH запускается в символе OFDM 8
3 случая PRACH возможны вовремя
hPRACHInfoDisplay(carrier,prach);
Information associated with PRACH: SubcarrierSpacing: 15 kHz Number of subcarriers: 624 Information associated with PRACH OFDM modulation: Nfft: 1024 Windowing: 0 Offset: 0 samples Symbol TCP TSEQ GP ------ ------ ------ ----- 0* 296* 1024* 0* 1* 0* 1024* 0* 2* 0* 1024* 0* 3* 0* 1024* 0* 4* 296* 1024* 0* 5* 0* 1024* 0* 6* 0* 1024* 0* 7* 0* 1024* 0* 8 180 1024 0 9 0 1024 0 10 0 1024 0 11 0 1024 108 <12> < 0> <1024> < 0> <13> < 0> <1024> < 0> * : OFDM symbols for unused PRACH time occasions <#> : OFDM symbols not used by any PRACH time occasion for the current configuration Total samples: 15360 Sampling rate: 15.360 MHz Duration: 1.000 ms Total number of subframes: 1
В этом примере показано, как сконфигурировать PRACH, установите индекс настройки на основе выбранного формата и определите, активна ли преамбула PRACH в ресурсах текущего времени. Этот пример проводит вас по сетке ресурса PRACH и генерации сигналов временного интервала. Графический вывод структуры временного интервала преамбулы PRACH отображает все доступные случаи PRACH для выбранной настройки в одном подкадре. Графический вывод сетки ресурса отображает все доступные случаи PRACH для выбранной настройки и во время и в частотный диапазон.
В этом примере показано, как сгенерировать форму волны для одной преамбулы PRACH. Для примера, который генерирует форму волны для нескольких преамбул PRACH, смотрите 5G Генерация сигналов NR PRACH.
Этот пример использует эти функции помощника:
3GPP TS 38.211. "NR; Физические каналы и модуляция". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
3GPP TS 38.331. "NR; Радио-управление ресурсами (RRC); спецификация Протокола". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.