exponenta event banner

tpcdec

Декодер кода турбо-продукта (TPC)

Описание

пример

decoded = tpcdec(llr,N,K) выполняет декодирование 2-D ТРС по входным логарифмическим коэффициентам правдоподобия, llr, используя два линейных блочных кода, определяемых длиной кодового слова N и длина сообщения K. Для описания 2-й расшифровки TPC см., что Турбо Код продукта Расшифровывает.

пример

decoded = tpcdec(llr,N,K,S) выполняет 2-й TPC, расшифровывающий на сокращенном llr используя декодер 2-D TPC, заданный длиной кодового слова (NK+S) и длина сообщения S.

decoded = tpcdec(llr,N,K,S,maxnumiter) выполняет 2-й TPC, расшифровывающий для maxnumiter итерации. Использовать maxnumiter с полноформатными сообщениями, укажите S пустой, [].

decoded = tpcdec(llr,N,K,S,maxnumiter,earlyterm) выполняет 2-ю расшифровку TPC и заканчивается рано, если расчетный синдром или паритетная проверка составляющего кодекса оценивают к нолю прежде maxnumiter декодирование итераций. Использовать maxnumiter и earlyterm с полноформатными сообщениями, укажите S пустой, [].

пример

[decoded,actualnumiter] = tpcdec(___)также возвращает фактическое количество итераций декодирования после выполнения декодирования 2-D TPC с использованием любого из предыдущих синтаксисов.

Примеры

свернуть все

Декодировать приближенный выходной сигнал отношения логарифмического правдоподобия из демодуляции 16-QAM.

Начните с кодирования вектора случайных битов с использованием 2-D турбокодирования (TPC) с расширенными кодами Хэмминга и расширенными кодами BCH.

Укажите пары кодов (N, K) для кодирования TPC.

N = [32;16]; 
K = [21;11]; 

Создайте вектор столбца из битов случайного сообщения и TPC-кодируйте сообщение. Укажите биты сообщения как вектор длиной, равной произведению элементов в K.

msg = randi([0 1],prod(K),1);
code = tpcenc(msg,N,K);

Применить 16-QAM модуляцию. Добавьте AWGN к сигналу. Демодулируйте сигнал, выводя приблизительные LLR.

M = 16;
snr = 10;

txsig = qammod(code,M,'InputType','bit', ...
    'UnitAveragePower',true);

rxsig = awgn(txsig,snr,'measured');

llr = qamdemod(rxsig,M,'OutputType','approxllr', ...
    'UnitAveragePower',true,'NoiseVariance',10.^(-snr/10));

Декодирование TPC выполняется с использованием трех итераций. Поскольку выход демодулятора является отрицательным биполярным отображением, а декодер ТРС ожидает положительного биполярного отображенного входа, выход демодулированного сигнала должен быть сведен на нет на входе декодера. Проверьте количество битовых ошибок в декодированном сигнале.

iterations = 3;
decoded = tpcdec(-llr,N,K,[],iterations);

numerr = biterr(msg,decoded)
numerr = 0

Декодирование укороченного кода TPC. Примените модуляцию QPSK и выведите сигнал приблизительного логарифмического отношения правдоподобия, полученный из демодуляции QPSK.

Начните с кодирования вектора случайных битов с использованием 2-D турбокодирования (TPC) с расширенными кодами Хэмминга и расширенными кодами BCH.

Укажите (N, K) кодовые пары и S для кодирования TPC.

N = [32;32];
K = [21;26];
S = [19;24];

Создайте вектор столбца из битов случайного сообщения и TPC-кодируйте сообщение. Укажите укороченные биты сообщения как вектор длиной, равной произведению элементов в S.

msg = randi([0 1],prod(S),1);
code = tpcenc(msg,N,K,S);

Применение модуляции QPSK. Добавьте AWGN к сигналу. Демодулируйте сигнал и выводите приблизительные LLR.

M = 4;
snr = 3;

txsig = qammod(code,M,'InputType','bit', ...
    'UnitAveragePower',true);

rxsig = awgn(txsig,snr,'measured');

