Этот пример подсвечивает новый полярный метод кодирования канала, выбранный для системы связи Нового радио (NR) 5G. Из двух основных типов конструкций кода, заданных 3GPP, этот пример демонстрирует помогшую CRC Полярную (Полярную CA) схему кодирования. Этот пример описывает основные компоненты полярной схемы кодирования с отдельными компонентами для конструкции кода, кодирования и декодирования наряду с соответствием уровня. Это моделирует полярно закодированную модулируемую QPSK ссылку по AWGN и представляет результаты Частоты появления ошибочных блоков для различных длин сообщения и уровни кода для схемы кодирования.
Выбор полярных кодов как метод кодирования канала для каналов управления для 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
.
В конце приемника восстановление уровня выполняется для каждого из случаев
Для прокалывания обнуляются соответствующие LLRs для удаленных битов
Для сокращения соответствующие LLRs для удаленных битов установлены в большое значение
Для повторения, набора соответствия LLRs первому 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 может превзойти по характеристикам турбо или коды LDPC [4], и это было одним из основных факторов в принятии полярных кодов 3GPP.
Tal & Vardy [2] описывает SCL декодирование алгоритма в терминах вероятностей (вероятности). Однако должный потерять значимость, свойственные расчеты численно неустойчивы. Преодолеть эту проблему, Stimming et.al. [5] предлагают SCL, декодирующий только в области отношения логарифмической правдоподобности (LLR). Декодирование списка характеризуется L
параметр, который представляет количество наиболее вероятных сохраненных путей к декодированию. В конце декодирования, наиболее вероятного пути выполнения кода среди L
пути являются декодером выход. Как L
увеличен, эффективность декодера также улучшается, однако, с эффектом убывающей доходности.
Для входного сигнала, который конкатенирован с CRC, чернослив декодирования CA-SCL любой из путей, для которых CRC недопустим, если по крайней мере один путь имеет правильный CRC. Это дополнительное понимание в итоговом выборе пути улучшает производительность далее, когда по сравнению с декодированием SCL. Для нисходящего канала используется CRC 24 битов, в то время как для восходящего CRCs 6 и 11 битов заданы, которые варьируются на значении K
.
Декодер реализован функциональным nrPolarDecode
, который поддерживает все три продолжительности CRC. Функция декодера также составляет входное чередование битов, заданное в передатчике для нисходящего канала до вывода декодируемых битов.
% Error meter
ber = comm.ErrorRate;
Этот раздел показывает, как предшествующие описанные компоненты для полярного кодирования используются в Частоте появления ошибочных блоков (BLER) симуляция. Ссылка симуляции подсвечена в следующем схематическом.
Для каждого обработанного кадра выполняются следующие шаги:
K-crcLen
случайные биты сгенерированы,
CRC вычислен и добавлен к этим битам
Добавленные биты CRC полярные закодированный к родительской длине блока кода
Соответствие уровня выполняется, чтобы передать E
биты
E
биты являются модулируемым QPSK
Белый Гауссов шум заданной степени добавляется
Сигнал с шумом является мягким QPSK, демодулируемым к значениям выхода LLR
Восстановление уровня выполняется, составляя или прокалывания, сокращаясь или повторения
Восстановленные значения LLR являются полярным декодируемым использованием алгоритма CA-SCL, включая устранение чередования.
От декодируемого K
биты, первый K-crcLen
биты по сравнению с переданными, чтобы обновить метрики частоты ошибок по битам (BER) и BLER.
В конце симуляции сообщают об этих двух показателях эффективности, 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.
Вышеупомянутые результаты были сгенерированы путем симуляции, для каждой точки ОСШ, до 1 000 ошибок системы координат или максимума 100e3 системы координат, какой бы ни произошел сначала.
Результаты эффективности BLER показывают на пригодность полярных кодов в линии связи и их неявной поддержке совместимости уровня при гранулярности битного уровня.
Использование инструментов генерации кода C для компонентов уменьшает время выполнения, ключевое беспокойство о симуляциях. Генерация кода C включена MATLAB Coder™.
Этот пример подсвечивает одну из полярных схем кодирования (помогший CRC Полярный) заданный 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., "Поляризация Канала: Метод для построения Достигающих Способности Кодов для Симметричных Каналов без памяти Двоичного входа", Транзакции IEEE на Теории информации, издании 55, № 7, стр 3051-3073, июль 2009.
Tal, я и Vardy, A., "Декодирование списка Полярных Кодов", Транзакции IEEE на Теории информации, издании 61, № 5, стр 2213-2226, май 2015.
Ню, K. и Чен, K., "Помогшее CRC Декодирование Полярных Кодов", Коммуникационные Буквы IEEE, издание 16, № 10, стр 1668-1671, октябрь 2012.
Ню, K., Чен, K., и Лин, J.R., "Вне турбокодов: уровень совместимые проколотые полярные коды", Международная конференция IEEE по вопросам Коммуникаций, стр 3423-3427, 2013.
Stimming, A. B., Parizi, M. B. и Город, A., "Основанное на LLR Последовательное Декодирование Списка Отмен Полярных Кодов", Транзакция IEEE на Обработке сигналов, издании 63, № 19, pp.5165-5179, 2015.
3GPP TS 38.212. "NR; Мультиплексирование и кодирование канала (Релиз 15)". Проект Партнерства третьего поколения; Сеть радиодоступа Technical Specification Group.
R1-1711729. "WF на кольцевом буфере Полярного Кода", 3GPP TSG ЗАПУСТИЛ WG1, соответствующий NR Эд-Hoc#2, Ericsson, Qualcomm, MediaTek, LGE. Июнь 2017.