MT Convolutional Decode VI

LabView Digital Modulation

MT Convolutional Decode VI

Decodes a convolutionally encoded bit stream, using a specified rate or generator matrix. The decoding scheme employs the Viterbi decoding algorithm and returns an output binary message stream.

The Modulation Toolkit implements the convolutional decoding algorithm as a polymorphic VI with polymorphic instances corresponding to different types of the Viterbi decoding algorithm (hard decision/unquantized/soft decision) and the type of specification (code rate/generator matrix).

Use the pull-down menu to select an instance of this VI.

Details

MT Convolutional Decoder (Viterbi Hard Decision, Rate)

This polymorphic instance decodes a convolutionally encoded bit stream using a specified code rate. The code rate is equal to the ratio of the data word length to the code word length.

The following table shows the available code rates and constraint lengths supported by this polymorphic instance. If you have a particular code rate/constraint length that is not available in the table, use a generator matrix instance of this VI to specify custom values.

Code Rate Supported Constraint Lengths
1/2 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
1/3 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
1/4 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
2/3 2, 3, 4, 5, 6
3/4 2, 3, 4

MT Convolutional Decoder (Viterbi Hard Decision, Rate)

c1di8.gif

input bit stream specifies the bit sequence representing the code word to decode. You can use the MT Convolutional Encode VI to generate the encoded bit stream. The default is empty.

cenum.gif

rate (k/n) specifies the convolutional code rate as a ratio k/n, where k is the input data word length and n is the output code word length. Use a generator matrix instance of this VI to specify a different rate. The default is 1/2.

1/2 (0)

The convolutional code rate is 1/2.

1/3 (1)

The convolutional code rate is 1/3.

1/4 (2)

The convolutional code rate is 1/4.

2/3 (3)

The convolutional code rate is 2/3.

3/4 (4)

The convolutional code rate is 3/4.

ci32.gif

constraint length (K) specifies the maximum number of encoded bits that can be affected by a single input bit. This value represents (1 + maximal memory order), where maximal memory order refers to the length of the longest shift register chain in the convolutional encoder. The default is 3.

cu32.gif

initial state specifies the initial parent state for the decode operation. When reset? is set to TRUE (default), the trellis structure is set to this state, thereby initializing the Viterbi decoding operation. On the first call to this VI, and thereafter when reset? is set to FALSE, the survivor state from the previous iteration is used to continue performing Viterbi decoding and this parameter is ignored. The default is 0.

ci32.gif

traceback depth (D) specifies the number of trellis stages used in the Viterbi decoding process. The default is 15.

cbool.gif

reset? specifies whether the decoder state is reset on each call to this VI. By default, the VI resets on the first call. When reset? is set to TRUE, the VI clears any buffered bits from the previous iterations, and the Viterbi hard decision decoding algorithm is initialized to start decoding from the specified initial state. In this case, the relationship of the length of the output decoded bit stream, L out, to the input encoded bit stream length, L in, is described by the following equation:

L out = k × [floor(L in/n) – D]

where k/n specifies the code rate, and D specifies the decoder traceback depth in symbols. When reset? is set to FALSE, the VI continues performing convolutional decoding from the previous iteration. In such a case, the length of the output decoded bit stream is given by the following equation:

L out = k × floor(L in/n).

Tip   If the length of the encoded bit stream is L in, and reset? is set to TRUE, the Viterbi decoding algorithm (for a rate k/n code) returns a total of L out=k×[floor(L in/n)–D] decoded bits in a single iteration, implying that a total of k×D message bits are buffered inside the VI. To recover the entire message of length k×floor[L in/n] in a single call to the MT Convolutional Decoder VI with reset? set to TRUE, choose one of the following options:
  • Append max(D,K–1)×k zeros to the end of the message prior to performing convolutional encoding. Here k represents the message word length.
  • Append D×n zeros to the end of the encoded bit stream prior to calling the MT Convolutional Decoder VI. Here D is the traceback depth employed in the convolutional decoder, and n is the code word length.

The default is TRUE.

ccclst.gif

error in (no error) can accept error information wired from previously called VIs. Use this information to decide if any functionality should be bypassed in the event of errors from other VIs. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

cbool.gif

