Link Search Menu Expand Document

Sample protographs

In order to generate a protograph LDPC code, a protograph file must be supplied to the make-pchk program. This file has the following format (# here denotes commments, which are NOT allowed in the actual protograph files):

n_checks n_bits # protograph dimensions
transmitted_bits [list of transmitted indices (1-based)] # optional, only needed when puncturing
mode # can be sparse or dense
protograph representation

If mode is sparse, protograph representation is given by a list of matrix entries, one per line. Each list element contains three space separated integers: the row index within the protograph matrix, the column index within the protograph matrix, and the entry value at that given matrix location. The row and column indices are 1-based.

If mode is dense, protograph representation is given by the matrix representation of the protograph, with one row on each line.

We first consider a very simple protograph (from Figure 1 here) with 1 check node and 2 variable nodes. The check node has three connections to each variable node.

Simple protograph

The corresponding matrix representation is simply

3 3

and the corresponding protograph representation is

1 2
dense
3 3

or

1 2
sparse
1 1 3
1 2 3

or

1 2
transmitted_bits 1 2
dense
3 3

Observe that the transmitted_bits row is not required in this case because all the variable nodes are transmitted and there is no puncturing.

We now consider a more complex example of the AR4JA rate 1/2 protograph (figure from Divsalar et al. (2006)).

AR4JA rate 1/2 protograph

The protograph is defined by the following matrix:

0 0 1 0 2
1 1 0 1 3
1 2 0 2 1

and the 5th variable node (shown in white in the figure) is untransmitted/punctured. The corresponding protograph files in sparse and dense representations are shown below.

Dense

3 5
transmitted_bits 1 2 3 4
dense
0 0 1 0 2
1 1 0 1 3
1 2 0 2 1

Sparse

3 5
transmitted_bits 1 2 3 4
sparse
1 3 1
1 5 2
2 1 1
2 2 1
2 4 1
2 5 3
3 1 1
3 2 2
3 4 2
3 5 1

You can find a list of example protograph files in the repository here. These include the AR4JA and AR3A protographs at rates 1/2, 2/3 and 3/4, along with certain other optimized protographs from Fang et al. (2016).