I have an application that will output numbers comprised of the digits 0-9 (numbers like 47565, 34489, 92838 – this will be the value outputted from an ADC on a microcontroller). I want to provide some FEC via Reed Solomon encoding. I am going with GF(2
4) and will just not use the values above 9.
From
this website (table on the second page), I have found that an irreducible polynomial for GF(2
4) is:
P(x) = x
4 + x + 1For GF(2
4) I have found the attached image to be the tables for addition and multiplication. In my code I will probably just have these as lookup tables with the view to reduce time taken to perform computation.
I worked out my GF(2
4) table of polynomial using the approach proposed in
this paper on page 9, except that I used the aforementioned polynomial instead of the one used in the paper. See attached.I want to maximise error correction so I am considering the following code word specification:
RS[n = 15, k = 5 ] s = 4, t = 10
From the format of the generator polynomial given in the paper linked above (page 14) and plugging in the values I worked out for my GF(2
4) table of polynomial, I am thinking that the encoding polynomial will take the form:
G(x) = (x + 2) (x + 4) (x + 8) (x + 3) (x + 6) (x + 12) (x + 11) (x + 5) (x + 10) (x + 7)Plugging this into wolfram alpha, it tells me that in expanded form G(x) equals:
x
10 + 68x
9 + 2028x
8 + 34878x
7 +382431x
6 + 2788422x
5 + 13664132x
4 + 44333032x
3 + 90899328x
2 + 106024320
x + 53222400
I am stuck with what to do next :(
In the example in the paper the x0 term of G(X) is XOR with the modulo (in my case I think this would be 10011
2 = 19
10). The coefficient is then changed to be this new calculated value, resulting in the encoding polynomial. Would I XOR 5322240010 (converted to base 2) with 100112? The numbers are much larger than those given in the example though so I am thinking I have gone wrong.In the paper, the bit string M(x) is then multiplied by x
2 to shift the message left by two symbol places (in the example t = 2 is used), for me would I just multiply by x
10 ?
For the example given in the paper all of the coefficients are single digit. In the case where there are multiple digits in each coefficient, how is the division performed at the end? Do you just write in the numbers and use them as one continuous number? For example take 12 and 13 and consider this to be 1213?
I have not been able to find any worked examples for the numbers 0 -9 which surprises me as surely this is a really common thing to want to do. Am I missing something?