status is TRUE (X) if an error occurred or FALSE (checkmark) to indicate a warning or that no error occurred. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ci32.gif

code identifies the error or warning code. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

cstr.gif

source describes the origin of the error or warning. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

i1di8.gif

output bit stream returns the decoded code word. Wire this parameter to the MT Calculate BER VI to perform bit error rate measurements.

iu32.gif

final state returns the survivor state resulting from the Viterbi hard decision decoding operation after decoding the entire input bit stream.

icclst.gif

error out passes error or warning information out of a VI to be used by other VIs. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ibool.gif

status is TRUE (X) if an error occurred or FALSE (checkmark) to indicate a warning or that no error occurred. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ii32.gif

code is the error or warning code. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

istr.gif

source describes the origin of the error or warning. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

MT Convolutional Decoder (Viterbi Hard Decision, Generator Matrix)

This polymorphic instance performs Viterbi hard decision decoding on a convolutionally encoded bit stream using a custom generator matrix you specify.

MT Convolutional Decoder (Viterbi Hard Decision, Generator Matrix)

c1di8.gif

input bit stream specifies the bit sequence representing the code word to decode. You can use the MT Convolutional Encode VI to generate the encoded bit stream. The default is empty.

c2du32.gif

generator matrix (n x k) specifies the generator connection polynomial matrix used for setting the convolutional feedforward decoder connections in octal format. The convolutional decoder is modeled as a linear feedforward shift register arrangement consisting of k rows with K-1 shift registers per row, where k denotes the data word length and K denotes the constraint length. If a ij {0 ≤ in-1, 0 ≤ jk-1} denotes a particular element in the generator matrix, the row index i corresponds to the convolutional decoder output y i that is affected by this element, while the column index j corresponds to the jth row in the k row shift register arrangement. Thus a ij specifies how the K bits in the jth row of the feedforward shift register matrix affects the ith output of the convolutional decoder. The default is

For a rate 2/3 convolutional decoder, the generator matrix is specified as

Notice that the preceding matrix represents the elements in octal format. Zeros are padded at the end of the corresponding code generator sequences such that the total length of the sequences is a multiple of three.

Tip   Ensure that the convolutional encoder and decoder receive the same generator matrices.

The following diagram depicts the rate 2/3 convolutional decoder corresponding to the generator matrix shown previously, with a constraint length of 4. In this diagram, D represents a shift register or memory element.

Here, y i j, 0 ≤ jn-1 denotes the jth output of the convolutional decoder in the ith decoding instance.

ci32.gif

constraint length (K) specifies the maximum number of encoded bits that can be affected by a single input bit. This value represents (1 + maximal memory order), where maximal memory order refers to the length of the longest shift register chain in the convolutional encoder. The default is 3.

cu32.gif

initial state specifies the initial parent state for the decode operation. When reset? is set to TRUE (default), the trellis structure is set to this state, thereby initializing the Viterbi decoding operation. On the first call to this VI, and thereafter when reset? is set to FALSE, the survivor state from the previous iteration is used to continue performing Viterbi decoding and this parameter is ignored. The default is 0.

ci32.gif

traceback depth (D) specifies the number of trellis stages used in the Viterbi decoding process. The default is 15.

cbool.gif

reset? specifies whether the decoder state is reset on each call to this VI. By default, the VI resets on the first call. When reset? is set to TRUE, the VI clears any buffered bits from the previous iterations, and the Viterbi hard decision decoding algorithm is initialized to start decoding from the specified initial state. In this case, the relationship of the length of the output decoded bit stream, L out, to the input encoded bit stream length, L in, is described by the following equation:

L out = k × [floor(L in/n) – D]

where k/n specifies the code rate, and D specifies the decoder traceback depth in symbols. When reset? is set to FALSE, the VI continues performing convolutional decoding from the previous iteration. In such a case, the length of the output decoded bit stream is given by the following equation:

L out = k × floor(L in/n).

