Protograph-Based Raptor-Like LDPC Codes

Protograph-Based Raptor-Like LDPC Codes

Abstract

This paper proposes a class of rate-compatible LDPC codes, called protograph-based Raptor-like (PBRL) codes. The construction is focused on binary codes for BI-AWGN channels. As with the Raptor codes, additional parity bits are produced by exclusive-OR operations on the precoded bits, providing extensive rate compatibility. Unlike Raptor codes, the structure of each additional parity bit in the protograph is explicitly designed through density evolution. The construction method provides low iterative decoding thresholds and the lifted codes result in excellent error rate performance for long-blocklength PBRL codes. For short-blocklength PBRL codes the protograph design and lifting must avoid undesired graphical structures such as trapping sets and absorbing sets while also seeking to minimize the density evolution threshold. Simulation results are shown in information block sizes of , and . Comparing at the same information block size of bits, the PBRL codes outperform the best known standardized code, the AR4JA codes in the waterfall region. The PBRL codes also perform comparably to DVB-S2 codes even though the DVB-S2 codes use LDPC codes with longer blocklengths and are concatenated with outer BCH codes.

1Introduction

INCREMENTAL redundancy (IR) systems with receiver confirmation are widely used in modern communication systems, e.g. in the 3GPP-LTE standard. Receiver confirmation refers to a class of feedback systems where the confirmation (a decision to conclude a transmission session) is determined at the receiver. For general discussion of feedback systems and the various types of confirmation see [1].

To achieve high expected throughput, modern IR systems often use a family of good rate-compatible channel codes that provides improved error protection as the number of received symbols available to the decoder increases. This paper provides a general technique for constructing families of rate-compatible low-density parity-check (LDPC) codes and provides numerical results showing excellent performance.

The remainder of this section briefly reviews previous work on the design of rate-compatible channel codes and then provides a summary of the main contributions of this paper.

1.1Rate-Compatible Channel Codes

Rate-compatible punctured convolutional (RCPC) codes and rate-compatible punctured turbo (RCPT) codes are among the most popular rate-compatible channel codes used in IR systems. For both RCPC and RCPT codes, a collection of rate-compatible puncturing patterns are often carefully designed to ensure good error rate performance across the family of rates despite the rate-compatible constraint. In [2], Hagenauer optimized performance when the puncturing patterns are restricted to be periodic with a relatively short period. Following Hagenauer’s framework, Rowitch et al. studied RCPT codes with periodic puncturing patterns [3]. Analyzing the performance of randomly punctured turbo codes, Liu and Soljanin showed that RCPT code performance degrades significantly when the punctured code rate is above a threshold [4].

Low-Density Parity-Check (LDPC) codes were first introduced by Gallager in his dissertation in 1963 [5]. Gallager defines an LDPC code as a length- binary code with a parity-check matrix containing ones in each column and ones in each row. These LDPC codes are now referred to as regular LDPC codes.

Tanner [6] proposed the construction of a class of long-blocklength codes that combines a collection of short blocklength codes through a bipartite graph. He also generalized the decoding algorithm proposed by Gallager. Tanner’s work introduced the representation of LDPC codes as bipartite graphs. MacKay et al. [7] showed that LDPC codes provide capacity-approaching performance similar to turbo codes [8] when decoded by a message-passing algorithm with soft information. MacKay et al. also proposed several heuristics to construct good LDPC codes.

In contrast to regular LDPC codes, irregular LDPC codes have parity-check matrices that have a variety of column weights and row weights. By optimizing the variable-node and check-node degree distributions, Luby et al. [9] showed that properly constructed irregular LDPC codes can achieve rates even closer to capacity than the regular ones. Richardson, Shokrollahi and Urbanke [10] created a systematic method called density evolution to design and analyze the optimal degree distribution of LDPC codes based on the assumption that the blocklength can be infinitely long.

Because of their capacity-approaching performance at individual rates, LDPC codes provide a promising structure for constructing a family of rate-compatible codes. Aiming to achieve high throughput in IR systems for various classes of channels, numerous heuristics have been proposed to construct rate-compatible LDPC codes. The first work in the construction of rate-compatible LDPC codes appears to be [11]. See also [12] and the references therein.

Ha et al. studied the asymptotic behavior of rate-compatible punctured LDPC codes based on density evolution [15]. They also studied the design of puncturing patterns for LDPC codes with relatively short blocklengths [16]. Many heuristics have been proposed for designing better puncturing patterns to enhance the error-rate performance and/or to allow efficient encoding. See for example, [17].

The analysis of IR systems using rate-compatible LDPC codes has been studied by Sesia et al. [20] based on random coding and density evolution of infinite-length LDPC ensemble. The focus in [20] is on long-blocklength codes for wireless fading channels whereas this paper focuses on memoryless channels and studies both short-blocklength and long-blocklength regimes.

Although not rate-compatible, a row-combining approach is used in [21] to support a variety of rates that share the same encoder structure and have the same blocklength.

Thorpe [22] introduced a new class of LDPC codes called protograph-based LDPC codes, or protograph codes. These codes were studied extensively by Divsalar et al. [23]. The design of protograph codes begins with the construction of a relatively small bipartite graph called the protograph. After using density evolution to properly design the protograph , the protograph is copied many times and the edges are permuted carefully to obtain a bipartite graph with a desired blocklength. As discussed in [23], protograph codes allow efficient decoder implementation in hardware.

Obtaining a family of rate-compatible LDPC codes through rate-compatible puncturing of a low-rate mother code is straightforward. However, it is commonly observed that punctured finite-length LDPC codes suffer from a larger performance degradation compared to punctured turbo codes at high rates [12]. Another way to construct rate-compatible codes is by the method of extending codes. Yazdani et al. studied the construction of rate-compatible LDPC codes based on a combination of extending and puncturing [12]. Yazdani et al. concluded that a combination of the two methods yields better rate-compatible codes than using puncturing alone. The current paper constructs a family of rate-compatible LDPC codes by similar techniques. Our focus, however, is on a special class of protograph codes that provides numerous benefits in encoding and decoding complexity while also achieving excellent performance across a variety of rates.

The design of rate-compatible protograph codes first appeared in [24]. Nguyen et al. further optimized the design of rate-compatible protograph code families by extrinsic information transfer (EXIT) analysis and a greedy search of a well-chosen collection of nested protographs [25]. Using density evolution, the current paper also studies the construction of a family of rate-compatible protograph codes by extending high-rate protograph codes. In contrast to [24] and [25], this paper focuses on the design of protograph code families that have a similar structure to the class of rateless codes called Raptor codes [26]. Constraining our design to the structure of Raptor codes makes the construction and optimization manageable while providing outstanding performance and extensive rate-compatibility.

