Compound Module ConvolutionalCoder

Package: inet.physicallayer.common.bitlevel
File: src/inet/physicallayer/common/bitlevel/ConvolutionalCoder.ned

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:

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

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:

// 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.
//
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);
}