Decode BCH code to recover binary vector data
Block sublibrary of Error Detection and Correction
The BCH Decoder block recovers a binary message vector from a binary BCH codeword vector. For proper decoding, the first two parameter values in this block must match the parameters in the corresponding BCH Encoder block.
The full length values of N and K must produce a valid narrow-sense BCH code.
If the decoder is processing multiple codewords per frame, then the same puncture pattern holds for all codewords.
For a given codeword length, N, only specific message length Ks are valid for a BCH code. For a full-length BCH code, N must be of the form 2M-1, where .
No known analytic formula describes the relationship among the codeword length, message length, and error-correction capability. For a list of some valid values of K corresponding to values of N up to 511, see the table on the BCH Encoder reference page.
You can specify the shortened message length, the primitive polynomial, and generator polynomial in their respective text boxes, which appear after selecting their corresponding check boxes.
To output error information from the block, select Output number of corrected errors. Selecting this option creates a second output port, which outputs the number of errors detected during decoding of the codeword. A negative integer indicates that the block detected more errors than it could correct using the coding scheme.
If decoding fails, the message portion of the decoder input is returned unchanged as the decoder output.
The sample times of all input and output signals are equal.
For information about the data types each block port supports, see the Supported Data Type table on this page.
This block supports puncturing when you select Punctured
code. This selection enables the Puncture vector parameter,
which takes in a binary vector to specify the puncturing pattern.
For a puncture vector,
1 represents that the data
symbol passes unaltered, and
0 represents that
the data symbol gets punctured, or removed, from the data stream.
This convention applies for both the encoder and the decoder. For
more information, see Shortening, Puncturing, and Erasures.
0s have precisely
opposite meanings for the puncture and erasure vectors. For an erasure
1 means that the data symbol is to be replaced
with an erasure symbol, and
0 means that the data
symbol is passed unaltered. This convention is carried for both the
encoder and the decoder.
y = c * x denotes that
an integer multiple of
The number of punctures value is equal to the number of zeros in the puncture vector.
M is the degree of the primitive polynomial.
Each group of M bits represents an integer between
belongs to the finite Galois field
|Specify shortened message length|
Integer-Input RS Encoder
Integer-Output RS Decoder
Binary-Input RS Encoder
Binary-Output RS Decoder
The codeword length.
The message length.
Selecting this check box enables the Shortened message length, S text box.
The shortened message length. When you specify this parameter, provide full-length N and K values to specify the (N,K) code that is shortened to an (N–K+S,S) code.
Selecting this check box enables the Generator polynomial text box.
A row vector that represents the generator polynomial as a character vector or as binary coefficients in order of descending powers.
The length of the Generator polynomial must be N–K+1.
This field defaults to
'X^10 + X^8 + X^5 + X^4 + X^2
+ X + 1', which is equivalent to
This parameter appears only when you select Specify generator polynomial.
Each time a model initializes, the block performs a polynomial check. This check verifies that X N + 1 is divisible by the user-defined generator polynomial, where N represents the full code word length. Selecting this check box disables the polynomial check. For larger codes, disabling the check speeds up the simulation process. You should always run the check at least once before disabling this feature.
This check box appears only when you select Specify generator polynomial.
Selecting this check box enables the Primitive polynomial text box.
A row vector that represents the binary coefficients of the primitive polynomial in order of descending powers.
This field defaults to
'X^4 + X + 1'. This
is the primitive polynomial used for a (15,5) code,
This parameter appears only when you select Specify primitive polynomial.
Selecting this check box enables the Puncture vector text box.
This parameter appears only when you select Puncture code.
A column vector of length N–K.
In the Puncture vector, a value of
that the data symbol passes unaltered, and
that the data symbol gets punctured, or removed, from the data stream.
The default value is
Selecting this check box opens the erasures port,
Through the port, you can input a binary column vector the same size as the codeword input.
Erasure values of
1 correspond to erased
bits in the same position in the codeword. Values of
to bits that are not erased.
Selecting this check box gives the block an additional output
Err, which indicates the number of errors
the block corrected in the input codeword.
|Port||Supported Data Types|
This object implements the algorithm, inputs, and outputs described in Algorithms for BCH and RS Errors-only Decoding.
 Wicker, Stephen B., Error Control Systems for Digital Communication and Storage, Upper Saddle River, N.J., Prentice Hall, 1995.
 Berlekamp, Elwyn R., Algebraic Coding Theory, New York, McGraw-Hill, 1968.
 Clark, George C., Jr., and J. Bibb Cain, Error-Correction Coding for Digital Communications, New York, Plenum Press, 1981.