Tip   If the length of the encoded bit stream is L in, and reset? is set to TRUE, the Viterbi decoding algorithm (for a rate k/n code) returns a total of L out=k×[floor(L in/n)–D] decoded bits in a single iteration, implying that a total of k×D message bits are buffered inside the VI. To recover the entire message of length k×floor[L in/n] in a single call to the MT Convolutional Decoder VI with reset? set to TRUE, choose one of the following options:
  • Append max(D,K–1)×k zeros to the end of the message prior to performing convolutional encoding. Here k represents the message word length.
  • Append D×n zeros to the end of the encoded bit stream prior to calling the MT Convolutional Decoder VI. Here D is the traceback depth employed in the convolutional decoder, and n is the code word length.

The default is TRUE.

ccclst.gif

error in (no error) can accept error information wired from previously called VIs. Use this information to decide if any functionality should be bypassed in the event of errors from other VIs. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

cbool.gif

status is TRUE (X) if an error occurred or FALSE (checkmark) to indicate a warning or that no error occurred. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ci32.gif

code identifies the error or warning code. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

cstr.gif

source describes the origin of the error or warning. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

i1di8.gif

output bit stream returns the decoded code word. Wire this parameter to the MT Calculate BER VI to perform bit error rate measurements.

iu32.gif

final state returns the survivor state resulting from the Viterbi hard decision decoding operation after decoding the entire input bit stream.

icclst.gif

error out passes error or warning information out of a VI to be used by other VIs. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ibool.gif

status is TRUE (X) if an error occurred or FALSE (checkmark) to indicate a warning or that no error occurred. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ii32.gif

code is the error or warning code. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

istr.gif

source describes the origin of the error or warning. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

MT Convolutional Decoder (Viterbi Soft Decision, Rate)

This polymorphic instance decodes a convolutionally encoded bit stream, using a specified code rate and Viterbi soft decision decoding. The code rate is equal to the ratio of the data word length to the code word length.

The following table shows the available code rates and constraint lengths supported by this polymorphic instance. If you have a particular code rate/constraint length that is not available in the table, use a generator matrix instance of the VI to specify custom values.

Code Rate Supported Constraint Lengths
1/2 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
1/3 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
1/4 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
2/3 2, 3, 4, 5, 6
3/4 2, 3, 4

MT Convolutional Decoder (Viterbi Soft Decision, Rate)

c1di32.gif

input integers specifies integers representing bit metrics for quantized demodulated BPSK symbol data. These demodulated BPSK symbols are quantized to n soft bits of precision, such that an integer value of 0 represents a strong logic 0 and a value of 2n soft represents a strong logic 1. The default is empty.

Note   To generate the integer-valued quantized BPSK demodulated data from the Modulation Toolkit, decimate and quantize the oversampled data at the output of the PSK demodulator/matched filter.

For higher-order M-PSK/QAM schemes, convert the I/Q symbol values into corresponding quantized bit metrics using a suitable algorithm/heuristic.

cenum.gif

rate (k/n) specifies the convolutional code rate as a ratio k/n, where k is the input data word length and n is the output code word length. Use a generator matrix instance of this VI to specify a different rate. The default is 1/2.

1/2 (0)

The convolutional code rate is 1/2.

1/3 (1)

The convolutional code rate is 1/3.

1/4 (2)

The convolutional code rate is 1/4.

2/3 (3)

The convolutional code rate is 2/3.

3/4 (4)

The convolutional code rate is 3/4.

ci32.gif

constraint length (K) specifies the maximum number of encoded bits that can be affected by a single input bit. This value represents (1 + maximal memory order), where maximal memory order refers to the length of the longest shift register chain in the convolutional encoder. The default is 3.

cu32.gif

initial state specifies the initial parent state for the decode operation. When reset? is set to TRUE (default), the trellis structure is set to this state, thereby initializing the Viterbi decoding operation. On the first call to this VI, and thereafter when reset? is set to FALSE, the survivor state from the previous iteration is used to continue performing Viterbi decoding and this parameter is ignored. The default is 0.

ci32.gif

soft decision bits specifies the number of bits used for quantizing the BPSK modulated symbols to integers. The default is 1.

ci32.gif

traceback depth (D) specifies the number of trellis stages used in the Viterbi decoding process. The default is 15.

cbool.gif

