BCH code: Difference between revisions

Content deleted Content added
No edit summary
Line 4:
BCH codes use [[field theory (mathematics)|field theory]] and polynomials over finite fields. To detect errors a check polynomial can be constructed so the receiving end can detect if some errors had occurred.
 
If we wish toTo construct a BCH code tothat can detect and correct 2up to two errors, we use the [[finite field]] GF(16) or '''Z'''<sub>2</sub>[''x'']/<''x''<sup>4</sup> + ''x'' + 1>. Now if &alpha; is a root of ''m''<sub>1</sub>(''x'') = ''x''<sup>4</sup> + ''x'' + 1, then ''m''<sub>1</sub> is minimal for &alpha; since
:''m''<sub>1</sub>(''x'') = (''x'' - &alpha;)(''x'' - &alpha;<sup>2</sup>)(''x'' - &alpha;<sup>4</sup>)(''x'' - &alpha;<sup>8</sup>)=''x''<sup>4</sup> + ''x'' + 1.
 
If we wish to construct a code to correct 1 error we use ''m''<sub>1</sub>(''x''). Our codewords will be all the polynomials ''C''(''x'') satisfying
Now if we have &alpha; a root of ''x''<sup>4</sup>+''x''+1, ''m''<sub>1</sub>(''x'')=''x''<sup>4</sup>+''x''+1. Now ''m''<sub>1</sub> is minimal for &alpha; since
: ''mC''<sub>1</sub>(''x'')=(''x''- &alphaequiv;) 0 (mod ''xm''-&alpha;<supsub>21</supsub>)(''x''-&alpha;<sup>4</sup>)(''x''-&alpha;<sup>8</sup>)=''x''<sup>4</sup>+''x''+1.
 
If we wish to construct a code to correct 1 error we use ''m''<sub>1</sub>(''x''). Our codewords will be
: ''C''(''x'')&equiv;0 (mod ''m''<sub>1</sub>(''x''))
which has roots &alpha;, &alpha;<sup>2</sup>, &alpha;<sup>4</sup>, &alpha;<sup>8</sup>.
 
This does not allow us to choose many codewords - so we look for the minimal polynomial for the missing power of &alpha; from above - &alpha;<sup>3</sup>, and then the minimal polynomial for this is
:''m''<sub>3</sub>(''x'') = ''x''<sup>4</sup> + ''x''<sup>3</sup> + ''x''<sup>2</sup> + ''x'' + 1.
which has roots &alpha;<sup>3</sup>, &alpha;<sup>6</sup>, &alpha;<sup>12</sup>, &alpha;<sup>24</sup>=&alpha;<sup>9</sup>.
 
We take codewords having all of these as roots, so we form the polynomial
:''m''<sub>1,3</sub>(''x'') = ''m''<sub>1</sub>(''x'')''m''<sub>3</sub>(''x'') = ''x''<sup>8</sup> + ''x''<sup>7</sup> + ''x''<sup>6</sup> + ''x''<sup>4</sup>+1
and take codewords corresponding to polynomials of degree 14 such that
: ''C''(''x'') &equiv; 0 (mod ''m''<sub>1,3</sub>(''x''))
 
So now ''C''(&alpha;) = ''C''(&alpha;<sup>2</sup>) = ... = ''C''(&alpha;<sup>8</sup>) = 0. (*)
 
Now in GF(16) we have 15 nonzero elements, and thus our polynomial will be of degree 14 with 8 check and 7 information bits - we have 8 check bits since we have (*).