exponenta event banner

comm.gpu. ViterbiDecoder

Декодирование сверточно закодированных данных с помощью алгоритма Витерби с помощью графического процессора

Описание

GPU ViterbiDecoder Система object™ декодирует входные символы для получения двоичных выходных символов с использованием графического процессора (GPU). Этот объект обрабатывает сигналы переменного размера; однако сигналы переменного размера не могут применяться для входных сигналов стирания.

Примечание

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

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

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

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

Для декодирования входных символов и получения двоичных выходных символов:

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

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

Примечание

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

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

H = comm.gpu.ViterbiDecoder создает системный объект декодера Витерби, H. Этот объект использует алгоритм Витерби для декодирования сверточно закодированных входных данных.

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

H = comm.gpu.ViterbiDecoder(TRELLIS,Name,Value) создает объект-декодер Витерби, H, с TrellisStructure свойство имеет значение TRELLIS, а другое указанное свойство Names имеет указанное значение Values.

Свойства

TrellisStructure

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

Укажите решетку как структуру MATLAB, содержащую описание решетки сверточного кода. Используйте istrellis для проверки того, является ли структура действительной решетчатой структурой. Этот объект поддерживает решетку скорости 1/2, 1/3 и 1/4 от простых кодеров передачи. Значением по умолчанию является результат poly2trellis(7, [171 133]).

InputFormat

Формат ввода

Укажите формат входа в декодер как один из Unquantized | Hard | Soft. Значение по умолчанию: Unquantized.

При установке для этого свойства значения Unquantized, вход должен быть действительным вектором двух или одной точности неквантованных мягких значений. Объект считает отрицательные числа единицами, а положительные - нулями. При установке для этого свойства значения Hard, входные данные должны быть вектором значений жесткого решения, которые являются нулями или единицами. Тип данных входных данных может быть двойной точностью или единственной точностью. При установке для этого свойства значения Soft, вход должен быть вектором квантованных мягких значений, представленных в виде целых чисел между 0 и 2^SoftInputWordLength-1. Тип данных входных данных может быть двойной точностью или единственной точностью.

SoftInputWordLength

Длина слова мягкого ввода

Укажите количество битов, используемых для представления каждого квантованного значения мягкого ввода в виде положительного целочисленного скаляра. Это свойство применяется при установке для свойства InputFormat значения Soft. Значение по умолчанию: 4 биты.

InvalidQuantizedInputAction

Действие, когда входные значения выходят за пределы диапазона

Единственный допустимый параметр: Ignore который игнорирует входные данные вне диапазона.

TracebackDepth

Глубина отслеживания

Укажите число ветвей решетки, используемых для построения каждого пути отслеживания в виде положительного целого скаляра, меньшего или равного 256. Глубина отслеживания влияет на точность декодирования и задержку. Количество нулевых символов, которые предшествуют первому декодированному символу на выходе, представляют задержку декодирования. При установке для свойства TerminationMethod значения Continuous, задержка декодирования состоит из TracebackDepth нулевые символы или TracebackDepth нулевые биты для сверточного кода 1/N скоростью. При установке для свойства TerminationMethod значения Truncated или Terminated, отсутствует задержка вывода и TracebackDepth должно быть меньше или равно количеству символов на каждом входе. Если кодовая скорость равна 1/2, типичное значение глубины отслеживания примерно в пять раз превышает ограничительную длину кода. Значение по умолчанию: 34.

TerminationMethod

Метод завершения кодированного кадра

Определить TerminationMethod как один из Continuous | Truncated | Terminated. Значение по умолчанию: Continuous. В Continuous В режиме объект сохраняет свою метрику внутреннего состояния в конце каждого кадра для использования со следующим кадром. Каждый путь отслеживания обрабатывается объектом независимо. Выбрать Continuous режим, когда входной сигнал содержит только один символ. В Truncated , объект обрабатывает каждый кадр независимо. Путь отслеживания начинается в состоянии с лучшей метрикой и всегда заканчивается в состоянии всех нулей. В Terminated в режиме объект обрабатывает каждый кадр независимо, и путь отслеживания всегда начинается и заканчивается в состоянии «все нули».

ResetInputPort

Включить вход сброса декодера

Установите для этого свойства значение true, чтобы включить ввод дополнительного метода шага. Когда входной сигнал сброса является ненулевым значением, объект сбрасывает внутренние состояния декодера в исходное состояние. Это свойство применяется при установке для свойства TerminationMethod значения Continuous. Значение по умолчанию - false.

DelayedResetAction

Сброс выходного сигнала задержки

Задержка сброса выходных данных не поддерживается. Единственный допустимый параметр - false.

PuncturePatternSource

Источник прокола

Укажите источник образца прокола как один из None | Property. Значение по умолчанию: None. При установке для этого свойства значения None объект не предполагает прокалывания. Установить для этого свойства значение Property для декодирования проколотых кодовых слов на основе вектора шаблона прокола, заданного посредством PuncturePattern собственность.

PuncturePattern

Вектор прокола

Укажите шаблон прокола, используемый для прокола кодированных данных. Значение по умолчанию: [1; 1; 0; 1; 0; 1]. Шаблон прокола представляет собой вектор столбца из единиц и нулей, где нули указывают, куда вставлять фиктивные биты. Шаблон прокола должен соответствовать шаблону прокола, используемому кодером. Это свойство применяется при установке PuncturePatternSource свойство для Property.

ErasuresInputPort

Включить ввод стираний

Стирание не поддерживается. Единственный допустимый параметр - false.

OutputDataType

Тип данных вывода

Единственный допустимый параметр: Full precision что приводит к совпадению типа выходных данных с типом входных данных.

NumFrames

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

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

Методы

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

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

reset

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

Примеры

Передача сверточно закодированного битового потока 8-DPSK-modulated через канал AWGN. Затем демодулируют, декодируют с помощью декодера Витерби и подсчитывают ошибки.

hConEnc = comm.ConvolutionalEncoder;
hMod = comm.DPSKModulator('BitInput',true);
hChan = comm.gpu.AWGNChannel('NoiseMethod', ...
            'Signal to noise ratio (SNR)', 'SNR',10);
hDemod = comm.DPSKDemodulator('BitOutput',true);
hDec = comm.gpu.ViterbiDecoder('InputFormat','Hard');
% Delay in bits is TracebackDepth times the number of
% bits per symbol
delay = hDec.TracebackDepth* ...
   log2(hDec.TrellisStructure.numInputSymbols);
hError = comm.ErrorRate( ...
   'ComputationDelay',3,'ReceiveDelay',delay);
for counter = 1:20
   data = randi([0 1],30,1);
   encodedData = step(hConEnc, data);
   modSignal = step(hMod, encodedData);
   receivedSignal = step(hChan, modSignal);
   demodSignal = step(hDemod, receivedSignal);
   receivedBits = step(hDec, demodSignal);
   errorStats = step(hError, data, receivedBits);
end
fprintf('Error rate = %f\nNumber of errors = %d\n', ...
errorStats(1), errorStats(2))

Ссылки

[1] Феттвейс, Г., Х. Мейр. «Feedforward Architecture for Parallel Viterbi Decoding», журнал обработки сигналов VLSI, том 3, июнь 1991 года.

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

См. также

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