reset? specifies whether the decoder state is reset on each call to this VI. By default, the VI resets on the first call. When reset? is set to TRUE, the VI clears any buffered bits from the previous iterations, and the Viterbi hard decision decoding algorithm is initialized to start decoding from the specified initial state. In this case, the relationship of the length of the output decoded bit stream, L out, to the input encoded bit stream length, L in, is described by the following equation:

L out = k × [floor(L in/n) – D]

where k/n specifies the code rate, and D specifies the decoder traceback depth in symbols. When reset? is set to FALSE, the VI continues performing convolutional decoding from the previous iteration. In such a case, the length of the output decoded bit stream is given by the following equation:

L out = k × floor(L in/n).

Tip   If the length of the encoded bit stream is L in, and reset? is set to TRUE, the Viterbi decoding algorithm (for a rate k/n code) returns a total of L out=k×[floor(L in/n)–D] decoded bits in a single iteration, implying that a total of k×D message bits are buffered inside the VI. To recover the entire message of length k×floor[L in/n] in a single call to the MT Convolutional Decoder VI with reset? set to TRUE, choose one of the following options:
  • Append max(D,K–1)×k zeros to the end of the message prior to performing convolutional encoding. Here k represents the message word length.
  • Append D×n zeros to the end of the encoded bit stream prior to calling the MT Convolutional Decoder VI. Here D is the traceback depth employed in the convolutional decoder, and n is the code word length.

The default is TRUE.

ccclst.gif

error in (no error) can accept error information wired from previously called VIs. Use this information to decide if any functionality should be bypassed in the event of errors from other VIs. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

cbool.gif

status is TRUE (X) if an error occurred or FALSE (checkmark) to indicate a warning or that no error occurred. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ci32.gif

code identifies the error or warning code. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

cstr.gif

source describes the origin of the error or warning. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

i1di8.gif

output bit stream returns the decoded code word. Wire this parameter to the MT Calculate BER VI to perform bit error rate measurements.

iu32.gif

final state returns the final state for the k(K-1) shift registers as the right-aligned (least significant) k(K-1) bits, where K is the constraint length, and k is the data word length in bits.

icclst.gif

error out passes error or warning information out of a VI to be used by other VIs. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ibool.gif

status is TRUE (X) if an error occurred or FALSE (checkmark) to indicate a warning or that no error occurred. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ii32.gif

code is the error or warning code. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

istr.gif

source describes the origin of the error or warning. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

MT Convolutional Decoder (Viterbi Soft Decision, Generator Matrix)

This polymorphic instance performs Viterbi soft decision decoding on a convolutionally encoded bit stream using a custom generator matrix you specify.

MT Convolutional Decoder (Viterbi Soft Decision, Generator Matrix)

c1di32.gif

input integers specifies integers representing bit metrics for quantized demodulated BPSK symbol data. These demodulated BPSK symbols are quantized to n soft bits of precision, such that an integer value of 0 represents a strong logic 0 and a value of 2n soft represents a strong logic 1. The default is empty.

Note   To generate the integer-valued quantized BPSK demodulated data from the Modulation Toolkit, decimate and quantize the oversampled data at the output of the PSK demodulator/matched filter.

For higher-order M-PSK/QAM schemes, convert the I/Q symbol values into corresponding quantized bit metrics using a suitable algorithm/heuristic.

c2du32.gif

generator matrix (n x k) specifies the generator connection polynomial matrix used for setting the convolutional feedforward decoder connections in octal format. The convolutional decoder is modeled as a linear feedforward shift register arrangement consisting of k rows with K-1 shift registers per row, where k denotes the data word length and K denotes the constraint length. If a ij {0 ≤ in-1, 0 ≤ jk-1} denotes a particular element in the generator matrix, the row index i corresponds to the convolutional decoder output y i that is affected by this element, while the column index j corresponds to the jth row in the k row shift register arrangement. Thus a ij specifies how the K bits in the jth row of the feedforward shift register matrix affects the ith output of the convolutional decoder. The default is

For a rate 2/3 convolutional decoder, the generator matrix is specified as

Notice that the preceding matrix represents the elements in octal format. Zeros are padded at the end of the corresponding code generator sequences such that the total length of the sequences is a multiple of three.

Tip   Ensure that the convolutional encoder and decoder receive the same generator matrices.