Following the Raptor-like structure proposed in [27], Nitzold et al. applied spatial coupling [28] to improve the threshold, which can be also viewed as Raptor-like LDPC convolutional codes [29]. Nitzold et al. focused on the analysis of the asymptotic decoding threshold where the rate loss due to the time-spreading number is negligible. In addition to asymptotic threshold analysis, this paper also studies the construction of finite-length LDPC codes.

A recent work by Nguyen et al. [30] considers a general structure for extending rate-compatible protograph codes but ends up proposing an example protograph that has the Raptor-like structure as first proposed in [27] and [31].

1.2Main Contributions and Organization

This paper proposes a class of rate-compatible LDPC codes called protograph-based raptor-like (PBRL) LDPC codes. The construction and optimization of PBRL codes are discussed and simulation results are presented. Comparing to existing codes in the literature (e.g. AR4JA codes in [32], DVB-S2 codes in [33] and protograph codes in [25]), PBRL codes show outstanding performance while providing extensive rate-compatibility.

The rest of the paper is organized as follows: Section 2 presents the construction of PBRL codes and Section 3 provides the optimization methods for designing PBRL codes. Examples of constructing PBRL codes are given in Section 4. Finally Section 5 concludes the paper.

2Protograph-Based Raptor-Like LDPC Code

This section introduces the structure of PBRL codes. The encoding and decoding of PBRL codes are also discussed.

2.1Overview of Protograph Codes and Raptor Codes

In order to facilitate efficient hardware implementation of the decoder, LDPC codes are often constructed with certain structures, e.g. quasi-cyclic LDPC codes and regular LDPC codes [34]. Protograph-based LDPC codes, or simply protograph codes, are also structured codes and allow efficient hardware implementation [23].

Figure 1: Lifting process of the [7, 4] Hamming code.
Figure 1: Lifting process of the Hamming code.

A protograph, or projected graph, is a bipartite graph with a relatively small number nodes. A copy-and-permute operation, often referred to as “lifting”, is applied to the protograph to obtain larger graphs of various sizes, resulting in longer-blocklenth LDPC codes. As part of lifting, the variable-node connections of the edges of the same type are permuted among the protograph replicas.

An code is a linear block code that encodes bits into bits. Figure 1 shows an example of the lifting process for the Hamming code. For clarity only three types of edges are permuted and each type is color coded with the same color. Note that the protograph can also have parallel edges, i.e., multiple edges connecting a pair of variable node and check node. Parallel edges in a protograph can later be removed through the lifting process. A detailed discussion on parallel edges in protographs can be found in [23].

Introduced by Luby [35] and Shokrollahi [26] respectively, LT codes and Raptor codes share many similarities with LDPC codes and are shown to achieve the binary erasure channel (BEC) capacity universally. Etesami et al. [36] explored the application of Raptor codes to binary memoryless symmetric channels and derive various results, including the fact that Raptor codes are not universal except for the BEC. Note that results on Raptor codes such as [26] and [36] rely heavily on the assumption of large information blocks.

2.2The Structure of PBRL Codes

Figure 2: Protograph for a PBRL code with a rate-2/3 precode.
Figure 2: Protograph for a PBRL code with a rate- precode.

The structure of a PBRL code can be best illustrated by its protograph. Figure 2 shows the protograph of a PBRL code. This protograph consists of two parts: a relatively simple protograph code (on the left) representing the protograph of the precode and a number of check nodes (on the right) that are each connected to several variable nodes of the precode and one additional variable node that has only a single edge. The second part represents the protograph of an LT code. The highest rate shown in the example of Figure 2 is , which is obtained by transmitting only the variable nodes of the precode. Lower-rates are obtained by transmitting the variable nodes in the LT-code protograph starting from the top node.

After the lifting operation, the first part can be seen as an LDPC precode in a Raptor code, and the degree-one variable nodes of the second part can be efficiently encoded with the precoded symbols in a manner similar to the LT code. Hence the structure of this protograph code resembles a Raptor code, but with a deterministic (rather than random) encoding rule for combining the precoded symbols.

The bipartite graph of a protograph can be described by a protomatrix, which is the parity check matrix of a protograph. Let be the all zero matrix and be the identity matrix with the appropriate dimensions. The protomatrix of the protograph shown in Figure 2 is given as

where and are given as

and

Hence to fully express the protomatrix of a PBRL protograph it is enough to specify and . Due to space limitation we will present the proposed protographs in terms of protomatrices whenever the structure of the protograph is clear.

2.3Decoding and Encoding of PBRL Codes

Consider the decoding of a traditional Raptor code that collects the precoded symbols and encodes them with an LT code. In the case of an LDPC precode used with an LT code, the decoding often proceeds as follows: the decoder first performs BP decoding on the LT code and then performs BP decoding on the precode. The two-stage decoding implies the use of two different BP decoders, each exchanging their extrinsic information after the iterative decoding.

In [37], the authors note that because of the two-stage decoding, the complexity of Raptor codes is higher than that of rate-compatible LDPC codes. The PBRL code family always transmits the output symbols of the precode and has deterministic connections in the LT code. These two properties facilitate joint decoding of the LT code part and the precode. For traditional Raptor codes that use randomized encoding, the initial transmission of the LT symbols may not contain enough information for BP decoding to succeed even in a noiseless setting. Always transmitting the precode symbols allows PBRL codes to have the potential for successful decoding after the initial transmission.

For high-rate PBRL codes, the decoder can deactivate those check nodes in the LT part for which the neighboring degree-one variable node is not transmitted, implying implementation advantages. Thus, at the highest rate when only the precode is transmitted, none of the check nodes in the LT code part need to be activated, offering significant complexity reduction.

The encoding of the PBRL codes is as efficient as Raptor codes: after encoding the precode, the encoding of the LT code part only involves exclusive-or operations on the precode output symbols. For efficient encoding of the precode, see the discussion in [23] on efficient encoding of protograph codes.