llr = qamdemod(rxsig,M,'OutputType','approxllr', ...
    'UnitAveragePower',true,'NoiseVariance',10.^(-snr/10));

Декодирование TPC выполняется с использованием двух итераций. Поскольку выход демодулятора является отрицательным биполярным отображением, а декодер ТРС ожидает положительного биполярного отображенного входа, выход демодулированного сигнала должен быть сведен на нет на входе декодера. Проверьте частоту битовых ошибок декодированного сигнала.

iterations = 2;
decoded = tpcdec(-llr,N,K,S,iterations);

[~,ber] = biterr(msg,decoded)
ber = 0.0066

Декодирование укороченного кода TPC и определение досрочного завершения декодирования. Примените модуляцию QPSK и выведите сигнал приблизительного логарифмического отношения правдоподобия, полученный из демодуляции QPSK.

Начните с кодирования вектора случайных битов с использованием 2-D турбокодирования (TPC) с расширенными кодами Хэмминга и расширенными кодами BCH. Укажите (N, K) кодовые пары и S для кодирования TPC и максимум 10 итераций декодирования. Выполните модуляцию QPSK для сигнала.

n = [64; 32];
k = [51; 26];
s = [49; 24];
maxnumiter = 10;
M = 4;

msg = randi([0 1],prod(s),1);  % Random bits
code = tpcenc(msg,n,k,s);

txsig = qammod(code,M,'InputType','bit', ...
    'UnitAveragePower',true);

Добавьте шум к передаваемому сигналу.

snr = 5;
rxsig = awgn(txsig,snr,'measured');

Демодулируйте принятый сигнал с помощью аппроксимации обратного отображения LLR.

llr = qamdemod(rxsig,M,'OutputType', ...
    'approxllr','UnitAveragePower',true, ...
    'NoiseVariance',10.^(-snr/10));

Укажите максимальное количество итераций декодирования TPC и возвращает фактическое количество выполненных итераций. Раннее прекращение декодирования TPC включено по умолчанию. Отображение количества ошибок и числа выполненных итераций.

[decoded,actualNumIter] = tpcdec(-llr,n,k,s,maxnumiter);
numErr = biterr(msg,decoded);
disp(['Terminated after ' num2str(actualNumIter) ' iterations.' ...
    ' Number of errors = ' num2str(numErr) '.']);
Terminated after 4 iterations. Number of errors = 0.

Входные аргументы

свернуть все

Логарифмические отношения правдоподобия, заданные как вектор столбца.

  • Для полноразмерных кодов длина вектора входного столбца является произведением элементов в N.

  • Для укороченных кодов длина вектора входного столбца является произведением элементов в (NK+S).

Типы данных: double | single

Длина кодового слова, заданная как двухэлементный целочисленный вектор, [NR; ЧПУ]. NR представляет количество строк в кодовой матрице изделия. ЧПУ представляет количество столбцов в матрице кода изделия. Дополнительные сведения о NR и NC см. в разделе Декодирование кода турбо-продукта. Список допустимых пар кодов (N (i), K (i)) см. в разделе Подробнее.

Типы данных: double

Длина сообщения, заданная как двухэлементный целочисленный вектор, [KR; KC]. Для полноформатного сообщения вектор входного столбца, содержащий входные LLR, размещается в матрицу KR-by-KC. KR представляет количество строк в матрице сообщений. KC представляет количество столбцов в матрице сообщений. Дополнительные сведения о KR и KC см. в разделе Декодирование кода турбо-продукта. Список допустимых пар кодов (N (i), K (i)) см. в разделе Подробнее.

Типы данных: double

Укороченная длина сообщения, заданная как двухэлементный целочисленный вектор, [SR; SC]. Для укороченного сообщения вектор входного столбца, содержащий входные LLR, размещается в матрицу SR-by-SC. SR представляет количество строк в матрице. SC представляет количество столбцов в матрице. Дополнительные сведения о SR и SC см. в разделе Декодирование кода турбо-продукта.

При указании этого параметра укажите N и K векторов для полноразмерных кодов TPC, которые сокращаются до (N (i) - K (i) + S (i), S (i)) кодов.

