Search code examples
signal-processingcommunicationcrc32telecommunicationcyclic

CRC calculating and BCH encoding [THEORY]


I have question about BCH Encoding. Is BCH Encoding is the same operation like CRC remainder calculation? M(x) mod G(x) = R(x) and R(x) is my BCH code?


Solution

  • You are pretty much correct. To be precise, if your generator polynomial is g(x) and your block size is n, then the valid code words are the multiples of g(x) with degree < n.

    Lets say you have a message m(x) of degree < k, and g(x) has degree n-k: There are different ways you could turn your message into a unique valid code word. m(x)*g(x) works fine, for example... But we commonly want the code word to start with our actual message, followed by some check bits. In that case, the code word is:

    m(x)*x^(n-k) - ( m(x)*x^(n-k) mod g(x) )

    Most CRC checks are calculated in exactly this way as well, since CRC codes and BCH codes are both polynomial codes (https://en.wikipedia.org/wiki/Polynomial_code). They just have different generator polynomials.