Many techniques for extending LDPC codes exist in the literature as summarized in Section 1. In comparison to the approaches in the literature, the Raptor-Like structure is very restrictive. One might expect the structural constraints to also constrain performance as compared to less-restrictive structures for extending LDPC codes. One of the main conclusions of our paper is that despite the structural constraints, we obtain Raptor-like protographs with very low iterative decoding thresholds. By careful design of the protograph and the lifting process, the resulting finite-length codes can outperform existing rate-compatible LDPC codes that have been designed without the constraint of a Raptor-like structure. This observation provides a new perspective on designing rate-compatible LDPC codes that sometimes less is more.

3Optimization of Protograph-Based Raptor-Like LDPC Codes

This section presents optimization procedures for finding good PBRL codes with short and long blocklengths. Belief propagation (BP) decoding is assumed. The optimization criteria are primarily based on minimizing the iterative decoding threshold. To simplify the computation we use a modified version of the reciprocal channel approximation (RCA) algorithm to compute the threshold. The following subsection briefly reviews the RCA. After presenting the modified RCA, we describe the optimization procedures and discuss the construction of protographs for PBRL codes.

3.1Density Evolution with Reciprocal Channel Approximation

For BI-AWGN channels, the asymptotic iterative decoding threshold [38] characterizes the performance of the ensemble of LDPC codes based on a specified protograph. This threshold indicates the minimum SNR required to transmit reliably with the underlying ensemble of codes as the blocklength grows to infinity.

Computing the exact iterative decoding threshold for BI-AWGN requires a large amount of computation. The RCA [39][23] provides a fast and accurate approximation to the density evolution originally proposed by Richardson et al. [38][10]. Experimental results [23],[39] show that the deviation from the exact density evolution is less than dB.

The RCA for BI-AWGN channel uses a single real-valued parameter , the SNR, to approximate the density evolution. Define the reciprocal SNR as such that where is the capacity of the BI-AWGN channel with SNR :

The self-inverting reciprocal energy function [39]

transforms parameters and to each other. In other words, and .

Let be the channel SNR, be the message passed along an edge from a variable node to a check node and be the message passed along an edge from a check node to a variable node. Let be the set of edges that connect to a check node and be the set of edges that connect to a variable node .

RCA first initializes the message to if the edge is connected to a punctured variable node and to otherwise. For all edges in the graph, RCA then computes a sequence of messages where is the maximum number of iterations.

The original density evolution [38] determines the threshold based on the densities of all outgoing messages from variable nodes. Aiming to approximate this density evolution, RCA [39] determines the decoding threshold as the minimum such that for all edges in the graph, where is a stopping threshold.

Note that for the edge connecting to a degree-one variable node, regardless of the number of iterations. For this reason, the original RCA does not work if the graph contains degree-one variable nodes. We use a slightly modified version of the RCA that focuses on the overall reliability of each variable node , rather than the reliability of every edge . This modification allows computation of a meaningful decoding threshold for protographs with degree-one variable nodes. Letting be the maximum number of iterations and be the stopping threshold, the modified RCA is summarized as follows:

Note that the values are additive at the variable nodes and the values are additive at the check nodes for all edges.

By the monotonicity of the threshold [40] we can perform bisection search at the desired level of precision using the function . To increase the computation speed, a lookup table is used for computing and and linear interpolation is used.

3.2Optimizing the Precode Protograph of PBRL Codes

The design of the precode protograph follows the work of Divsalar et al. [23]. One main conclusion of [23] is that code ensembles with a minimum variable node degree of or higher are guaranteed to have linear growth of their minimum distance with the blocklength. However, Divsalar et al. noted that judiciously adding some variable nodes with degree or even degree improves the threshold.

The LT part of PBRL code familes inherently includes degree-one variable nodes. Therefore, the design of the precode protographs constrains all variable nodes in the precode to have degree at least three, ensuring the linear minimum distance growth property for the precode. The structures we selected in our examples are inspired by the protograph examples in [23], with some additional optimization through density evolution analysis and LDPC code simulation.

3.3Optimizing the LT Code Protograph of PBRL Codes

Given a precode protograph constructed based on the techniques described in [23], we focus on the construction for the LT code part. The optimization algorithm of the LT code part is summarized as follows:

As we will see later, parallel edges in the LT part can facilitate very low thresholds. However, for short-blocklength codes these parallel edges introduce short cycles in the lifting process. We observed empirically that for good performance both in terms of waterfall and error floor, parallel edges in the LT code part of the protograph should be kept to a minimum (at most one pair of parallel edges in our examples) for short blocklength codes.

Table 1 shows the thresholds of an optimized protograph for a short-blocklength PBRL code. The edge connections are give by replacing the following matrices in to : the precode protomatrix is given as

and LT protomatrix is given as

Table 1: Thresholds of a PBRL code family of ( in decibels).
Rate Threshold Shannon Limit Gap
2.196 1.626 0.570
1.804 1.059 0.745
1.600 0.679 0.921
1.464 0.401 1.063
1.358 0.187 1.171
1.250 0.018 1.232
1.136 -0.122 1.258
1.016 -0.238 1.254
0.922 -0.337 1.259
0.816 -0.422 1.238
0.720 -0.495 1.215

Note that this code does not have any parallel edges in the LT code part. The initial code rate, or the precode code rate, is . The subsequent code rates are obtained by transmitting the variable nodes of the LT code part starting from the top. We observe an increase in the gap between the threshold and the capacity as the code rate decreases. This is due to the structural restrictions imposed on the protograph of the LT code part. Each subsequent protograph inherits the connections of the next-higher-rate protograph; the new protograph can only optimize over the connections emanating from the one additional check node. In addition, the new check node must connect with a new degree-one variable node.

Figure 3: Protograph of a PN-PBRL code with a rate-6/7 precode. The corresponding protomatrices are shown in  and . The first node in the precode is always punctured, denoted as a white circle. Lower-rate codes are obtained by transmitting the variable nodes in the LT code protograph starting from the top node.
Figure 3: Protograph of a PN-PBRL code with a rate- precode. The corresponding protomatrices are shown in and . The first node in the precode is always punctured, denoted as a white circle. Lower-rate codes are obtained by transmitting the variable nodes in the LT code protograph starting from the top node.

3.4Punctured-Node PBRL Codes

As explained in [23], puncturing a node in the protograph can improve the threshold performance. This section introduces a variant of PBRL codes for which the protograph of the precode has at least one punctured (untransmitted) node. We refer to this class of codes as the Punctured-Node PBRL (PN-PBRL) codes.