Типы данных: double

Максимальное число итераций декодирования, указанное как положительное целое число.

Типы данных: double

Разрешить досрочное прекращение декодирования, указанного как логическое. Когда earlyterm является true декодирование прекращается раньше, если вычисленный синдром или проверка четности кода компонента оценивается как ноль до maxnumiter декодирование итераций.

Типы данных: double

Выходные аргументы

свернуть все

Декодированное сообщение TPC, возвращаемое в виде вектора столбца.

  • Для полноразмерных кодов длина возвращаемого вектора столбца является произведением элементов в K.

  • Для укороченных кодов длина возвращаемого вектора столбца является произведением элементов в S.

Типы данных: logical

Фактическое число выполненных итераций декодирования, возвращаемых как положительное целое число.

Типы данных: double

Подробнее

свернуть все

Коды компонентов

В этой таблице перечислены поддерживаемые пары кодов компонентов для параметров строк (NR, KR) и столбцов (NC, KC).

  • NR и KR представляют количество строк в матрице кода продукта и матрице сообщения соответственно.

  • ЧПУ и КС представляют количество столбцов в матрице кода изделия и матрице сообщения соответственно.

В каждом кодовом типе любые две кодовых пары компонента могут сформировать 2-й кодекс TPC. Таблица также включает возможность исправления ошибок для каждой пары кодов.

Тип кодаПары кодов компонентов (NR, KR) и (NC, KC)Возможность исправления ошибок (T)
Код хэмминга(255,247)1
(127,120)1
(63,57)1
(31,26)1
(15,11)1
(7,4)1
Расширенный код Хэмминга (256,247)1
(128,120)1
(64,57)1
(32,26)1
(16,11)1
(8,4)1
Код BCH(255,239)2
(127,113)2
(63,51)2
(31,21)2
(15,7)2
Расширенный код BCH(256,239)2
(128,113)2
(64,51)2
(32,21)2
(16,7)2
Код проверки четности(256,255)-
(128,127)-
(64,63)-
(32,31)-
(16,15)-
(8,7)-
(4,3)-

Декодирование кода турбо-продукта

Коды турбо-продукта (TPC) представляют собой форму конкатенированных кодов, используемых в качестве кодов прямого исправления ошибок (FEC). Два или более блочных кодов компонентов, таких как систематические линейные блочные коды, используются для построения TPC. Декодер ТРС достигает почти оптимального декодирования кодов продукта, используя декодирование Чейза и алгоритм Пиндиаха для выполнения итеративного мягкого входного, мягкого выходного декодирования. Подробное описание см. в разделах [1] и [2]. Этот декодер реализует итеративный мягкий ввод, мягкий вывод 2-D декодирование кода продукта, как описано в [2], используя два линейных блочных кода. Декодер ожидает, что динамические отношения правдоподобия бита (LLR), полученные из цифровой демодуляции, станут входным сигналом.

Примечание

Декодер TPC ожидает положительный биполярный отображенный вход, а именно -1, отображенный на 0, и + 1, отображенный на 1. Выходной сигнал демодуляторов в Toolbox™ связи представляет собой отрицательное биполярное отображение, в частности, + 1, отображенное на 0, и -1, отображенное на + 1. Следовательно, выход LLR от демодуляторов должен быть сведен на нет, чтобы обеспечить положительный биполярный отображенный вход, ожидаемый декодером TPC.

Декодер ТРС декодирует либо полноразмерные, либо укороченные коды.

 Декодирование полноразмерных сообщений TPC

 Декодирование сокращенных сообщений TPC

Ссылки

[1] Погоня, D. «Класс алгоритмов декодирования блочных кодов с информацией об измерении канала». Транзакции IEEE по теории информации, том 18, номер 1, январь 1972, стр. 170-182.

[2] Пиндиа, Р. М. «Почти оптимальное декодирование кодов продукта: блок-турбокоды». Транзакции IEEE по коммуникациям. Том 46, номер 8, август 1998 г., стр. 1003-1010.

Расширенные возможности

.

См. также

Функции

Объекты

Блоки

Представлен в R2018a