Выполните данные 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
— Преобразуйте флаг перед кодированием
(значение по умолчанию) | 1
Преобразуйте флаг перед кодированием в виде одного из этих значений.
0 — Предварительное кодирование преобразования отключено, и тип формы волны является циклически-префиксным ортогональным делением частоты, мультиплексирующим (CP-OFDM).
1 — Предварительное кодирование преобразования включено, и тип формы волны является ортогональным делением частоты распространения дискретного преобразования Фурье, мультиплексирующим (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
объект настройки. Это свойство относится к настройке опорного сигнала демодуляции и содержит все свойства заданного nrPUSCHDMRSConfig
объект.
EnablePTRS
— Включите PT-RS
(значение по умолчанию) | 1
Включите PT-RS в виде одного из этих значений.
0 — Отключите настройку PT-RS.
1 — Включите настройку PT-RS.
Типы данных: double |
logical
PTRS
— Параметры конфигурации PUSCH PT-RSnrPUSCHPTRSConfig
объект со свойствами по умолчанию (значение по умолчанию) | nrPUSCHPTRSConfig
объект Опорный сигнал отслеживания фазы PUSCH (PT-RS) настройка в виде nrPUSCHPTRSConfig
объект настройки. Это свойство относится к фазе, отслеживающей настройку опорного сигнала, и содержит все свойства заданного 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.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.