The following diagram depicts the rate 2/3 convolutional decoder corresponding to the generator matrix shown previously, with a constraint length of 4. In this diagram, D represents a shift register or memory element.

Here, y i j, 0 ≤ jn-1 denotes the jth output of the convolutional decoder in the ith decoding instance.

ci32.gif

constraint length (K) specifies the maximum number of encoded bits that can be affected by a single input bit. This value represents (1 + maximal memory order), where maximal memory order refers to the length of the longest shift register chain in the convolutional encoder. The default is 3.

cu32.gif

initial state specifies the initial parent state for the decode operation. When reset? is set to TRUE (default), the trellis structure is set to this state, thereby initializing the Viterbi decoding operation. On the first call to this VI, and thereafter when reset? is set to FALSE, the survivor state from the previous iteration is used to continue performing Viterbi decoding and this parameter is ignored. The default is 0.

ci32.gif

soft decision bits specifies the number of bits used for quantizing the BPSK modulated symbols to integers. The default is 1.

ci32.gif

traceback depth (D) specifies the number of trellis stages used in the Viterbi decoding process. The default is 15.

cbool.gif

reset? specifies whether the decoder state is reset on each call to this VI. By default, the VI resets on the first call. When reset? is set to TRUE, the VI clears any buffered bits from the previous iterations, and the Viterbi hard decision decoding algorithm is initialized to start decoding from the specified initial state. In this case, the relationship of the length of the output decoded bit stream, L out, to the input encoded bit stream length, L in, is described by the following equation:

L out = k × [floor(L in/n) – D]

where k/n specifies the code rate, and D specifies the decoder traceback depth in symbols. When reset? is set to FALSE, the VI continues performing convolutional decoding from the previous iteration. In such a case, the length of the output decoded bit stream is given by the following equation:

L out = k × floor(L in/n).

Tip   If the length of the encoded bit stream is L in, and reset? is set to TRUE, the Viterbi decoding algorithm (for a rate k/n code) returns a total of L out=k×[floor(L in/n)–D] decoded bits in a single iteration, implying that a total of k×D message bits are buffered inside the VI. To recover the entire message of length k×floor[L in/n] in a single call to the MT Convolutional Decoder VI with reset? set to TRUE, choose one of the following options:
  • Append max(D,K–1)×k zeros to the end of the message prior to performing convolutional encoding. Here k represents the message word length.
  • Append D×n zeros to the end of the encoded bit stream prior to calling the MT Convolutional Decoder VI. Here D is the traceback depth employed in the convolutional decoder, and n is the code word length.

The default is TRUE.

ccclst.gif

error in (no error) can accept error information wired from previously called VIs. Use this information to decide if any functionality should be bypassed in the event of errors from other VIs. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

cbool.gif

status is TRUE (X) if an error occurred or FALSE (checkmark) to indicate a warning or that no error occurred. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ci32.gif

code identifies the error or warning code. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

cstr.gif

source describes the origin of the error or warning. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

i1di8.gif

output bit stream returns the decoded code word. Wire this parameter to the MT Calculate BER VI to perform bit error rate measurements.

iu32.gif

final state returns the final state for the k(K-1) shift registers as the right-aligned (least significant) k(K-1) bits, where K is the constraint length, and k is the data word length in bits.

icclst.gif

error out passes error or warning information out of a VI to be used by other VIs. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ibool.gif

status is TRUE (X) if an error occurred or FALSE (checkmark) to indicate a warning or that no error occurred. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ii32.gif

code is the error or warning code. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

istr.gif

source describes the origin of the error or warning. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

MT Convolutional Decoder (Viterbi UnQuantized, Rate)

This polymorphic instance decodes a convolutionally encoded bit stream, using a specified code rate and unquantized Viterbi decoding. The code rate is equal to the ratio of the data word length to the code word length.

The following table shows the available code rates and constraint lengths supported by this polymorphic instance. If you have a particular code rate/constraint length that is not available in the table, use a generator matrix instance of the VI to specify custom values.

Code Rate Supported Constraint Lengths
1/2 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
1/3 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
1/4 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
2/3 2, 3, 4, 5, 6
3/4 2, 3, 4