The optimization of the precode protograph is the same as described in Section 3.2 except that one variable node is punctured. The optimization of the LT protograph is the same as in Section 3.3 but with a slight modification to step 2 of Algorithm ?. In step 2 for PN-PBRL codes, whenever there is a tie in the decoding threshold for different connections, preference is given to the one with no edge connected to the punctured node. This heuristic helps prevent performance degradation when lifting the protograph to a shorter code (for blocklengths less than ). This heuristic speeds up the decoding convergence because the punctured node has less reliability than the other variable nodes in the early iterations.

Figure 3 shows an example of an optimized short-blocklength PN-PBRL code. This protograph has a single parallel edge in the LT part. Note that the first variable node of the precode protograph is punctured, giving a rate- precode. The initial code rate could be or to obtain an initial code rate of , the first variable node of the LT code protograph is transmitted. The precode protomatrix is give by

and the LT protomatrix is given by

Table 2: Thresholds of the PN-PBRL LDPC code family of Fig. with one pair of parallel edges ( in decibels).
Rate Threshold Capacity Gap
2.020 1.626 0.394
1.638 1.059 0.579
1.468 0.679 0.789
1.352 0.401 0.951
1.248 0.187 1.061
1.186 0.018 1.168
1.018 -0.122 1.140
0.930 -0.238 1.168
0.848 -0.337 1.185
0.692 -0.422 1.114
0.602 -0.495 1.097

The subsequent code rates of are obtained by transmitting the variable nodes of the LT code protograph from top to bottom. Regardless of the operating rate, the first variable node of the precode protograph is always punctured. The PN-PBRL codes yield better thresholds as shown in Table 2 due to both the punctured node and the additional pair of parallel edges.

3.5Optimization for Long-Blocklength PN-PBRL Codes

For longer blocklengths, lifting can avoid short cycles even with multiple parallel edges in the LT protograph. In fact, adding more parallel edges between the punctured variable node and the check nodes in the LT code protograph reduces the threshold significantly. This section investigates a long-blocklength PN-PBRL optimization approach that allows multiple parallel edges in the LT protograph.

Similar to its short-blocklength counterpart, the design begins by finding a good protograph LDPC code to serve as a precode, i.e., a protograph with linear growth of its minimum distance as a function of blocklength. The construction of the LT code part, however, requires different design criteria than for the short-blocklength case in order to obtain good thresholds at each subsequent code rate.

We observed that the punctured node of the precode must connect to all check nodes in the LT code part with at least a single edge. These edges induce high-degree punctured variable nodes at low rates. We observe experimentally that the removal of these edges results in a notable degradation of the thresholds at low rates.

Note the contrast between the emphasis on connecting the punctured node to all check nodes for long blocklengths and the avoidance of the punctured node in the case of ties for short blocklengths discussed in Section 3.4. This contrast follows from the fact that the performance of the lifted short-blocklength codes does not always agree with the threshold results because of short cycles.

Additional pairs of parallel edges between the punctured variable node and the check nodes in the LT code part further reduce the threshold. The threshold improvement, however, is diminishing as the number of parallel edges increase. Moreover, with numerous parallel edges connected the punctured node, the error rate performance does not match the threshold gain. In these cases, the lifted codes often display high error floors by lifting with cPEG alone. We propose two solutions to further improve the performance of the lifted code: 1) increase the size of the protograph to provide more degrees of freedom in the optimization of the lifting process and 2) optimize the lifting process with cPEG and the Approximate Cycle Extrinsic message degree algorithm (ACE) [43].

The construction procedure for long-blocklength PN-PBRL codes is similar to Algorithm ? but with some modifications for steps 1), 2) and 4). The maximum number of parallel edges connected to the puncture node is predetermined and executed in the first step. The edges in the LT part can be either single edges or parallel edges depending on the size of the protograph.

The following and gives an example of the optimized protograph with at most two pairs of parallel edges between the punctured variable node and the check nodes in the LT part. The number of pairs of parallel edges is two in this example, each of which emanates from the first two check nodes in the LT part, respectively. The precode protomatrix is given as

and the LT protomatrix is given as

The resulting thresholds obtained from the protograph are shown in Table 3. The decoding thresholds in Table 3 are significantly lower than the thresholds in the example in Section 3.4 (c.f. Table 2). The largest gap is reduced from more than dB to less than dB. All of the gaps but one are below dB. This is mainly because we allow an extra pair of parallel edges and require a high-degree punctured node in the protograph. Section 4.2 gives an example of constructing a long-blocklength PN-PBRL code from this protograph and presents the simulation results.

Table 3: Thresholds of the PN-PBRL code family shown in and with two pairs of parallel edges. ( in decibels).
Rate Threshold Capacity Gap
3.077 2.625 0.452
1.956 1.626 0.330
1.392 1.059 0.333
1.078 0.679 0.399
0.798 0.401 0.397
0.484 0.187 0.297
0.338 0.018 0.320
0.144 -0.122 0.266
0.072 -0.238 0.310
0.030 -0.337 0.367
-0.024 -0.422 0.398
-0.150 -0.495 0.345

Table 4: Thresholds of the PN-PBRL code family with parallel edges connected between the punctured node and the odd check nodes in the LT part ( in decibels).
Rate Threshold Capacity Gap
2.179 2.040 0.139
1.579 1.459 0.120
1.199 1.059 0.140
0.897 0.762 0.135
0.669 0.530 0.139
0.462 0.342 0.120
0.308 0.187 0.121
0.173 0.056 0.117
0.072 -0.056 0.128
-0.018 -0.153 0.135
-0.102 -0.238 0.136
-0.174 -0.314 0.140
-0.236 -0.381 0.145
-0.292 -0.441 0.149
-0.340 -0.495 0.155
-0.384 -0.545 0.161
-0.447 -0.590 0.143
-0.488 -0.631 0.143
-0.520 -0.669 0.149
-0.557 -0.704 0.147
-0.582 -0.736 0.154
-0.607 -0.766 0.159
-0.630 -0.794 0.164

By adding parallel edges between the punctured node and all the check nodes in the LT part, the gaps between the thresholds and the capacities are improved even more than shown in Table 2 to less than dB except for the highest rate (the precode). However, the lifted codes using cPEG do not lead to good error rate performance. A larger protograph is needed to obtain better thresholds and have a controlled number of parallel edges connected to the punctured variable node.

