Version:

Last Modified: February 7, 2018

Decodes a Reed-Solomon (RS) encoded integer symbol stream in shortened format.

RS codes are specialized Bose-Chaudhari-Hocquenghem (BCH) codes in which the code elements are drawn from the Galois field, GF(2*m*). RS codes are extremely powerful at burst error correction. The operations involved in Reed-Solomon encoding and decoding are performed in the GF(2*m*). The RS encoder operates on code words that are symbols or groups of bits. The parameters **code word length (n), symbols** and **data word length (k), symbols** are specified in terms of symbols. Each symbol represents a group of Log_{2}(*n*+1) bits.

Using shortened RS codes, the *k* and *n* values represent symbols. Each symbol has a length of *m* bits, which is set using the **bits per rs symbol** parameter. Create a shortened RS code by setting the shortened values of *n* and *k*, as well as the bits per symbol that correspond to the underlying Galois field arithmetic. For example, you can set *n* = 32, *k* = 28, and **bits per rs symbol** = 8, to generate a shortened RS (32,28,2) code with an error-correcting capacity of 2 RS symbols. For this code, the underlying Galois field arithmetic is performed in GF(2^{ 8 })=256.

The array of integer symbols to be decoded using the Reed-Solomon (RS) decoding scheme. Use the RS symbol encoder nodes to generate the integer symbols required for this parameter.

The RS decoder is a block decoder, which means that it operates on a block of *n* integers. To ensure that the **output symbols** stream corresponds to the entire **input symbols** array, set the length *L* of **input symbols** to be an integer multiple of *n* symbols. If the length *L* is not a multiple of *n* symbols, the last *L* modulo *n* symbols are buffered inside the decoder. These symbols are added to the incoming **input symbols** stream at the beginning of the next iteration if **reset?** is set to FALSE.

The length of the Reed-Solomon (RS) code word. Each RS symbol represents log_{ 2 }(*n*+1) bits.

**Default: **7

The length of the Reed-Solomon (RS) data word. Each RS symbol represents log_{ 2 }(*n*+1) bits.

**Default: **3

Error conditions that occur before this node runs.

The node responds to this input according to standard error behavior.

Standard Error Behavior

Many nodes provide an **error in** input and an **error out** output so that the node can respond to and communicate errors that occur while code is running. The value of **error in** specifies whether an error occurred before the node runs. Most nodes respond to values of **error in** in a standard, predictable way.

**Default: **No error

The modulation session for configuring selected properties of the Modulation nodes. Use this parameter to configure the advanced properties in the MT RS Symbol Encoder nodes. If MT RS Symbol Encoder is called with an uninitialized modulation session, the node returns an error.

**Default: **0

The number of bits per Reed-Solomon (RS) symbol. This parameter sets the Galois field over which the encoding operation is performed as GF(2^{ bits per rs symbol }). Valid values are 3 to 16, inclusive. For example, to set a shortened RS (32,28) code in the Galois field GF(256), set **code word length (n), symbol** as 32 symbols, **data word length (k), symbol** as 28 symbols, and **bits per rs symbol** as 8.

**Default: **3

A Boolean that determines whether the internal state of the decoder is cleared.

TRUE | Clears any buffered bits from previous iterations. Also initializes the Galois field structure corresponding to the Reed-Solomon n, k values. |

FALSE | Continues decoding from the previous iteration. Any buffered bits from the previous iteration are added to the beginning of the input bit stream prior to decoding. |

**Default: **TRUE

The decoded integer symbol stream. Wire this parameter to MT UnPack Bits to recover the message bits that comprise the transmitted message data.

Error information.

The node produces this output according to standard error behavior.

Standard Error Behavior

**error in** input and an **error out** output so that the node can respond to and communicate errors that occur while code is running. The value of **error in** specifies whether an error occurred before the node runs. Most nodes respond to values of **error in** in a standard, predictable way.

**Where This Node Can Run: **

Desktop OS: Windows

FPGA: Not supported

Web Server: Not supported in VIs that run in a web application