Keywords

1 Introduction

Spatially coupled low-density parity-check (SC-LDPC) codes are first proposed by Felstrom and Zigangirov [1]. It is a kind of convolutional LDPC code [2]. Kudekar et al. have proved that SC-LDPC code has threshold saturation characteristic [3], that is, the belief propagation (BP) thresholds of SC-LDPC code can reach the maximum a posteriori (MAP) thresholds of corresponding regular LDPC code.

Using BP decoding long codes may cause high latency and need large memory. In [4], a window decoding (WD) method is proposed to solve this problem. The parity-check matrix \(\varvec{H}_{\text{sc}}\) of SC-LDPC code shows the structure of a nonzero diagonal band. Hence, the BP decoding can be operated in a window. The window slides along the diagonal band of the parity matrix and the target symbols are estimated one by one with low decoding latency until the whole codeword is decoded. Limiting BP decoding to a window has the advantage of reducing decoding latency, complexity, and memory, but at the cost of decoding performance. Therefore, Shi Yuan Mo, Inayat, and Peng Kang propose to introduce supervision [5], effective decoding termination [6], and retain local reliable message [7], respectively, to improve the performance of WD. Then, the P-EXIT analysis is applied for SC-LDPC code with window decoding in [8] to reduce decoding complexity. The research of Shi Yuan Mo et al. shows that the average error probability of the target symbols they define does not monotonically decrease with the iteration.

Inspired by this phenomenon, we find that the number of error bits \(\textbf{err}\) of the target symbols does not monotonically decrease with the iteration progresses. This means that the log-likelihood ratio (LLR) generated when the window decoding terminates is not the best choice for making decisions. Therefore, we propose an improved window decoding (iWD) that monitors the minimum of \(\textbf{err}\) and store the related LLR. Then, the target symbols can be estimated according to the stored LLR at the end of the window decoding. Then, we analyze and simulate the performance of SC-LDPC code WD and iWD in the additive white Gaussian noise (AWGN) channel. The simulation results show that the performance of the iWD outperforms the conventional WD.

2 SC-LDPC Codes

An SC-LDPC code can be constructed by spatial coupling of protographs [9, 10]. Given a regular LDPC protograph, an SC-LDPC protograph can be obtained by coupling L replicas of a regular LDPC protograph through edge spreading, where L represents the coupling length. For example, a (J, K)-regular LDPC protograph is given in Fig. 1a, where J represents column weight and K represents row weight. Figure 1b is to make L copies of regular LDPC protograph. And they are indexed by t. Figure 1c shows the process of edge spreading. Defining w as the coupling width, then the edge of the variable nodes (VNs) at t is connected to the checking nodes (CNs) at t, t + 1, …, t + w. The protograph of the (3, 6) SC-LDPC codes is shown in Fig. 1d.

Fig. 1
figure 1

a A (3, 6)-regular LDPC protograph, b L replicas of (3, 6)-regular LDPC protographs, c process of edge spreading with w = 2, and d protograph of the (3, 6) SC-LDPC codes with w = 2

A base matrix \(\varvec{B} = \left[ {\varvec{B}({{i}},{{j}})} \right]_{{{\text{a}} \times {\text{b}}}}\) can represent a regular LDPC protograph (\(a = J/(\gcd (J,K))\), \(b = K/(\gcd (J,K))\), \(\gcd (J,K)\) denote the maximum common divisor of J and K). Figure 1a shows that the base matrix corresponding to the (3, 6)-regular LDPC protograph is \(\varvec{B} = \left[ {\begin{array}{*{20}c} 3 & 3 \\ \end{array} } \right]\). The edge spreading divides the base matrix into component base matrices, and the component base matrices corresponding to Fig. 1c are \(\varvec{B}_{i} = \left[ {\begin{array}{*{20}c} 1& 1\\ \end{array} } \right]\), \(i = \left\{ {0,1, 2} \right\}\).

Therefore, the base matrix of SC-LDPC code is

$$\varvec{B}_{{{\text{sc}}}} = \left[ {\begin{array}{*{20}c} {\varvec{B}_{0} } & {} & {} & {} \\ {\varvec{B}_{1} } & {\varvec{B}_{0} } & {} & {} \\ \vdots & {\varvec{B}_{1} } & \ddots & {} \\ {\varvec{B}_{{\text{w}}} } & \vdots & \ddots & {\varvec{B}_{0} } \\ {} & {\varvec{B}_{{\text{w}}} } & \ddots & {\varvec{B}_{1} } \\ {} & {} & \ddots & \vdots \\ {} & {} & {} & {\varvec{B}_{{\text{w}}} } \\ \end{array} } \right]_{{(({{L + w}}){{a}} \times {{Lb}})}}$$
(1)

\(\varvec{H}_{\text{sc}}\) can be obtained by further lifting \(\varvec{B}_{\text{sc}}\) by the lifting factor M. Hence, the code rate of SC-LDPC code is

$$R_{\text{sc}} = 1 - \frac{(L + w)Ma}{LMb}$$
(2)

3 Window Decoding and Improved WD

The parity matrix of SC-LDPC code presents a nonzero diagonal band structure. As shown in Fig. 2, the gray area is its nonzero diagonal band. Therefore, BP decoding can be constrained in a window, and the window size W needs to be satisfied with the condition \(\left( {w + 1} \right) \le W \le L\).

Fig. 2
figure 2

WD of SC-LDPC codes, where the coupling width w = 2, the coupling length L = 10, and the window size W = 3

