Выполните данные UL-SCH и мультиплексирование управления
[
возвращает кодовую комбинацию cw
,info
] = nrULSCHMultiplex(pusch
,tcr
,tbs
,culsch
,cack
,ccsi1
,ccsi2
)cw
путем выполнения восходящего канала совместно использованный канал (UL-SCH), мультиплексирующий на закодированных данных UL-SCH и закодированной восходящей управляющей информации (UCI), как задано в Разделе TS 38.212 6.2.7 [1]. pusch
физический восходящий канал совместно использованная настройка канала (PUSCH). tcr
целевой уровень кода. tbs
транспортный размер блока для передачи UL-SCH. culsch
закодированные данные UL-SCH. cack
, ccsi1
, и ccsi2
закодированные типы UCI.
Функция внутренне вычисляет количество зарезервированных битов для гибридного автоматического повторного подтверждения запроса (HARQ-ACK) передача, GACKRvd
и затем выдерживает сравнение с длинами закодированных входных параметров. Это сравнение определяет обработку HARQ-ACK для соответствия уровня или прокалывания.
Длина cw
равняется емкости в битах PUSCH. cw
содержит закодированную информацию до емкости в битах PUSCH и игнорирует любую другую дополнительную информацию во входных параметрах. Выход cw
содержит нули, если не достаточно закодировал UL-SCH и закодировал UCI (HARQ-ACK, информация о состоянии канала (CSI) 1, или часть 2 CSI), данные присутствуют, чтобы достигнуть емкости в битах. Функция также возвращает структуру info
, который содержит информацию о местоположениях на основе 1 каждого типа в кодовой комбинации.
Создайте объект настройки PUSCH по умолчанию. Выделите первый 21 блок ресурса части пропускной способности к PUSCH.
pusch = nrPUSCHConfig; pusch.PRBSet = 0:20;
Установите целевой уровень кода, длины полезной нагрузки данных UL-SCH, HARQ-ACK, части 1 CSI и части 2 CSI.
tcr = 0.5; % Target code rate tbs = 100; % Payload length of UL-SCH data (transport block size) oack = 3; % Payload length of HARQ-ACK ocsi1 = 10; % Payload length of CSI part 1 ocsi2 = 10; % Payload length of CSI part 2
Доберитесь уровень совпадал с длинами данных UL-SCH, HARQ-ACK, части 1 CSI и части 2 CSI.
rmInfo = nrULSCHInfo(pusch,tcr,tbs,oack,ocsi1,ocsi2);
Создайте предопределенные закодированные биты UL-SCH, HARQ-ACK, части 1 CSI и части 2 CSI в течение соответствующей уровню продолжительности выхода, полученной из rmInfo
структура.
culsch = ones(rmInfo.GULSCH,1); cack = 2*ones(rmInfo.GACK,1); ccsi1 = 3*ones(rmInfo.GCSI1,1); ccsi2 = 4*ones(rmInfo.GCSI2,1);
Доберитесь кодовая комбинация от предопределенного закодировала данные UL-SCH и закодировала типы UCI.
cw = nrULSCHMultiplex(pusch,tcr,tbs,culsch,cack,ccsi1,ccsi2);
Чтобы видеть операцию мультиплексирования, постройте кодовую комбинацию. Кодовая комбинация запускается с элементов части 1 CSI, сопровождаемой HARQ-ACK, частью 1 CSI, частью 2 CSI и соединением данных UL-SCH и части 2 CSI.
plot(cw) xlabel('Codeword Indices') ylabel('Codeword Values') title('Multiplexing Operation')
Создайте объект настройки PUSCH с pi/2-BPSK схема модуляции и никакое скачкообразное движение частоты. Установитесь бета коэффициент смещения для HARQ-ACK к 20 и бета фактор смещения для части 1 CSI и части 2 CSI к 6,25 каждый. Задайте масштабный коэффициент как 0,8, который ограничивает количество элементов ресурса (REs), присвоенный для UCI.
pusch = nrPUSCHConfig; pusch.Modulation = 'pi/2-BPSK'; pusch.FrequencyHopping = 'neither'; pusch.BetaOffsetACK = 20; pusch.BetaOffsetCSI1 = 6.25; pusch.BetaOffsetCSI2 = 6.25; pusch.UCIScaling = 0.8;
Установите целевой уровень кода, длины полезной нагрузки данных UL-SCH, HARQ-ACK, части 1 CSI и части 2 CSI.
tcr = 0.5; % Target code rate tbs = 1032; % Payload length of UL-SCH data (transport block size) oack = 8; % Payload length of HARQ-ACK ocsi1 = 88; % Payload length of CSI part 1 ocsi2 = 720; % Payload length of CSI part 2
Доберитесь уровень совпадал с длинами данных, HARQ-ACK, части 1 CSI и части 2 CSI.
rmInfo = nrULSCHInfo(pusch,tcr,tbs,oack,ocsi1,ocsi2);
Создайте случайные биты полезной нагрузки для данных UL-SCH, HARQ-ACK, части 1 CSI и части 2 CSI.
data = randi([0 1],tbs,1); ack = randi([0 1],oack,1); csi1 = randi([0 1],ocsi1,1); csi2 = randi([0 1],ocsi2,1);
Создайте Системный объект энкодера UL-SCH.
encUL = nrULSCH;
Загрузите транспортный блок в энкодер UL-SCH.
setTransportBlock(encUL,data);
Получите закодированные биты длины rmInfo.GULSCH
путем вызова энкодера.
rv = 0; % Redundancy version is 0
culsch = encUL(pusch.Modulation,pusch.NumLayers,rmInfo.GULSCH,rv);
Закодируйте случайную полезную нагрузку HARQ-ACK, части 1 CSI и части 2 CSI в течение соответствующих уровню продолжительностей выхода, полученных из rmInfo
структура.
cack = nrUCIEncode(ack,rmInfo.GACK,pusch.Modulation); ccsi1 = nrUCIEncode(csi1,rmInfo.GCSI1,pusch.Modulation); ccsi2 = nrUCIEncode(csi2,rmInfo.GCSI2,pusch.Modulation);
Получите кодовую комбинацию от закодированных битов UL-SCH и закодированных битов типов UCI.
[cw,info] = nrULSCHMultiplex(pusch,tcr,tbs,culsch,cack,ccsi1,ccsi2)
cw = 8112x1 int8 column vector
1
0
1
0
0
0
1
1
1
0
⋮
info = struct with fields:
ULSCHIndices: [1622x1 uint32]
ACKIndices: [1159x1 uint32]
CSI1Indices: [4482x1 uint32]
CSI2Indices: [849x1 uint32]
UCIXIndices: [0x1 uint32]
UCIYIndices: [0x1 uint32]
pusch
— Параметры конфигурации PUSCHnrPUSCHConfig
объектПараметры конфигурации PUSCH в виде nrPUSCHConfig
объект. Эта функция использует только их nrPUSCHConfig
свойства объектов.
Modulation
— Схема Modulation'QPSK'
(значение по умолчанию) | 'pi/2-BPSK'
| '16QAM'
| '64QAM'
| '256QAM'
| строковый скалярСхема Modulation в виде 'QPSK'
, 'pi/2-BPSK'
, '16QAM'
, '64QAM'
, или '256QAM'
, строковый скаляр или символьный массив.
Схема модуляции | Количество битов на символ |
---|---|
'pi/2-BPSK' | 1 |
'QPSK' | 2 |
'16QAM' | 4 |
'64QAM' | 6 |
'256QAM' | 8 |
Типы данных: char |
string
NumLayers
— Количество слоев передачи
(значение по умолчанию) | 2
| 3
| 4
Количество слоев передачи в виде 1
, 2, 3
, или
4
.
Типы данных: double
MappingType
— Отображение типа'A'
(значение по умолчанию) | 'B'
Отображение типа физического разделяемого канала в виде 'A'
или 'B'
.
Типы данных: char |
string
SymbolAllocation
— Выделение символа OFDM
(значение по умолчанию) | двухэлементный вектор из неотрицательных целых чиселВыделение символа OFDM физического разделяемого канала в виде двухэлементного вектора из неотрицательных целых чисел. Первый элемент этого свойства представляет запуск выделения символа (на основе 0). Второй элемент представляет количество выделенных символов OFDM.
Когда вы устанавливаете это свойство на []
или второй элемент вектора к 0
, никакой символ не выделяется для канала.
Типы данных: double
PRBSet
— Выделение PRB
(значение по умолчанию) | вектор из целых чисел от 0 до 274Выделение физического блока ресурса (PRB) PUSCH в BWP в виде вектора из целых чисел от 0 до 274.
Типы данных: double
TransformPrecoding
— Преобразуйте предварительное кодирование
или false
(значение по умолчанию) | 1
или true
Преобразуйте предварительное кодирование в виде одного из этих значений.
0
ложь
) — Отключают, преобразовывают предварительное кодирование. Тип формы волны является циклически-префиксным ортогональным делением частоты, мультиплексирующим (CP-OFDM).
1
TRUE
) — Включают, преобразовывают предварительное кодирование. Тип формы волны является ортогональным делением частоты распространения дискретного преобразования Фурье, мультиплексирующим (DFT-s-OFDM).
Типы данных: double |
logical
FrequencyHopping
— Скачкообразное движение частоты'neither'
(значение по умолчанию) | 'intraSlot'
| 'interSlot'
Частота, скачкообразно двигающаяся для физического восходящего канала совместно использованный канал в виде одной из этих опций.
'neither'
'intraSlot'
'interSlot'
Если вы указываете, что скачкообразное движение частоты внутрипаза и закодированные биты входа не удовлетворяют уравнениям Раздела TS 38.212 6.2.7, функция возвращает кодовую комбинацию, принимающую, что никакое скачкообразное движение частоты не присутствует.
Типы данных: char |
string
BetaOffsetACK
— Бета фактор смещения HARQ-ACK
(значение по умолчанию) | положительное целое числоБета фактор смещения HARQ-ACK в виде положительного целого числа. Это свойство определяет количество ресурсов для мультиплексирования HARQ-ACK. Номинальная стоимость является одной из записи из Таблицы 9.3-1 TS 38.213.
Типы данных: double
UCIScaling
— Масштабный коэффициент
(значение по умолчанию) | скаляр между 0 и 1Масштабный коэффициент, чтобы ограничить количество элементов ресурса, выделенных для UCI на PUSCH в виде скаляра между 0 и 1. Номинальная стоимость 0.5, 0.65, 0.8, или 1.
Типы данных: double
RNTI
— Радиосеть временный идентификатор
(значение по умолчанию) | целое число от 0 до 65 535Радиосеть временный идентификатор оборудования пользователя (UE) в виде целого числа от 0 до 65 535.
Типы данных: double
DMRS
— Параметры конфигурации PUSCH DM-RSnrPUSCHDMRSConfig
по умолчанию
объект (значение по умолчанию) | nrPUSCHDMRSConfig
объект Параметры конфигурации PUSCH DM-RS в виде nrPUSCHDMRSConfig
объект настройки.
EnablePTRS
— Включите PT-RS
или false
(значение по умолчанию) | 1
или true
Включите PT-RS в виде одного из этих значений.
0
ложь
) — Отключают настройку PT-RS.
1
TRUE
) — Включают настройку PT-RS.
Типы данных: double |
logical
PTRS
— Параметры конфигурации PUSCH PT-RSnrPUSCHPTRSConfig
по умолчанию
объект (значение по умолчанию) | nrPUSCHPTRSConfig
объект Опорный сигнал отслеживания фазы PUSCH (PT-RS) настройка в виде nrPUSCHPTRSConfig
объект настройки.
tcr
— Целевой уровень кодаЦелевой уровень кода для кодовой комбинации в передаче UL-SCH в виде скаляра в области значений (0, 1).
Типы данных: double
tbs
— Транспортный размер блокаТранспортный размер блока сопоставлен с кодовой комбинацией в передаче UL-SCH в виде неотрицательного целого числа. Значение 0
не указывает ни на какой транспортный блок или никакую передачу UL-SCH на PUSCH.
Типы данных: double
culsch
— Закодированные биты данных UL-SCHЗакодированные биты данных UL-SCH в виде вектор-столбца с бинарным знаком длины gulsch
. gulsch
количество закодированных и уровня соответствующие биты данных UL-SCH, возвращенные в info
выходной аргумент nrULSCHInfo
функция. Закодированные биты UL-SCH, culsch
, закодированные и соответствующие уровню биты, полученные путем обработки транспортного блока. Значение []
указывает на отсутствие передачи данных UL-SCH. Если вы задаете tbs
входной параметр как 0
, culsch
входной параметр должен быть пустым.
gulsch
должно быть равно емкости в битах данных.
Типы данных: int8
| double
cack
— Закодированные биты HARQ-ACKЗакодированные биты HARQ-ACK в виде вектор-столбца с действительным знаком длины gack
. gack
количество закодированных, и уровень совпадал с битами HARQ-ACK, возвращенными в info
выходной аргумент nrULSCHInfo
функция. Значение []
указывает на отсутствие передачи HARQ-ACK. Номинальной стоимостью битов HAQR-ACK является 0
, 1, -1
, и
-2
.
gack
должен быть кратным продукту количества слоев передачи и порядка модуляции.
Типы данных: int8
| double
ccsi1
— Закодированная часть CSI 1 битЗакодированная часть CSI 1 бит в виде вектор-столбца с действительным знаком длины gcsi1
. gcsi1
количество закодированных, и уровень совпадал с частью CSI 1 бит, возвращенный в info
выходной аргумент nrULSCHInfo
функция. Значение []
указывает на отсутствие передачи части 1 CSI. Номинальной стоимостью части CSI 1 бит является 0
, 1, -1
, и
-2
.
gcsi1
должен быть кратным продукту количества слоев передачи и порядка модуляции.
Типы данных: int8
| double
ccsi2
— Закодированная часть CSI 2 битаЗакодированная часть CSI 2 бита в виде вектор-столбца с действительным знаком длины gcsi2
. gcsi2
количество закодированных, и уровень совпадал с частью CSI 2 бита, возвращенные в info
выходной аргумент nrULSCHInfo
функция. Значение []
указывает на отсутствие передачи части 2 CSI. Номинальной стоимостью части CSI 2 бита является 0
, 1, -1
, и
-2
. Номинально, часть 2 CSI присутствует только, когда часть 1 CSI присутствует.
gcsi2
должен быть кратным продукту количества слоев передачи и порядка модуляции.
Типы данных: int8
| double
cw
— Кодовая комбинацияКодовая комбинация для передачи на PUSCH, возвращенном как вектор-столбец с действительным знаком. Если вы обеспечиваете какой-либо из входных параметров как тип данных int8
, типом выходных данных кодовой комбинации является int8
. Номинальной стоимостью битов в кодовых комбинациях является 0
, 1, -1
, и
-2
.
Длина cw
равняется емкости в битах PUSCH.
cw
выход является пустым значением размера 0
- 1
для всех этих случаев.
Типы данных: int8
| double
info
— Информация о местоположенииИнформация о местоположении о местоположениях на основе 1 каждого типа в выходной кодовой комбинации cw
, возвращенный как структура, содержащая эти поля. Тип выходных данных каждого поля является uint32.
Поле | Описание |
---|---|
ULSCHIndices | Местоположения закодированных битов UL-SCH в кодовой комбинации |
ACKIndices | Местоположения закодированных битов HARQ-ACK в кодовой комбинации |
CSI1Indices | Местоположения закодированной части CSI 1 бит в кодовой комбинации |
CSI2Indices | Местоположения закодированной части CSI 2 бита в кодовой комбинации |
UCIXIndices | Местоположения X заполнителей UCI в кодовой комбинации |
UCIYIndices | Местоположения Y UCI заполнители в кодовой комбинации |
Если возвращенная кодовая комбинация, cw
, пустой массив, каждое поле в этой структуре является также пустым массивом.
[1] 3GPP TS 38.212. “NR; Мультиплексирование и кодирование канала”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
[2] 3GPP TS 38.213. “NR; процедуры Физического уровня для управления”. Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.