We constructed a protograph with variable nodes. The protomatrix is omitted due to page limitations and can be found on the CSL website [44]. Parallel edges are added heuristically to all the odd check nodes in the LT part and the selection of other connections follows the greedy RCA optimization described earlier. The connections between the check nodes in the LT part and the un-punctured variable nodes can be single edge or parallel edges, i.e., the matrix entries can be , or . The resulting thresholds are summarized in Table 4. The thresholds are significantly lower than the thresholds in Table 3 and the gaps to capacities are all within dB.

4Examples and Simulations of PBRL Codes

This section provides examples of PBRL codes in the short-blocklength regime () and the long-blocklength regime ( and ). Simulation results of PBRL codes are presented and compared to other channel codes with similar blocklengths in the literature. All of our simulations use iterative decoders with floating-point computation, and the schedule of the message-passing algorithm is flooding unless otherwise stated. The iterative decoder terminates if the decoding is successful (passing the parity check) before reaching the maximum number of iterations. The maximum number of iterations is for all simulations unless otherwise stated.

4.1Short-Blocklength PBRL Codes

This subsection provides examples of PBRL and PN-PBRL codes with short-blocklengths. Lifting of the protograph is accomplished by circulant permutation of the edges of each type, which allows efficient implementation of the decoder. The design of the circulant permutation uses cPEG algorithm. For the following short-blocklength examples, cPEG avoided all length- cycles and minimized the number of length- cycles. Experimental results indicate that for PBRL codes with , direct lifting of the protograph yields better codes than the two-stage lifting such described in [23].

Figure 4: Frame error rate and bit error rate of the PBRL code, PN-PBRL code and RCPT code at code rate 3/4. Both PBRL and PN-PBRL codes outperform the RCPT codes at high E_b/N_0 regime but perform slightly worse than the RCPT code in the low E_b/N_0 regime.
Figure 4: Frame error rate and bit error rate of the PBRL code, PN-PBRL code and RCPT code at code rate . Both PBRL and PN-PBRL codes outperform the RCPT codes at high regime but perform slightly worse than the RCPT code in the low regime.
Figure 5: Frame error rate and bit error rate of the PBRL code, PN-PBRL code and RCPT code at code rate 1/3. Here the RCPT code outperforms the PN-PBRL and PBRL code at low SNR range, but the PN-PBRL code starts to outperform the RCPT code at around SNR 3.5 dB. There is no sign of an error floor for the both PBRL and PN-PBRL code.
Figure 5: Frame error rate and bit error rate of the PBRL code, PN-PBRL code and RCPT code at code rate . Here the RCPT code outperforms the PN-PBRL and PBRL code at low SNR range, but the PN-PBRL code starts to outperform the RCPT code at around SNR dB. There is no sign of an error floor for the both PBRL and PN-PBRL code.

Recall from that it is enough to specify and to express the protomatrix of a PBRL code. Let be a identity matrix shifted to the left by , and let be a all-zero matrix. We index the first example by the superscript . The lifted precode part is given by , shown at the top of the page, and the LT part is given by

where entries with multiple terms of in indicate parallel edges in the protograph.

For the PN-PBRL code example the lifted precode is given by , shown at the top of the page, and the lifted LT code is given by

Note that the matrix in has no parallel edge The matrix in corresponds to the LT protograph in Figure 3, which has one pair of parallel edges represented as .

For ease of comparison, Figs. Figure 4 and Figure 5 separately plot rates and for the PBRL code family, PN-PBRL code family, and the RCPT codes in [45] showing both frame error rate (FER) and bit error rate (BER). Flooding is used for the decoder simulations. Consistent with the decoding threshold results, the PN-PBRL code family outperforms the PBRL code family with a slight increase of encoding complexity due to the punctured node.

At rate , the PN-PBRL code performs similarly to the RCPT code and outperforms the RCPT code when SNR is higher than dB in terms of FER and 4dB in terms of BER. At rate , the PN-PBRL code starts to gain an advantage at SNR higher than dB in terms of FER and 4 dB for BER.

We omit the simulation results for short-blocklength PBRL codes with rates between and due to page limitations. We refer readers to [27] and [46] for more simulation results. In all cases, the PN-PBRL code family outperforms the RCPT code family at a sufficiently high SNR, and the crossover where PN-PBRL outperforms RCPT occurs at higher FER/BER for higher rates.

Simulation results using Raptor codes with the same precode as the PBRL code family with output distributions drawn from [36] and [37] show a much higher FER in BI-AWGN with information blocklength than either PBRL or PN-PBRL codes at all rates. Note that the comparison even ignores the overhead for communicating randomly drawn LT connections. The result is not surprising because the Raptor codes do not transmit the precode symbols and the degrees of each output node are drawn at random according to the optimal degree distribution, and a few hundreds of samples may not be enough to exhibit the optimal degree distribution.

4.2Long-Blocklength PBRL Codes

This subsection provides the simulation results of the two families of long-blocklength PN-PBRL codes presented in Section 3.5. The lifting process is discussed in detail using the protomatrices and . We omit the details for lifting the protograph with variable nodes due to page limitations. The code can be found on the CSL website [44].

As in [23] we use two-stage lifting to obtain good protograph codes with long blocklengths. The first stage, also known as pre-lifting, uses a relatively small lifting number (i.e. the number of replicas) and aims to remove the parallel edges in the protograph. The second stage then lifts the protograph resulting from the previous stage to the desired blocklength. In this example, the protograph based on and is pre-lifted times and then further lifted times, the resulting information blocklength is then .

With a step size of , subsequent code rates are obtained by transmitting the output symbols of the LT code from each successive protograph node starting from the top. However, many more rates between and can be obtained by adding one variable node at a time to the lifted graph.

Similar to the short-blocklength codes, lifting of the protograph is also accomplished by circulant permutation and the design of the circulant permutation uses the cPEG algorithm. The minimum cycle in the lifted graph of the precode has length while the minimum cycle in the overall lifted graph of the LT and precode at the lowest rate of has length .

As with the short-blocklength codes, the parity-check matrices of the pre-lifted code and the final lifted code both have the structure of . The pre-lifted precode is given in , shown at the top of the page with a identity matrix shifted to the left by and representing the all-zero matrix. Similarly, is given as

Figure 6: Frame error rates and bit error rates for the protograph based on  and . The lifting number is 2728, resulting in k = 16368.
Figure 6: Frame error rates and bit error rates for the protograph based on and . The lifting number is , resulting in .

