Decode input signal using parallel concatenation decoding with GPU
The GPU Turbo Decoder
System object™ decodes the input signal using a parallel concatenated decoding scheme.
This scheme uses the a-posteriori probability (APP) decoder as the
constituent decoder. Both constituent decoders use the same trellis structure and
algorithm.
Note
To use this object, you must install a Parallel Computing Toolbox™ license and have access to an appropriate GPU. For more about GPUs, see GPU Computing (Parallel Computing Toolbox).
A GPU-based System object accepts typical MATLAB® arrays or objects created using the gpuArray
class. A GPU-based
System object supports input signals with double- or single-precision data types. The output
signal inherits its data type from the input signal.
If the input signal is a MATLAB array, the System object handles data transfer between the CPU and the GPU. The output signal is a MATLAB array.
If the input signal is a gpuArray
, the data remains on the GPU.
The output signal is a gpuArray
. When the object is given a
gpuArray
, calculations take place entirely on the GPU, and no
data transfer occurs. Passing gpuArray
arguments provides
increased performance by reducing simulation time. For more information, see Establish Arrays on a GPU (Parallel Computing Toolbox).
To decode an input signal using a turbo decoding scheme:
Define and set up your turbo decoder object. See Construction.
Call step
to decode a binary signal
according to the properties of comm.gpu.TurboDecoder
. The behavior of step
is specific to each object in the toolbox.
Note
Starting in R2016b, instead of using the step
method to perform the operation defined by the System object, you can call the object with arguments, as if it were a function. For
example, y = step(obj,x)
and y = obj(x)
perform equivalent operations.
creates a
GPU-based turbo decoder System object, H
= comm.gpu.TurboDecoderH
. This object uses the
a-posteriori probability (APP) constituent decoder to
iteratively decode the parallel-concatenated convolutionally encoded input data.
creates a GPU-based turbo decoder object, H
= comm.gpu.TurboDecoder(Name
, Value
)H
, with the specified
property name set to the specified value. Name
must appear inside
single quotes (''
). You can specify several name-value pair arguments
in any order as Name1,Value1,…,NameN,ValueN
.
creates a GPU-based turbo decoder object, H
= comm.gpu.TurboDecoder(TRELLIS,
INTERLVRINDICES, NUMITER)H
. In this object, the
TrellisStructure
property is set to
TRELLIS
, the InterleaverIndices
property
set to INTERLVRINDICES
, and the NumIterations
property set to NUMITER
.
|
Trellis structure of constituent convolutional code Specify the trellis as a MATLAB structure that contains the trellis
description of the constituent convolutional code. The default is the result
of |
|
Source of interleaver indices Specify the source of the interleaver indices. The only valid setting for
this property is |
|
Interleaver indices Specify the mapping used to permute the input bits at the encoder as a
column vector of integers. The default is |
|
Decoding algorithm Specify the decoding algorithm. This object implements true a
posteriori probability decoding. The only valid setting is
|
|
Number of scaling bits The GPU version of the Turbo Decoder does not use this property. |
|
Number of decoding iterations Specify the number of decoding iterations used for each call to the
|
|
Number of independent frames present in the input and output data vectors. Specify the number of independent frames that a single data input/output
vector contains. The default value of this property is |
reset | Reset states of the turbo decoder object |
step | Decode input signal using parallel concatenated decoding scheme |
Common to All System Objects | |
---|---|
release | Allow System object property value changes |
This object implements the inputs and outputs described on the Turbo Decoder block reference page. The object properties correspond to the block parameters.