Key Technologies of GPON:FEC
Forward error correction (FEC) is specified to use a systematic code so that FEC decoding is optional at the ONT or OLT receivers.
The FEC code is a Reed Solomon (RS) code, specifically the RS (255, 239) code. This is a block code that takes 239 data bytes and adds 16 error check code (parity) bytes after the data bytes to create a 255-byte block. The RS (255, 239) code allows correction and detection of multiple byte errors, which effectively results in a 3-4 db link loss budget gain.
For both the upstream and downstream, no additional bandwidth is added for the error check bytes. As illustrated in figures below, the downstream frames and upstream bursts are a string of 255-byte blocks consisting of the 239 data bytes followed by the 16 error check bytes, with the error check bytes occupying time slots that would be used for payload data if no FEC was present.
Hence, using FEC decreases the payload bandwidth of the signal in the hope of increasing the overall bandwidth efficiency by reducing the number of client data packets that have to be re-transmitted due to transmission errors. Also, FEC is desirable for TDM clients since re-transmission is not an option for them.
Figure 1 illustrates the division of the downstream frame into 255-byte blocks. The PCBd is included in the first 255-byte code word. Since the downstream frame is not divisible by 255, the last block must be shorter than 255 bytes.
In other words, if we let Z be the number of bytes in the GTC frame and X be the number of bytes in the last block, then X = (Z) mod255. For example, at 2.488 Gbit/s the frame length Z =38,880 bytes, which leads to 152 255-byte code blocks and a last block with 120 bytes. The 16 error check bytes for the last block will be calculated over a logical block that includes the X actual data bytes followed by 239-X ‘0’ padding bytes. For the 2.488 Gbit/s example, this gives 104 data bytes followed by 135 ‘0’ pad bytes to create the 16-byte error check. The ‘0’ padding bytes are not transmitted, but are re-inserted by the receiver when it performs its error check calculation for this block.
The upstream bursts, illustrated in Figure 2, are similar to the downstream frame except that the first codeword does not include the entire physical layer overhead. Rather, the first codeword begins with the BIP and does not include the preamble and delimiter fields. The burst is divided into 239-byte payload blocks that are mapped into the 255-byte codeword blocks.
As with the downstream frame, the last codeword will typically contain less than 239 payload bytes, so the same ‘0’ padding mechanism is used for this codeword. Channel error rates that require FEC will also typically cause corruption of the upstream PLOu delimiter field. For this reason, the OLT must be able to tolerate up to three bit errors in a 16-bit delimiter and up to four bit errors in a 20-bit delimiter field.