MT Convolutional Decoder (Viterbi UnQuantized, Rate)

c1ddbl.gif

input symbols specifies the unquantized BPSK demodulated soft symbol data. The default is empty.

Note   To generate the unquantized BPSK demodulated data from the Modulation Toolkit, decimate the oversampled data at the output of the PSK demodulator/matched filter.

For higher order M-PSK/QAM schemes, convert the I/Q symbol values into corresponding bit metrics using a suitable algorithm/heuristic.

cenum.gif

rate (k/n) specifies the convolutional code rate as a ratio k/n, where k is the input data word length and n is the output code word length. Use a generator matrix instance of this VI to specify a different rate. The default is 1/2.

1/2 (0)

The convolutional code rate is 1/2.

1/3 (1)

The convolutional code rate is 1/3.

1/4 (2)

The convolutional code rate is 1/4.

2/3 (3)

The convolutional code rate is 2/3.

3/4 (4)

The convolutional code rate is 3/4.

ci32.gif

constraint length (K) specifies the maximum number of encoded bits that can be affected by a single input bit. This value represents (1 + maximal memory order), where maximal memory order refers to the length of the longest shift register chain in the convolutional encoder. The default is 3.

cu32.gif

initial state specifies the initial parent state for the decode operation. When reset? is set to TRUE (default), the trellis structure is set to this state, thereby initializing the Viterbi decoding operation. On the first call to this VI, and thereafter when reset? is set to FALSE, the survivor state from the previous iteration is used to continue performing Viterbi decoding and this parameter is ignored. The default is 0.

ci32.gif

traceback depth (D) specifies the number of trellis stages used in the Viterbi decoding process. The default is 15.

cbool.gif

reset? specifies whether the decoder state is reset on each call to this VI. By default, the VI resets on the first call. When reset? is set to TRUE, the VI clears any buffered bits from the previous iterations, and the Viterbi hard decision decoding algorithm is initialized to start decoding from the specified initial state. In this case, the relationship of the length of the output decoded bit stream, L out, to the input encoded bit stream length, L in, is described by the following equation:

L out = k × [floor(L in/n) – D]

where k/n specifies the code rate, and D specifies the decoder traceback depth in symbols. When reset? is set to FALSE, the VI continues performing convolutional decoding from the previous iteration. In such a case, the length of the output decoded bit stream is given by the following equation:

L out = k × floor(L in/n).

Tip   If the length of the encoded bit stream is L in, and reset? is set to TRUE, the Viterbi decoding algorithm (for a rate k/n code) returns a total of L out=k×[floor(L in/n)–D] decoded bits in a single iteration, implying that a total of k×D message bits are buffered inside the VI. To recover the entire message of length k×floor[L in/n] in a single call to the MT Convolutional Decoder VI with reset? set to TRUE, choose one of the following options:
  • Append max(D,K–1)×k zeros to the end of the message prior to performing convolutional encoding. Here k represents the message word length.
  • Append D×n zeros to the end of the encoded bit stream prior to calling the MT Convolutional Decoder VI. Here D is the traceback depth employed in the convolutional decoder, and n is the code word length.

The default is TRUE.

ccclst.gif

error in (no error) can accept error information wired from previously called VIs. Use this information to decide if any functionality should be bypassed in the event of errors from other VIs. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

cbool.gif

status is TRUE (X) if an error occurred or FALSE (checkmark) to indicate a warning or that no error occurred. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ci32.gif

code identifies the error or warning code. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

cstr.gif

source describes the origin of the error or warning. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

i1di8.gif

output bit stream returns the decoded code word. Wire this parameter to the MT Calculate BER VI to perform bit error rate measurements.

iu32.gif

final state returns the survivor state resulting from the Viterbi hard decision decoding operation after decoding the entire input bit stream.

icclst.gif

error out passes error or warning information out of a VI to be used by other VIs. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ibool.gif

status is TRUE (X) if an error occurred or FALSE (checkmark) to indicate a warning or that no error occurred. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ii32.gif

code is the error or warning code. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

istr.gif

source describes the origin of the error or warning. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

MT Convolutional Decoder (Viterbi UnQuantized, Generator Matrix)