The general principle of WD is given below. After receiving partial codeword, the decoding window starts BP decoding through a partial Tanner graph of the codeword and then slides along the diagonal band to estimate the target symbols one by one and generate a lower decoding latency. The symbol set contained in the leftmost protograph in the decoding window is called the target symbol. Once the BER of the target symbol is 0 or the number of iterations reaches the maximum, the decoding window terminates and outputs the decoding result of the current target symbol. Then, the decoding window slides to the next position to decode the next target symbol, and the sliding process is shown in Fig. 2. Then, the above process is repeated until the entire codeword is decoded.

Assume that, the codeword is binary phase-shift keying (BPSK) modulated and sent to the AWGN channel. Let \(\varvec{s} = ({{s}}_{1} ,{{s}}_{2} ,\ldots,{{s}}_{{N}} )\) and \(r = ({{r}}_{1} ,{{r}}_{2} ,\ldots,{{r}}_{{N}} )\) represent the transmitted and accepted codeword, respectively, where \(N = LMb\). The decoding process of WD is as follows.

Initialization: After receiving \(r_{m}\) from the channel in the mth window, the LLR of \(s_{m}\) can be initialized to

$$L_{m} = \ln \left( {\frac{{P\left( {s_{m} = 0|r_{m} } \right)}}{{P\left( {s_{m} = 1|r_{m} } \right)}}} \right)$$
(3)

Iterative Process: Only exchange and update the information of VNs and CNs in the current window. At lth iteration, the information transmitted by check node (CN) n to the connected variable node (VN) m is

$$R_{nm}^{l} = \ln \frac{{1 + \prod\nolimits_{{k \in M_{1} (n)\backslash m}} {\tanh (Q_{nk}^{l - 1} /2)} }}{{1 - \prod\nolimits_{{k \in M_{1} (n)\backslash m}} {\tanh (Q_{nk}^{l - 1} /2)} }}$$
(4)

Information passed by VN m to the connected CN n is

$$Q_{nm}^{l} = \left\{ {\begin{array}{*{20}l} {L_{m} } \\ {L_{m} + \sum\nolimits_{{k \in M_{2} (m)\backslash n}} {R_{km}^{l} } } \\ \end{array} } \right. \, \begin{array}{*{20}c} {l = 0} \\ {l > 0} \\ \end{array}$$
(5)

\(M_{1} (n)\backslash m\) represents the set of remaining VNs connected to CN n except the mth VN. Similarly, \(M_{2} (m)\backslash n\) represents the set of remaining CNs connected to VN m except for the nth CN.

Decision And Window Sliding: After the current iteration, the LLR of VNs is calculated, and then, the hard decision is made based on the \(Q_{nm}^{l}\). If \(Q_{nm}^{l} \ge 0\), \(s^{\prime} = 0\), or \(s^{\prime} = 1\), otherwise. Let \(\textbf{err}\) denote the number of error bits of the target symbol. If the corresponding bit is decoded incorrectly, \(\textbf{err}\) will be increased by

$$\textbf{err} = \textbf{err} + 1$$
(6)

If the BER of the target symbol is zero or the number of iterations reaches the maximum, the current window decoding will terminate and output the decoding result and then keep and propagate the information of the overlapped part (the shadow area in Fig. 2) from the current window to the next window and slide to the next position for decoding; otherwise, return to step 2 to continue the iteration.

Note that, \(\textbf{err}\) does not monotonically decrease with the iteration progresses. Therefore, improved WD is proposed. This scheme monitors the minimum of \(\textbf{err}\) and stores the related LLR. Let \(\text{err}^{ * }\) denote the minimum of error bits of the target symbol. \(\text{err}^{ * }\) will be initialized as \(\text{err}^{ * } = 10^{10}\). As the iteration progresses, if \(\textbf{err} < \text{err}^{ * }\), \(\text{err}^{ * }\) will be updated by

$$\text{err}^{ * } = \textbf{err}$$
(7)

And the LLR of the target symbol will be stored. Once the BER of the target symbol is zero or the number of iterations reaches the maximum, the current decoding window will estimate the target symbol based on the stored LLR. Then, the current decoding window slides to the next position to decode the next target symbol.

4 Simulation Results and Analysis

This section simulates the (3, 6) SC-LDPC code, its corresponding base matrix \(B = \left[ {\begin{array}{*{20}c} 3 & 3 \\ \end{array} } \right]\), the coupling width w = 2, and the coupling length L = 50. The codeword is transmitted in the AWGN channel after BPSK modulation.

Figures 3 and 4 show the BER performance of the SC-LDPC code with the lifting factor M = 10 and M = 50, respectively. Hence, the codeword length is 1000 and 5000, respectively, and both code rates are 0.48. Eb/N0 represents the signal-to-noise ratio. It is shown in each figure that iWD performance is better than WD performance at different window sizes. When the window size is 12 and the BER is \(10^{ - 4}\), the iWD of SC-LDPC with code length of 1000 has a gain of about 0.22 dB compared with that of WD. When the window size is 12 and the BER is \(10^{ - 4}\), the iWD of SC-LDPC with code length of 5000 has a gain of about 0.12 dB compared with that of WD. Theoretically, compared with WD, iWD only monitors the minimum error bit of the target symbol, and its decoding termination conditions have not changed. Therefore, the decoding complexity of iWD and WD is approximately the same.

Fig. 3
figure 3

BER curve of the SC-LDPC code with code length N = 1000

Fig. 4
figure 4

BER curve of the SC-LDPC code with code length N = 5000

5 Conclusions

This paper introduces the window decoding of SC-LDPC codes and then proposes an improved scheme. The improved scheme monitors the minimum number of error bits of the target symbols and stores the related LLR. Then, the target symbols are estimated according to the stored LLR to make the more reliable decoding choices. The simulation results show that the improved scheme outperforms conventional WD.