The pre-lifted protograph contains no parallel edges and is further lifted by using powers of a larger circulant matrix : a identity matrix shifted to the left by . The powers of , i.e. the assignments of the circulant for all edges in the pre-lifted protograph, are omitted due to space limit and but are available in [44].

Figure 6 shows the simulations of the example PN-PBRL code family. The simulated codes have rates and with the corresponding blocklengths , , , and , respectively. All other rates in the form of are also simulated with similar performance in the waterfall region and no error floor has been observed for FER greater than [46].

Table 5 presents the gaps between Shannon limits and the SNRs required to achieve a fixed FER of at various rates. Only the rates presented in Figure 6 are shown due to space limit, but the gaps for all other rates range from dB (at rate ) to dB (at rate ).

Table 5: SNRs Required to Achieve FER for for the first long-blocklength PN-PBRL code family.
Rate Req. SNR Shannon limit Gap
3.39 2.625 0.765
2.30 1.626 0.674
1.74 1.059 0.681
0.83 0.187 0.643
0.23 -0.495 0.725

Figure 7 compares the FER performance of the example PN-PBRL code family at rates and to the DVB-S2 standard (with and without an outer BCH code) [33] and AR4JA codes from the CCSDS standard [32]. In some cases for DVB-S2 codes, only results for a maximum of iterations were available. The blocklengths of the DVB-S2 codes are fixed to bits, whereas the PN-PBRL and AR4JA codes have a fixed information length of bits and blocklengths of bits and bits for rate and rate , respectively. When concatenated with the BCH code, the overall rates of DVB-S2 codes are bits and bits.

Figure 7 shows that in the waterfall region, the PN-PBRL codes outperform both the AR4JA codes and the DVB-S2 codes. Note that the PN-PBRL codes outperform DVB-S2 even though the DVB-S2 codes have longer blocklength and benefit from concatenation with a BCH code.

Figure 7: Frame error rates comparison for PN-PBRL codes, LDPC codes in the DVB-S2 standard, and AR4JA LDPC codes in the CCSDS standard.
Figure 7: Frame error rates comparison for PN-PBRL codes, LDPC codes in the DVB-S2 standard, and AR4JA LDPC codes in the CCSDS standard.
Figure 8: Frame error rates and bit error rates for the V33 protograph. The lifting number is 2048, resulting in k = 16384.
Figure 8: Frame error rates and bit error rates for the V protograph. The lifting number is , resulting in .
Figure 9: Frame error rates comparison between the PN-PBRL codes with 19 variable nodes in the protograph (k = 16368), the PN-PBRL codes with 33 variable nodes in the protograph (k = 16384), and the rate-compatible protograph codes proposed in  (k = 16368).
Figure 9: Frame error rates comparison between the PN-PBRL codes with variable nodes in the protograph (), the PN-PBRL codes with variable nodes in the protograph (), and the rate-compatible protograph codes proposed in ().

Nguyen et al. [25] constructed a rate-compatible protograph of variables with lower thresholds than the thresholds in Table 3. As shown in Table 4, we demonstrated an example of a protograph with variable nodes and the Raptor-like structure that gives threshold comparable to those obtained in [25]. Moreover, we demonstrate in the following that the lifted code can outperform existing codes designed without the Raptor-like structure constraint.

For the protograph with variable nodes (V), the lifting numbers in the first and second stages are and , respectively. Both cPEG and ACE are used jointly to lift the code in the second stage. The lifting process first chooses a permutation randomly for an edge and the permutation will be admitted if it passes both cPEG and ACE constraints. A girth of is strictly enforced for cPEG, and the constraint for ACE is enforced by having to be initially. If the search fails after attempts, the parameters are relaxed (still enforcing the cPEG constraint) to the ACE constraint of . The algorithm relaxes the constraint to after attempts. The constraints are further relaxed to , and incrementally after every additional attempts. If the ACE parameters of cannot be met for an edge, the optimization will stop and the process must restart from the first edge.

Figure 8 presents the error rate performance of various rates and Figure 9 compares the FER between the PN-PBRL codes () and the rate-compatible protograph codes proposed in [25] () at rates and . The simulation results in [25] used an -bit quantized decoder with iterations whereas our simulations used floating point decoder with iterations. The simulations of the V protograph in Figure 9 used layered belief propagation. Using flooding in our simulation results in less than dB of degradation at iterations. Comparing at FER around , PN-PBRL code is dB better than Nguyen’s code at rate and about dB better at rate-. It is surprising that PBRL codes can have superior performance even with the constraints of the Raptor-like structure. In addition, our protograph ( variable nodes) is smaller than the one constructed in [25].

Table 6 presents the gaps between Shannon limits and the SNRs required to achieve a fixed FER of at various rates. Only the rates presented in Figure 8 are shown due to space limit. The gaps for the simulated rates in Figure 8 ranges from dB (at rate ) to dB (at rate ).

Table 6: SNRs Required to Achieve FER for the V33 PBRL code.
Rate Req. SNR Shannon limit Gap
2.64 2.040 0.6
1.62 1.059 0.561
0.72 0.187 0.533
0.15 -0.495 0.645
-0.22 -0.794 0.574

In general, larger protographs have more degrees of freedom and hence yield lower thresholds after optimization but with diminishing returns. In addition, large protographs are less flexible in the lifting optimization, e.g. lifting a very large protograph (e.g. the V protograph) for a moderate-blocklength code (e.g. ) may harm the lifting optimization since there are less permutations to choose from compare to a moderate-size protograph.

In [30], Nguyen et al. constructed a family of rate-compatible protograph codes with moderate blocklengths that turn out to have the PBRL structure. Using EXIT analysis, [30] proposed design principles similar to the current paper. The example in [30] uses pairs of parallel edges in the LT protograph in contrast to the example shown in the current paper, which has at most pair of parallel edges to avoid error floors for blocklengths less than . The simulation results in [30] for are remarkable, with no error floor even at the highest SNR studied.

The results in [30] suggest that the design of PBRL codes may be further improved by adding even more parallel edges when a quantized decoder is used. Regardless, the outstanding numerical results in [30] further verifies that Raptor-like structure enjoys extensive rate-compatibility, helps reduce the complexity in encoding and decoding, and provides excellent performance.

5Concluding Remarks

This paper studies the construction and optimization of protograph-based Raptor-like LDPC codes. The optimization of PBRL codes is based on asymptotic results of LDPC codes, i.e., density evolution. Instead of the original density evolution, a modified reciprocal channel approximation is used to obtain a fast and accurate approximation for the thresholds of PBRL codes. The assignment of the circulants when lifting the codes is based on cPEG algorithm and ACE algorithm.

