Этот пример подсвечивает новый метод кодирования полярного канала, выбранный для 5G New Radio (NR) коммуникационной системы. Из двух основных типов конструкций кода, заданных 3GPP, этот пример моделирует схему кодирования CRC-Aided Polar (CA-Polar). Этот пример описывает основные компоненты схемы полярного кодирования с отдельными компонентами для конструкции кода, кодирования и декодирования вместе с согласованием скорости. Он моделирует полярно-кодированную ссылку QPSK по AWGN и представляет результаты Block-Error-Rate для различных длин сообщений и скоростей кода для схемы кодирования.
Выбор полярных кодов в качестве метода канального кодирования для каналов управления для системы 5G связи NR доказал достоинства открытия [1] Арикана и установит их применение в коммерческих системах [6]. Основываясь на концепции поляризации канала, это новое семейство кодирования является способностью достигать, в отличие от просто приближения емкости. С лучшей или сопоставимой эффективностью, чем LDPC и турбокоды, он заменяет сверточные коды, используемые в системах LTE для каналов управления. Он применяется для нисходящей и восходящей управляющей информации (DCI/UCI) для случая использования расширенного мобильного широкополосного канала (eMBB), а также широковещательного канала (BCH). Альтернативно, схема канального кодирования для каналов данных для eMBB задана как гибкая LDPC для всех размеров блоков.
Этот пример подсвечивает компоненты, чтобы включить полярное кодирование нисходящей линии связи симуляции используя QPSK модуляцию по каналу AWGN. В следующих разделах подробно описаны отдельные полярные компоненты кодирования.
s = rng(100); % Seed the RNG for repeatability
Задайте параметры кода, используемые для симуляции.
% Code parameters K = 54; % Message length in bits, including CRC, K > 30 E = 124; % Rate matched output length, E <= 8192 EbNo = 0.8; % EbNo in dB L = 8; % List length, a power of two, [1 2 4 8] numFrames = 10; % Number of frames to simulate linkDir = 'DL'; % Link direction: downlink ('DL') OR uplink ('UL')
Следующая схема подробно описывает обработку передающего конца для нисходящего канала с выделенными соответствующими компонентами и их параметрами.
Для нисходящего канала входные биты перемежаются перед полярным кодированием. Таким образом, биты CRC, добавленные в конце информационных битов, распределяются для CA-полярной схемы. Это перемежение не задано для восходящего канала.
Полярное кодирование использует метод, не зависящий от ОСШ, где надежность каждого подканала вычисляется автономно, и упорядоченная последовательность сохранена для максимальной длины кода [6]. Вложенное свойство полярных кодов позволяет использовать эту последовательность для любой скорости кода и всех длин кода, меньших максимальной длины кода.
Эта последовательность вычисляется для заданной согласованной по скорости выходной длины, E
, и длина информации, K
, функцией nrPolarEncode
, который реализует несистемное кодирование входного K
биты.
if strcmpi(linkDir,'DL') % Downlink scenario (K >= 36, including CRC bits) crcLen = 24; % Number of CRC bits for DL, Section 5.1, [6] poly = '24C'; % CRC polynomial nPC = 0; % Number of parity check bits, Section 5.3.1.2, [6] nMax = 9; % Maximum value of n, for 2^n, Section 7.3.3, [6] iIL = true; % Interleave input, Section 5.3.1.1, [6] iBIL = false; % Interleave coded bits, Section 5.4.1.3, [6] else % Uplink scenario (K > 30, including CRC bits) crcLen = 11; poly = '11'; nPC = 0; nMax = 10; iIL = false; iBIL = true; end
Следующая схема детализирует обработку передающего конца для восходящего канала для размера полезной нагрузки, большего 19
биты и отсутствие сегментации блока кода с выделенными соответствующими компонентами и их параметрами.
Полярный закодированный набор бит (N
) согласованы со скоростью, чтобы вывести указанное количество бит (E
) для отображения ресурсного элемента [7]. Закодированные биты перемежаются подблоками и передаются в круглый буфер длины N. В зависимости от желаемой скорости кода и выбранных значений
K
, E
, и N
, любой из повторений (E >= N
), и прокалывание или укорочение (E < N
) реализуется путем считывания выходных бит из буфера.
Для прокалывания, E
биты берутся с конца
Для укорочения, E
биты берутся со старта
Для повторения, E
биты повторяются по модулю N
.
Для нисходящей линии связи выбранные биты передаются в преобразователь модуляции, в то время как для восходящей линии связи они дополнительно перемежаются перед отображением. Обработка соответствия скорости реализована функцией nrRateMatchPolar
.
В конце приемника восстановление скорости выполняется для каждого из случаев
Для прокалывания соответствующие LLR для удаленных бит устанавливаются в нуль
Для укорочения соответствующие LLR для удаленных бит устанавливаются в большое значение
Для повторения, набор LLR, соответствующих первому N
выбираются биты.
Обработка восстановления скорости реализована функцией nrRateRecoverPolar
.
R = K/E; % Effective code rate bps = 2; % bits per symbol, 1 for BPSK, 2 for QPSK EsNo = EbNo + 10*log10(bps); snrdB = EsNo + 10*log10(R); % in dB noiseVar = 1./(10.^(snrdB/10)); % Channel chan = comm.AWGNChannel('NoiseMethod','Variance','Variance',noiseVar);
Неявное кодирование CRC бит сообщения нисходящей линии связи (DCI или BCH) или восходящей линии связи (UCI) диктует использование декодирования списка последующей отмены CRC (CA-SCL) [3] в качестве алгоритма декодирования канала. Хорошо известно, что декодирование CA-SCL может превзойти коды turbo или LDPC [4], и это было одним из основных факторов принятия полярных кодов по 3GPP.
Tal & Vardy [2] описывают алгоритм декодирования SCL с точки зрения вероятностей (вероятностей). Однако из-за недолива присущие расчеты численно нестабильны. Чтобы преодолеть эту проблему, Стимулируя et.al. [5] предлагают декодирование SCL исключительно в области отношения логарифмической правдоподобности (LLR). Декодирование списка характеризуется L параметр, который представляет количество наиболее вероятных сохраненных путей декодирования. В конце декодирования наиболее вероятный путь кода среди
L
пути являются выходом декодера. Как L
увеличивается, эффективность декодера также улучшается, однако, с эффектом уменьшения-возврата.
Для входа сообщения, которое объединено с CRC, декодирование CA-SCL обрезает любой из путей, для которых CRC является недопустимым, если, по меньшей мере, один путь имеет правильный CRC. Это дополнительное понимание выбора конечного пути дополнительно улучшает эффективность по сравнению с декодированием SCL. Для нисходящего канала используется CRC 24 бит, в то время как для CRC восходящего канала 6 и 11 бит заданы, которые варьируются от значения K
.
Декодер реализован функцией nrPolarDecode
, который поддерживает все три длины CRC. Функция декодера также учитывает вход битов, заданное в передатчике для нисходящей линии связи, перед выводом декодированных бит.
% Error meter
ber = comm.ErrorRate;
В этом разделе показов, как предыдущие описанные компоненты для полярного кодирования используются в симуляции Блока частоты ошибок (BLER). На следующей схеме выделена симуляция ссылки.
Для каждого обработанной системы координат выполняются следующие шаги:
K-crcLen
генерируются случайные биты,
CRC вычисляется и добавляется к этим битам
Дополненные CRC биты полярно закодированы на длину блока материнского кода
Согласование скорости выполняется, чтобы передать E
биты
The E
биты модулированы QPSK
Белый Гауссов Добавлен шум заданной степени
Сигнал с шумом является мягким QPSK, демодулированным для вывода значений LLR
Восстановление скорости выполняется с учетом прокалывания, укорочения или повторения
Восстановленные значения LLR подвергаются полярному декодированию с использованием алгоритма CA-SCL, включая перемежение.
Выключите декодированный K
биты, первый K-crcLen
биты сравнивают с битами, переданными для обновления метрик BLER и BER.
В конце симуляции сообщается о двух показателях эффективности, BLER и BER.
numferr = 0; for i = 1:numFrames % Generate a random message msg = randi([0 1],K-crcLen,1); % Attach CRC msgcrc = nrCRCEncode(msg,poly); % Polar encode encOut = nrPolarEncode(msgcrc,E,nMax,iIL); N = length(encOut); % Rate match modIn = nrRateMatchPolar(encOut,K,E,iBIL); % Modulate modOut = nrSymbolModulate(modIn,'QPSK'); % Add White Gaussian noise rSig = chan(modOut); % Soft demodulate rxLLR = nrSymbolDemodulate(rSig,'QPSK',noiseVar); % Rate recover decIn = nrRateRecoverPolar(rxLLR,K,N,iBIL); % Polar decode decBits = nrPolarDecode(decIn,K,E,L,nMax,iIL,crcLen); % Compare msg and decoded bits errStats = ber(double(decBits(1:K-crcLen)), msg); numferr = numferr + any(decBits(1:K-crcLen)~=msg); end disp(['Block Error Rate: ' num2str(numferr/numFrames) ... ', Bit Error Rate: ' num2str(errStats(1)) ... ', at SNR = ' num2str(snrdB) ' dB']) rng(s); % Restore RNG
Block Error Rate: 0, Bit Error Rate: 0, at SNR = 0.20002 dB
Чтобы получить значимые результаты, симуляции должны выполняться в течение более длительной длительности. Используя скрипты, которые инкапсулируют указанную выше обработку в функцию, которая поддерживает генерацию кода C, для обоих направлений ссылки с модуляцией QPSK представлены следующие результаты для различных скоростей кода и длин сообщений.
Вышеуказанные результаты были сгенерированы путем симуляции для каждой точки ОСШ до 1000 ошибок системы координат или максимум 100e3 систем координат, в зависимости от того, что произошло раньше.
Результаты эффективности BLER указывают на пригодность полярных кодов в ссылке связи и их неявную поддержку для совместимости со скоростью при гранулярности битового уровня.
Использование инструментов генерации кода C для компонентов сокращает время выполнения, что является ключевой проблемой для симуляций. Генерация кода C активируется MATLAB Coder™.
В этом примере описывается одна из схем полярного кодирования (CRC-Aided Polar), заданная как 3GPP для информации Нового канала управления (DCI, UCI) и широковещательного канала (BCH). Он показывает использование компонентов для всех этапов обработки (кодирование, согласование скорости, восстановление скорости и декодирование) и использует их в ссылке связи с QPSK по каналу AWGN. Подсвеченные результаты эффективности для различных скоростей кода и длин сообщений показывают согласие с опубликованными трендами в пределах параметрических изменений и изменений допущений симуляции.
Исследуйте простые изменения параметров (K
, E
, L
) и их эффект на эффективность BLER. Функции полярного кодирования реализованы как открытый код MATLAB ®, чтобы разрешить их применение как для управляющей информации нисходящего/восходящего канала, так и для широковещательного канала. CA-Полярная схема применима для обоих
Нисходящий канал для всех длин сообщений и
Восходящий канал, для K > 30
, с crcLen = 11
, nPC = 0
, nMax = 10
, iIL = false
, и iBIL = true
.
См. примеры Моделирования Управляющей Информации Нисходящего Канала и Поиска Камеры NR и Восстановления MIB и SIB1, для использования полярных функций кодирования в функциях DCI и BCH соответственно.
Подсвеченные полярные функции кодирования также поддерживают конструкцию и кодирование полярного кодирования с проверкой четности. Это применимо для восходящего канала с полезными нагрузками UCI в области значений 18 <= K <= 25
. Это поддерживается функциями кодирования восходящей линии связи nrUCIEncode
и nrUCIDecode
, которые включают сегментацию кодового блока, а также для соответствующих значений K
и E
.
Arikan, E., «Channel Polarization: A Method for построения Capacity- Кодов for Symmetric Binary-Input Memoryless Channels», IEEE Transactions on Information Theory, vol. 55, no. 7, pp. 3051-3073, July 2009.
Tal, I, and Vardy, A., «List decoding of Polar Codes», IEEE Transactions on Information Theory, vol. 61, No 5, pp. 2213-2226, May 2015.
Niu, K., and Chen, K., «CRC-Aided Decoding of Polar Codes», IEEE Communications Letters, vol. 16, № 10, pp. 1668-1671, Oct. 2012.
Niu, K., Chen, K., and Lin, J.R., «Beyond turbo codes: rate compatable punced polar codes», IEEE International Conference on Communications, pp. 3423-3427, 2013.
Stimming, A. B., Parizi, M. B. and Burg, A., «LLR-based Seprectional Cancellation List Decoding of Polar Codes», Транзакция IEEE по обработке сигналов, том 63, № 19, стр. 5165-5179, 2015
3GPP TS 38.212. "NR; Мультиплексирование и канальное кодирование (Release 15). Группа технических спецификаций Радиосеть доступ.
R1-1711729. «WF on circular buffer of Polar Code», 3GPP TSG RAN WG1 meeting NR Ad-Hoc # 2, Ericsson, Qualcomm, MediaTek, LGE. Июнь 2017 года.