ConvolutionalCoder

Package: inet.physicallayer.wireless.common.radio.bitlevel

compound module ConvolutionalCoder

Implements convolutional coding, a type of error-correcting code that generates parity symbols via the sliding application of a boolean polynomial function to a data stream.

Transfer function (octal) matrix

transferFunctionMatrix = “133 171” means a simple vector with two elements: [133, 171]. We use the standard octal representation of the industry-standard generators of the 1/2 convolutional encoder. You also have to define your own polynomials in the octal number system! transferFunctionMatrix = “3 1 3; 1 2 2” means a k-by-n matrix:

| 3 1 3 |
| 1 2 2 |

which is a very simple 2/3 encoder.

Puncturing (bool) matrix and ``punctureK``, ``punctureN`` parameters

The same rule applies to the puncturing matrix representation. A puncturing matrix only consists of boolean values represented with 0 or 1. By default, we set it to

| 1 |
| 1 |

This simple puncturing matrix, in the 1/2 case, means no puncturing applies. You also have to set the new code rate parameters: a new

| 1 1 |
| 1 0 |

puncturing matrix together with the default settings define a 2/3 encoder, so the correct values for punctureK and punctureN are 2 and 3.

Constraint length (integer) vector

The constraint length is a 1-by-k vector that specifies the delay for the encoder’s k input bit streams.

The default settings define the standard 1/2 convolutional encoder used by IEEE802.11 PHY.

Encoding/decoding mode

There are two modes:

  • “truncated”The trellis graph traceback path always starts in the all-zeros state

    and ends with the best metric.

  • “terminated”: The trellis graph traceback path always starts and ends in the all-zeros

    state.

    The encoding process works in accordance with the industry standards and starts in the all-zeros state.

ConvolutionalCoder

Inheritance diagram

Extends

Name

Type

Description

Module

compound module

Base module for all INET compound modules.

Parameters

Name

Type

Default value

Description

displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

transferFunctionMatrix

string

“133 171”

mode

string

“truncated”

puncturingMatrix

string

“1;1”

punctureK

int

1

punctureN

int

2

constraintLengthVector

string

“7”

Properties

Name

Value

Description

class

ConvolutionalCoderModule

display

i=block/segm

Source code

//
// Implements convolutional coding, a type of error-correcting code that
// generates parity symbols via the sliding application of a boolean polynomial
// function to a data stream.
//
// <b>Transfer function (octal) matrix</b>
//
// transferFunctionMatrix = "133 171" means a simple vector with two elements:
// [133, 171]. We use the standard octal representation of the industry-standard
// generators of the 1/2 convolutional encoder. You also have to define your own
// polynomials in the octal number system!
// transferFunctionMatrix = "3 1 3; 1 2 2" means a k-by-n matrix:
// <pre>
// | 3 1 3 |
// | 1 2 2 |
// </pre>
// which is a very simple 2/3 encoder.
//
// <b>Puncturing (bool) matrix and `punctureK`, `punctureN` parameters</b>
//
// The same rule applies to the puncturing matrix representation.
// A puncturing matrix only consists of boolean values represented with
// 0 or 1.
// By default, we set it to
// <pre>
// | 1 |
// | 1 |
// </pre>
// This simple puncturing matrix, in the 1/2 case, means no puncturing applies.
// You also have to set the new code rate parameters: a new
// <pre>
// | 1 1 |
// | 1 0 |
// </pre>
// puncturing matrix together with the default settings define a 2/3 encoder,
// so the correct values for `punctureK` and `punctureN` are 2 and 3.
//
// <b>Constraint length (integer) vector</b>
//
// The constraint length is a 1-by-k vector that specifies the delay for the
// encoder's k input bit streams.
//
// The default settings define the standard 1/2 convolutional encoder used by
// IEEE802.11 PHY.
//
// <b>Encoding/decoding mode</b>
//
// There are two modes:
//  - "truncated" : The trellis graph traceback path always starts in the all-zeros state
//                  and ends with the best metric.
//  - "terminated": The trellis graph traceback path always starts and ends in the all-zeros
//                  state.
// The encoding process works in accordance with the industry standards and starts
// in the all-zeros state.
//
module ConvolutionalCoder extends Module like IFecCoder
{
    parameters:
        string transferFunctionMatrix = default("133 171");
        string mode = default("truncated");
        string puncturingMatrix = default("1;1");
        int punctureK = default(1);
        int punctureN = default(2);
        string constraintLengthVector = default("7");
        @display("i=block/segm");
        @class(ConvolutionalCoderModule);
}

File: src/inet/physicallayer/wireless/common/radio/bitlevel/ConvolutionalCoder.ned