This polymorphic instance performs Viterbi unquantized decoding on a convolutionally encoded bit stream using a custom generator matrix you specify.

MT Convolutional Decoder (Viterbi UnQuantized, Generator Matrix)

c1ddbl.gif

input symbols specifies the unquantized BPSK demodulated soft symbol data. The default is empty.

Note   To generate the unquantized BPSK demodulated data from the Modulation Toolkit, decimate the oversampled data at the output of the PSK demodulator/matched filter.

For higher order M-PSK/QAM schemes, convert the I/Q symbol values into corresponding bit metrics using a suitable algorithm/heuristic.

c2du32.gif

generator matrix (n x k) specifies the generator connection polynomial matrix used for setting the convolutional feedforward decoder connections in octal format. The convolutional decoder is modeled as a linear feedforward shift register arrangement consisting of k rows with K-1 shift registers per row, where k denotes the data word length and K denotes the constraint length. If a ij {0 ≤ in-1, 0 ≤ jk-1} denotes a particular element in the generator matrix, the row index i corresponds to the convolutional decoder output y i that is affected by this element, while the column index j corresponds to the jth row in the k row shift register arrangement. Thus a ij specifies how the K bits in the jth row of the feedforward shift register matrix affects the ith output of the convolutional decoder. The default is

For a rate 2/3 convolutional decoder, the generator matrix is specified as

Notice that the preceding matrix represents the elements in octal format. Zeros are padded at the end of the corresponding code generator sequences such that the total length of the sequences is a multiple of three.

Tip   Ensure that the convolutional encoder and decoder receive the same generator matrices.

The following diagram depicts the rate 2/3 convolutional decoder corresponding to the generator matrix shown previously, with a constraint length of 4. In this diagram, D represents a shift register or memory element.

Here, y i j, 0 ≤ jn-1 denotes the jth output of the convolutional decoder in the ith decoding instance.

ci32.gif

constraint length (K) specifies the maximum number of encoded bits that can be affected by a single input bit. This value represents (1 + maximal memory order), where maximal memory order refers to the length of the longest shift register chain in the convolutional encoder. The default is 3.

cu32.gif

initial state specifies the initial parent state for the decode operation. When reset? is set to TRUE (default), the trellis structure is set to this state, thereby initializing the Viterbi decoding operation. On the first call to this VI, and thereafter when reset? is set to FALSE, the survivor state from the previous iteration is used to continue performing Viterbi decoding and this parameter is ignored. The default is 0.

ci32.gif

traceback depth (D) specifies the number of trellis stages used in the Viterbi decoding process. The default is 15.

cbool.gif

reset? specifies whether the decoder state is reset on each call to this VI. By default, the VI resets on the first call. When reset? is set to TRUE, the VI clears any buffered bits from the previous iterations, and the Viterbi hard decision decoding algorithm is initialized to start decoding from the specified initial state. In this case, the relationship of the length of the output decoded bit stream, L out, to the input encoded bit stream length, L in, is described by the following equation:

L out = k × [floor(L in/n) – D]

where k/n specifies the code rate, and D specifies the decoder traceback depth in symbols. When reset? is set to FALSE, the VI continues performing convolutional decoding from the previous iteration. In such a case, the length of the output decoded bit stream is given by the following equation:

L out = k × floor(L in/n).

Tip   If the length of the encoded bit stream is L in, and reset? is set to TRUE, the Viterbi decoding algorithm (for a rate k/n code) returns a total of L out=k×[floor(L in/n)–D] decoded bits in a single iteration, implying that a total of k×D message bits are buffered inside the VI. To recover the entire message of length k×floor[L in/n] in a single call to the MT Convolutional Decoder VI with reset? set to TRUE, choose one of the following options:
  • Append max(D,K–1)×k zeros to the end of the message prior to performing convolutional encoding. Here k represents the message word length.
  • Append D×n zeros to the end of the encoded bit stream prior to calling the MT Convolutional Decoder VI. Here D is the traceback depth employed in the convolutional decoder, and n is the code word length.

The default is TRUE.

ccclst.gif

error in (no error) can accept error information wired from previously called VIs. Use this information to decide if any functionality should be bypassed in the event of errors from other VIs. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

cbool.gif

