# Hard-Decision Coded Modulation for High-Throughput Short-Reach Optical Interconnect
## 2 AIRs, CM, and Proposed Design
### Advanced CM Schemes
#### 2.2.2 Improved FEC  
SCC is constructed with a sequence of binary matrices \(\mathbb{C}_{i}\in\{0,1\}^{w\times w}\), \(i=0,1,2,\ldots\), which are ordered like a staircase, as shown in ([47], Figure 1b). Following the notations in [47], let \((n_{c},k_{c},t)\) denote the parameters of BCH code \(\mathcal{C}\), where \(n_{c}\) is the codeword length, \(k_{c}\) is the information length, and \(t\) is the error-correcting capability. The code rate of SCC with component code of \(\mathcal{C}\) is \(R=2k_{c}/n_{c}-1\), while the size of \(\mathbb{C}_{i}\) is \(w=n_{c}/2\). Standard decoding of SCCs is performed using a sliding window, wherein BDD is used to iteratively decode each component code. BDD is very simple, however, its error correcting capability is limited to \(t=\lfloor\frac{d_{0}-1}{2}\rfloor\) errors, where \(d_{0}\) is the minimum Hamming distance. Sometimes, BDD will erroneously decode a received sequence with more than \(t\) errors, a situation known as a _miscorrection_. Miscorrections are highly undesirable and are known to degrade the performance of iterative BDD by introducing additional errors into the iterative decoding process.  
In order to identify miscorrections and address those sequences with larger than \(t\) errors, SABM decoder exploits the channel soft information (see the two red highlighted blocks in Figure 2). The SABM decoder calculates the absolute value of LLR (\(|\lambda|\)) to know about the reliability of each bit (a higher value of \(|\lambda|\) indicates a more reliable bit). According to the values of \(|\lambda|\), the SABM decoder marks some highly reliable bits (HRBs) and highly unreliable bits (HUBs). If \(|\lambda|\) is larger than a threshold \(\delta\), the corresponding bit will be marked as a HRB. The selection of \(\delta\) is discussed in [47] (Section 6). On the other hand, the \(d_{0}-t-1\) bits with smallest \(|\lambda|\) values in each row of SCC block \(\mathbb{C}_{i}\) are marked as HUBs.  
With the marked information, once the component BDD decoder has finished decoding, the SABM decoder will check its decoding status. Only when BDD succeeds and the output is not in conflict with HRBs and/or zero-syndrome component codewords, the output will be accepted by the SCC decoder. Otherwise, it will be marked as a miscorrection and the suggested bit flips will be rejected. If miscorrection happens, SABM flips the \(d_{0}-t-w_{\rm H}(e)\) most unreliable bits from the HUBs, where \(e\) is the error pattern detected by BDD and \(w_{\rm H}\) denotes Hamming weight. For BDD decoding failures, the decoder will also flip the most unreliable bit from the HUBs. The intuition is that this approach in some cases will make the new sequence close enough to the transmitted codeword, i.e., with only \(t\) errors (which can be handled by the component BDD decoder).  
Figure 2: Optical fiber communication system model under consideration. The optical fiber channel is modeled using a channel with an optical fiber link comprising multiple spans (\(N_{\rm SP}\) is the number of spans). Each span is followed by an EDFA. The highlighted green and red blocks are used to improve the performance of coded modulation in this paper.  
The main feature of the SABM algorithm is its low complexity, as explained in what follows. The SABM algorithm only requires modifications to the decoding structure of the last block of each decoding window. Furthermore, in the SABM algorithm, each component code needs to be decoded at most twice. The relative increased complexity around the optimum threshold \(\delta\) is only \(\sim\)4% at the post-FEC BER of \(10^{-4}\) with respect to standard decoding for SCC, in terms of the number of additional calls to the component BDD decoder. Also, the algorithm is based on marking bits only, which simply requires to store very small part of the soft bits (LLRs). Finally, marked bits do not need to be tracked and updated during the iterative process either. The complexity of the SABM algorithm has been discussed in details in [47].