Puncturing variable nodes in the precode protograph further improves the threshold performance of PBRL codes. This class of PBRL codes is referred to as the PN-PBRL codes. PN-PBRL codes have better performance but a slightly more complicated encoder for the initial transmission.

For long-blocklength codes, optimization using density evolution provides useful guidance to improve the performance of the PBRL code. For short-blocklength codes, the design procedure must avoid undesirable graphical structures while minimizing the threshold.

A threshold saturation is observed as the rate decreases in the optimization of PBRL codes. Adding more pairs of parallel edges in the LT protograph alleviates the saturation issue and yields low thresholds. The lifted codes with many pairs parallel edges, however, do not always perform better than the codes with fewer pairs of parallel edges. For the rates considered in this paper, we observed that one pair of parallel edges gives the best result for short-blocklength codes (). For long-blocklength codes ( and ), we observed that two pairs of parallel edges give excellent performance for small protographs, while for multiple pairs of parallel edges, optimizing over a larger protograph and using a better lifting algorithm are necessary. Specifically, we used cPEG and ACE jointly to obtain good codes.

Simulation results of short-blocklength and long-blocklength PBRL codes are presented and compared to the other rate-compatible channel codes in the literature. The short-blocklength PBRL codes outperform the RCPT codes in the 3GPP-LTE standard [45] at high SNRs and do not have error floors up to the highest SNRs studied. The short-blocklength PBRL codes perform worse than the RCPT codes at low SNRs. The long-blocklength codes using the small protograph outperform AR4JA codes and DVB-S2 codes and do not have error floors down to FER as low as .

To compare the PBRL codes with the rate-compatible LDPC codes in [25], we constructed a protograph that is smaller than the one considered in [25]. Although the thresholds of PBRL codes obtained by RCA are larger than the thresholds reported in [25], the lifted codes outperform the rate-compatible LDPC codes in [25].