status is TRUE (X) if an error occurred or FALSE (checkmark) to indicate a warning or that no error occurred. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ci32.gif

code identifies the error or warning code. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

cstr.gif

source describes the origin of the error or warning. Right-click the front panel error in control and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

i1di8.gif

output bit stream returns the decoded code word. Wire this parameter to the MT Calculate BER VI to perform bit error rate measurements.

iu32.gif

final state returns the survivor state resulting from the Viterbi hard decision decoding operation after decoding the entire input bit stream.

icclst.gif

error out passes error or warning information out of a VI to be used by other VIs. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ibool.gif

status is TRUE (X) if an error occurred or FALSE (checkmark) to indicate a warning or that no error occurred. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

ii32.gif

code is the error or warning code. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

istr.gif

source describes the origin of the error or warning. Right-click the front panel error out indicator and select Explain Error or Explain Warning from the shortcut menu for more information about the error.

Details

The convolutional decoder receives the code words as an array of values representing Boolean bits. The decoder applies the Viterbi hard decision decoding algorithm to obtain the maximum likelihood transmitted data sequence.

The length N encoded input bit stream is first converted into a stream of encoded symbols of the length described by the following formula:

floor[length(input bit stream)/n]

where n is the code word length. Any bits truncated by the floor operation are buffered so that the VI can operate on a continuous stream of input bits.

The Viterbi decoder processes D trellis stages before determining the maximum likelihood survivor path, where D represents the decoder traceback depth. Typical D values equal 5 × K stages of the trellis, where K denotes the constraint length of the convolutional encoder. The Viterbi decoding is implemented using the register-exchange algorithm. For reduced computational overhead in determining the path and branch metrics, the VI uses 2(K–2)k trellis elements of size 2k elements during intermediate calculations, where K is the constraint length and k is the data word length in bits. The following diagram represents binary soft symbol decisions from a demodulator. A sample close to –1 represents a logic 1 while a sample closer to 1 represents a logic 0.

  • Viterbi Hard Decision Decoding: In these instances, the input to the convolutional decoder corresponds to binary hard-decision data generated by the demodulator. For example, you can input the output bit stream from the MT Demodulate PSK VI or the MT Map Symbols to Bits VI to the Viterbi hard-decision decoder.
  • Unquantized Viterbi Decoding: In these instances, the input to the convolutional decoder is represented by the I/Q symbols generated by the demodulator. These instances assume that the binary data is mapped to symbols such that a logic 0 is mapped to the I/Q location 1+0i, and a logical 1 is mapped to the I/Q symbol point –1+ 0i (corresponding to the symbol map [1+0i –1+0i]). You can obtain the soft symbol data in the Modulation Toolkit by decimating the oversampled complex data, which is generated by the MT Demodulate PSK VI or the MT Matched Filter VI, to symbols using the MT Decimate Oversampled Waveform VI. These instances yield the best overall performance from the different decoder operation choices.
  • Viterbi Soft-Decision Decoding: In these instances, the decoder accepts unsigned integers. Additionally, it requires you to specify the number of soft-decision bits, n soft, before decoding. These soft-symbol decisions are obtained by quantizing the soft binary symbol decisions to the specified bits of precision from the demodulator, as shown in the following table. These unsigned integers range from 0 to 2n soft.
    Note  An eight-level quantization (n soft = 3) yields less than a 0.25 dB reduction in coding gain relative to the unquantized Viterbi decoding. When n soft = 1, the Viterbi soft-decision decoding algorithm reverts to performing hard-decision decoding.

    The following table describes the nature of inputs fed into the Viterbi Soft-Decision decoder. This table assumes that BPSK symbol decisions from the demodulator are quantized to 3 bits of precision.

    Soft Decision Input Logic Value
    0 Strong logic 0
    1 Highly likely to be 0
    2 Moderate 0
    3 Uncertain (0 or 1)
    4 Uncertain (0 or 1)
    5 Moderate 1
    6 Highly likely to be 1
    7 Strong logic 1

    Generator matrices corresponding to code rates and constraint lengths obtained from Wicker, Stephen B. Error Control Systems for Digital Communications and Storage. Englewood Cliffs: Prentice-Hall, 1995.