exponenta event banner

comm.gpu. TurboDecoder

Декодирование входного сигнала с помощью декодирования параллельной конкатенации с GPU

Описание

GPU Turbo Decoder Система object™ декодирует входной сигнал, используя схему параллельного конкатенированного декодирования. Эта схема использует декодер α - апостериорной вероятности (APP) в качестве составного декодера. Оба составляющих декодера используют одинаковую решетчатую структуру и алгоритм.

Примечание

Для использования этого объекта необходимо установить лицензию Parallel Computing Toolbox™ и получить доступ к соответствующему графическому процессору. Дополнительные сведения о графических процессорах см. в разделе Вычисления графических процессоров (панель инструментов параллельных вычислений).

Системный объект на основе графического процессора принимает типичные массивы MATLAB ® или объекты, созданные с помощью gpuArray класс. Системный объект на основе GPU поддерживает входные сигналы с типами данных с двойной или одинарной точностью. Выходной сигнал наследует тип данных из входного сигнала.

  • Если входной сигнал представляет собой матрицу MATLAB, объект System обрабатывает передачу данных между CPU и GPU. Выходной сигнал представляет собой матрицу MATLAB.

  • Если входной сигнал является gpuArrayданные остаются на GPU. Выходной сигнал представляет собой gpuArray. Когда объекту присваивается значение gpuArrayвычисления выполняются полностью на GPU, и передача данных не происходит. Прохождение gpuArray аргументы обеспечивают повышение производительности за счет сокращения времени моделирования. Дополнительные сведения см. в разделе Создание массивов на графическом процессоре (панель инструментов параллельных вычислений).

Для декодирования входного сигнала с использованием схемы турбодекодирования:

  1. Определите и настройте объект турбодекодера. См. раздел Строительство.

  2. Звонить step для декодирования двоичного сигнала в соответствии со свойствами comm.gpu.TurboDecoder. Поведение step относится к каждому объекту на панели инструментов.

Примечание

Начиная с R2016b, вместо использования step для выполнения операции, определенной объектом System, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Строительство

H = comm.gpu.TurboDecoder создает объект системы турбодекодера на основе GPU, H. Этот объект использует составляющий декодер α - апостериорной вероятности (APP) для итеративного декодирования параллельно-конкатенированных сверточно кодированных входных данных.

H = comm.gpu.TurboDecoder(Name, Value) создает объект турбодекодера на основе GPU, H, с указанным именем свойства, равным указанному значению. Name должно отображаться внутри отдельных кавычек (''). Можно указать несколько аргументов пары имя-значение в любом порядке как Name1,Value1,…,NameN,ValueN.

H = comm.gpu.TurboDecoder(TRELLIS, INTERLVRINDICES, NUMITER) создает объект турбодекодера на основе GPU, H. В этом объекте TrellisStructure свойство имеет значение TRELLIS, InterleaverIndices свойство имеет значение INTERLVRINDICES, и NumIterations свойство имеет значение NUMITER.

Свойства

TrellisStructure

Решетчатая структура составного сверточного кода

Укажите решетку как структуру MATLAB, которая содержит описание решетки составного сверточного кода. Значение по умолчанию является результатом poly2trellis(4, [13 15], 13). Используйте istrellis для проверки того, является ли структура действительной решетчатой структурой.

InterleaverIndicesSource

Источник индексов перемежителя

Укажите источник индексов перемежителя. Единственным допустимым параметром для этого свойства является Property.

InterleaverIndices

Индексы перемежителя

Укажите отображение, используемое для перестановки входных битов в кодере в виде вектора столбца целых чисел. Значение по умолчанию: (64:-1:1).'. Это отображение является вектором с числом элементов, равным длине L выходного сигнала метода шага. Каждый элемент должен быть целым числом от 1 до L без повторяющихся значений.

Algorithm

Алгоритм декодирования

Укажите алгоритм декодирования. Этот объект реализует истинное апостериорное декодирование вероятности. Единственный допустимый параметр: True APP.

NumScalingBits

Количество битов масштабирования

Версия GPU турбодекодера не использует это свойство.

NumIterations

Количество итераций декодирования

Укажите количество итераций декодирования, используемых для каждого вызова step способ. Значение по умолчанию: 6. Объект итерирует и предоставляет обновления логарифмических отношений правдоподобия (LLR) некодированных выходных битов. Выходные данные пошагового метода представляют собой выходные данные окончательного обновления LLR с жестким решением.

NumFrames

Количество независимых кадров, присутствующих в векторах входных и выходных данных.

Укажите количество независимых кадров, содержащихся в одном векторе ввода/вывода данных. Значение этого свойства по умолчанию: 1. Этот объект сегментирует входной вектор в NumFrames сегменты и декодирует сегменты независимо. Выходные данные содержат NumFrames декодированные сегменты.

Методы

шагДекодирование входного сигнала с использованием схемы параллельного конкатенированного декодирования
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

reset

Сброс внутренних состояний объекта System

Примеры

свернуть все

Передавать турбокодированные блоки данных по каналу AWGN, модулированному BPSK. Затем декодируют, используя итеративный турбодекодер, и отображают ошибки.

Определите переменную шума, установите длину кадра 256 и используйте свойство случайного потока, чтобы результаты были воспроизводимыми.

noiseVar = 4; frmLen = 256;
s = RandStream('mt19937ar', 'Seed', 11);
intrlvrIndices = randperm(s, frmLen);

Создайте объект Turbo Encoder System. Решетчатая структура для составного сверточного кода - poly2trellis (4, [13 15 17], 13). InterleaverIndices свойство определяет отображение, используемое объектом для перестановки входных битов в кодере в виде вектора столбцов целых чисел.

turboEnc = comm.TurboEncoder('TrellisStructure', poly2trellis(4, ...
      [13 15 17], 13), 'InterleaverIndices', intrlvrIndices);

Создайте объект системы модуляторов BPSK.

bpsk = comm.BPSKModulator;

Создайте объект системы каналов AWGN.

channel = comm.AWGNChannel('NoiseMethod', 'Variance', 'Variance', ...
      noiseVar);

Создайте объект системы турбодекодера на основе графического процессора. Решетчатая структура для составного сверточного кода - poly2trellis (4, [13 15 17], 13). InterleaverIndicies свойство определяет отображение, используемое объектом для перестановки входных битов в кодере в виде вектора столбцов целых чисел.

turboDec = comm.gpu.TurboDecoder('TrellisStructure', poly2trellis(4, ...
      [13 15 17], 13), 'InterleaverIndices', intrlvrIndices, ...
      'NumIterations', 4);

Создание объекта системы частоты ошибок.

errorRate = comm.ErrorRate;

Запустите моделирование.

for frmIdx = 1:8
 data = randi(s, [0 1], frmLen, 1);
 encodedData = turboEnc(data);
 modSignal = bpsk(encodedData);
 receivedSignal = channel(modSignal); 

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

receivedBits  = turboDec(-2/(noiseVar/2))*real(receivedSignal));

Сравните исходные данные с полученными данными, а затем вычислите результаты частоты ошибок.

errorStats = errorRate(data,receivedBits);
end
fprintf('Error rate = %f\nNumber of errors = %d\nTotal bits = %d\n', ...
errorStats(1), errorStats(2), errorStats(3))

Алгоритмы

Этот объект реализует входы и выходы, описанные на справочной странице блока турбодекодера. Свойства объекта соответствуют параметрам блока.

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

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