Reed Solomon and Convolutional Code are chosen for IEEE 802.15.7-2011 and IEEE 802.15.7m implementation. In this post, we will review the generation of the codes and simulate their performance for comparison.

Reed Solomon

Systematic RS codes are used for FEC (typically outer FEC) with GF(16), generated by the polynomial x^{4}+x+1. The generators for the RS(n, k) codes introduced by IEEE 802.15.7-2011 [2] are as given in Table 18, where α is a primitive element in GF(16).

Table 1 – Generator polynomials for RS(n,k)

The BER simulation results of RS(15,7) and RS(15,11) in the AWGN channel are shown in Figure 1 and Figure 2. From the simulation, you can see how much Eb/No needed for your desired BER.

Convolutional Code

The typical inner FEC code is based on a rate-1/3 or rate-1/4 mother convolutional code of constraint length seven (K=7) with generator polynomial g0 = 1338; g1 = 1718; g2 = 1658, (introduced in IEEE 802.15.7-2011) as shown in Figure 3.

Tail bits of zeros shall be added at the end of the encoding in order to terminate the convolutional encoder to an all zeros state. The tail bit of zeros shall be applied to both the header and the payload when the inner convolutional code is used. Also, tail bits of zeros shall be added at the end of bit sequence before feeding into the CC encoding to ensure the proper implementation.

The simulated performance of CC 1/3 and CC 1/4 in the AWGN channel are addressed in Figure 4 and Figure 5.

Combining RS + CC Codes

We combine these two, Reed Solomon and Convolutional Code, for improving the error correction ability. Note that an interleaver is placed in between two correction layers for maximizing the correction performance.

The simulation of BER at different layers are recorded as follows.

Conclusion

Reed Solomon and Convolutional Code are combined as an effective FEC, serving the second generation of FEC. Admittedly, there is the third FEC generation and beyond.

The combination of an inner FEC code and an outer FEC code is examined and implemented in most OCC systems, being coexistent to OWC standards of the IEEE Standard Association (IEEE SA).