References

  1. T.-Y. Chen, A. Williamson, N. Seshadri, and R. Wesel, “Feedback communication systems with limitations on incremental redundancy,” IEEE Trans. Inf. Theory, (submitted) 2013.
  2. J. Hagenauer, “Rate-compatible punctured convolutional codes (rcpc codes) and their applications,” IEEE Trans. Commun., vol. 36, no. 4, pp. 389–400, Apr. 1988.
  3. D. Rowitch and L. Milstein, “On the performance of hybrid FEC/ARQ systems using rate compatible punctured turbo (RCPT) codes,” Communications, IEEE Transactions on, vol. 48, no. 6, pp. 948–959, 2000.
  4. R. Liu, P. Spasojevic, and E. Soijanin, “Punctured turbo code ensembles,” in Information Theory Workshop, 2003. Proceedings. 2003 IEEE, Mar. 2003, pp. 249–252.
  5. R. G. Gallager, “Low-density parity-check codes,” Ph.D. dissertation, MIT, Cambridge, MA, 1963.
  6. R. Tanner, “A recursive approach to low complexity codes,” Information Theory, IEEE Transactions on, vol. 27, no. 5, pp. 533–547, 1981.
  7. D. J. C. MacKay, “Good error-correcting codes based on very sparse matrices,” IEEE Trans. Inform. Theory, vol. 45, pp. 399–431, Mar. 1999.
  8. C. Berrou, A. Glavieux, and P. Thitimajshima, “Near Shannon limit errorcorrecting coding and decoding: Turbo codes,” in Proc. IEEE Int. Conf. Commun., Geneva, Switzerland, May 1993.
  9. M. Luby, M. Mitzenmacher, A. Shokrollahi, and D. Spielman, “Improved low-density parity-check codes using irregular graphs,” IEEE Trans. Inform. Theory, vol. 47, pp. 585–598, Feb. 2001.
  10. T. J. Richardson, M. A. Shokrollahi, and R. L. Urbanke, “Design of capacity-approaching irregular low-density parity-check codes,” IEEE Trans. Inf. Theory, vol. 47, no. 2, pp. 618–637, Feb 2001.
  11. J. Li and K. Narayanan, “Rate-compatible low density parity check codes for capacity-approaching ARQ schemes in packet data communications,” in Proc. Int. Conf. on Comm., Internet, and Info. Tech. (CIIT), Nov. 2002.
  12. M. Yazdani and A. Banihashemi, “On construction of rate-compatible low-density parity-check codes,” Communications Letters, IEEE, vol. 8, no. 3, pp. 159–161, 2004.
  13. N. Jacobsen and R. Soni, “Deign of rate-compatible irregular LDPC codes based on edge growth and parity splitting,” in Proc. IEEE Vehicular Technology Conference (VTC), Baltimore, MD, USA, Oct. 2007.
  14. M. El-Khamy, J. Hou, and N. Bhushan, “Design of rate-compatible structured LDPC codes for hybrid ARQ applications,” Selected Areas in Communications, IEEE Journal on, vol. 27, no. 6, pp. 965–973, 2009.
  15. J. Ha, J. Kim, and S. McLaughlin, “Rate-compatible puncturing of low-density parity-check codes,” IEEE Trans. Inf. Theory, vol. 50, no. 11, pp. 2824–2836, 2004.
  16. J. Ha, J. Kim, D. Klinc, and S. McLaughlin, “Rate-compatible punctured low-density parity-check codes with short block lengths,” Information Theory, IEEE Transactions on, vol. 52, no. 2, pp. 728–738, 2006.
  17. S. Song, D. Hwang, S. Seo, and J. Ha, “Linear-time encodable rate-compatible punctured LDPC codes with low error floors,” in Vehicular Technology Conference, 2008. VTC Spring 2008. IEEE, 2008, pp. 749–753.
  18. J. Kim, A. Ramamoorthy, and S. McLaughlin, “The design of efficiently-encodable rate-compatible LDPC codes,” IEEE Trans. Commun., vol. 57, no. 2, pp. 365–375, 2009.
  19. B. Vellambi and F. Fekri, “Finite-length rate-compatible LDPC codes: a novel puncturing scheme,” Communications, IEEE Transactions on, vol. 57, no. 2, pp. 297–301, 2009.
  20. S. Sesia, G. Caire, and G. Vivier, “Incremental redundancy hybrid ARQ schemes based on low-density parity-check codes,” IEEE Trans. Commun., vol. 52, no. 8, pp. 1311–1321, 2004.
  21. A. Vila Casado, W.-Y. Weng, S. Valle, and R. Wesel, “Multiple-rate low-density parity-check codes with constant blocklength,” Communications, IEEE Transactions on, vol. 57, no. 1, pp. 75–83, 2009.
  22. J. Thorpe, “Low Density Parity Check (LDPC) codes constructed from protographs,” JPL IPN Progress Report, vol. 42–154, Aug. 2003.
  23. D. Divsalar, S. Donlinar, C. R. Jones, and K. Andrews, “Capacity-approaching protograph codes,” IEEE J. Sel. Areas Commun., vol. 27, No. 6, pp. 876–888, Aug. 2009.
  24. S. Dolinar, “A rate-compatible family of protograph-based LDPC codes built by expurgation and lengthening,” in Proc. International Symposium on Information Theory, 2005, pp. 1627–1631.
  25. T. Nguyen, A. Nosratinia, and D. Divsalar, “The design of rate-compatible protograph LDPC codes,” IEEE Trans. Commun., vol. 60, no. 10, pp. 2841–2850, 2012.
  26. A. Shokrollahi, “Raptor codes,” IEEE Trans. Inf. Theory, vol. 52, no. 6, pp. 2551–2567, 2006.
  27. T.-Y. Chen, D. Divsalar, J. Wang, and R. D. Wesel, “Protograph-based raptor-like LDPC codes for rate-compatibility with short blocklengths,” in Proc. IEEE Global Communications Conference, Houston, TX, Dec. 2011.
  28. W. Nitzold, M. Lentmaier, and G. Fettweis, “Spatially coupled protograph-based ldpc codes for incremental redundancy,” in Turbo Codes and Iterative Information Processing (ISTC), 2012 7th International Symposium on, 2012, pp. 155–159.
  29. A. Jimenez Felstrom and K. Zigangirov, “Time-varying periodic convolutional codes with low-density parity-check matrix,” Information Theory, IEEE Transactions on, vol. 45, no. 6, pp. 2181–2191, 1999.
  30. T. V. Nguyen and A. Nosratinia, “Rate-compatible short-length protograph ldpc codes,” Communications Letters, IEEE, vol. 17, no. 5, pp. 948–951, 2013.
  31. T.-Y. Chen, D. Divsalar, and R. D. Wesel, “Protograph-based raptor-like LDPC codes with low thresholds,” in Proc. IEEE International Conference of Communications, Ottawa, Canada, Jun. 2012.
  32. “Low density parity check codes for use in near-earth and deep space. orange book.” CCSDS standard, Issue No.2, Sep. 2007.
  33. “Digital video broadcasting; second generation framing structure, channel coding and modulation systems for broadcasting, interactive services, news gathering and other broadband satellite applications,” ETSI EN 302 307 V1.2.1, Aug. 2009.
  34. S. Lin and D. J. Costello, Error Control Coding.1em plus 0.5em minus 0.4emUpper Saddle River, NJ, USA: Prentice-Hall, Inc., 2004.
  35. M. Luby, “LT codes,” in Proc. 43rd Annu. IEEE Symp. Foundations of Computer Science (FOCS), Vancouver, BC, Canada, Nov. 2002.
  36. O. Etesami and A. Shokrollahi, “Raptor codes on binary memoryless symmetric channels,” Information Theory, IEEE Transactions on, vol. 52, no. 5, pp. 2033–2051, 2006.
  37. E. Soljanin, “Punctured vs. rateless codes for hybrid ARQ,” in Proc. IEEE Inform. Theory Workshop ’06, Punta del Este, Uruguay, Mar 2006.
  38. T. J. Richardson and R. L. Urbanke, “The capacity of low-density parity-check codes under message-passing decoding,” IEEE Trans. Inf. Theory, vol. 47, no. 2, pp. 599–618, Feb. 2001.
  39. S. Y. Chung, “On the construction of some capacity-approaching coding schemes,” Ph.D. dissertation, MIT, Cambridge, MA, 2000.
  40. T. Richardson and R. Urbanke, Modern Coding Theory.1em plus 0.5em minus 0.4emNew York, NY, USA: Cambridge University Press, Mar. 2008.
  41. X.-Y. Hu, E. Eleftheriou, and D.-M. Arnold, “Regular and irregular progressive edge-growth tanner graphs,” IEEE Trans. Inf. Theory, vol. 51, No. 1, pp. 386–398, Jan. 2005.
  42. K. Andrews, S. Dolinar, D. Divsalar, and J. Thorpe, “Design of low-density parity-check (LDPC) codes for deep-space applications,” JPL IPN Progress Report, vol. 42-159, Nov. 2004.
  43. T. Tian, C. Jones, J. Villasenor, and R. Wesel, “Selective avoidance of cycles in irregular ldpc code construction,” IEEE Trans. Commun., vol. 52, no. 8, pp. 1242–1247, Aug 2004.
  44. =2plus 43minus 4 T.-Y. Chen, D. Divsalar, and R. Wesel, “Protograph-based raptor-like low-density parity-check codes,” Oct. 2013. [Online]. Available: http://www.seas.ucla.edu/csl/files/publications.html =0pt
  45. 3rd Generation Partnership Project (http://www.3gpp.org), “3GPP TS 36.212 Multiplexing and channel coding,” vol. Release 8, Mar. 2008.
  46. T.-Y. Chen, “Low-latency communication with feedback: From information theory to system design,” Ph.D. dissertation, UCLA, Los Angeles, CA, 2013.
Comments 0
Request Comment
You are adding the first comment!
How to quickly get a good reply:
  • Give credit where it’s due by listing out the positive aspects of a paper before getting into which changes should be made.
  • Be specific in your critique, and provide supporting evidence with appropriate references to substantiate general statements.
  • Your comment should inspire ideas to flow and help the author improves the paper.

The better we are at sharing our knowledge with each other, the faster we move forward.
""
The feedback must be of minimum 40 characters and the title a minimum of 5 characters
   
Add comment
Cancel
Loading ...
10522
This is a comment super asjknd jkasnjk adsnkj
Upvote
Downvote
""
The feedback must be of minumum 40 characters
The feedback must be of minumum 40 characters
Submit
Cancel

You are asking your first question!
How to quickly get a good answer:
  • Keep your question short and to the point
  • Check for grammar or spelling errors.
  • Phrase it like a question
Test
Test description