ConvolutionalCoder

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

ConvolutionalCoder

compound module

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 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 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.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Parameters

Name Type Default value Description
transferFunctionMatrix string "133 171"
mode string "truncated"
puncturingMatrix string "1;1"
punctureK int 1
punctureN int 2
constraintLengthVector string "7"

Properties

Name Value Description
display i=block/segm
class ConvolutionalCoderModule

Source code

// <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 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 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 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