Package: inet.physicallayer.wireless.common.radio.bitlevel
ConvolutionalCoder
compound moduleTransfer 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